在這個部分, LILO 則使用與 grub 不同的機制,他將 boot loader 的 stage1 與 stage2 通通寫入 MBR 或者是 super block 開機區當中,所以,設定檔當然就不需要一定要存在於 Linux 的 filesystem 上囉!您說對吧! ^_^。 但還是各有利弊得失啦~沒有說那個比較好就是了。但也因為如此,所以: 當 LILO 設定檔被改過後,一定需要重新安裝 LILO 一次。 這一點與 grub 是完全不同的呢。
其實,LILO (LInux LOader) 看名稱就知道是 Linux 最早的 boot loader , 他主要利用 /etc/lilo.conf 這個設定檔,然後再以 lilo 主程式將該設定內容寫入開機區當中。 接下來我們就來玩一玩 LILO ,不過需要留意的是, FC4 似乎沒有提供 Lilo 給我們呢! 所以使用 FC4 的朋友應該就沒有辦法玩這個咚咚了~不過沒關係吧~知道 boot loader 即可啊! ^_^
LILO 的設定檔 /etc/lilo.conf:
LILO 的設定檔 /etc/lilo.conf 同樣的分為兩部分,分別是 LILO 整體環境設定部分, 與每個開機項目核心檔案名稱規範部分。有點像這樣啦:
注意上面的幾個項目,在整體環境設定項目當中,要注意:
[root@linux ~]# vi /etc/lilo.conf |
- timeout=50
timeout 的設定是 0.1 秒,所以 delay=50 表示延遲時間為 5 秒! - linear 與 lba32
linear 與 lba32 通常用在 SCSI 或者是較大的硬碟,例如磁柱(cylinder)總數超過 1024 磁柱的硬碟,可以使用這個項目來除錯!不過,如果是小於 8GB 的硬碟, 這兩個東西有沒有設定就沒有什麼影響了!早期的硬碟容量不大,所以 cylinder 不會超過 1024 ,但較新的硬碟容量太大了,如果核心檔案 (/boot/vmlinuz) 放置在 1024 磁柱以後,則可能會發生無法讀取的問題,因此需要設定這個 lba32 啊! 這也是為何很多 distribution 預設都會將 /boot 獨立出來的緣故! - default
default 需要設定成底下幾個 image 或者是 other 的 label 才成! 這個地方最常被忘記!因為常常會記得修改 label ,但是忘記跟著改變 default 的內容!此外,如果你想要修正開機預設的作業系統選項,在這裡改啦! - password
password 的用途在於安全防護方面,不過有個困擾,就是『 如果你的電腦因為不正常關機 (如斷電後重開) 而在電源恢復的時候重新開機時,則會卡在這個階段無法直接進入 Linux 系統』, 因為你必須提供 password 才能繼續的工作呀! - boot
boot 顯示的是開機的磁區選擇! 這裡也蠻重要的,如果你想要安裝在 MBR 裡面的話,如同上面的書寫模式,就是寫入 /dev/hda ,後面不要加上每個 partition 的代碼!但是,如果你是想寫入 Super Block ,例如我想要寫入的是 hda5 這個 Logical 的 partition 時,那麼這裡就必需要改寫為 /dev/hda5 囉!所以,您應該只要一看到這個 boot 後面接的內容,就會知道那個安裝的磁區是 MBR 還是 Super Block 囉!
- image=kernel_file
image 後面就是接核心檔案的檔名就是了!這主要是針對 Linux 來作的設定啦! 在 image 底下還有很多的設定項目,每個項目都以按鍵來縮排,主要的項目有: - label:項目名稱!出現選單時可以選擇的項目;
- initrd:後面就是接 RAM Disk 的 initrd 檔案檔名啊!
- root:這個重要!就是根目錄 (/) 的裝置代號啊!
- append:核心額外的功能增加的地方!與 grub 的 kernel 後面接的參數意思很相近!
- other=device
其實這個就是 chain loader 啦!移交 boot loader 控制權的設定項目。 在 other 後面接的就是磁碟的裝置代號,不論是 MBR 或 super block 都可以啊!裡面只要有 label 即可啊!
測試與安裝 LILO 開機管理程式:
好啦!為了測試一下您是否已經知道了 lilo.conf 的設定方式,所以我們來做個實驗吧! 請在您的『實驗主機』上面,不要在提供服務的主機上面完呦!否則死掉了不要怪我沒警告您… 我們先試圖安裝在 super block 上面好了!以下面為例,特殊字體的部分是經過我的修改之後的結果, 您的 /etc/lilo.conf 應該會長的跟我的差不多才是!
這樣就設定好了!接著下來看一下怎麼安裝他吧!安裝真是簡單到不行~直接輸入 lilo 即可!
看到沒有!要像上面這樣才是安裝成功呦!如果出現了錯誤的訊息,那麼肯定是有地方沒有安裝好! 這個時候請特別的再重新設定一次 /etc/lilo.conf 呢!有打星號的是『預設的開機設定檔!』 而如果您還要看看更多的訊息,那麼就需要這樣:
如果你需要更多的訊息,那麼就使用『 lilo -v -v -v 』多幾個 -v 就對了! ^_^
[root@linux ~]# vi /etc/lilo.conf |
[root@linux ~]# lilo |
[root@linux ~]# lilo -v |
一些問題的解決之道:
好了! lilo 安裝完成之後,總是會有一些問題會發生吧!那麼如何來解決問題呢?嗯! 可以看一下底下的一些解決之道:
- 我要如何選擇不同的開機設定檔?開機的時候我只看的到 boot: 而已?
開機之後,如果是以 lilo 來啟動 kernel 時,那麼他會出現 boot: 的字樣,出現這個字樣之後, 馬上按下按鍵,那麼就會出現目前 lilo 所記憶的開機設定檔囉!然後在 boot 後面輸入想要的開機檔案,就可以囉! - 安裝好了 Linux 之後,在開機的過程中卻只出現『 LI 』就停止了!該如何是好?
這個問題可能發生的原因是 Lilo 沒有設定好,或者是由於 Linux 安裝在非 /dev/hda ( MBR )的硬碟之中,解決的方法可以如下:- 用 Linux 光碟開機,然後在出現 boot: 處輸入『 linux root=/dev/hda1 (這個與你的 Linux 安裝的 partition 有關)』 順利開機之後,以 vi 修改 /etc/lilo.conf 將『linear』 這一行取消(如果沒有這一行的話,那就在 lilo.conf 中加入吧!)然後執行 『lilo』重新安裝 Lilo, 再取出光碟並重新開機試試看;
- 進入 BIOS ,將硬碟的 mode 改成 LBA 試看看;
- 將Linux往前面一點的磁區安裝,例如你可能安裝在 /etc/hdc1 ,那你可以重新安裝 Linux 在 /dev/hda2 試看看
- 安裝Linux完成之後,卻是出現 010101... 等數字在螢幕上,無法進入 Linux ...
這個問題的發生很有可能是硬碟出了問題了!這個時候可以使用 fsck 來掃瞄囉!
- 用軟碟或者是光碟開機後,使用fsck這個硬碟修正軟體掃瞄一下您的 root partition ,例如:fsck /dev/hda1
- 進入 BIOS ,將硬碟的 mode 改成 LBA 試看看;
- 我們知道 DOS 需要在第一顆硬碟的第一個磁區才能正常開機使用! 那要是他並非在第一個磁區呢?例如當 DOS 系統在 /dev/hdb1 (第一條排線的 slave )?
解決知道就是以 lilo 修正磁碟的配置啦!如下所示來修改 /etc/lilo.conf
other=/dev/hdb1
label=DOS
map_drive=0x80
to=0x81
map_drive=0x81
to=0x80
然後再執行 lilo 寫入 MBR 當中! - 我不要玩 Linux 了,如何移除 lilo ?
只要以 Windows 的開機片開機,然後以 Windows 系統的 fdisk 下達: 『fdisk /mbr』 就可以將 Lilo 自 MBR 當中移除囉! - 無法正常的進入 Lilo 怎麼辦?
這的時候開機片就很重要啦!使用開機片,在出現 boot: 的時候,輸入 『linux -s』 就可以進入啦!這裡請特別留意!那個 linux 指的是 label 呢!就像剛剛我們有三個 label ,分別是 linux, linux-test 與 failsafe ,那麼如果我要以 linux-test 這個開機設定檔的單人維護模式登入,就必需要改寫成
linux-test -s
linux-test single
請特別留意!!