LILO

在系統啟動時運行的程序

LILO(LInux Loader),LILO代表Linux載入程序。LILO是一個在系統啟動時運行的程序,它允許選擇用於引導計算機的操作系統。

簡介


可以用LILO引導幾個不同的操作系統,如Linux和MS-DOS。用LILO可以定義一個默認的要引導的操作系統和一個引導該操作系統的延遲時間。
例如,如果在計算機上有MS-DOS和Linux,可以配置LILO引導二者中的任何一個,然後告訴LILO,如果30秒后沒有鍵盤介入,就引導二者中的MS-DOS;如果在30秒之內,鍵盤的Ctrl、Alt、Shift、Caps Lock中的任一鍵按下,就會出現boot,此時按下Tab鍵,能獲得LILO引導的操作系統的清單。配置LILO時,可以指定所有這些操作。大多數新電腦都為Microsoft Windows或Mac OS的一些版本安裝了引導載入程序。如果計算機使用Linux操作系統,就必須安裝一個特殊的引導載入程序。LILO在那些將Linux作為他們主要或唯一的操作系統的用戶間很流行。當以通常的方式安裝LILO的電腦啟動或重新啟動時,基本輸入輸出系統(BIOS)就會進行一些初步的測試,然後轉移控制LILO所在的主啟動記錄(MBR)。LILO的主要優點是,它可以快速啟動安裝在主啟動記錄中的Linux操作系統。LILO的主要局限是,LILO 配置文件被反覆更改時,主啟動記錄(MBR)也需要反覆重寫,但重寫可能發生錯誤,這將導致系統無法引導。在這種情況下,可以用其他的方法來使用LILO,但這需要花費較長的時間。有幾種引導載入(boot loader)程序可以用來啟動Linux系統,如LOADLIN(LOAD LINux)和GRUB(GRand Unified Bootloader)。
對於新的UEFI來說,主啟動記錄變為*.EFI程序。也就是說,從IO層面改變了以前的應用方式,將系統的引導啟動交還給了IO,由EFI應用進行啟動。此時,只需要操作系統對EFI進行支援,就可以完成多系統啟動。
開發EFI程序,就可以改變操作系統。在電路層面,操作系統OS可以直接對話。

歷程


Linux 發展到今日,已經成為了一個健壯,安全,強大,並且方便易用的操作系統。不僅僅對於網路管理員來說是,對桌面用戶來說也是。那麼,Linux 的啟動管理器 lilo 您已經很熟悉了嗎?要知道,Lilo 的功能可是非常強大的,它不僅僅可以作為Linux操作系統的引導器,還可引導多個操作系統(eg: Win2000, Win9x, dos, Minix…),以及啟動多個Linux內核映像。
在後面的內容中,我將通過運行在我自己計算機上的真實例子,討論lilo最主要的用法。在開始學習lilo之前,我們還需要一些預備知識--什麼是硬碟分區,Linux對硬碟分區的命名方法。

硬碟分區的概念?

硬碟分區是指對硬碟物理介質的邏輯劃分。將硬碟分成多個分區,不僅僅利於對文件的管理,而且不同的分區可以建立不同的文件系統。這樣才能在不同的分區上安裝不同的操作系統。對於一個硬碟來說,最多只能創建三個主分區,一個擴展分區。在擴展分區上又可以劃分若干邏輯分區。對於一個常規的操作系統來說,一般只能安裝在主分區中,並且安裝在主分區中的操作系統遠比安裝在邏輯分區中的方便管理且安全得多。(註:Linux就可安裝在邏輯分區中)
硬碟的物理第一扇(0柱面,0磁軌,1扇區)是硬碟主引導記錄扇MBR,計算機啟動時,首先就讀取該扇,讀出硬碟分區表,從中選擇三個主分區中唯一一個具有活動標記的分區,引導該分區上的操作系統。也就是說,無論有幾個主分區(≤3),其中必須有一個分區是活動的。對硬碟進行分區,可以使用任何硬碟分區軟體,如:Dos 下的fdisk、 PQMagic, Linux 下的cfdisk等等。Linux的引導記錄可以安裝在MBR中,或者Linux所在主分區中。如果Linux安裝在邏輯分區中則Linux的引導記錄必須安裝在MBR中。

Linux對硬碟分區命名方法

Linux對硬碟設備的命名方式與Windows系列大不一樣。每一個硬碟擁有自己的設備名。IDE硬碟為hd? , SCSI硬碟為sd? 。?表示a到z的小寫字母,不同的字母代表不同的硬碟設備,這個字母為主設備號。而硬碟上的分區用hd??或sd??中的第二個?表示,它由數字組成,1-4表示主分區,從5開始表示邏輯分區。
既是說,hda1表示第一個IDE硬碟的第一個主分區,sdb7表示第二個SCSI硬碟的第三個邏輯分區。而直接使用硬碟設備的主設備名,則表示該硬碟的MBR。如hda表示第一個IDE硬碟的MBR。
終於可以進入lilo的學習了,對於我們普通用戶來說,lilo的使用主要在於lilo.conf的配置。Lilo.conf是lilo的配置文件,它位於/etc之下。

命令說明


LILO
LILO
[root @testlinux]# vi /etc/lilo.conf
# 第一部份,整體的設定部分
prompt <==強制出現 boot 的開機訊息啰!
Compact <==可以整合一些讀取的扇區,可以保持 map 較小,相當適合軟盤開機時使用
delay=50 <==如果有多重開機的話,可以設定這個延遲時間,單位0.1秒
timeout=50 <==與 delay 有類似的關係也是 0.1 秒如果 5 秒內沒有按鍵盤直接以第一個 image 開機。
default=linux-2.4.18 <==如果開機的過程中,出現了boot之後,使用者沒有動作,
則以此設定的核心開機,與底下的label需對應
boot=/dev/hda <==Lilo 的開機信息寫入到 /dev/hda 這顆硬碟的 MBR 當中。
map=/boot/map <==用來說明 local 主機的地圖信息啰!
install=/boot/boot.b <==關於開機區的訊息(boot sector),不用理他沒關係!
Linear <==在較大容量的硬碟使用時,可以加入這一個參數試試看!
lba32 <==這個東西也是在大容量的硬碟使用時候會需要的參數!
password=1234567 <==設定密碼!如果為了安全起見,可以設定您的 lilo 密碼哩!
message=/boot/message <==那個 LILO 的訊息就是在裡面出現的啦!
# 第二部分,個別的開機設定部分,一個 image 或 other 均代表一個開機設定!
image=/boot/vmlinuz-2.4.7-10 <==核心檔案啦!
label=linux-2.4.7 <==請注意!label 前面以 [tab] 按鍵來作為分隔!
這個字眼則是顯示在 boot 裡頭挑選項目。
initrd=/boot/initrd-2.4.7-10.img
read-only <==開機扇區掛載為只讀!這是預設狀況,實際在
掛載入 Linux 系統時,會重新掛載成可寫!
root=/dev/hda1 <==掛載成 / 這個 root 目錄的磁碟!
other=/dev/hdb1 <==如果是『非 Linux 核心』就以 other 來設定
開機的磁碟扇區!
label=Windows2k <==同樣的要有 label 來表示這個開機扇區的名稱!

查看設置


LILO
LILO
[root @test root]# lilo -v
LILO version 22.3.2, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2002 John Coffman
Released 11-Jul-2002 and compiled at 21:48:42 on Aug 13 2002.
Reading boot sector from /dev/hda1
Using MENU secondary loader
Calling map_insert_data
Mapping message file /boot/message -> message-text
Calling map_insert_file
Boot image: /boot/vmlinuz -> vmlinuz-2.4.19-16mdk
Mapping RAM disk /boot/initrd.img -> initrd-2.4.19-16mdk.img
Addedlinux*
Boot image: /boot/vmlinuz -> vmlinuz-2.4.19-16mdk
Mapping RAM disk /boot/initrd.img -> initrd-2.4.19-16mdk.img
Added failsafe
Boot image: /boot/vmlinuz -> vmlinuz-2.4.19-16mdk
Mapping RAM disk /boot/initrd.img -> initrd-2.4.19-16mdk.img
Addedlinux-test
/boot/boot.0301 exists - no backup copy made.
Writing boot sector

故障處理


安裝好了 Linux 之後,在開機的過程中卻只出現『 LI 』就停止了!該如何是好?
這個問題可能發生的原因是 Lilo 沒有設定好,或者是由於 Linux 安裝在非 /dev/hda ( MBR )的硬碟之中,解決的方法可以如下:
用 Linux 光碟開機,然後在出現 boot: 處輸入
linux root=/dev/hda1 (這個與你的 Linux 安裝的 partition 有關)
順利開機之後,以 vi 修改 /etc/lilo.conf
將linear這一行取消(如果沒有這一行的話,那就在 lilo.conf 中加入吧!)然後執行lilo
再取出光碟並重新開機試試看;進入 BIOS ,將硬碟的 mode 改成 LBA 試看看;
將Linux往前面一點的扇區安裝,例如你可能安裝在 /etc/hdc1 ,那你可以重新安裝 Linux 在 /dev/hda2 試看看
無法正常的進入 Lilo 怎麼辦?
這的時候開機片就很重要啦!使用開機片,在出現 boot: 的時候,輸入
linux-s
就可以進入啦!這裡請特別留意!那個linux指的是 label 呢!就像剛剛我們有三個 label ,分別是 linux, linux-test 與 failsafe ,那麼如果我要以 linux-test 這個開機設定文件的單人維護模式登入,就必需要改寫成
linux-test –s
linux-test single