《一个操作系统的实现》读书笔记(一)

    如果你也对操作系统有着浓厚的兴趣, 从今天开始,跟着我一起学习于渊的《一个操作系统的实现》吧!首先声明,我是个菜鸟,还在读书,我自己本身也是摸索着学习的,有些地方理解不到位请大家谅解。书虽然比较详细,但是自己动手起来还是会难住一些对编程不是很熟悉的人。为了初学者能少走弯路,我会尽可能的把每个细节都用图文展示出来,高手路过请见谅。

     先不说别的,才翻开书就看到书里面说,需要用到软盘,对于我们这个年龄的孩子来说,软盘真的是很遥远。所以我特地到淘宝去看了看软盘,但是后来又发现自己的本本根本没有地方可以支持软盘的驱动了,这个想法就放弃了。经过思考,我想到了使用U盘来启动,所以我的目标暂定为用U盘启动代替软盘。后来证实这个观点也是不可行的,也许是自己电脑或是U盘的原因。读者如果有想法也可以自己尝试一下把img文件通过软件写到U盘,再使用U盘启动。最后从网上搜到一篇文章,使用虚拟软盘!这个问题解决了后,就可以来实施具体步骤了。

 

 一、windows下VMware Workstation虚拟机的安装

       想用什么样的虚拟机大家自己选,我这里选择的是VMware Workstation。下面来看安装的具体步骤:

       1、下载虚拟机

       到系统之家下载带汉化包的虚拟机,系统之家地址Http://WwW.XP510.CoM,进去里面搜就可以搜到带汉化包的VMware Workstation。解压后,文件一般包括如图所示几个。(anzhuang这个是我后来的安装路径,下载时候没有)

 
《一个操作系统的实现》读书笔记(一)_第1张图片
       2、安装和汉化

       大家一定要区分安装包和汉化包,安装包是第三个,汉化包是第二个。点击安装后,想安装普通软件一样安装虚拟机就可以了,因为它本身也是一个软件。可以完全按照自定义安装,如果C盘不内存不是很大的话,可以考虑安装在其他盘。安装完成后点击汉化程序开始汉化。汉化时候我们只需要一直点next就可以,软件会自动识别虚拟机的安装路径的。

安装程序开始界面:
《一个操作系统的实现》读书笔记(一)_第2张图片

 汉化程序开始界面:

《一个操作系统的实现》读书笔记(一)_第3张图片
 

二、nasm编译软件的安装

     1、下载

     为了方便初学者可以省去寻找可用软件花费的时间,我已经把软件打包在博客的附件中。读者自己下载

     2、安装

     安装过程及其简答,也是和安装普通软件一样的。安装完成后打开软件应这样:

《一个操作系统的实现》读书笔记(一)_第4张图片

三、FloppyWriter的下载

     该软件同样也在附件中,此软件不需要安装,下载后打开就可以用,

《一个操作系统的实现》读书笔记(一)_第5张图片
 

四、写代码

       如果没用过Uedit,我强烈推荐你使用这个软件来写代码,安装包在附件里面,解压之后安装即可,该软件已经破解,里面有注册用的密钥,在sn.txt里面。软件安装后,就可以在里面写代码了。我也没学过汇编语言,这个代码还只是能看懂一些,理解也不是很到位,就抄一遍吧。

 

org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax ;es:bp = 串地址
mov cx, 16 ;cx = 串长度
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello world"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55
 保存上述代码为boot.asm

 

五、编译代码

      然后我们打开nasm,并进入到所boot.asm在路径下。这里我的文件时放在桌面的,所以我这样使用。首先切换到c盘(注意命令使用)


 

切换到文件所在路径(不知道文件路径可以右键属性进行查看)


 

然后输入命令把boot.asm文件编译为boot.bin文件,编译成功后会自动回到目录。


 

 '-o'选项:指定输出文件的文件名。

     NASM会为你的输出文件选择一个文件名;具体如何做取决于目标文件的格式,对于微软的目标文件格式('obj'和'win32'),它会去掉你的源文件名的'.asm'扩展名(或者其他任何你喜欢使用的扩展名,NASM并不关心具体是什么),并替换上'obj'。对于Unix的目标文件格式('aout','coff','elf'和'as86')它会替换成'.o', 对于'rdf',它会使用'.rdf',还有为'bin'格式,它会简单地去掉扩展名,所以'myfile.asm'会产生的一个输出文件'myfile'。
    如果输出文件已经存在,NASM会覆盖它,除非它的文件名与输入文件同名,在这种情况下,它会给出一个警告信息,并使用'nasm.out'作为输出文件的文件名。在某些情况下,上述行为是不能接受的,所以,NASM提供了'-o'选项,它能让你指定
    你的输出文件的文件名,你使用'-o'后面紧跟你为输出文件取的名字,中间可以加空格也可以不加。比如:
       nasm -f bin program.asm -o program.com
       nasm -f bin driver.asm -odriver.sys
    请注意这是一个小写的o,跟大写字母O是不同的,大写的是用来指定需要传递的选项的数目

 

 六、制作img文件

       这里要用到,前面所说的Floppy Writer软件了。打开所FloppyWriter,我们使用write File to Imag(另外一个功能暂时还没用过)

《一个操作系统的实现》读书笔记(一)_第6张图片

       选定上一步的boot.bin文件后,点击确认后,会出现一个让我们选择img文件的地方。这时候你应该想到随书光盘中的a.img了吧!为了安全起见,我们备份一份到桌面使用!如图,然后点击确认后,我们就已经把引导启动写到a.img里面去了。

 

七、开始测试

     1、在虚拟机上建一个空的领域(自己这样称呼),步骤比较简单,只是有几个地方需要注意。


《一个操作系统的实现》读书笔记(一)_第7张图片
 

 

这里要使用自定义的安装

《一个操作系统的实现》读书笔记(一)_第8张图片
 

 

选择“我以后安装操作系统”

《一个操作系统的实现》读书笔记(一)_第9张图片

 

 

这两个地方一定要选择other,搞错了就会出问题。

《一个操作系统的实现》读书笔记(一)_第10张图片
 这样就为我们的操作系统认领了一块属于自己的“土地”。

 

 

   2、安装系统

  继续刚才的一步,在虚拟机中找到我们刚才给系统预留的地方。

《一个操作系统的实现》读书笔记(一)_第11张图片
 

 

 点击以后打开,点击编辑此虚拟机。
《一个操作系统的实现》读书笔记(一)_第12张图片
 

 

 

  留意我用红色框标出来的地方。选择软盘,然后选择打开电源时连接,然后把我们写好的a.img文件加载进来。还有可能出错的一点是,不要点击创建!我一开始点了就出问题了。点击下面的确定就好。
《一个操作系统的实现》读书笔记(一)_第13张图片
 

 

 

 

  对虚拟光驱也做一下配置,我找的网上的资料,不知道有啥用,读者可以试试不配置。


《一个操作系统的实现》读书笔记(一)_第14张图片
 

 

  现在一切都已经完成了,来体验一把自己完成的一个操作系统吧。点击打开电源,哦,不好,出现错误了:【传输错误(VMDB)错误-44:Message The Vmware Authorization Service未运行】


《一个操作系统的实现》读书笔记(一)_第15张图片
 

 

 

  不用着急,关闭虚拟机。对虚拟机快捷方式:右键->以管理员方式运行虚拟机.

《一个操作系统的实现》读书笔记(一)_第16张图片
 

  再次打开打开虚拟机电源,看到什么了?

《一个操作系统的实现》读书笔记(一)_第17张图片

再等等,再等等......

再等等,再等等......

看到没!出来你想要的Hello world了!
《一个操作系统的实现》读书笔记(一)_第18张图片
 再回头看看,是不是很简单很明了~

 

本文为作者原创,转载请注明原创出处:http://zhoujianquan.iteye.com/blog/2038357

你可能感兴趣的:(最详细的,一个操作系统的实现,自己动手写一个操作系统,《自己动手写操作系统》,自己动手写操作系统实践第一章)