从零写一个操作系统之准备工作

花了半年时间写了一个小的单地址空间内核,用当下流行的词汇就是unikernel,就是没有用户空间只有内核空间的内核。这样做的好处就是简单,很多事都可以简化。这个内核放在github上,地址为https://github.com/jianyongwu/horos。从本文起就开始总结一下写内核的历程,虽然写的很烂,不足以拿出来示人,但是总觉得半年的功夫还是要总结一下的。这个内核相当简单,由于本人水平实在有限,里面有很多问题,希望读者。

这个内核我叫它horos,来由无所谓了。不多说,开始准备吧。

我自己有一台很老的x86电脑,32位机,装了Ubuntu就开始写了,正好几乎所有教人写内核的书都是基于32位,不过经过改造,在64位机上也是可以运行和正常编写的。所以只要有一台x86机器,无论32位还是64位都行。系统的话最好是Ubuntu 16.04,因为我就是在这个系统下写的,此外还要装上两个虚拟机软件,bochs和qemu。安装方法如下:

apt install -y bochs bximage qemu

操作系统都是直接运行在硬件上的,我么要频繁启动内核来验证我们的正确性,使用硬件太麻烦了,因此一般写内核都在虚拟机里,qemu和bochs就是模拟硬件的虚拟机软件。在虚拟机里运行相当于运行在硬件上。

先给自己建一个目录吧,我喜欢在root下面做事,使用root用户,反正电脑是我的。就叫horos吧。

然后就要建一些必须的文件。一般的书上都喜欢用bochs,因为他调试方便,但是我喜欢qemu因为它简单,bochs用来调试。bochs稍微麻烦一点,得有一个配置文件,我就把我的贴出来:

################################################
#configure file for Bochs
################################################

# how much memory the emulated machine will have
megs: 1024

# filename of Rom images, 注意下边要根据你安装目录来调整
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest

#what disk images will be used
floppya: 1_44=a.img, status=inserted
ata0-master: type=disk, path="c.img", mode=flat
#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#choose the boot disk.
boot: disk

#where do we send log messages?
log: bochsout.txt

#disable the mouse
mouse: enabled=0

# enable key mapping, using US layout as default.
keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map

这个文件的名字最好就叫:bochsrc.bxrc。

还需要一个硬盘镜像文件当我们的硬盘用。直接执行命令bximage就行,根据提示一步步走,一般重要的就只是选择fd还是hd,我选hd,还有硬盘大小,那个是以M为单位,其他的比较简单。建好之后就会多出一个以.img结尾的文件,那就是我们的硬盘,以后kernel就要放在这里面。有了基本的环境就可以试试horos了。

git clone https://github.com/jianyongwu/horos
cd horos
./run.sh

应该能看到一个窗口:

那些command list都是可以运行的命令,键入命令后回车,其中echo和snow都需要一个参数,其他直接运行。这是一个交互界面,一个简单的shell。本系列就是一步步展示这个内核是怎么写出了的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值