大家在安裝完Linux後,有沒有留心過Linux的引導過程呢?本文就嘗試以通俗的語言來描述這一過程和相關的各種情況,了解了Linux的引導過程後,您在面對Linux引導過 程的出現的各種問題時就能做到心中有數了。
Linux的一個吸引人的特性就是用戶可以自行定制整個系統,你可是運行一個只有1M的“迷你”Linux,也可以運行一個幾G的強大Linux。而無論你運行怎樣的Linux,你都是先從引導程序開始運行的。對於普通用戶,大多都是在個人電腦上運行Linux的。個人電腦,又叫PC機,是我們常見的使用Intel或AMD的芯片的電腦。當我們接通PC機的電源之後,CPU會執行第一條指令,第一條指令通常是使CPU能跳躍到BIOS的入口地址上,然後BIOS就開始進行開機自檢,包括對內存等硬件進行檢測,如果存在其它設備的也自帶有BIOS(比如SCSI或RAID設置等),也會執行它們。完成自檢後的BIOS會根據設定好的啟動設備和啟動順序來啟動真正的操作系統,如Linux(本文以Linux為例)。
對於PC機,有以下幾種設備可以作為啟動設備來使用:
1) 硬盤
這是最常用的啟動設備,硬盤有IDE接口和SCSI接口的兩種,由於IDE硬盤價格比SCSI硬盤要便宜的多,所以,大多數PC機都使用的是IDE硬盤。一台PC機中可能有多個硬盤,用戶可以在PC機的CMOS設置哪塊硬盤首先啟動。
2) 軟盤
軟盤是PC機必備的設備之一。常用作安裝系統或作為系統應急盤使用。也出現了很多一張軟盤上的Linux系統。
3) 光盤驅動器
光盤驅動器也是PC機必備的設備之一,包括CDROM、DVDROM、以及各種刻錄機等。現在多數用戶都是通過光驅來安裝Linux的。
4) USB盤
隨USB盤的出現,許多主板也都開始支持從USB設備上來啟動系統了。USB盤的容量遠大於軟盤,目前有取代軟盤的趨勢。
5) 網卡的Boot ROM
有一些網卡帶有Boot ROM芯片,可將引導信息寫入Boot ROM,許多主板都支持Boot ROM啟動。常用於無盤工作盤環境中。
無論系統選擇了哪一種啟動設備,它都將會去將該設備起始地址的內容讀入內存,如果你的啟動設備是IDE硬盤,系統就會去去讀取硬盤的第一個扇區(這個扇區通常被稱做主引導扇區,又稱MBR),並將這個扇區的內容讀入內存,然後運行它。到這一步的時候是引導Linux操作系統的關鍵了,這一步將嘗試去啟動Linux的引導程序,如果找不到引導程序,將無法引導Linux。許多人在無法啟動Linux的時候,其實大多都是引導程序損壞或是配置不當所造成的。
那麼什麼是引導程序呢?其實你每天打開電腦,所接觸到的第一個程序就是引導程序。它的責任是載入操作系統內核軟件並把控制權轉交給它。對於Linux來說引導程序就是負責在啟動計算機時裝入Linux的Kernel,並將計算機的控制權交給Kernel,然後Kernel再進一步初始化剩余的操作系統,直到Linux顯示用戶登錄畫面。由此可見引導程序對於一個操作系統來是非常重要的。Linux的引導程序有很多種,最為常見是lilo和grub。
1) lilo
lilo是用於Linux的靈活多用的引導程序。它並不依賴於某一特定文件系統,能夠從軟盤和硬盤引導Linux內核映像,當然它也能夠引導其它操作系統。在grub出現之前,lilo可謂Linux引導程序的最佳選擇。而目前仍然也很多人在使用它。
2) grub
grub是比lilo新的一個功能強大的引導程序。專門處理Linux與其他操作系統共存的問題。它可以引導的操作系統有Linux、OS/2、Windows系列、BeOS、Solaris、FreeBSD、NetBSD等。它的優勢在於支持大硬盤、支持開機畫面(能支持到1024x768的畫面)、支持菜單式選擇,並且分區位置改變後不必重新配置,使用非常方便。較新發行的各版本Linux大多采用grub作為默認的引導程序。
3) 其它引導程序
如果你沒有安裝lilo或grub,或者你的lilo或grub損壞了(比如不小心覆蓋了MBR),那麼你將無法直接引導Linux。還好,這時候你還可以通過其它方式來引導,比如:Linux的引導盤,或者是利用loadin、syslinux等程序來從ms-dos中載入Linux。
如果引導程序成功後,Linux內核就接管了系統,開始了Linux的啟動過程(關於Linux的啟動過程將另文介紹)。但如果引導過程的發生錯誤又將如何處理呢?
1.首先分析屏幕顯示的錯誤信息
引導程序本身所顯示的錯誤信息都是有含義的,需要認真閱讀。比如:
lilo的錯誤信息
當lilo啟動完成時,會在屏幕上顯示字符串"lilo",其實這其中的每個字母背後都對應著特定的操作。如果lilo在某個部分出了錯,我們就可以根據屏幕上當前出現的字母推斷出故障原因。比如:當屏幕上什麼都沒出現,就可能表示lilo還未被安裝或者lilo所在的分區未被設為active狀態。而屏幕顯示”li“,則表示lilo引導程序的第一部分能夠將lilo引導裝入程序的第二部分裝入,但卻不能執行。這可能是因為硬盤參數設置不當或者是因為在移動/boot/boot.b時沒有運行map安裝程序。而屏幕顯示"lil",則可能是介質故障或硬盤參數設置不當,無法從map文件中裝載描述符表......,詳細的錯誤信息解釋也可以從相關網站上找到。
grub的錯誤信息:
和lilo相比grub的信息要好理解一些,因為它是直接用英語來表達的,而不是用符號。比如:"Hard Disk Error"、"Read
Error"、"Selected disk doesn't exist"、"Disk geometry error"、"Device
string unrecognizable"、"Attempt to aclearcase/" target="_blank" >ccess block outside
partition"、"Partition table invalid or corrupt"等。詳細的錯誤信息解釋也可以從相關網站上找到。
2.通過光盤或軟盤引導進入系統,修復原引導程序
通過分析屏幕顯示的錯誤信息後,應該能大致找到原引導程序的出錯原因。這時候可以通過光盤或軟盤引導進入系統。許多Linux的發行光盤就是可以啟動的,比如:slackware就是很好的引導光盤。進入系統後,可以重裝引導程序或者重新設置引導程序。