grub2 引导自制kernel

1、grub遵循multiboot引导规范,从gnu的multiboot网页(http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Examples)

下载示例代码

2、编写链接脚本link.ld内容如下:

ENTRY(start)
<span style="white-space:pre">	</span>. = 0x100000;
	SECTIONS 
{
	.text : 
	{
	*(.text)
	}
	. = ALIGN(0x1000);
	.rodata :
	{
	*(.rodata)
	}
	. = ALIGN(0x1000);
	.data : 
	{
	*(.data)
	}
	. = ALIGN(0x1000);
	.bss :
	{
	*(.bss)
	*(COMMON)
	}
}

3、编译和链接

gcc -c boot.S -o boot.o
gcc -c -fno-builtin -fno-stack-protector -nostdlib -nostdinc kernel.c -o kernel.o
ld -T link.ld boot.o kernel.o -o kernel

4、测试

将生成的kernel拷贝到grub启动盘的根目录下,然后启动qemu:


输入multiboot /kernel

再输入boot:


之后的工作就是修改kernel.c文件,采用grub作为引导程序可以使得内核开发工作避免陷入汇编语言过多的细节中:-)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章