在虚拟机下运行自制的简单“操作系统”
本文实现了于渊在《自己动手写操作系统》第一章中的简单Floppy引导的“操作系统“一、准备工作 NASM: http://www.nasm.us/pub/nasm/releasebuilds/2.07/win32/ 在环境变量里配置 Path Virtual PC 2007: http://dow
本文实现了于渊在《自己动手写操作系统》第一章中的简单Floppy引导的“操作系统“
一、准备工作
- NASM:
http://www.nasm.us/pub/nasm/releasebuilds/2.07/win32/
在环境变量里配置 Path
- Virtual PC 2007:
http://download.microsoft.com/download/8/5/6/856bfc39-fa48-4315-a2b3-e6697a54ca88/32%20BIT/setup.exe
Microsoft 的虚拟机软件,个人感觉不错
- WinImage:
http://www.crsky.com/soft/281.html
制作空 Floppy 的软件
- FloppyWritter
http://www.pudn.com/downloads82/sourcecode/windows/file/detail317402.html
此程序把生成的 .bin 二进制代码 COPY 到 .img 文件前 512 Byte。解压后是个 VC6 下的 MFC 工程,需要自己编译下(什么你没有 VC6,OMG ,如果没有需要借助 UltraEdit 手动敲了 “D)
二、动手开始
- 编辑 boot.asm, 代码如下 ( 原搬于渊的 ) :
代码原理引用于渊的
我们知道,当计算机电源被打开时,它会先进行加电自检( POST ),然后寻找启动盘,如果是选择从软盘启动,计算机就会检查软盘的 0 面 0 磁道 1 扇区,如果发现它以 0xAA55 (假如我们把此扇区看做一个字符数组 sector[] 的话,那么此结束标志相当于 sector[510]=0x55 ,且 sector[511]=0xAA )结束,则 BIOS 认为它是一个引导扇区,也就是我们说的 Boot Sector 。当然,一个正确的 Boot Sector 除了以 0xAA55 结束之外,还应该包含一段少于 512B 的执行码。
好了,一旦 BIOS 发现了 Boot Sector ,就会将这 512B 的内容装载到内存的 0000:7c00 处,然后跳转到 0000:7c00 处将控制权彻底交给这段引导代码。到此为止,计算机不再由 BIOS 中固有的程序来控制,而变成由操作系统的一部分来控制。
现在,你可能明白了为什么在那段代码的第一行会出现 org 07c00 这样的代码。没错,这行代码就是告诉编译器,将来我们的这段程序要被加载到内存偏移地址 7c 00 处。
开始-运行- cmd
成功后生成了 boot.bin 文件, 查看下大小 512 bytes。
- 使用 WinImage 生成一个空的 IMG 文件,用默认大小 1.44M , Save AS ,将文件名称改成 os.img ,WinImage默认保存文件后缀是 IMZ
- 把boot.bin 的二进制内容COPY 到boot.img头部
打开编译好的 FloppyWriter.exe,界面相当简单
点击Write File to Image 选择 boot.bin
成功后在第二个对话框中选择 boot.img
注意:如果没有编译FloppyWriter.exe需要使用16进制编辑器手动操作了。
程序提示成功后,主干工作就完成了!
很好 boot.img 就是我们最终想要的 Floppy 引导盘镜像了,下一步就要运行它了。
三、运行”系统“
运行 Virtual PC 2007
建立一个新的虚拟机,过程大家摸索一下。
建立成功的虚拟机如图, Start 启动,需要配置下 Floppy 找到 boot.img
Reset 下虚拟机
Waitting…
看到久违的 Hello, OS World 了么, 还要多谢想于渊这样能愿意把真正有用的东西贡献出来的人。
更多推荐
所有评论(0)