`

ubuntu 10.10下bochs安装和helloword演练

阅读更多

昨天晚上有空下载到了《自己动手写操作系统》--于渊,这本书。感觉他用的语言和比喻很好,所以一口气读了两章,把hello os读完了,我手也痒痒力,自己也搭一个平台,试试吧。在大三的时候上操作系统课,就像做一做操作系统的实验,但是由于自己的懒惰和一些列的借口,总之没有能做成,现在补回来吧。

      在ubuntu10.10正式发布还有5天的时候,我将我的10.04升级到了10.10,也没有什么特殊的感受。下面进入正题吧:

1.安装bochs

      bochs是一款开源软件,由于其强大的可移植性,在各种机器和操作系统下都可以安装。这里对于它的历史就不多做介绍了。说命令吧。

 

sudo apt-get install bochs
 

然后apt包管理会自动解决依赖,下载该下的,安装该装的包。ok,安装完成。

我们该测试好不好使了。

2.编写hello os 汇编程序

        org     07c00h  ;告诉编译器程序加载到7c00处
        mov     ax, cs
        mov     ds, ax
        mov     es, ax
        call    DispStr ;调用显示字符串例程
        jmp     $       ;无限循环
DispStr:
        mov     ax, BootMessage
        mov     bp, ax
        mov     cx, 16
        mov     ax, 01301h
        mov     bx, 000ch
        mov     dl, 0
        int     10h     ;10h 中断
        ret
BootMessage:    db      "Hello OS world!"
times   510-($-$$)      db      0       ;填充剩下的空间,使生成的二进制代码恰好>为512字节
dw      0xaa55                  ;结束标志

    将其保存为boot.asm(汇编代码啊,第一次正式编译,虽然以前在xp下写过更笨的,有点小兴奋)

   编译汇编代码:

 

nasm boot.asm -o boot.bin   //怎么样,感觉跟gcc的用法差不多啊,:-)

 没有错误的话就好了,有了的话就仔细调一下,注意汇编注释用semicolon(分号而不是冒号),我在这还错了。

 

3.让我们的程序泡在bochs上

   首先我们要想到,bochs是一个虚拟机,它给我们虚拟出了一个机器硬件环境,下面怎么运行就看我们的指令了。对于我们实际的机器,如果让它运行,要么用软盘,要么用光盘,要么用硬盘,你总得挑一个可以让它启动的,这里我们把上面些的hello os程序做成一个img文件,就是一个软盘格式的文件,让bochs挂载上这个虚拟软盘,我们就可以让bochs运行了。

  将上面生成的bin文件转换成img文件的方法:

 dd命令:

dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc

 其中要注意的是,注意inputfile的路径可以是相对的也可以是绝对的。这个命令在鸟哥的私房菜中有点印象,现在都忘了,网上搜的。

好了,下面就是挂载这个文件,这个虚拟软盘了。

所以我们接下来要做的就是告诉bochs:嘿,我有一个软盘,你给我从这里启动,运行我写的程序。

我们怎么告诉它呢,当然是配置文件了。

对于bochs,有一个默认的配置文件在:/etc/bochs-init/bochsrc

网上的前辈们都说最好对于每个特定的应用,自己单独创建一个bochsrc配置文件,反正又不费时。好,我们写一下适合我们的bochsrc文件。

megs: 32
romimage:file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
floppya: 1_44=boot.img, status=inserted
boot: floppy

 bochsrc文件里的格式有严格的要求,所以照着原始的那个照猫画虎就可以搞定了。我相信里面的东西不用多解释了吧。

megs: 32说明了最大允许内存

romimage:bios的二进制文件,软件带的,不用管

vgaromimage:vga显示的二进制文件,软件自带的,不用管

floppya: 就是虚拟出的软驱a,后面说了软驱的型号:1_44即1.44M的那种,后面就是软驱文件的位置和名称了,状态,已经插入。

boot:告诉bochs从哪里启动。还用问吗,我们当然是从软驱启动了。

ok,一切顺利的话,我们就可以运行了:

bochs -f bochsrc

 我的是看到了下面的漂亮画面:

 

 

有一点需要注意就是关于一个环境变量的问题:BXSHARE,我的好像没有自己加上去的,但是我没有让它生效,它也好使了,我没有用source命令,也没有重启,未知中,不管了,好使就行。

你是不是也看到自己的成果了呢?

好,晚上,继续努力!!!

 

附件中有我的hello os文件夹,包括hello os的源码和bochsrc的配置文件

 

 

  • 大小: 10.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics