萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 深入解剖 LILO

深入解剖 LILO

class="22650"> 前面的文章我們講述了;LILO;的配置,本文我們將深入底層來講述LILO;的技術細節,也將告訴讀者怎樣
去掉LILO;以及重新安裝LILO。
前文我們講述了LILO;配置的靈活性,本文我們將講述LILO;的內部技術細節以及啟動時的主要操作及其功
能,以幫助我們調整LILO;的安裝。LILO;最大的好處就是它獨立於文件系統,可以啟動各種操作系統:
從Microsoft、OS/2、SCO;Unix、Unixware、PC-DOS到Linux等等。

LILO;能處理最多16個不同的映像,LILO;寫入MBR;時就作為主引導程序,寫入擴展分區的引導扇區時就是
第二引導程序。采用LILO,可以有多種組合方式啟動系統。

我們先來看看引導過程,硬盤上的數據被准確的分配到對應的“磁道”和“扇區”,硬盤上的數據分布首
先是引導扇區,然後是文件分配表(FAT),接下來就是數據區。

硬盤分區時,被分為基本分區和擴展分區。基本分區可以作為引導分區,可以通過任何引導程序標記為可
引導。擴展分區可以分成好幾個邏輯分區,很多的BIOS;不允許從邏輯分區啟動。

Linux;最多支持4個基本分區,如果需要額外的分區,那麼就要其中的一個基本分區變成擴展分區,然後在
擴展分區裡面,劃分邏輯分區。很重要的一點是有些邏輯分區的分區表不能被識別為設備的第一塊。分區
表通常存放於分區的引導扇區,而且,通常只有整個盤的分區啟動扇區用作引導扇區,稱為主引導記錄(MBR)。

LILO;可以用於以下情形:

1、第一硬盤的引導扇區。
2、軟盤的引導扇區。
3、位於第一硬盤的Linux;文件系統分區上的引導扇區。

LILO;不能用於以下情形:

1、交換分區。
2、擴展分區中的邏輯分區的引導扇區。

所以,如果你在第二硬盤上安裝了Linux;,而不能啟動的話,可以采取在第一硬盤上建立;/boot;的辦法來解決。

引導加載過程由很多程序組成,我們先來看看LILO;安裝
時的各種不同程序:

MAP;安裝程序:這個程序把LILO;的文件放到合適的位置
並記錄這些信息(會在LILO;啟動時用到),這個程序就是
/sbin/lilo;,每次配置文件有改動或者有新內核時,需要重新運行一遍。

/boot/*.*:其他LILO;啟動時需要的文件存放在;/boot;目錄下,map;文件是十分重要的,map;安裝程序把新內
核的位置記錄到這個文件。

引導加載程序:這個程序無需多言是最重要的部件了。它被
BIOS;調入內存,然後調用內核或者其他操作系統的引導扇區。

包含引導加載程序第一部分的引導扇區被調入內存,然後調用引導加載程序的第二部分,一般位於文件
/boot/boot.b,接下來就啟動內核。

如果從可引導軟盤啟動的話,BIOS;把軟盤的第一個扇區調入內存,一般,這個扇區包含一段程序來啟動對應的
操作系統。和軟盤一樣,如果LILO;寫入MBR;,那麼,MBR;就被調入內存,執行對應的操作,給用戶提示選擇需
要引導的操作系統。具體地說,MBR;的頭;446;個字節由引導加載程序利用,剩余的64;字節是分區表信息。還剩
下的兩個字節就是分區激活標志“55;AA”;了。

在軟盤上備份;MBR;信息:

bash#;dd;if=/dev/hda;of=/dev/fd0;bs=512;count=1;

恢復:(萬一的情況下)

bash#;dd;if=/dev/fd0;of=/dev/hda;bs=446;count=1;

刪除;LILO:

c:>;fdisk;/mbr;

恢復;LILO:

重新安裝;Windows;以後,就會把LILO;干掉。無論什麼原因
我們都應該知道怎樣恢復LILO。

最好手頭有一張安裝;CD;,這年頭,干淨並且確實好用的
軟盤太少了。所以不推薦你使用軟盤。當然,如果你認為
你的軟盤質量可靠,那麼可以從CD-ROM
上建立應急啟動盤:

dd;if=/cdrom/disks/rescue;of=/dev/fd0

在;DOS;下面,采用:

rawrite;image-name;a:

也可以在;www.bootdisk.com上下載一個,按照說明制作一張啟動磁盤。

如果從;CD;啟動的話,各個不同的Linux;版本有不同的方法進入應急狀態。Red;Hat;啟動後有一個應急模式,
SuSE;的話,需要先進入安裝界面,然後按Ctrl+Alt+Fn;鍵找到shell;提示符,可以在這個提示符下來恢復。

下面介紹恢復步驟:

首先建立掛接點:
mkdir;mount;

然後把丟失的;Linux;掛接到這裡:
mount;/dev/hda6;mount;

如果;/boot;位於另外的分區,
需要把他掛接到;mount/boot;目錄下,例如:
mount;/dev/hda1;mount/boot;

使用;chroot;命令,把;mount;作為根目錄,cd;/boot;
命令實際上進入的是;"mount/boot";目錄:

chroot;mount;

運行;/sbin/lilo;,這樣就把;LILO;安裝回了;MBR,重新啟動就會看到;LILO;提示符回來了。
copyright © 萬盛學電腦網 all rights reserved