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

深入Linux 的LILO

  Linux的引導可以采用多種方式,其加載器LILO(LinuxLoader) 是一個靈活的引導加載程序,對其深入的理解,將有助於我 們方便地處理多重系統、網絡引導、大硬盤及大內存等諸多 問題。 一、LILO的引導機制 ----眾所周知,計算機的最初啟動是由BIOS控制的,在對一些 硬件(如內存、鍵盤等)初始化之後,它會試圖加載硬盤的主引 導記錄(MBR)或軟盤的引導扇區。 ----MBR可通過兩種方式運行:其一是定位到活動分區並加載 相應的引導扇區,然後由引導扇區完成該分區內操作系統的 基本組件的加載;其二是直接從一指定分區中加載信息,並 通過它裝入任一分區中的操作系統,諸如LILO、OS/2BootLoader 以及PartitionMagic等引導加載程序都可以配置成這種方式。軟 盤的引導扇區相當於硬盤活動分區的引導扇區,它用於裝入 軟盤上的操作系統。 ----由此可見,只要把LILO安裝在MBR、活動分區或者引導軟盤 上,就能接管計算機的控制權,然後由LILO完成後繼的引導過 程。LILO中建有一個引導表地址編碼,借此,它的引導程序就 能定位到Linux的內核文件,這種地址編碼既可以按照柱面/磁 頭/扇區(CHS)模式,又可以采用LBA的線性塊號模式,因此,即 使是對某些SCSI控制程序,LILO也能良好運行。 ----當LILO定位到配置文件後,經過預引導過程,就顯示提示 符"LILOboot:",此時,系統允許選擇引導不同的操作系統或者 不同的內核配置,按Tab鍵顯示可選項列表,然後輸入可選項 或者直接回車選擇缺省配置,如果選擇了引導Linux,還可以直 接傳遞參數到系統內核。 ----和其他系統的引導加載程序相比,LILO具有更高的靈活性 ,其引導方式也更豐富: ----①當LILO被安裝在硬盤的MBR、活動分區或引導軟盤上時, 作為原引導程序的替身,它能引導任一硬盤任一分區上的Lin ux和其他操作系統。 ----②除了引導扇區,它沒有任何隱含文件,也不需要使用特 定的分區,它的配置文件可以在任何分區,甚至是存放在與 Linux毫不相干的DOS分區的某個子目錄下。 ----③它能引導幾個不同的內核配置,甚至是幾個不同的內 核。 ----④它能引導同一機器上的多個Linux版本。 ----⑤它能從網絡上引導Linux。 ----正是由於LILO的靈活性,使得其配置變得相當復雜,當有 多個系統共存時,建議先安裝其他操作系統,最後再安裝Linu x,這樣,設置LILO對其他系統的引導會相對簡單一些。 二、LILO引導的幾個參數 ----在此只介紹本文涉及到的幾個參數。 ----boot=:此參數指明包含引導扇區的設備名(如/dev/had),若 此項忽略,則從當前的根分區中讀取引導扇區。 ----root=:此參數告訴內核啟動時以哪個設備作為根文件系 統使用,其設定值為構造內核時根文件系統的設備名,可用 的設備名有: ----①/dev/hdaN~/dev/hddN:ST-506兼容硬盤,a到d上的N個分區。 ----②/dev/sdaN~/dev/sdeN:SCSI兼容硬盤,a到e上的N個分區。 ----③/dev/xdaN~/dev/xdbN:XT兼容硬盤,a到b上的N個分區。 ----④/dev/fdN:軟盤,A:(N=0)或B:(N=1)。 ----⑤/dev/nfs:由網絡取得根文件系統的標志。 ----image=:指定Linux的內核文件。 ----delay=:設定引導第一個映像前的等待時間。 ----disk=:此參數為某一特殊的硬盤定義非標准參數。 ----append=:為內核傳遞一個可選的參數行,其典型的應用 是為不能完全由系統自動識別的硬盤指定參數,如append="hd=6 4,32,202"。 ----label=:此參數為每個映像指定一個名字,以供引導時選 擇。 ----install=:安裝一個指定文件作為新的引導扇區,缺省為 /boot/boot.b。 ----table=:說明包含分區表的設備名,如果此參數忽略,引 導加載程序將不能傳遞分區信息到已引導的操作系統。 三、LILO典型配置方法 ----通常情況下,Linux的安裝程序自身就可以完成LILO的安裝 配置,從而較好地解決多重系統的引導問題,如果系統不能 自動完成這種配置,那麼可以通過手工修改配置文件/etc/lilo .conf來實現不同條件下的引導。 ----1.當系統能自動完成配置時 ----對於這種情況,只有一個建議:將LILO安裝到Linux分區的根


上,而不是MBR。假設當前hda1中裝有DOS/Windows,hda2中安裝Linux, 則/etc/lilo.conf的內容大致如下: boot=/dev/hda2#指定引導位置 compact delay=5#延時5秒 root=current#根在當前分區 image=/boot/vmlinux#指定Linux的內核文件 label=linux#用Linux為代表名稱  other=/dev/hda1#其他操作系統所在的分區 table=/dev/hda#指定包含分區表的硬盤 label=dos#用dos為代表名稱 ----2.當系統無法自動完成配置時 ----不外乎兩種情況:其一是BIOS不能直接看到Linux的根分區; 其二是BIOS只能讀寫標准IDE硬盤的前504MB。這時,必須遵循一 個最基本的原則:建立一個BIOS能存取的較小的Linux分區,其 中包含內核文件、映射文件以及鏈加載程序等必要的內容, 而根則可以是另外一個獨立的分區。至於配置上的其他細節 ,從以下實例來說明。 ----例1:主硬盤為IDE接口,第二硬盤為SCSI接口,根文件在SCSI 上。 ----對策:在IDE硬盤上劃分一個較小的Linux分區(/dev/hda2),其 中包含基本文件,掛接到/u2下,其配置文件/etc/lilo.conf的主要 內容為: boot=/dev/hda#LILO裝在主IDE的MBR install=/u2/etc/lilo/boot.b #從boot.b安裝LILO引導記錄 map=/u2/etc/lilo/map  #安裝程序建立此映射文件, 告訴引導載入程序內核塊的位置 compact timeout=50 image=/u2/vmlinux   #內核文件應事先拷貝到/u2下 label=linux root=/dev/sda1 #告訴內核根系統在SCSI硬盤上 read-only other=/dev/hda1 loader=/u2/etc/lilo/chain.b#指明加載程序 label=dos ----例2:一個標准的IDE大硬盤需安裝Linux和DOS/Windows。 ----BIOS的int13調用是采用3個位元組的CHS編碼,10位為柱面 號,8位為磁頭號,6位為扇區號。可能的柱面號碼是0~1023,可 能的磁頭號碼是0~255,而磁道上可能的扇區號碼是1~63,以 這24位最多可以定址7.875GB。但不幸的是,標准的IDE界面容許2 56個扇區/磁道、65536個柱面以及16個磁頭。它自己本身可以 存取128GB,但是除去BIOS方面63個扇區與1024個柱面後只剩504MB 可以定址。 ----對策:在硬盤的前500MB中劃分350MB(/dev/hda1)給DOS,150MB(/dev/ hda2)給Linux,在相應的配置文件中應說明硬盤的參數: boot=/dev/hda ... disk=/dev/hda bios=0x80 sectors=63 heads=16 cylinders=2100 image=/vmlinux append="hd=2100,16,23" root=/dev/hda2 label=linux 四、LILO的卸裝 ----當LILO覆蓋了引導扇區時,它會保留一個引導扇區的備份 在/boot/boot.xxyy中,其中xxyy是十六進制的設備主/次號碼(maj or/minornumbers),利用命令"ls-l/dev/device"就可獲得硬盤或分區 的主/次號碼。若要卸裝LILO,只需恢復初始的引導扇區。例 如:LILO安裝在/dev/had,對應的備份文件為/boot/boot.0300,使用 下面的命令即可: ----ddif=/boot/boot.0300of=/dev/_hadbs=446count=1



or/minornumbers),利用命令"ls-l/dev/device"就可獲得硬盤或分區 的主/次號碼。若要卸裝LILO,只需恢復初始的引導扇區。例 如:LILO安裝在/dev/had,對應的備份文件為/boot/boot.0300,使用 下面的命令即可: ----ddif=/boot/boot.0300of=/dev/_hadbs=446count=1



Copyright © Linux教程網 All Rights Reserved