本文最后更新于:2024-11-18T14:20:10+08:00
OS专题-了解MBR引导过程
计算机上电启动后,首先运行主板BIOS程序,BIOS并不知道如何加载操作系统,所以BIOS把加载操作系统的任务交给引导扇区。因此,引导扇区必须放在一个已知的标准位置,这个位置就是磁盘的第一个扇区cylinder 0, head 0, sector 0
,该扇区一共占用512
字节。
为了确保”磁盘是可引导的”BIOS会检查扇区的第511
和512
字节是不是0xAA55
。下面是最简单的可识别引导:
可以看到上面的代码基本上都是0
,最后的两个字节是以0xAA55
结束的。开头的三字节表示计算机进入一个无限循环。
我们来实现这个代码。现在我们创建一个项目,什么项目都可以(C或者C++的都行)。
创建完成以后,我们可以看到如下的目录结构:
我们修改一下这个结构,使其变成这样:
下面我们要更改一下CMakeLists.txt
这个文件,使其成为一个汇编项目。
在mbr.asm
文件中编写如下代码:
现在就可以编译项目了,点击菜单栏的Build -> Build Project
后,你会在bin
目录中看到一个镜像文件loader.img
。打开Terminal
,输入指令qemu bin/loader.img
。即可启动写好的镜像。因为代码中只有一个循环,没有任何输出,所以只要你的虚拟机中光标在闪动且没有输出就说明成功了!