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作爲引導程序可以使得內核開發工作避免陷入彙編語言過多的細節中:-)


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