编写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)