自己动手写一个操作系统——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的主要内容,如果未能解决你的问题,请参考以下文章

自己动手写一个操作系统——总目录

自己动手写一个操作系统——总目录

自己动手写一个操作系统——总目录

自己动手写一个操作系统——MBR

自己动手写一个操作系统——MBR

自己动手写一个操作系统——MBR_调试