[ << ] [ < ] [ 主頁 ] [ > ] [ >> ]
10. 配置引導程序內容:
10.a. 做出您的選擇
介紹
現在,您已經配置並編譯好了內核,必需的一些系統配置文件也已經就位,是時候安裝一個叫做引導程序的程序來“引燃”您的內核並啓動系統了。
對於x86,Gentoo Linux提供了GRUB和LILO。
但在安裝bootloader之前,我們要告訴您如何配置framebuffer(前提當然是您想使用它)。在framebuffer的幫助下,您系統的Linux命令行將擁有(有限的)圖形特性(例如使用Gentoo提供的漂亮的bootsplash圖片)。
可選:Framebuffer
如果您已經爲您的內核加上了framebuffer支持(或者您使用genkernel的默認內核配置),您就可以在bootloader配置文件中加入一個vga和/或一個video內核參數來啓用它。
首先,您需要知道您使用的是什麼類型的framebuffer設備。如果您用的是加過Gentoo補丁的內核源代碼(例如gentoo-sources),您將可以選擇uvesafb作爲VESA驅動。這樣的話,您使用的就是uvesafb驅動,您將不需要設置vga參數。否則您使用的就是vesafb驅動,您將需要設置vga參數。
vga參數用來控制您的vesafb framebuffer屏幕的分辨率和顏色深度。正如/usr/src/linux/Documentation/fb/vesafb.txt(您安裝內核源碼包的同時就會安裝這一文件)裏說明的那樣,您需要將與您想使用的分辨率和色深相對應的VESA數值傳遞給此參數。
下表列出了可用的分辨率和對應的顏色深度,您在裏面可以找到需要傳遞給vga參數的值。
|
640x480 |
800x600 |
1024x768 |
1280x1024 |
---|
256 |
0x301 |
0x303 |
0x305 |
0x307 |
---|
32k |
0x310 |
0x313 |
0x316 |
0x319 |
---|
64k |
0x311 |
0x314 |
0x317 |
0x31A |
---|
16M |
0x312 |
0x315 |
0x318 |
0x31B |
---|
video語句用來控制framebuffer的顯示參數。此語句中需指定欲使用的framebuffer驅動以及你想啓用的控制語句。/usr/src/linux/Documentation/fb/vesafb.txt文件裏列出了所有變量。最常用的選項是:
控制選項 |
描述 |
---|
ywrap |
假設顯卡支持顯存回捲操作(也就是說顯存裏的數據填充到盡頭的時候會接着從起始處繼續) | mtrr:n |
設置MTRR寄存器. n 可以是: 0 - 禁用 1 - 不使用cache 2 - write-back 3 - write-combining 4 - write-through | 模式 |
(只針對uvesafb) 設定分辨率,顏色深度和刷新率。 例如,1024x768-32@85對應的分辨率是1024x768,32位色深和85Hz的刷新率。 |
最後這兩個參數的內容可能類似這樣vga=0x318 video=vesafb:mtrr:3,ywrap或者video=uvesafb:mtrr:3,ywrap,1024x768-32@85。將它們記下來;很快您將用到它們。
接下來要繼續安裝GRUB或LILO。
10.b. 默認:使用GRUB
瞭解GRUB的術語
理解GRUB最重要的在於熟悉它如何表述硬盤驅動器和分區。在GRUB中,您的Linux分區/dev/sda1將很可能都被稱爲(hd0,0)。請注意hd0,0兩邊的括號——它們是必須加上的。
硬盤是從0而不是從“a”開始,分區從0而不是1開始。要明確的是,hd設備只指硬盤,而不包括atapi-ide設備,例如cdrom播放器和刻錄機。同樣的標識構造方式也適用於SCSI驅動器。(正常情況下,除非BIOS被配置爲從SCSI驅動器引導,否則SCSI硬盤的標識數字會比IDE的高。)當您要求BIOS從一個不同的硬盤引導時(例如您的主IDE接口上的從盤),那個硬盤就會被視爲hd0。
假設您有一個硬盤是/dev/sda,還有兩個分別是/dev/sdb和/dev/sdc,那麼/dev/hdd7將會被GRUB標識爲(hd1,6)。聽起來這有些不合常理,確實如此。但正如我們即將見到的,GRUB爲您提供了一個tab補全機制,這將大大方便您的操作。即使您擁有許多的硬盤和分區,而且對GRUB的數字標識方案不甚瞭解,也不用怕。
我們已經有了一些感覺了,是時候安裝GRUB了。
安裝GRUB
要安裝GRUB,首先讓我們emerge它:
代碼 2.1: 安裝GRUB | # emerge grub
|
儘管現在已經安裝完GRUB,我們仍需要爲其寫一個配置文件,並將其安置到硬盤的主引導記錄中,使它能自動引導您新創建的內核。您可以使用nano(或其他可用的編輯器)來創建配置文件/boot/grub/grub.conf:
代碼 2.2: 創建/boot/grub/grub.conf | # nano -w /boot/grub/grub.conf
|
現在我們將詳細地寫一個grub.conf。您在下面的內容中可以找到兩個可能的針對本指南中前面章節給出的分區方式例子的grub.conf。我們只詳細地評述第一個grub.conf。確保您使用您自己的內核鏡像文件名,以及如果有的話,您自己的的initrd鏡像文件名。
- 第一個grub.conf是爲未使用genkernel來構建內核的用戶準備的
- 第二個grub.conf則是爲使用genkernel來構建內核的用戶準備的
注意: Grub根據BIOS來決定設備名。如果你改變了你的BIOS設定,你的設備字母和序號也會改變。比如如果你改變了你的設備的啓動順序,你就需要改變你的grub配置。 |
注意: 如果您使用JFS來作爲root文件系統,您就必須在kernel那行添加上“ro”參數,因爲JFS文件系統在其允許被加載爲可讀寫狀態前需要使用這個參數來重放它的日誌。 |
代碼 2.3: 不使用genkernel的用戶的grub.conf | default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux 2.6.24-r5
root (hd0,0) kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3
title Gentoo Linux 2.6.24-r5 (rescue)
root (hd0,0) kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3 init=/bin/bb
title Windows XP rootnoverify (hd0,5) makeactive chainloader +1
|
代碼 2.4: 使用genkernel的用戶的grub.conf | default 0 timeout 30 splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux 2.6.24-r5 root (hd0,0) kernel /boot/kernel-genkernel-x86-2.6.24-gentoo-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 initrd /boot/initramfs-genkernel-x86-2.6.24-gentoo-r5
title Windows XP rootnoverify (hd0,5) makeactive chainloader +1
|
如果您使用與此不同的分區方案和/或內核鏡像,請相應地進行調整。無論怎樣,請確保緊跟在GRUB設備(例如(hd0,0))後面的是相對於掛載點的路徑,而不是根目錄。換句話說,(hd0,0)/grub/splash.xpm.gz的實際目標是/boot/grub/splash.xpm.gz,因爲(hd0,0)就是/boot分區。
另外,如果您選擇使用不同的分區方案並且沒有將/boot置於一個獨立的分區,上述示例代碼中/boot前綴實際上是必需的。如果您使用我們所建議的分區方案,則不一定非要使用/boot前綴,但即便加了它,由於/boot分區裏有一個boot符號鏈接指向當前目錄,也可以正常工作。簡單的說,無論您是否定義了一個獨立的/boot分區,上述例子應該都能正常工作。
如果您需要傳遞任何其他的參數給內核,簡單地在內核命令後面加上它們就可以了。我們已經傳遞了一個參數(root=/dev/sda3或real_root=/dev/sda3),但您也可以加上其他的,例如我們前面討論過的爲framebuffer加上video和/或vga參數等等。
如果您使用的是2.6.7或更高版本的內核,並且您使用硬盤跳線來使主板的BIOS能正確處理大硬盤,那麼在啓動內核時您還需要附加sda=stroke的參數。請把sda替換成需要這個參數的設備。
genkernel用戶需知道他們的內核使用與安裝光盤相同的啓動參數。例如,若您有SCSI設備時,您就需要添加doscsi這個內核啓動參數。
現在請保存grub.conf文件並退出。您仍需要將GRUB安裝到MBR(主引導記錄),以便重啓時GRUB能自動執行。
GRUB的開發者推薦使用grub-install。儘管如此,如果在某些情況下grub-install無法正常工作,您依然可以選擇進行手動安裝GRUB。
從默認:使用grub-install安裝GRUB或者備選:使用手動指令安裝GRUB繼續。
默認:使用grub-install安裝GRUB
爲了安裝GRUB,您將需要執行grub-install命令。儘管如此,當我們處於chroot的環境時,grub-install並不能正常的工作。我們還需要創建一個/etc/mtab,在裏面列出所有已加載的文件系統。幸運的是,有一個簡單的方法來完成這個任務——將/proc/mounts拷貝成/etc/mtab,如果您沒有創建一個獨立的boot分區,請排除rootfs行。下面的命令在兩種情況下都可以正常工作:
代碼 2.5: 創建/etc/mtab | # grep -v rootfs /proc/mounts > /etc/mtab
|
現在我們就可以用grub-install來安裝GRUB了:
代碼 2.6: 執行grub-install | # grub-install --no-floppy /dev/sda
|
如果您還有更多與GRUB相關的問題,請查閱GRUB FAQ或者GRUB手冊。
從重啓系統章節繼續。
備選:使用手動指令安裝GRUB
您可以通過輸入grub來開始配置GRUB。呈現在您面前的將是grub命令提示符grub>。現在,您需要輸入正確的命令來將GRUB引導記錄安裝到您的硬盤中。
代碼 2.7: 啓動GRUB shell | # grub --no-floppy
|
注意: 如果您的系統中沒有任何的軟盤驅動器,在上面的命令後面加上--no-floppy選項,防止grub檢測(實際上不存在的)軟驅。 |
在此示例配置中,我們想讓我們安裝的GRUB可以從boot分區/dev/sda1讀取信息,同時我們將GRUB引導記錄安裝到硬盤的MBR(主引導記錄)中,這樣當打開電腦時您首先可以看到的就是GRUB引導的界面。當然,如果您安裝時沒有按照示例配置來做,請相應的更改一些命令。
GRUB的tab自動補全機制可以在GRUB中使用。例如,如果您輸入“root (”之後按下TAB鍵,一個設備列表就會呈現在您面前(例如hd0)。如果您輸入“root (hd0,”之後按下TAB鍵,系統又將返回一個已有的分區列表,以便您選擇(例如hd0,0)。
利用tab補全,設置GRUB將不會那麼困難。現在我們繼續設置GRUB,如何? :-)
代碼 2.8: 將GRUB安裝到硬盤主引導記錄中 | grub> root (hd0,0) grub> setup (hd0) grub> quit
|
注意: 如果您想將GRUB安裝到某一個分區而不是硬盤主引導記錄中,您需要調整setup命令,使其指向正確的分區。例如,如果您要將GRUB安裝到/dev/sda3,對應的命令應該是setup (hd0,2)。但是隻有少數用戶需要這麼做。 |
如果您還有更多與GRUB相關的問題,請查閱GRUB FAQ或者GRUB手冊。
從重啓系統章節繼續。
10.c. 備選:使用LILO
安裝LILO
LILO,是LInuxLoader的簡稱,它是一個可靠且確實能擔當重任的Linux的bootloader。儘管如此,它缺少一些GRUB具有的特性(這正是目前GRUB之所以流行的原因)。LILO仍被人們使用的原因在於:在一些系統中,GRUB不能工作而LILO可以。當然,也有一些用戶是因爲熟悉它而仍堅持使用它。無論是什麼原因,Gentoo對兩個bootloader都提供了支持,看到這裏顯然您已經選擇了使用LILO。
安裝LILO是件輕而易舉的事;只需emerge就好了。
代碼 3.1: 安裝LILO | # emerge lilo
|
配置LILO
要配置LILO,您必須創建/etc/lilo.conf文件。打開一個您喜歡的編輯器(爲保持一致性,在本手冊中我們使用nano)然後創建它。
代碼 3.2: 創建/etc/lilo.conf | # nano -w /etc/lilo.conf
|
前面章節中我們已經提醒您記下您所創建的內核鏡像文件名。在接下來的示例lilo.conf中,我們使用的是示例的分區方案。這裏有兩個獨立的部分:
- 一個是爲那些不使用genkernel建立內核的用戶準備的
- 另一個是爲那些使用genkernel建立內核的用戶準備的
請確保您使用的是您自己的內核鏡像的文件名,以及(如果用到的話)您自己的initrd鏡像的文件名。
注意: 如果您使用JFS來作爲root文件系統,您就必須在每個引導項目的後面添加上形如append="ro"的一行內容,因爲JFS文件系統在其允許被加載爲可讀寫狀態前需要使用這個參數來重放它的日誌。 |
代碼 3.3: 示例/etc/lilo.conf | boot=/dev/sda prompt timeout=50 default=gentoo
image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo read-only root=/dev/sda3
image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo.rescue read-only root=/dev/sda3 append="init=/bin/bb"
image=/boot/kernel-genkernel-x86-2.6.24-gentoo-r5 label=gentoo read-only root=/dev/ram0 append="init=/linuxrc ramdisk=8192 real_root=/dev/sda3" initrd=/boot/initramfs-genkernel-x86-2.6.24-gentoo-r5
other=/dev/sda6 label=windows
|
注意: 如果您使用了與此不同的分區方案和/或者內核鏡像,請進行相應的調整。 |
如果您需要爲內核傳遞任何額外的參數,可以在相應的啓動項目裏添加一個append語句。例如,我們加上video參數來啓用framebuffer:
代碼 3.4: 使用append來添加內核參數 | image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo read-only root=/dev/sda3 append="video=vesafb:mtrr,ywrap,1024x768-32@85"
|
如果您使用的是2.6.7或更高版本的內核,並且您使用硬盤跳線來使主板的BIOS能正確處理大硬盤,那麼在啓動內核時您還需要附加sda=stroke的參數。請把sda替換成需要這個參數的設備。
genkernel用戶需知道他們的內核使用與安裝光盤相同的啓動參數。例如,若您有SCSI設備時,您需添加doscsi這個內核啓動參數。
現在讓我們保存文件並退出。要最終完成,您還得運行/sbin/lilo,這樣LILO才能將/etc/lilo.conf應用到您的系統(也就是將其自身安裝到硬盤中)。請記住每當你安裝了一個新內核或改變了菜單的任何內容時,您也需要再運行一次/sbin/lilo。
代碼 3.5: 完成LILO的安裝 | # /sbin/lilo
|
如果您還有更多與LILO有關的問題,請參閱它的wikipedia頁面。
現在請繼續閱讀重啓系統。
10.d. 重啓系統
退出chroot的環境,卸載所有已掛載的分區。然後輸入您已經等待多時的那個魔術般的命令:reboot。
代碼 4.1: 卸載所有分區和重啓 | # exit cdimage ~# cd cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo cdimage ~# reboot
|
當然您別忘了取出可引導的光盤盤,否則重啓後引導的將是這張光盤而不是您的新Gentoo系統。
當重啓進入到您新裝的Gentoo系統之後,請閱讀結束Gentoo的安裝來完成剩下的工作。
[ << ] [ < ] [ 主頁 ] [ > ] [ >> ]
本文檔的內容遵循知識共享-署名-相同方式共享許可協議 |