我正在爲操作系統開發內核。爲了執行它,我決定使用GRUB。目前,我有一個腳本附加到GRUB的stage1
,stage2
,一個填充文件和內核本身一起使其可引導。唯一的問題是,當我運行它,你必須讓GRUB知道的內核,它手動有多大,然後引導它,就像這樣:啓用GRUB從內核自動引導
kernel 200+KERNELSIZE boot
KERNELSIZE
是塊內核的大小。這很好,可以開始,但是可以在二進制文件中獲取這些值,並使GRUB自動引導內核?有關如何實現這一目標的任何建議?
我正在爲操作系統開發內核。爲了執行它,我決定使用GRUB。目前,我有一個腳本附加到GRUB的stage1
,stage2
,一個填充文件和內核本身一起使其可引導。唯一的問題是,當我運行它,你必須讓GRUB知道的內核,它手動有多大,然後引導它,就像這樣:啓用GRUB從內核自動引導
kernel 200+KERNELSIZE boot
KERNELSIZE
是塊內核的大小。這很好,可以開始,但是可以在二進制文件中獲取這些值,並使GRUB自動引導內核?有關如何實現這一目標的任何建議?
我想你可以製作自己的menu.lst conf文件,在grub shell中加載「configfile /path/to/menu.lst」,然後根據需要執行「setup(hd0)」替換值。我只是猜測..不知道你的自定義設置有什麼不同。
http://www.gnu.org/software/grub/manual/grub.html#Embedded-data給出了關於GRUB中塊列表存儲的一些一般信息。最重要的是,它提到了塊列表存儲在stage2中明確定義的位置。
您可能需要查看GRUB源代碼來確定確切的位置。
傳統的方法是把你的內核本身放在一個文件系統上grub可以讀取;你沒有這樣做的任何特定原因? – 2008-10-19 04:52:02
我同意查爾斯在這裏。將操作系統置於現有的文件系統中,直到操作系統擁有自己的文件系統。 – 2008-10-19 10:27:24