自己动手写一个操作系统——MBR
Posted Li-Yongjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己动手写一个操作系统——MBR相关的知识,希望对你有一定的参考价值。
前言
上篇文章《自己动手写一个操作系统——MBR(1)》,我们使用 dd 生成了一个 512 字节的镜像,并用 vim 将其最后两个字节修改成了 55 AA,以此来完成了 MBR 的构建。这种办法终归上不了台面,而且还需要手动操作,无法纳入自动化编译工程中。今天,我们就介绍另外一种办法来完成这件事情。
代码
首先,编写一份汇编代码 mbr.S
.global _start
_start:
jmp _start
.org 0x1fe
.byte 0x55, 0xAA
Makefile
OUTPUT=output
all: clean
as --32 -o $OUTPUT/mbr.o mbr.S # 汇编
ld -m elf_i386 $OUTPUT/mbr.o -o $OUTPUT/mbr.elf # 链接
objcopy -O binary $OUTPUT/mbr.elf $OUTPUT/mbr.bin # elf --> bin
dd if=$OUTPUT/mbr.bin of=$OUTPUT/mbr.img conv=notrunc # bin --> img
clean:
-rm $OUTPUT/*
run:
qemu-system-i386 -daemonize -m 128M -drive file=$OUTPUT/mbr.img,index=0,media=disk,format=raw \\
#-s -S
然后执行 make 就 OK 了。
检查一下
org
org 的功能是告诉编译器:“嘿,老兄,你帮我把后面所有数据(指令和数据)的地址以 xxxx 为起始开始编吧”。
以上是关于自己动手写一个操作系统——MBR的主要内容,如果未能解决你的问题,请参考以下文章