[系列]OS学习-自己写操作系统(2)- bochs的使用注意

-----------------------------------------写操作系统的第二天---------------------------------------------------

今天读于渊的《Orange's 一个操作系统的实现》一书的第2 3章,把自己遇到的一些问题记录下来。希望对大家有所帮助。

我以前以为,博客就是自己想什么写什么,简单的很。昨天写了第一篇博客之后,才发觉写博客也需要头脑和技术……不简单!

笔者目前在windows下学习

--------------------------------------------说正事的分割线------------------------------------------------------

chapter 2 搭建你的工作环境

在第一章里,我们自己制作了一个非常简单的引导扇区;而且我们的PC真的可以运行它!

毫无疑问,我们以后还要写很多很多的OS代码,还要做很多次的实验。难道每次都关机重启吗?处于节约效率+关爱PC的目的,我们想到了使用虚拟机,即书中使用的——bochs。(读音同box)

bochs的下载和安装都非常简单,不过他的使用方法,估计会让习惯VMware的同学头大(因为我以前就是用VMware的)。

bochs有很长的manual,大家可以去官网看。我只想在这里说一下自己的理解。安装完bochs后,乱糟糟的目录下应该会出现这么些东西——如图


我选中的三个exe,就是咋们经常使用的。

bochs.exe -虚拟机主程序,当它正确的加载(load)一个虚拟机.bxrc配置文件的时候,虚拟机就可以开始运行

bochsdbg.exe -用于虚拟机调试,单步运行/查看寄存器/CPU都可以做到

bximage.exe -用于制作.img文件(磁盘映像文件)

bochs的使用步骤大致如下:

1.先使用bximage.exe,创建一个新的磁盘映像new.img(相当于虚拟了一个软盘)

2.将我们用nasm编译好的.bin文件“烧录”到new.img,这样一张虚拟启动盘就做好了。我使用了WinHex进行“烧录”过程,就是复制+写入(是写入,不是粘贴;写入是覆盖原块,粘贴是插入新块),很轻松。

3.自己创立一个新的.bxrc配置文件,在里面填好配置(比如)

############################################
# Configuration file for Bochs 这是我的配置文件,给大家看一下
############################################
#how much memory the emulated machine will have
megs:32

#filename of ROMimages 即设置BIOS
romimage: file=..\BIOS-bochs-latest	
vgaromimage: file=..\VGABIOS-lgpl-latest
#上面这两个文件在bochs安装文件的顶级目录下,不太好找
#what disk images will be usedfloppya: 1_44=boot.img,status=insertedfloppyb: 1_44=pm.img,status = inserted#choose the boot disk.设置很关键的启动盘,这个非常重要boot: floppy#where do we send log messages?log: bochsout.txt#disable the mousemouse: enabled=0#enable key maapping, using US layout as defaultkeyboard: keymap=..\keymaps\x11-pc-us.map
 
  

 
  如果大家加载配置文件时报错no bootable device,问题大概出在以下几个方面 
  

1.配置文件某个地方写错了几个字符

2.img文件的第512个字节没有被写改成0x55AA,造成引导区识别故障

除此之外,这章没有其它难点。

-----------------------2017.4.6更新-----------------------

bochs常用调试命令。节选自《Orange's》一书,在此附录

[系列]OS学习-自己写操作系统(2)- bochs的使用注意_第1张图片

大致的调试流程:调试前规划好断点位置,启动调试后先使用b命令创建多个断点,然后使用c命令跳到断点去,进行寄存器的查看。注意,r命令只能查看到通用寄存器,段寄存器和控制寄存器分别需要用sreg和creg来查看。

----------------------------------2017.4.9 更新-----------------------------

最近写汇编不再使用记事本…因为记事本这个东西,对换行的支持太不完善了;改用Notepad++,工作效率成倍上升。


 
 

你可能感兴趣的:(操作系统,自己写操作系统)