歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux文化

LILO配置指南(整理版)


1、一般的開機引導過程。

  在PC機上,最初的啟動由BIOS完成。當開機自檢結束時(Power-On Self Test,POST), BIOS嘗試讀入軟盤的第一個扇區,把它看作引導扇區。若沒有軟盤,則嘗試讀入硬盤 的第一個扇區。新的BIOS可以改變這種次序,先從硬盤啟動。甚至從光盤啟動。由於 大多數BIOS不提供SCSI支持,若要從SCSI磁盤啟動,SCSI適配器要提供他自己的 BIOS.如果什麼都找不到,老的BIOS會啟動內置的ROM BASIC,或直接打印"NO ROM-BASIC".

  操作系統的啟動分幾步完成。由於引導扇區比較小,通常它主要任務是讀入第二 個loader,第二個loader再讀入第三個loader,直到整個操作系統被完全讀入。

  DOS 引導區:

OFFSET 0x000 JMP xx Near jump into the program code 0x003 Disk parameters 0x03E Program code loading the DOS kernel 0x1FE 0xAA55 Magic number for BIOS

  可見,引導區的結構相對比較簡單。它的長度總是512字節。以上,磁盤參數 只對DOS有意義。重要的是引導區從0開始,以BIOS的magic number 結束。

  從軟盤啟動比較簡單,因為只有一個引導扇區:第一個扇區。硬盤則困難一些, 它被分成很多分區。但是,BIOS根本不管分區信息,它象對待軟盤一樣對待硬盤, 仍讀入第一個分區,叫作:master boot record.(MBR).      所以MBR也應該和上面介紹的結構一樣:從0開始,以BIOS的magic number 結束 在MBR的最後部分,有分區表。如下圖:

OFFSET Length 0x000 0x1BE code loading and starting the boot sector of the active partitian 0x1BE 0x010 partition1 0x1CE 0x010 partition2 0x1DE 0x010 partition3 0x1EE 0x010 partition4 0x1FE 0x0012 0xAA55 Disk parameters   每個分區信息占16字節,結構如下:

1 BOOT Boot flag: 0=not active ,0x80 active 1 HD Begin:head number 2 SEC CYL Begin:sector and cylinder number of boot sector 1 SYS System Code:0x83 linux , 0x82 linux swap etc. 1 HD End:head number 2 SEC CYL End: sector and cylinder number of boot sector 4 low byte high byte Relative sector number of start sector 4 low byte high byte Number of sectors in the partition   所以硬盤可以有4個分區。這四個分區叫做主分區:primary prititions.假如它 們不夠用,可以設置所謂的擴展分區。擴展分區包含至少一個邏輯分區。擴展 分區的第一個扇區結構類似MBR,它的分區表的第一表項對應第一個邏輯分區。如果 存在第二個邏輯分區,那麼分區表的第二個表項就包含了一個指針。這個指針指向 第一個邏輯分區後面的一個地址。這個地址包含一個分區表。該分區表的第一表項 對應第二個邏輯分區。這樣就組成一個鏈表,從而擴展分區可以有任意多的邏輯分 區。

  每一個主分區和擴展區都包含一個引導扇區。系統只能從這幾個地方之一啟動。 BOOT標志決定哪個區被引導。

  原來,只有主分區,因此,MS-DOS的fdisk和大多數同類工具只能激活主分區.. MBR的代碼要作以下的操作:
  1:確定活動分區。
  2:使用BIOS,將活躍分區的啟動扇區讀入。
  3:跳到啟動扇區的0位置。

  MBR的空間足夠完成這些工作。如上所述,每個分區理論上包含一個引導扇區, 而且,存在的第二個硬盤也包含和第一個類似的結構。MBR完全可以容納一個復雜 的引導程序。即所謂的boot manager,動態的決定活動分區。Linux 為我們提供了lilo

2、LILO:the linux loader

  LILO引導扇區包括一個分區表的空間,所以,LILO即可以安裝在MBR中,也可以安 裝在某個分區的引導扇區。LILO擁有DOS引導扇區的所有功能,而且,它還可以引導 邏輯扇區和第二硬盤分區。LILO還可以和另外的引導者合作(例如:NT loader),這樣, 用戶就可以有很多選擇。 (注:以下幾個標題,為防止引起歧義,用原文)

2.1 LILO started by MS-DOS MBR

如果系統至少有一個linux主分區,(非交換區,且在第一硬盤上),那麼LILO就可 以安裝在這些分區中的一個。當 LILO對應分區被激活後,引導過程如下:
BIOS 讀入 MBR
MBR 讀入 活躍主分區:LILO所在的分區。
LILO 引導Linux或另外的操作系統。
要引導其它OS且不用LILO很簡單,激活那個分區。Linux分區沒有任何變化,非常安全。

2.2 LILO started by a boot manager

假如用戶不想刪除老的boot manager,或者某個OS LILO不能引導,可以考慮該途徑。

1. 假如boot manager可以引導擴展區,那兒是LILO的好去處。
2. 假如 boot manager 可以引導第二硬盤分區,linux可以裝在第二硬盤上。
3. 有些 boot manager 甚至可以引導邏輯分區,那LILO就可以裝在邏輯分區上。

當然,也要注意以下情況:

1 某些操作系統直接改寫MBR,這會將原來的boot manager破壞。
2 重新分區會破壞擴展分區的引導扇區,這是LILO可能要重裝。

當安裝新的系統時,是否要重新安裝(linux)依靠新的boot manager,要麼LILO引 導扇區被注銷,要麼boot manager 為它提供一個引導項。重新分區或分區格式化會將 LILO和linux全部刪除。

2.3 LILO占據MBR

假如整個linux系統都在第二硬盤上,且第一硬盤沒有擴展分區,那麼,LILO只有裝 在MBR上。這樣,會將老的MBR沖去,所以,在安裝LILO前,要將老的MBR(包括分區 表)做一個備份。DOS下有很多工具可以完成這個任務。在linux下,這樣備份:

  # dd if=/dev/had of=/backup/MBR bs=512 count=1

寫會使用命令:

  # dd if=/backup/MBR of=/dev/had bs=446 count=1

這樣,原來的MBR就被寫會但不包括分區表。如果分區表也要恢復,那麼bs=512. 注意,這樣,新的分區表會被破壞!

2.4 LILO 文件

  與LILO有關的文件通常放在/boot/下,配置文件lilo.conf在/etc/下。包含實際 引導系統信息的映射文件有/sbin/lilo安裝。對於任何LILO安裝,配置文件應該被定 置以適合個人需要。

The configuration file:配置文件

  基本上,配置文件是一些變量賦值。每一行包含一個標志變量或一個變量賦值. 配置文件被特殊的變量賦值分成幾個區,每個區引導一個linux或其它OS.

  下面解釋常見的行:

boot = device
  說明那一個設備或哪一個分區包含引導扇區。假如沒有給boot賦值,取當前缺省值。

Compact
  激活一種模式,在此模式下,LILO一次向BIOS請求讀入相鄰的幾個分區。這極大的 縮短了裝載時間,特別是從軟盤啟動。

Delay=tenths
  以10秒為單位,規定LILO在引導第一個引導配置前應等待用戶的時間。若沒有定義,則 直接引導。

Linear
  使LILO生成線性地址,而不使用通常的Sector/Head/Cylinder機制。Linux地址機制 可以不依賴磁盤的物理結構。

Install = boot sector
  使用指定的boot sector寫入引導扇區,缺省用/boot/boot.b

disktab=disktab
  使用指定的disktab,缺省使用/boot/disktab.disktab保存了硬盤物理結構信息。

Map=map file
  說明映射文件的路徑。

Message=file
  指定一個文件,該文件的內容將會在LILO引導是被顯示。假如沒有說明該文件,那麼就 只會出現"LILO"。

Verbose=level
  說明LILO的調試級別。從0(不顯示任何信息)到5(所有的狀態信息)。

Backup = backup file
  以前引導扇區內容的備份文件。缺省使用/boot/boot.device number

force-backup=backup file
  和backup 相同,當時假如備份文件存在,被覆蓋。

Prompt
  指定要用戶通過鍵盤選擇要引導的內核。不會缺省選擇。

Timeout=tenths
  設置一個超時值,在此時間內必須有鍵盤輸入,否則用第一個配置。類似,假如超 時,就不能再輸入密碼。一般情況下,該取缺省值,無窮大。    注:delay 與 timeout的區別(joe 認為),delay 是"LILO"出現後用戶必須有 輸入的最長時間。Timeout 是用戶在按了任意鍵後,系統等待選擇,用戶 兩次擊鍵的最大間隔時間。

Serial=port, bps parity bits
  設置串口參數。如果LILO會從該文件獲取串口參數的話。如果其中之一無效, 那所有三個參數都無效。Port從四個標准串口選擇一個:0對應COM1 或者 /dev/ttyS0.。支持的波特率范圍為:100-9600。所有校驗設置都支持

  (n:none,e:even,o:odd) bits為7或者8。缺省為serial=0,2400n8.

Ignore-table
  讓LILO忽略被破壞的分區表。

Fix-table
  允許LILO將每個分區的(sector/head/cylinder)地址轉化為線性地址。通常, 分區地址從cylinder boudary開始。某些操作系統,會改變這一點。由於LILO只能 將它的啟動扇區寫於兩種地址都一致的分區上,不正確的3D地址可以用fix-table 來糾正。但是,這種糾正不能被保證是永遠的,所以重分區以保證對齊cylinder boudary 是最好的選擇。

Password=password
  為引導配置設置password

restricted
  放松對password的限制。只有用戶想傳附加的啟動參數給內核時才需要password

optional
  允許配置的幾個內核有錯誤的,或者不存在,如果不說明optional,LILO遇到這種 情況就會打印一些錯誤信息然後退出。

  每個從LILO引導的配置從image行開始。
   Image = kernel
   Label = name
  Image包含要引導的內核。Label是給用戶選擇用的。Image行通常指向一個設備, 例如/dev/fd0,可以找到內核的范圍用range來注明。
   Range = range
  range可以用start sector -end sector 或者 start sector + length 表示。例如:
   image = /dev/fd0
   label = floppy
   range = 1+512

以下變量賦值有可能出現:

append=string
  將string作為引導參數傳給內核。例如,硬件參數。

Literal=string
和append查不多。但是,他會沖掉原來的設置。所以不能被全局說明。

Ramdisk=size
  設置RAM disk的大小。

Read-only

read-write
設置根文件系統的訪問方式。

Root=device
設置根文件系統存在的設備。

Vga=mode
  屏幕設置。可能模式為:normal,extended 和ask. 。

以下設置是針對別的操作系統的:

loader=loader   說名用來引導操作系統的文件。缺省為 /boot/chain.b . 另外,LILO包含以 下的loader:

os2_d.b 可以從第二硬盤上引導os/2

any_d.b 在引導操作系統之前試圖將兩個硬盤的次序顛倒,從而可以引導第二硬盤 上的os.

Table=device   說明一個設備,該設備的某個分區上存放要引導的os.假如沒有說明table, LILO就不會將該信息傳給要引導的osunsafe

  關掉對要引導的os的檢查。只有要從軟盤引導時,才使用該設置。沒有該設置, 每次map installer開始運行時,引導盤都要插入軟驅。
The disktab file
disktab文件包含LILO要引導的設備的物理結構信息。通常,這些信息可以從設備驅 動程序獲取。所以,只有這種方法不行時才會用到disktab 文件。在此情況下,如 果文件不能用,LILO報告錯誤信息:

   geo_query_dev HDIO_GETGEO(dev …)
或者
   HDIO_REQ not supported for your SISI controller
   Please use /boot/disktab

然後,物理結構信息就必須手工地輸入:

# /boot/distab-LILO parameter table # #This table contains the geometry parameters for SCSI and # IDE disks,which can not be recognized automatically # Entries in this table overwrite recognized parameters! # # Dev. BIOS Secs/ Heads/ Cylin - Par. # num. Code track cyLin. Ders. Offset (optional) #0x800 0x80 32 64 202 0 # /dev/sda 各個域含義如下: 0x800 設備號.由主副設備號組成。 設備號.由主副設備號組成。 0x80 設備的BIOS 碼。0x80代碼系統的第一個硬盤。0x81第二個,。。。。 所有同一硬盤上的分區該值相同。 32,64,203 sector 數目(每個track) heads 數目 cylinders 數目 0 分區的開始。也可以從分區表中讀,所以可以不說明。

2.5 LILO 啟動信息

在啟動過程中,LILO會顯示'LILO',如果LILO出錯退出,可以根據顯示來判斷系統的 出錯原因。

沒有信息:LILO根本就沒有被讀入,沒安裝LILO,或LILO駐留的分區沒被激活。

  Lnumber : LILO的第一部分被讀入並開始執行。但第二部分不能被讀入。後面 的數字表明出錯原因。這可能是由於硬盤的物理錯誤或不正確的物理結構信息。

  LI: LILO的第一部分可以讀入第二部分,第二部分執行時出錯。這可能是不正 確的物理結構信息或重裝了boot.b而沒有運行LILO重新安裝。

  LIL:LILO的第二部分啟動起來了,但是不能從map文件讀入descriptor tables. 這說明不正確的物理結構信息或物理錯誤。

  LIL?: LILO的第二部分被讀到不正確的地址。原因同LI

  LIL-: descriptor tables有錯。這可能是不正確的物理結構信息或重裝了 map file而沒有運行LILO重新安裝。


——摘自:北京LINUX


Copyright © Linux教程網 All Rights Reserved