我的OS | 不要欺负BIOS,好吗

我们在第二篇文章中讲了如何制作一个启动层,但是,人家BIOS只读取一个扇区,我们也不能只做一个扇区啊?上次我们生成的文件是一个.img格式的文件,这是一个磁盘映像文件,磁盘映像文件是一个模拟的磁盘,它只有一个扇区(我们在boot.asm中设置了填充512个字节,就是一个扇区),BIOS也只会读取一个扇区,就这样,我们骗过了BIOS。今天,我们要做一个不欺负BIOS的操作系统。

一个普通的磁盘映像文件是1440KB(1.44MB的软盘),我们也要使用这么大的。笔者已经将虚拟机软件从QEMU换到了VMWare又换到了Bochs,就是因为Bochs可以调试。而且Bochs自带了一个叫做bximage的工具,可以生成一个软盘映像文件。这个文件的大小就是1440KB,里面最开始全都是0。我们只要将我们的引导层写入到里面就好了。

但这是一个二进制文件,并不能使用我们的Ctrl+C、Ctrl+V来复制,需要用到dd.exe,大家可以搜索ddWindows下载来下载(如果你是Linux系统,不需要下载安装,Linux自带dd)。然后,输入

nasm boot.asm -o boot.bin

这段指令会使用NASM将boot.asm编译为boot.bin,然后,输入

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

这段指令会将boot.bin写入到OS.img中,一个块是512个字节(一个扇区),写入到第一个块(count=1),不截断(notrunc)

请注意OS.img一定是那个1440字节的文件,并且生成的文件名也一定要是boot.bin,否则就会报错。

接着,使用OS.img启动虚拟机就可以了。我们不会欺负BIOS了!万岁!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值