計算機的最初啟動是由BIOS控制的,在對一些硬件(如:內存、鍵盤等)初始化之後,它會試圖加載硬盤的主引導記錄(MBR)或軟盤的引導扇區。MBR可通過兩種方式運行,其一是定位到活動分區並加載相應的引導扇區,然後由引導扇區完成該分區內操作系統的基本組件的加載;其二是直接從一指定分區中加載信息,並通過它裝入任一分區的操作系統,諸如 LILO、gurb,OS/2 boot loader及PartitionMagic等引導加載程序都可以配置成這種方式。軟盤的引導扇區相當於硬盤活動分區的引導扇區,它通常用於裝入軟盤上的操作系統。
只要把LILO之類的多重引導器安裝在MBR、活動分區或者引導軟盤上,就能接管計算機的控制權,然後由多重引導器完成後繼的引導過程。
LILO中建有一個引導表地址編碼,借此它的引導程序就能定位到Linux的內核文件,這種地址編碼既可以按照柱面/磁頭/扇區(CHS)模式,又可以采用LBA的線性塊號模式,因此,即使對某些SCSI控制程序LILO也能運轉良好。
一,MBR還是Linux 的根分區
首先遇到LILO,估計應該在你安裝Linux 的時候,你會被要求選擇LILO的安裝處,是MBR 還是Linux 的根分區。如果你有其他的啟動管理程序例如Boot Magic 或者 System Commander 等,並且想使用他們,那麼你應該把LILO 安裝到Linux 的根分區。如果你選擇使用LILO 作為啟動管理程序,就可以選擇MBR。如果你想在啟動時傳遞參數給內核,也應該使用MBR。
使用LILO 作為啟動程序後,機器啟動後就會有LILO:的提示符,按下TAB 鍵,可以看到可以選擇的操作系統列表。輸入其中的操作系統標簽名就可以啟動到對應的操作系統,或者直接輸入回車啟動到缺省的操作系統。在 LILO.CONF中提及的映象可多達16個.
二,lilo.conf用法詳解
我們來看一個LILO 啟動的配置文件(/etc/lilo.conf)實例:
boot=/dev/hda3
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
default=new
image=/boot/vmlinuz-2.4.3
label=new
read-only
root=/dev/hda3
image=/boot/vmlinuz-2.2.19
label=linux
read-only
root=/dev/hda3
other=/dev/hda2
label=dos
本配置文件指定 LILO使用在/dev/hda路徑上的主引導記錄。啟動時,引導裝入程序會等待 5 秒的時間
讓你按SHIFT鍵。如果未按,則上述提及的第一核心映象(vmlinuz-2.4.3),將被啟動。如果按下了SHIFT鍵則引導裝入程序就會問你要啟動哪一個映象。 萬一你忘了該選擇啟動哪個映象, 按[TAB]就會有個菜單給你選擇。你在這時可以選定或者啟動這個全新的內核,或者啟動一個原來可靠的內核(vmlinuz-2.2.19),或者啟動一個不同的操作系統。
由上可見,一個配置文件以一系列的全局選項開始),隨之是不同映象選項的描述。在映象描述中的選項
將會覆蓋全局選項所設定的內容。
全局選項部分
boot=boot-device
設定包含引導扇區的設備的名稱(如一個硬盤的分區)。如果未指定該關鍵字引導扇區將從當前作為根文件系統安裝的設備中讀取(或者可能也會寫入)。
compact
試圖將相鄰扇區的多次讀取請求合並成一次讀取請求。這樣就大幅度地減少了讀取時間,並使系統描述(MAP)更小。在從軟驅進行讀取時尤其要使用 compact 選項。
default=name
使用特別指定的映象作為默認的啟動映象。如果未設置 defaul 選項,則將使用在該配置文件中最早出現的那個映象作為啟動映象。
disc=device-name
定義特定硬盤的非標准參數。其對於定義 BIOS= 參數尤其有用。若你的硬盤的 BIOS 數據是 0x80 ,0x81(十六進制)等等,將無法判斷哪一塊 Linux 磁盤與哪一塊 BIOS 磁盤相對應(因為這決定於 BIOS 的設置
和 BIOS 的類型)。因此若你采用的是非一般的安裝,那你就需要說明 LINUX 磁盤和 BIOS 磁盤間的對應關
系。比如:
map=map-file
定位磁盤描述(MAP)文件。若未指定 map 選項,就會使用 /boot/map 文件。
message=message-file
指定一個含有在運行啟動提示符前顯示的信息的文件。在顯示出 LILO 後等待按鍵的時間裡不會有信息
顯示。在信息中,用FF字符([Ctrl + L])清空本地顯示器。信息文件的大小限制在65535字節以內。如果信息文件被改動或取消則必須重建磁盤描述(Map)文件。
prompt
不等待任何的按鍵事件發生就直接進入啟動提示符模式。如設定了 promp選項而沒設定 imeout 選項,則不能自行啟動。
timeout=tsecs
為鍵盤輸入設定一個超時選項(以10分之一秒為單位)。若在指定的時間內沒有按鍵則第一個映象就會被自動啟動。同樣,如過用戶停頓過長則密碼輸入就會被取消。默認的超時值是無限。
另外,內核配置參數 append,ramdisk,read-only,read-write,root以及vga都可在全局選項中被設定。如果在相應的核心映象的配置欄中沒對其加以指定,該設定值其就會被用做默認的缺省值。
單一映象部分
一個單一映象或者以一行
image=pathname
開始(以提示含有一個LINUX內核的啟動映象的文件或設備),或以一行
other=pathname
開始以提示啟動其他獨立的系統。
label=name
引導裝入程序使用每個映像說明的主文件名(不包含路徑)來標識該映像。通過設定變量label可使用不同的名稱。
alias=name
通過指定一個別名可對同一個目錄使用第二名稱。
passWord=password
用密碼保護映像。
restricted
若是在命令行被指定各參數則只在啟動映像使需要輸入密碼。
內核選項部分
如果被啟動的映像是一個LINUX內核,則可以將命令行參數傳送到該內核。
append=string
將指定的各選項增加到傳送於內核的參數行。其典型的運用於指定不能完全自檢或徹查對其有危害的硬盤
的參數。比如:
append="hd=64,32,202"
ramdisk=size
該選項指定了任選RAM磁盤的大小。0 表示不應創立任何RAM磁盤。若不指定該參數,則使用在根文件系統中建立的RAM磁盤大小。
read-only
采用read-only 選項時,系統會把根分區掛接為只讀方式,推薦采用這個選項,因為 fsck 程序要求文件系統只讀。但不用擔心你的根分區會不能寫入了,相反,系統一旦啟動就會把根分區掛接為讀寫方式。
read-write
其指定根文件系統應以可讀寫方式裝載。
root=root-device
該參數指定應作為根文件系統裝載的設備。如果目前使用的是指定的名稱,則根驅動器就設在根文件系統目前所在的設備上。如果根設備被 -r 參數所修改,則使用相應的設備。若未指定 oot 參數,則使用包含核心映象的根設備設置(該設置是編譯內核時在內核的 Makefile 文件中用 ROOT_DEV 變量設定的,並稍後可用 rdev(8)程序修改)
vga=mode
其指定在啟動時應選擇的 VGA 文本模式。 下列數值可被識別 (忽略大小寫):
normal:選擇普通 80x25 文本模式。
extent(或ext):選擇 80x50 文本模式。
ask:停止並要求用戶的輸入(在啟動時)
:使用相應的文本模式。在啟動時用vga=ask選項或按[Enter]都可獲得一個可用模式的列表。
若未指定該參數,則使用在核心映像中獲得的 VGA 文本環境。(該設置是編譯內核時在內核的 makefile文件中用 SVGA_MODE 變量設定的)
LILO 也可以讓你手工在LILO 提示符下傳遞這些參數。例如:
LILO: linux single
就是告訴Linux 啟動Linux 進入單用戶模式。在引導區損壞時,可以從軟盤啟動,然後指定硬盤的根來修復硬盤引導扇區。
LILO: linux root=/dev/hda3
LILO 引導其他類型的操作系統和引導Linux 一樣配置,但是更加簡單:
other = /dev/hda3
label = dos
table = /dev/hda
other 指明操作系統所在的分區,同樣的和Linux 下的image 一樣也需要給定一個標簽(label),table 選項指向包含分區表的設備,這個選項必不可少,因為LILO 會從這個這個分區表尋找對應的分區信息,然後把他傳遞給要啟動的操作系統。
對lilo.conf 的任何改變都要求重新運行 /sbin/lilo ,保證最新的改變能寫入分區。
另外,如果你升級內核或者重構了 initrd 映像,也需要重新運行 /sbin/lilo。
運行/sbin/lilo 後,可以看到如下信息:
Added linux *
Added dos
表示各種映像已經寫入分區,帶有 * 的分區是目前的缺省引導分區。
可以用 -D 參數改變缺省引導分區:
/sbin/lilo -D dos
Added linux
Added windows *
可以看到缺省分區已經成為 wi
Added linux *
Added dos
表示各種映像已經寫入分區,帶有 * 的分區是目前的缺省引導分區。
可以用 -D 參數改變缺省引導分區:
/sbin/lilo -D dos
Added linux
Added windows *
可以看到缺省分區已經成為 wi