Orange


 
 
2010-04-05 21:33

《Orange’s 一个操作系统的实现》实验笔记

生成软盘镜像文件a.img的方法

Windows 平台

1.       使用WinHex软件,新建大小为1474560bytes的文件,然后保存。

2.       使用WinImage软件,新建大小为1.44MB的文件,然后保存,注意,保存的类型为“所有文件(*,*)”,文件名为“a.img”。

Linux平台

1.       使用dd命令:dd if=/dev/zero    of=a.img bs=512 count=2880

Windows和linux如果安装了borchs虚拟机,则还可以通过bximage命令来生成一个镜像。

注意:以上方法中,使用winhex和dd命令生成的镜像文件是原始的二进制文件,未被格式化,但是这个软盘镜像仅仅能用来启动电脑,而不能用来存储数据。所以不能被操作系统(例如msdos,linux)识别,例如linux不能挂载。而winimage软件生成的文件是已被格式化成fat文件系统,可以储存数据,可以被linux挂载,被msdos识别。

 

《Orange’s 一个操作系统的实现》第三章第一节的实验笔记

如果电脑启动时,执行的是软盘上的程序,则此软盘是可启动的。判断一个软盘是否能启动,只要看*.img(泛指软盘镜像)的第一扇区的最后两个字节是否是0x55,0xAA,如果是,则可启动。怎么查看*.img?linux下可以用hexedit,Windows用winhex等。用WinHex和dd命令生成的软盘镜像的内容全是0,所以,我们需要将a.img的第一个扇区的最后两个字节修改为0X55,0XAA。

实验一:将pmtest1.bin 写入 a.img

这两天在做《Orange’s 一个操作系统的实现》第三章第一节的实验,碰到一些问题,使用dd命令将pmtest1.bin写入软盘镜像a.img,但此镜像却不能再虚拟机中运行,我是这样做的:

#生成一个空白的软盘镜像a.img

dd if=/dev/zero of=a.img bs=512   count=2880

#将pmtest1.asm编译成bin格式

nasm pmtest1.asm –o pmtest1.bin

#将pmtest1.bin 写入a.img

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

起初以为是自己写命令有问题,然后在网上找相关资料,《使用开源软件—自己动手写操作系统》是这样做的:

dd if=pmtest1.bin of=a.img bs=512   count=1

dd if=/dev/zero of=a.img skip=1 seek=1 skip=1   bs=512 count=2879

以上两种方法我试了N次都不行,最后发现,是因为生成的文件a.img是不可启动,因为在a.img的第一个扇区的最后两个字节是0x00,0x00,所以,我把这两个字节改为0x55,0xAA,在虚拟机上运行成功!还有一个问题值得注意,作者使用的NASM版本比较老,我使用的是2.8版本的,两个版本编译源代码生成的二进制文件很不一样!但在虚拟机上运行结果却是一样的。作者所用的a.img是第一章的文件,所以第一个扇区的最后两个字节已经是0x55,0xAA。作者是把代码用NASM编译成.BIN格式(二进制格式),生成的二进制中除了你写的源代码之外,不包含其他任何东西。这也意味着,程序执行时的内存映像和二进制文件映像是一样的。

 

 

 

本文最近访客

评论
 
 
unix网络开发unix网络开发太感谢了。
2013-01-19 21:17
请问必须用软盘镜像或软盘吗,不能用光盘或光盘镜像吗。?求解答,现在没有用软盘的啊。
2013-01-19 21:16
太感谢你了,我终于知道哪错了,哈哈……
2012-11-14 18:26
roothooroothoo回复justtheend:可以用软盘镜像,而非真实的软盘
2012-05-14 09:16
justtheendjusttheend有没有不用软盘的替代方法??
2012-03-11 19:16
星夜落尘星夜落尘哎,找到哪里错了,是vmware默认打开电源时会连接CD/DVD光驱而不是软盘,所以要把CD/DVD的connect at power on的勾去掉,把floppy的connect at power on勾上才行。
2011-07-25 21:49
星夜落尘星夜落尘哎,不对,img文件的第一个扇区(512byte)的最后两个字节确实是0x55,0xAA ,但载入vmware就是死活运行不了,纠结。。。看来我得换个虚拟机了。
2011-07-25 21:43
niuwaqianniuwaqian当我没说= =!
2011-02-06 21:26
niuwaqianniuwaqian请问你是怎么改的
2011-02-06 20:49
 
百度空间,让世界发现你
向世界展示自己,发布喜爱的图片、文字和音乐
posted @ 2013-08-12 15:15  youJumpILook  阅读(433)  评论(0编辑  收藏  举报