在虚拟机下运行自制的简单“操作系统”

本文介绍如何使用NASM和VirtualPC等工具实现简单的基于Floppy的引导操作系统,并详细记录了从准备工具、编写引导代码到运行虚拟机的全过程。

本文实现了于渊在《自己动手写操作系统》第一章中的简单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 了么, 还要多谢想于渊这样能愿意把真正有用的东西贡献出来的人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值