自己动手写操作系统之环境构建篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gx19862005/article/details/44411275

自己动手写操作系统之环境构建篇

最近开始看自己动手写操作系统,但是书中采用软盘启动很是郁闷,于是想是否可以从优盘启动呢?作为一名BIOS工程师,曾经用优盘启动过dos,linux等系统,于是做了如下尝试,并成功启动那20几行代码,屏幕左上角打印出了“Hello,OS world”,过程如下:

1. 下载nasm,因为作者的源代码是遵守nasm的规范的,所以没有别的选择,只能用这个编译器,根据作者提示,在网址http://sourceforge.net/projects/nasm/下载并安装,默认安装在C盘,因为我的系统是win7-64位,担心无法运行,但是安装完成之后,在cmd中运行了nasm -h命令后打印出了熟悉的help信息,窃喜。按照作者提示,编译:nasm boot.asm -o boot.bin,这样就生成了boot.bin文件。

2. 搜索了一下优盘作为启动盘的原理,简述如下:拿到U盘首先就是用U盘启动大师引导处理,选用USB-HDD格式就是模拟了HardDisk,主板就把它识别成HardDisk,所以后的过程就和HardDisk一样了也就是硬盘。如果是USB-ZIP引导,就是模拟了FloppyDisk也就是被主板识别成了软盘,启动原理就按软盘算,后面的过程就是软盘的启动过程了。既然这样那么采用USB-ZIP引导就可以了,那首先得有生成软盘格式的文件吧,上网搜了下看到下面帖子,文中提到“1、用作者提供的floppy writerbin文件写入作者提供的TINIX.IMG文件中”,于是上百度搜rawrite,找到如下网址http://www.netbsd.org/~martin/rawrite32/download.html,看了下说明,下载了

rw32-setup-1.0.2.3.exeThe win32 setup program,然后安装,竟然在我的win7-64位操作系统上好用,而且是绿色软件,免安装,直接打开后


点击打开boot.bin,目标选择自己的优盘,然后点击“写入磁盘”,本来以为优盘中会有自己想要的软盘格式的文件,但是发现优盘无法打开了,难道启动优盘已经做好了?赶紧把实验电脑的硬盘拔掉,插上优盘,启动,最后发现竟然进入了uefi shell了,我晕,没找到优盘啊,作为一个从事了几年BIOS工作的我来说,潜意识里感觉应该是bios设置的问题,于是果断重启进入BIOS设置界面,把UEFI boot改为Legacy boot,同时把boot顺序改为从优盘启动,然后保存设置重启电脑,我擦,奇迹出现了:

 

rawrite32.exe磁盘写入工具是一个绝对的对磁盘进行最原始的写操作的工具,该工具认为磁盘没有任何文件系统,是最原始的物理磁盘,要写入的二进制文件会从扇区0(引导扇区)开始连续写入后续的连续扇区,直到把文件写入到磁盘扇区n为止。

继续第二章,开始玩虚拟机bochs.

按照书上所说,运行bochs,出现错误:

bochs-biin: symbol lookup error: /usr/lib/bochs/plugins/libbx_x.so: undefined symbol: XpmCreatePixmapFromData

作者指出,我们换一种显示的方案就可以了。

首先按照bochs-sdl,用apt-get可以安装。

  1. sudo apt-get install bochs-sdl

在我们的bochsrc文件中,加入一句话:

  1. display_library: sdl
再次运行,出现如下错误:

00000000000p[KMAP ] >>PANIC<< line 38: unknown host key name 'XK_0' (wrong keymap ?)
注释掉下面这行

  1. #keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
再次运行,就可以了,不报错误了。


没有更多推荐了,返回首页