歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 深入解剖LILO

深入解剖LILO

日期:2017/2/27 14:31:16   编辑:更多Linux
  前面的文章我們講述了 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 © Linux教程網 All Rights Reserved