操作系统真相还原01

配置环境

安装bochs

安装x11环境: sudo apt-get install libx11-dev libxrandr-dev libxpm-dev # Debian/Ubuntu

正常可以通过sudo apt install bochs bochs-x一键安装,但是我还是选择手动从源码编译。

选择安装bochs 2.8版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
wget https://jaist.dl.sourceforge.net/project/bochs/bochs/2.6.2/bochs-2.6.2.tar.gz?viasf=1 .
mv bochs-2.6.2.tar.gz* bochs-2.6.2.tar.gz
tar zxvf bochs-2.6.2.tar.gz
cd bochs-2.6.2/

# 注意这里你的安装目录修改成自己的
./configure \
--prefix=/opt/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11

make -j

make install

# 把路径bin假如环境变量
[ -f ~/.zshrc ] && echo "export PATH=\$PATH:/opt/bochs/bin" >> ~/.zshrc
[ -f ~/.bashrc ] && echo "export PATH=\$PATH:/opt/bochs/bin" >> ~/.bashrc

# 配置bochrc启动配置文件
[ -f ~/.zshrc ] && echo "alias bochs='bochs -f /opt/bochs/bin/bochs.conf'" >> ~/.zshrc
[ -f ~/.bashrc ] && echo "alias bochs='bochs -f /opt/bochs/bin/bochs.conf'" >> ~/.bashrc

然后把配置文件写入到/opt/bochs/bin/bochs.conf文件: vim /opt/bochs/bin/bochs.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
###############################################
# Configuration file for Bochs
###############################################

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

megs: 32

# 第二步,设置对应真实机器的BIOS和VGA BIOS.
# 对应两个关键字为:romimage 和 vgaromimage

#romimage: file=/usr/local/Cellar/bochs/2.6.8/share/bochs/BIOS-bochs-latest
romimage: file=/opt/bochs/share/bochs/BIOS-bochs-latest
#vgaromimage: file=/usr/local//Cellar/bochs/2.6.8/share/bochs/VGABIOS-lgpl-latest
vgaromimage: file=/opt/bochs/share/bochs/VGABIOS-lgpl-latest

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

display_library: x  # X11

# 第四步,选择启动盘符。
#boot: floppy
boot: disk

# 第五步,设置日志文件的输出。
log: log.bochsrc.disk

# 第六步,开启或关闭某些功能。

# 下面是关闭鼠标,并打开键盘。
mouse: enabled=0
#keyboard:keymap=/usr/local//Cellar/bochs/2.6.8/share/bochs/keymaps/x11-pc-us.map
#keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
keyboard:keymap=/opt/bochs/share/bochs/keymaps/x11-pc-us.map

# 硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="/opt/bochs/hd60M.img", mode=flat, cylinders=121, heads=16, spt=63

#gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

注意上面的路径已经被我修改的适配到安装目录/opt/bochs

安装完成后就可以在prefix安装目录看到bochs文件夹,然后底下应该有binshare两个文件夹。

重新source环境,可以启动bochs,会自动读取配置文件

配置硬件环境

创建一个硬盘,大小是60M,名字是hd60M.img

bximage -hd -mode="flat" -size=60 -q hd60M.img

正常创建硬盘后应该需要把配置写道bochs配置文件中,但是我们方便已经将上面的配置文件弄好了,也就是上面的ata0-master

然后一样去启动,发现报错PANIC了,主要因为我们的磁盘不是一个可以启动的磁盘(无镜像或系统)

至此完成了软件环境的搭建,也准备好了我们的虚拟硬盘