从0写一个操作系统 | 01-环境搭建

本文介绍了作者在阅读《操作系统真象还原》后决定动手构建操作系统,并详细记录了在Ubuntu环境下安装Bochs模拟器的过程,包括下载、配置、安装以及创建配置文件和虚拟磁盘,最终成功启动Bochs。
摘要由CSDN通过智能技术生成

前言

前不久朋友推荐了一本书,叫做《操作系统真象还原》,看了一部分后觉得还蛮有趣的,想试着着手写一个操作系统,一边学习一边写。

本专栏会慢慢更新实现的过程,由于本人只能在工作之余钻研这本书,更新速度可能较慢,望各位读者理解。如果有心急的小伙伴可以购买这本书进行学习。

Bochs安装

先讲两句

Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS等。

首先我们需要在ubuntu上部署Bochs,条件好的小伙伴可以给空闲的电脑装个ubuntu系统然后部署Bochs,像我这种只有一台windows电脑的小伙伴可以安装个虚拟机,在虚拟机里面安装ubuntu系统然后部署Bochs。

虚拟机推荐virtualBox(免费) 或者 vmware,我个人喜欢vmware的界面,所以就用了vmware。

ubuntu系统我没有选择最新的ubuntu22.04,怕不是很稳定,选择了ubuntu20.04,官网链接在这里大家自行下载安装:Ubuntu系统下载 | Ubuntu

开干

完成了操作系统的安装,现在到了安装Bochs的环节,这是我们的操作系统的宿主机。

直接上下载链接:Bochs x86 PC emulator download | SourceForge.net,用ubuntu自带的火狐浏览器就可以下载,我下载的2.6.8版本,选择bochs-2.6.8.tar.gz下载。

然后解压到想要的目录

tar zxvf bochs-2.6.8.tar.gz

接下来进入bochs-2.6.8目录,开始configure、make、make install三部曲。

先更新安装一下gcc、g++、make和相关依赖,不然有可能报错。

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install make
sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install libgtk2.0-dev

配置configure

./configure --prefix=/安装路径/bochs --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11

这里如若想使用gdb进行调试,则需要将--enable-debugger替换为--enable-gdb-stub,不过我这里不建议大家使用gdb,因而环境一致可能造成许多不同的问题,我们直接用bochs本身自带的调试功能即可。

接下来make编译,make无误后make install安装。

配置Bochs

Bochs的配置是通过配置文件完成的,这个配置文件类似BIOS,既然bochs是模拟硬件的,他就要知道模拟的计算机是什么样的,有哪些硬件,启动顺序是什么等等。bochs启动时会找到此文件,根据文件内容创建自己。

我们在bochs目录下创建一个名为bochsrc.disk的配置文件(文件名可以改,并且.disk可加可不加,这里为了表示是从硬盘启动,就加了一个方便查看)

下面是给大家参考的配置文件内容(不同版本的bochs关键字可能不同):

# 第一步,首先设置 Bochs 在运行过程中能够使用的内存,本例为 32MB
# 关键字为 me gs
megs :512
# 第二步,设置对应真实机器的 BIOS VGA BIOS
# 对应两个关键字为 romimage vgaromimage
romimage: file=/实际路径/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/实际路径/bochs/share/bochs/VGABIOS-lgpl-latest
# 第三步,设置 Bochs 所使用的磁盘,软盘的关键字为 floppy
# 若只有一个软盘,使用 floppy 即可,若有多个,则为 floppya, floppyb… 
#floppya: 1_44=a.img, status=inserted
# 第四步,选择启动盘符。
#boot: floppy #默认从软盘启动,将其注释
boot: disk #改为从硬盘启动。我们的任何代码都将直接写在硬盘上,所以不会再有读写软盘的操作。
# 第五步,设置日志文件的输出。
log: bochs.out
# 第六步,开启或关闭某些功能。
# 下面是关闭鼠标,并打开键盘。
mouse: enabled=0
keyboard:keymap=/实际路径/bochs/share/bochs/keymaps/x11-pc-us.map
# 硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd60M.img", mode=flat, cylinders=121, heads=16, spt=63
# 下面的是增加的 bochs gdb 的支持,这样 gdb 可以远程连接到此机器的 234 口调试了
#gdbstub : enabled=l, port=l234, text_base=O, data_base=O, bss_base=O
################### 配置文件结束 #####################

运行Bochs

仅有一个配置文件还不够,我们需要运用bochs自带的功能生成一个虚拟的磁盘,他位于在你们bochs目录下bin目录里面。通过使用--help指令来查看

接下来我们用 -hd= 创建一块60M的硬盘(过程按提示操作,type选flat),这里我将其命名为 hd60M.img。

bin/bximage -hd=60

通过刚刚的配置文件启动

bin/bochs -f bochsrc.disk

可以看到启动起来了,但是我们的硬盘中什么都没有,所以是黑的。

至此环境搭建完成,接下来就是想办法制作启动盘了...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值