手動啟動作業系統
這部分官方有提供三種作業系統的說明- 『DOS/Windows』,『GNU/Linux』和『GNU/Hurd』,但是這邊我只會說明『GNU/Linux』的部分,其他有興趣的就請去翻閱官方手冊吧。
在GRUB裡想要啟動GNU/Linux算是相對的簡單,因為Linux本身就整合成Multiboot兼容的作業系統,這邊你只要記得,想要手動啟動GNU/Linux,至少需要有底下四種資訊:
- prefix
- root
- kernel
- initrd
通常一般的步驟會如下所示:
(在底下的所有例子中,『X』就是硬碟代號,『Y』則是partition number,記得要根據你自己的狀況帶入相關的值)。)
1.設定『root』。
grub> set root=(hdX,Y)
#假設是第一個磁碟的第一個partiton
grub> set root=(hd0,msdos1)
2.設定『prefix』。
grub> set prefix=(hdX,Y)/boot/grub
#假設是第一個磁碟的第一個partiton
grub> set prefix=(hd0,msdos1)/boot/grub
3.將GRUB的root裝置設定成跟Linux一樣,可以利用底下的指令幫你完成這部份的功能。
grub> search --set=root --file /vmlinuz
4.使用指令『linux』來讀取kernel:
#這個vmlinuz檔案通常是個捷徑
#假設是第一個磁碟的第一個partiton
grub> linux /vmlinuz root=/dev/sda1
至於如果你想要加一些kernel的參數的話,可以直接加到後面,像是底下的例子,主要是將acpi給設定成off:
grub> linux /vmlinuz root=/dev/sda1 acpi=off
其他的kernel參數,因為我一直找不到官方的文件,好像已經刪掉了,但是有一個我很常看的機構『free-electrons』上面有,有興趣的可以參考一下 - 『kernel-parameters』。 而有些BIOS像是APM或是EDD並沒有提供32-bit的協定,所以在這些比較特殊的BIOS上你就要使用『linux16』:
grub> linux16 /vmlinuz root=/dev/sda1 acpi=off
5.如果你有initrd的話,直接在指令『linux』後面使用:
grub> initrd /initrd
跟指令『linux』一樣,如果不支援32位元的話,請用:
grub> initrd16 /initrd
6.最後一步,使用『boot』啟動。
grub> boot
如果沒有什麼問題的話,接下來你應該會看到進入Linux的login prompt了。