动手学操作系统(一、搭建实验环境)
🚀 环境配置 🚀
笔者的环境使用的是
- ubuntu 20.04
- bochs 2.7
这里的ubuntu你可以在虚拟机里安装,也可以安装双系统,也可以是单独的ubuntu系统,这个就看个人的喜好。
针对初学者来说,笔者推荐使用虚拟机平台VMware
在window
环境下来安装ubuntu。
或者可以使用VirtualBox
在linux
环境下安装ubuntu。
1. 在VMware虚拟机中安装ubuntu20.04
具体的安装方法可以参考笔者的这篇博客:
【Ubuntu】在VMWare虚拟机中安装Ubuntu20.04【教程】
安装完毕后,需要安装一些别的依赖
# 安装c语言编译器gcc
sudo apt-get install gcc
# 安装一些套件
sudo apt install build-essential
# 安装汇编语言编译器nasm
sudo apt-get install nasm
2. 安装Bochs
Bochs 是一个开源的 x86 和 x86-64 计算机仿真器(Emulator),用于模拟 Intel x86 CPU、常见的设备和外设、以及完整的 PC 系统。它允许用户在不同的操作系统环境中运行各种操作系统,并且可以用于开发、调试和学习目的。Bochs 提供了一个高度可配置和可移植的仿真环境,开发者可以用它来测试和调试操作系统的代码。它支持单步执行和断点设置,使开发者能够深入分析操作系统的行为。开发人员可以在 Bochs 中测试他们的软件,特别是在不同硬件配置和操作系统环境下的兼容性。通过仿真不同的硬件配置,开发者可以发现并解决潜在的问题。
首先进入Bochs官网:Bochs
选择bochs-2.7.tar.gz
,然后下载
![Image](https://img-blog.csdnimg.cn/direct/de15f4964bc24b4385028cb221b72834.png)
下载完毕后,进行解压
tar -zxvf bochs-2.7.tar.gz
cd bochs-2.7
然后配置bochs
sudo ./configure --enable-debugger --enable-disasm --prefix=/home/your_usr_name/bochs --enable-iodebug --enable-x86-debugger --with-x --with-x11
记得将your_usr_name
替换为你的用户名,然后进行编译和安装
make
make install
如果安装顺利的话,会安装到路径/home/your_usr_name/bochs
中
3. 启动计算机
bochs
内置了一个创建硬盘的工具bximage
,这个工具放置在路径/home/your_urs_name/bochs
中,我们运行这个工具就可以很方便地按照其提示来创建一个硬盘。
cd /home/your_usr_name/bochs/bin
./bximage
![Image](https://img-blog.csdnimg.cn/direct/4f8c5abe52804caaadd2b12bd262ea51.png)
- 首先,选择
1
创建新的硬盘 - 然后,选择创建的类型是floppy软盘
fd
还是hard硬盘hd
- 然后,选择硬盘的类型
flat
- 然后,指定每个硬盘的扇区有多少字节
512
- 然后,选择硬盘的容量大小为多少MB
60
- 最后,给硬盘取名字
hardisk60MB.img
![Image](https://img-blog.csdnimg.cn/direct/8a22c385611c4731bc342529a75de0bd.png)
然后我们就可以编写启动文件了,这里命名为iebochsrc.disk
,后缀.disk
表示此配置文件的内容是从硬盘启动,不使用这个后缀也没关系。
cd /home/your_usr_name/bochs/bin
gedit bochsrc.disk
然后写入以下的内容,记得将your_usr_name
更改为你的用户名。
# 设置内存为32MB
megs: 32
# 设置对应机器的BIOS
romimage: file=/home/your_usr_name/bochs/share/bochs/BIOS-bochs-latest
# 设置对应机器的VGA BIOS
vgaromimage: file=/home/your_usr_name/bochs/share/bochs/VGABIOS-lgpl-latest
# 选择启动盘符,默认为从软盘启动,但是这里设置为硬盘,软盘太古老了
boot: disk
# 设置日志文件的输出
log: bochs_out.log
# 关闭鼠标功能,打开键盘功能,并且设置键盘的映射
mouse: enabled=0
keyboard: keymap=/home/your_usr_name/bochs/share/bochs/keymaps/x11-pc-us.map
# 硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="/home/your_usr_name/bochs/bin/hardisk60MB.img", mode=flat
使用bochs开始模拟
cd /home/your_usr_name/bochs/bin
./bochs -f bochsrc.disk
这里的-f
用于指定启动的配置文件,就是我们刚才配置bochsrc.disk
。然后再按照提示按下6
和c
运行的效果如下,由于我们没有编写BootLoader
所以自动报错退出了。
Reference
[1]《一个64位操作系统的设计与实现》
[2]《操作系统真象还原》
[3] 手写简易操作系统