自己动手写一个操作系统——MBR(1)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
前言
上篇《自己动手写一个操作系统——我们能做什么我们需要做什么》我们介绍到 BIOS 会遍历每个磁盘的第一个扇区查找 MBR找到后便将 MBR 加载到内存并跳转过去。如果没找到就会报错无法启动。
MBR
接下来我们就编写制作一个 MBR。
BIOS 识别 MBR 的唯一条件就是第一个扇区的最后两个字节为 0x55 和 0xAA而不管前 510 个字节是什么数据。就算前 510 个字节是错误的数据指令CPU 也照样取出指令去执行大不了就是跑飞呗。
所以我们制作一个简单的 MBR
- 1) 大小为 512 字节
- 2) 最后两个字节为 0x55 和 0xAA
- 3) 前 510 字节全为 0
1) 512 字节镜像
dd if=/dev/zero of=${OUTPUT}/mbr.img bs=512 count=1
2) 0x55 和 0xAA
最后两个字节修改为 0x55 和 0xAA
vim -b mbr.img
:%!xxd -g 1
# 最后两个字节修改为 55 AA
:%!xxd -r
:wq
qemu 运行
qemu-system-i386 -daemonize -m 128M -drive file=output/mbr.img,index=0,media=disk,format=raw
说明 BIOS 已经检测到了 MBR。 🆗
如果没有检测到我们手动将 0x55 和 0xAA 修改成 0x00是下面这种情况
not a bootable disk
No bootable device