Lilo使用技術(轉)
Lilo使用技術(轉)[@more@]LILO是在x86體系下最常用的Linux裝入程式;下面我將使用Lilo代替LILO是因為我不喜歡使用大寫。這篇文章描述了一些典型的關於Lilo 的安裝。作為Lilo使用者的使用指南。我認為例子相當有用,即使你的情況與我的不太相同。我希望這可以幫助你解決問題。由於Lilo本身的文件也是非常好的,如果有興趣,可以/usr/doc/lilo*找到。---------------------------------------------------內容列表:1、介紹2、背景資訊和普通的安裝2.1 我將Lilo裝在什麼地方?2.2 我如何設定我的IDE硬碟驅動器。2.3 如何在啟動時互動操作2.4 如果解除安裝Lilo3、簡單的設定3.1 如何處理大核心3.2 另外的資訊源4、安裝hdc像hda一樣引導啟動,並且使用bios=5、當BIO不能找到Root分割槽時,使用Lilo6、當BIO不能訪問巨大磁碟時,如何解決7、從一張恢復軟盤上啟動---------------------------------------------------1、介紹儘管在/usr/doc/lilo-version下找到的Lilo的文件是非常完整的,但是一些Linux使用者在配置他們的/etc/lilo.conf檔案時依然經歷一些問題。這個文件則是透過描述5個例子來幫助他們:第一個例子是經典的"Linux 和 其他系統"的共存安裝。第二個例子是展示瞭如果將Lilo安裝在一個連線為/dev/hdc的硬碟驅動器上,它將作為/dev/hda啟動。這些過程通常在你安裝了一個新的核心程式後都要經歷。當你的BIOS足夠新的情況下,它也會告訴你如果從SCSI磁碟上啟動。第三個例子告訴你如果在BIOS不能訪問root分割槽時如何引導Linux系統。第四個示例是用來告訴你如何訪問容量巨大的磁碟,這是在BIOS和DOS都不能訪問的情況下。最後一個示例是告訴你如果恢復一個損壞的磁碟,如果是由於安裝了另一個作業系統而損壞的。2、背景資訊和普通安裝當Lilo啟動了系統,它使用BIOS呼叫從磁碟上裝入Linux核心(IDE驅動器,軟盤或其它一些)。這樣的話,核心就必須存在於某些介質的某個地方,它可以被bios訪問。在啟動時,Lilo沒有能力讀取檔案系統的資料,以及在你寫入/etc/lilo.conf檔案中的任何的路徑名。安裝的時候,程式建立了什麼扇區由什麼檔案使用的表,從而引導系統。所有的這些檔案必須在一個分割槽,它可以被BIOS訪問(這些檔案一般情況下定位在/boot目錄下,這就意味著只有你的 Linux系統的root分割槽需要透過BIOS來訪問。)另外的一個基於BIOS的問題就是你需要在每次修改了Lilo設定以後,重新安裝裝入程式(i.e.你需要呼叫/sbin/lilo)。當你重新編譯你的核心並且覆蓋你舊的映像時,你必須重灌Lilo。2.1.我將Lilo裝在什麼地方?運算子boot=在/etc/lilo.conf檔案中告訴Lilo在什麼地方安裝了它的主引導器。一般情況下,你可以指定主開機記錄(/dev/hda)或你的Linux安裝的root分割槽(通常是/dev/hda1或/dev/hda2)。如果你有另一個作業系統安裝在你的硬碟上的話,你最好將Lilo安裝在root分割槽上而不是MBR分割槽上。因此,你必須將這個分割槽標記為 "bootable",可以使用fdisk的"a"命令和cfdisk的"b"。如果你不覆蓋主引導扇區,你將發現如果必要,可以輕易地卸下Linux和 Lilo。2.2. 如何設定我的IDE硬碟?我個人不使用BIOS中的LBA和LARGE的設定(但是我執行Linux);在PC世界中,這是設計中的一個非常討厭的約束。這就要求核心存放在第一個1024柱面之中,但是在你為你的硬碟分割槽並且將root分割槽作地很小時這並不是一個問題。如果你的硬碟已經有了另一個作業系統,請不要修改BIOS的設定,否則舊的系統將不會工作。最近的Lilo的版本都能處理LBA和LARGE的磁碟設定。注意在/etc/lilo.conf中的"linear"關鍵字可以處理一些問題。這個關鍵字使得Lilo使用線性的扇區編址而代替扇區/磁頭/柱面的定址方式。轉換成3維的地址的方式雖然延遲了執行的時間,但是卻解決了這個磁碟定址的幾何問題。如果你有不只一個硬碟,並且只用於Linux而且不參與啟動過程,你可以告訴BIOS,它們沒有被安裝。你的系統將會較快地啟動並且Linux將立刻地自動檢測所有的硬碟。我經常在自己的計算機上切換硬碟,但不是透過BIOS的設定。2.3 如何在啟動時互動操作當你看見Lilo提示符時,你可以敲擊鍵來檢視可以選擇的專案。如果Lilo沒有被設定成可互動的,在"LILO"資訊出現前,按下或鍵。如果你選擇啟動一個Linux核心,在你可以在你選擇的系統名稱後加入命令列引數。核心接受許多命令列引數。所以的這些引數在“BootPrompt-HOWTO”中可以找到。一些命令列是非常重要的,所以這裡不得不提一下:root=:你可以告訴Linux核心t掛起一個不同的分割槽作為root分割槽。比如,我的系統有一個小分割槽,安裝了一個最小化的Linux,並且我沒有能力在錯誤地損壞了root分割槽之後再啟動系統。init=:1.3.43以後的Linux核心能夠執行另一種命令,而代替/sbin/init,就是在命令列指定。如果你在啟動時遇到了問題,你可以透過指定init=/bin/sh來訪問一個裸系統(當你使用最喜歡的shell的提示符下,你需要掛起你的磁碟:"mount -w -n -o remount /: mount -a "並且記住在關機前"umount -a"。一個數:在核心的命令列中指定一個數,你的操作將會進入一個特別的執行級別(預設值透過是3或2,根據你選擇的釋出版本的不同)。建議看一個init的文件。2.4 我如何解除安裝Lilo?當Lilo覆蓋了一個啟動扇區,它儲存了一個備份在/boot/boot.xxyy,xxyy是裝置的主與次的號碼,是用十六進位制的。你可以看一看你的磁碟或分割槽的主次號碼:"ls -l /dev/device"。例如,在/dev/hda上的第一個扇區(主號3,次號0)將被存在/boot/boot.0300,安裝在/dev/fd0 上的Lilo建立/boot/boot.0200,安裝在/dev/sdb3(主號8,次號19)建立/boot/boot.0813。注意Lilo在已經有一個備份的情況下將不會建立檔案,所以當你重新安裝Lilo後(比如,在重新編譯核心之後)你不需要但心。備份在/boot/中的檔案總是在裝入 Lilo之前將當前環境記錄下來的。如果你需要解除安裝Lilo(比如,由於某些不幸的理由,你需要解除安裝Linux),你只需要將原來的啟動扇區恢復一下就可以了。如果Lilo被安裝在 /dev/hda,只要輸入"dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1"(我個人只是輸入"cat /boot/boot.0300>/dev/hda",但這是不安全的,這也能重灌原先的啟動扇區,你也可以在此期間修改了它。這個命令比在dos 狀態正的"fisk/mbr",容易得多了:它允許你不需要啟動除Linux以外的任何系統就可以乾淨地把Linux從磁碟上清楚。在刪除了Lilo之後,記住需要執行Linux的fdisk來除去每一個Linux分割槽(dos的fdisk有時不靈)。如果你將Lilo安裝到你的root分割槽上(比如/dev/hda2),沒有什麼其它的特別需要做。只要執行Linux的fdisk來刪除Linux分割槽。你必須將Dos分割槽設定成可啟動的。3、簡單的設定大多數Lilo安裝過程都使用一個設定檔案:boot = /dev/hda # 或者你的root分割槽delay = 10 # 啟動時延遲多少時間,以秒記vga = 0 # 可選取。使用vag=1設定成80x50#linear # 嘗試"linear",由於以上提到的磁碟定址問題。image = /boot/vmlinux # 你的zImage檔案root = /dev/hda1 # 你的root分割槽label = Linux # 標誌read-only # 將root掛起,並只讀other = /dev/hda4 # 你的dos分割槽ytable = /dev/hda # 當前的分割槽表label = dos # 標誌如果需要,你可以有好幾個"image"和"other"的選項。有幾個核心的images在lilo.conf檔案中並非不正常,至少對於經常開發核心的人來講。3.1.如果處理大核心如果你編譯一個"zImage"核心並且它大得超過512K,你需要建立一個“大核心”來代替它,使用:make bzImage 。啟動一個大的核心映像不需要指定其它特別的需要,但最好使用一個新版本的Lilo。如果你的安裝過程是舊的,你必須升級你的Lilo程式包。3.2 另外的資訊源除了Lilo的文件,這裡有許多mini-howto可以幫助你。這些都就做:“Linux+foobarOS”,這些當中,都是講一些關於其它系統與Linux共存的內容。4、安裝hdc像hda一樣引導啟動,並且使用bios=Lilo允許從一個磁碟上對映核心映像檔案,並指定BIOS從另一個磁碟上呼叫它。比如,經常在一個磁碟上安裝Linux,並將其連線為hdc(第二控制器的主盤)這樣將另一臺計算機上的主IDE控制器作為一個獨立的系統啟動。我將安裝軟盤複製到一個小分割槽上,所以我可以在虛擬控制檯上執行並安裝hdc。這個檔案可能是這樣的:# This file must be used from a system running off /dev/hdcboot = /dev/hdc # 覆蓋hdc的MBRdisk = /dev/hdc # 告之hdc是什麼:bios = 0x80 # bios將其視為快速驅動器delay = 0vga = 0image = /boot/vmlinux # 這是在/dev/hdc1上root = /dev/hda1 # 但是當啟動時它就在hda1label = Linuxread-only這個配置檔案必須透過Lilo讀出的/dev/hdc1而被讀取。Lilo的映像寫入啟動扇區(/dev/hdc)時涉及在/boot(當前安裝的作為hdc)的這個檔案;當這個磁碟被作為單獨的系統啟動時,這個檔案將在hda之後被訪問。我呼叫這個配置檔案/mnt/etc/lilo.conf.hdc(/mnt是由於hdc在安裝的過程中被掛起。我透過呼叫"cd/mnt; chroot.sbin/lilo -C /etc/lilo.conf"安裝Lilo。如果你覺得這非常神奇,請查閱chroot的手冊。在lilo.conf中的"bios="運算子被用來告訴Lilo,BIOS把你的裝置認作什麼。BIOS透過一個數呼叫定義好的軟盤和硬碟:0x00和 0x01是軟盤驅動器,0x80和以下這些數是硬碟控制器(舊的BIOS只能訪問兩個硬碟)。bios=0x80的意思是,使用BIOS中的0x80作為 /dev/hdc。這個運算子可以非常簡單地在其它情況下使用,比如,當你的BIOS從SCSI磁碟啟動,而不是IDE裝置。當IDE和SCSI裝置共存時,Lilo不能確定是否0x80指出了其中的一個,因為使用者可以在BIOS選擇選單裡選擇它,並且BIOS在執行Linux時不能被訪問。預設情況下,Lilo假定IDE磁碟被BIOS對映成第一個,但是這可以透過lilo.conf中指令:disk = /dev/sdabios = 0x80而改變。5、當BIO不能找到Root分割槽時,使用Lilo我有兩個IDE磁碟,和一個SCSI磁碟。而SCSI裝置不能被BIOS看見。Linux引導器,Lilo,使用BIOS呼叫,只能看見BIOS可以看見的。我的BIOS只能從A: C:啟動,我的root檔案系統是在SCSI磁碟上的分割槽上的。解決的方法需要核心,映象檔案,和在第一個IDE驅動器上的Linux分割槽中的裝入程式。注意並不一定需要將你的kernel放在你的root分割槽上。在我的第一IDE上的第二個分割槽(/dev/hda2,Linux用來啟動系統的分割槽)被掛起在/u2。這裡是我使用的lilo.conf# 將Lilo裝在第一個IDE的MBR上boot = /dev/hda# /sbin/lilo (the installer) 從以下檔案複製Lilo的啟動記錄到MBRinstall = /u2/etc/lilo/boot.b## 我寫了一個詳細的啟動選單。message = /u2/etc/lilo/message#Lilo將建立以下檔案。它告訴啟動程式哪裡是核心的塊。map = /u2/etc/lilo/mapcompactprompt# 等10秒timeout = 100# 核心被存放在BIOS可以看見的地方:# cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1image = /u2/z1.2.1label = 1.2.1# Lilo 告訴核心掛起第一個SCSI分割槽作為root。BIOS不能看見它。root = /dev/sda1#這個分割槽將被檢查並且透過/etc/rc.d/rc.S被重新掛起read-only# 另一個核心image = /u2/z1.0.9label = 1.0.9root = /dev/sda1read-only#DOS分割槽other = /dev/hda1loader=/u2/etc/lilo/chain.blabel = dosalias = m6、當BIO不能訪問巨大磁碟時,如何解決在我的辦公室裡的系統有一個1GB的IDE驅器。BIOS只能看見其中的504MB。(這裡MB是指2**10位元組,而不是10**6位元組。)所以我有在一個350MB/dev/hda1 並且我的Linux的root在一個120MB的分割槽上/dev/hda2 的分割槽上有一個MS-DOS。當驅動器被重新整理後,MS-DOS不能被正常安裝了。Novell DOS 7也有這個問題。所以我使用Linux的fdisk做個分割槽表。MSDOS-6.2拒絕將其自己安裝到/dev/hda1下。它可能會顯示出:“this release of MS-DOS is for new installations.Your computer already has MS-DOS so you need to get an upgrade release from your dealer.”所以我再一次執行Linux的fdisk並且將分割槽1從表中刪除。這樣就保證了MS-DOS 6.2可以精確地建立相同於剛才我已經刪除的分割槽1,並且正常安裝。MS-DOS 6.2在這個驅動器的寫上了MBR,但它不能啟動。所幸我有一張有Slackware核心的軟盤(由Slackware的安裝程式做的),所以我啟動了Linux並且由Lilo覆蓋了MS-DOS的MBR。這個工作,這是我使用的lilo.conf檔案。boot = /dev/hdamap = /lilo-mapdelay = 100ramdisk = 0 # 在Slackware核心中關閉記憶體盤。timeout = 100promptdisk = /dev/hda # BIOS只能看見500MBbios = 0x80 # 指定第一個IDEsectors = 63 # 你的扇區數(從你的磁碟說明書上找)heads = 16cylinders = 2100image = /vmlinuzappend = "hd=2100,16,63"root = /dev/hda2label = linuxread-onlyvga = extendedother = /dev/hda1label = msdostable = /dev/hdaloader = /boot/chain.b在我安裝了這些系統之後,我檢查到這些分割槽包括zImage,boot.b,map,chain.b並且資訊檔案在沒有"stackered或 doublespaced.”時,可以使用msdos檔案系統,所以我可以作一個在/dev/hda1上的500MB的DOS分割槽。7、從一張恢復軟盤上啟動接下來,我在辦公室的機器上安裝Windows-95。它也損壞了我的Lilo MBR,但是它將我的Linux分割槽分開了。從軟盤上引導核心花費了很長時間,所以我使一個可工作的Lilo安放在軟盤上,它可以從IDE上啟動我的核心。我使用這個lilo軟盤:fdformat /dev/fd0H1440 # lay tracks on virgin diskettemkfs -t minix /dev/fd0 1440 # make file system of type minixmount /dev/fd0 /mnt # mount in the standard tmp mount pointcp -p /boot/chain.b /mnt # copy the chain loader overlilo -C /etc/lilo.flop # install Lilo and the map on the diskette.umount /mnt注意,當你執行這個安裝過程時,軟盤必須被掛起,所以Lilo可能寫入它的map檔案。這個檔案是/etc/lilo.flop:# Makes a floppy that can boot kernels from HD.boot = /dev/fd0map = /mnt/lilo-mapdelay = 100ramdisk = 0timeout = 100promptdisk = /dev/hda # 1 GB 的硬碟, BIOS只能見到500 MB.bios=0x80sectors = 63heads = 16cylinders = 2100image = /vmlinuzappend = "hd=2100,16,63"root = /dev/hda2label = linuxread-onlyvga = extendedother = /dev/hda1label = msdostable = /dev/hdaloader = /mnt/chain.b需要在辦公室的機器上安裝msdos 6.2,但我不想碰第一個驅動器。我加入了一個SCSI控制器和驅動器,使用Linux的mkdosfs加入一個msdos的檔案系統,並且win95將其作為D:。當然msdos不能從D:啟動。當然如果你有Lilo這不是一個問題。我將以下內容加入lilo.conf:other = /dev/sda1label = d6.2table = /dev/sdaloader = /boot/any_d.b透過這個修改,msdos 6.2可以執行了,但是它把它認為在C:並且windows-95認為在D
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945136/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LILO使用指南(下)(轉)
- LILO使用指南(中)(轉)
- LILO使用指南(上)(轉)
- LILO配置指南(轉)
- 深入理解LILO(轉)
- LILO配置指南(整理版) (轉)
- 在Flash中使用ASP技術 (轉)
- LILO的全域性引數(轉)
- lilo--實踐篇(FAQ) (轉)
- CBuilder中使用管道技術例項 (轉)UI
- 關於LiLo--原理篇(轉)
- LILO啟動問題詳解 (轉)
- 使用Shell.Application技術之二 (轉)APP
- (轉)BDC技術
- VDSL技術(轉)
- Slackware LILO 安裝幫助文件(轉)
- 紅旗Linux中LILO的配置(轉)Linux
- LINUX LILO若干問題探討 (轉)Linux
- 內碼轉換技術 (轉)
- 轉:Java同步技術Java
- JDBC介面技術(轉)JDBC
- 客戶端跳轉技術,服務端跳轉技術,兩種跳轉的各自使用場合和特點客戶端服務端
- 技術教程網 -- 實用技術參考 (轉)
- 交換技術:NGN核心軟交換技術分析(轉)
- Linux 作業系統技術使用總結 (轉)Linux作業系統
- LINUX-LILO可以裝在軟盤上(轉)Linux
- 剖析外掛技術 (轉)
- 前沿技術 之 CORBA (轉)ORB
- ERP與IT技術(轉)
- 轉c#反射技術C#反射
- 數字印章技術 (轉)
- ASP快取技術 (轉)快取
- 轉:Java同步技術 (一)Java
- 數字水印技術 (轉)
- 呼叫中心技術概述 (轉)
- Bochs 除錯技術(轉)除錯
- GNOME 技術綜述(轉)
- 使用Rundll32.exe和Rundll.exe(轉程式設計技術) (轉)程式設計