banana0.01-001 内核开发垫脚石-grub

2810阅读 0评论2014-11-26 seek_0380
分类:LINUX

在X86上开发系统有着很多工具可以使用。在Ubuntu环境下安装qemu虚拟机,可以虚拟一个硬件环境。使用qemu -fda floppy.img指令使虚拟的x86上电从软盘 floppy.img启动。如果启动盘里面安装有系统,接下来就会进入系统。所以说为我们去寻找硬件平台省去了很大的麻烦,接下来就可以直接进入内核镜像的制作装入软盘的工作
grub是一个开源的bootloader,可以实现把操作系统内核装进内存并跳转到内核。它的工作流程如下:

(1) BIOS执行INT 0x19,加载MBR至0x7c00并跳转执行。如果你安装GRUB到MBR, GRUB的安装程序会把Stage1(512B)拷贝到MBR。 

(2) Stage1开始执行,它在进行直接加载Stage1_5或者Stage2并跳转执行。不论是 哪种情况,这一步的结果都是Stage2开始运行了。 

(3) Stage2这个小型的操作系统终于开始正式运行了!它会把系统切入保护模式, 设置好C运行环境(主要是BSS)。他会先找Config文件(就是我们的 Menulist),如果没有的话就执行一个Shell,等待我们输入命令。然后Grub的工 作就是输入命令-解析命令-执行命令的循环,当然 Stage2本身是为加载其他操作系统而存在的,所以如果情况允许,在他执行Boot命令以后就会把控制权转交出去。 

把grub写入软盘,然后接下来的工作就是加载操作系统了。这里可以省去bootloader的过程,为内核开发带来极大的便利。
但是你的内核镜像要想被grub认识并加载(加载地址由内核镜像elf决定),还需要遵守一个标准:Grub Multiboot规范
下面两条指令是挂载软盘并把内核banana复制到软盘。
sudo mount -o loop floppy.img /mnt/kernel
sudo cp banana /mnt/kernel/banana


上一篇:x86内存映射
下一篇:driver: Linux设备模型之input子系统详解