编写OS第0步_编译环境配置(Ubuntu,CentOS,VirtualBox,bochs)

Posted 一只特立独行的猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写OS第0步_编译环境配置(Ubuntu,CentOS,VirtualBox,bochs)相关的知识,希望对你有一定的参考价值。

开发操作系统LCon 0.1.1

环境说明

配置环境所需的所有软件均为免费软件,直接官网下载就行,不需要去网上下载各种破解版
主机:
1.物理机:Ubuntu20.04.1
2.管理项目软件:VScode(仅用于方便看代码,不使用VScode的编译环境)
3.VirtualBox(LCon运行虚拟机环境,在物理机上运行万一崩溃就凉凉)
虚拟机:
4.虚拟机:CentOS(编译,运行环境)
5.虚拟机中的虚拟机:bochs(运行LCon的软件,安装在CentOS中)

1、安装物理机

有条件的可以直接装一个linux系统,这样出现外存不足的情况比较少。我因为新冠疫情,平时上网课需要用到windows的某讯课堂,某讯会议什么的,但是平时用Ubuntu用的有点多,装虚拟机速度太慢,所以采用双系统的方式解决。
Ubuntu官网下载地址:
https://ubuntu.com/download/desktop/thank-you?version=20.04.3&architecture=amd64
双系统安装教程:
https://jingyan.baidu.com/article/c35dbcb0a97e8c8916fcbc8c.html
单系统安装教程
https://jingyan.baidu.com/article/f71d6037d5ded91ab641d1e3.html

2.安装VScode

vscode下载地址:
https://code.visualstudio.com/
ubuntu下载的是deb文件,下载好了直接用图形用户界面安装就行
不想用图形用户界面就到vscode的目录下,使用终端运行下面的命令

sudo dpkg -i xxx.deb
sudo apt-get -f install

3.安装VirtualBox

官网下载地址:
https://www.virtualbox.org/wiki/Linux_Downloads
安装方式同VScode,具体细节可以网上查,直接安装就行,安装很简单。

4.下载CentOS光盘镜像

官网下载地址:
http://isoredirect.centos.org/centos/7/isos/x86_64/
下载一个自己喜欢的版本即可,1这个没什么影响。提供的链接为CentOS7的下载链接。

5.用VirtualBox+CentOS配置虚拟机

这篇文章有讲如何用VIrtualBox安装CentOS7,照他的步骤安装前两步就行,不需要配置网卡。
http://isoredirect.centos.org/centos/8/isos/x86_64/
如果出现了virtualbox报错”Kernel driver not installed (rc=-1908)“
可以参考我这个博客解决:
https://blog.csdn.net/qq_45931661/article/details/121489727

6.创建主机和虚拟机的共享文件夹

因为代码在宿主机进行管理,而编译,运行在虚拟机运行,所以要采用共享文件夹。
1.在虚拟机的左上角选择设备,选择共享文件夹

双击固定分配下面的路径
共享文件夹路径填写项目的路径,自动挂载,固定分配。


然后应该就可以共享文件夹了,现在验证一下。在CentOS中输入如下命令。

ls /media/

如果出现了共享文件名称,说明挂载成功。

如果media下面找不到文件,说明挂载失败,大概率就是没有安装增强包。
安装增强包教程:
https://segmentfault.com/a/1190000006233585#articleHeader2
然后虚拟机运行

yum mount -t vboxsf workspace sf_共享文件名

6.主机通过ssh方式访问虚拟机

建立共享文件夹以后,为了直接使用主机操作虚拟机,采用ssh方式进行通行。
在主机的用户主目录下打开.bashrc文件

cd ~
vi .bashrc

在最后面加入

alias ssh="ssh -X"

虚拟机查看ip地址

ip addr

主机通过虚拟机ip地址连接虚拟机
我的虚拟机ip地址为192.168.56.101

连接虚拟机和主机

ssh -X root@ip地址

7.在虚拟机中安装bochs

bochs是用来调试我们编写的OS的代码的虚拟机。就是说我们的代码最后会在bochs中运行,所以我们需要在CentOS中安装bochs。

下载压缩包:

wget  https://sourceforge.net/projects/bochs/files/bochs/2.6.9/bochs-2.6.9.tar.gz

因为bochs使用C++编写的,所以本地编译需要下载gcc编译器

yum install gcc-c++
yum install libX11-devel.x86_64
yum install  libXrandr-devel.x86_64

启动编译与调试功能,在bochs的解压目录里面运行下面的代码

./configure --with-x11 --with-wx --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-idle-hack --enable-plugins --enable-a20-pin --enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls  --enable-handlers-chaining  --enable-trace-linking --enable-configurable-msrs --enable-show-ips --enable-cpp --enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check  --enable-monitor-mwait --enable-avx  --enable-evex --enable-x86-debugger --enable-pci --enable-usb --enable-voodoo
make
make install

可能会出现某些.cc文件不存在,把cpp文件重命名为cc文件后,重新执行就行

mv oldfilename newfilename

然后转移到项目文件夹下,路径为/media/sf_项目名/,编写bochsrc文件

vi bochsrc

将下面这段话复制进入,注意把floppya的地址改为自己的地址

第一步,首先设置 Bochs 在运行过程中能够使用的内存,本例为 256MB
megs: 256

#第二步,设置对应真实机器的 Bios 和 VGA BIOS
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

#第三步,设置 Bochs 所使用的磁盘,软盘的关键字为 floppy。
#若只有一个软盘,则使用 floppya 即可,若有多个,则为 floppya,floppyb…
floppya: 1_44=./LConsd.img, status=inserted


#第四步,选择启动盘符
boot: a #默认从软盘启动,a,b软盘,c硬盘
#boot: disk  #改为从硬盘启动。我们的任何代码都将直接写在硬盘上,所以不会再有读>写软盘的操作

#第五步,设置日志文件的输出
log: bochs_log

#第六步,开启或关闭某些功能
#下面是关闭鼠标,并打开键盘
mouse: enabled=0
keyboard:  keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map

# 硬盘设置
#ata0-master: type=disk, path="LConsd.img", mode=flat, cylinders=121, heads=16, spt=63

#图形化界面
display_library: x, options="gui_debug"

退出保存后运行

bochs -q

如果CentOS没有安装GUI界面,那么会报错can’t connect to X display
安装图形用户界面即可

yum check-update
yum groupinstall "X Window System"
yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts
unlink /etc/systemd/system/default.target
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
reboot #重启机器

重启完成后,如果你是选择中文安装的CentOS,那么你会发现所有中文都无法显示,因为没有中文包,我为了方便,直接将CentOS设置为了英文,没有去琢磨如何设置中文。
更改语言:
1.输入用户名
2.输入密码

3.更改语言
进入后点开左上角的菜单,点击language,选择United States(English)。然后选择右上角的菜单,点击关机建,选择中间的按钮。

4.重启以后就没有乱码了,但是全是英文。不过对于打算写操作操作系统的学生来说,英文应该不是说明大问题。

验证环境

到目前为止,环境就差不多配完了,现在验证一下是不是配成功了。
同时打开主机和虚拟机,在主机上运行下面的命令

ssh -X root@虚拟机ip地址
cd /media/sf_共享文件名/
bochs -q

如果成功运行,应该是如下界面
左上角的界面为debugger,左下角的页面为模拟显示器,右边的是主机的终端。

以上是关于编写OS第0步_编译环境配置(Ubuntu,CentOS,VirtualBox,bochs)的主要内容,如果未能解决你的问题,请参考以下文章

编写OS第0步_编译环境配置(Ubuntu,CentOS,VirtualBox,bochs)

Ubuntu 16.04 编译VTK7.1

配置Ubuntu16.04第03步:安装搜狗输入法

Android8.1源码编译实践(Mac)

ubuntu 下安装eclipse &java环境配置

Docker 搭建Ubuntu 16.0.4(银河麒麟V10) 构建环境