歡迎您光臨本站 註冊首頁

linux多重引導器概述

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
計算機的最初啟動是由BIOS控制的,在對一些硬體(如:內存、鍵盤等)初始化之後,它會試圖載入硬碟的主引導記錄(MBR)或軟盤的引導扇區.MBR可通過兩種方式運行,其一是定位到活動分區並載入相應的引導扇區,然後由引導扇區完成該分區內操作系統的基本組件的載入;其二是直接從一指定分區中載入信息,並通過它裝入任一分區的操作系統,諸如 LILO、gurb,OS/2 boot loader及PartitionMagic等引導載入程序都可以配置成這種方式.軟盤的引導扇區相當於硬碟活動分區的引導扇區,它通常用於裝入軟盤上的
操作系統.

只要把LILO之類的多重引導器安裝在MBR、活動分區或者引導軟盤上,就能接管計算機的控制權,然後由多重引導器完成後繼的引導過程.

LILO中建有一個引導表地址編碼,藉此它的引導程序就能定位到Linux的內核文件,這種地址編碼既可以按照柱面/磁頭/扇區(CHS)模式,又可以採用LBA的線性塊號模式,因此,即使對某些SCSI控制程序LILO也能運轉良好.

linux發行版本中的多重引導器一般是lilo,不過blue point linux2.0用的是gurb.關於舊版的lilo不支持大硬碟的問題,自從新版本發布后已解決.新的linux發行版本一般都不再有這個問題.我先介紹lilo,然後再介紹gurb.

第一部分:lilo

一,lilo的配置

lilo的配置文件是預設位置為/etc目錄下的lilo.conf.由引導裝入程序的安裝程序LILO 讀取.
下面給個lilo.conf的例子:

boot=/dev/hda3
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
default=new

image=/boot/vmlinuz-2.2.18
label=new
read-only
root=/dev/hda3

image=/boot/vmlinuz-2.2.16-22
label=linux
read-only
root=/dev/hda3

other=/dev/hda2
label=dos



本配置文件指定 LILO使用在/dev/hda路徑上的主引導記錄.啟動時,引導裝入程序會等待 5 秒的時間讓你按SHIFT鍵.如果未按,則上述提及的第一核心映象(vmlinuz-2.2.18),將被啟動.如果按下了SHIFT鍵則引導裝入程序就會問你要啟動哪一個映象. 萬一你忘了該選擇啟動哪個映象, 按[TAB]就會有個菜單給你選擇.你在這時可以選定或者啟動這個全新的內核,或者啟動一個原來可靠的內核(vmlinuz-2.2.16-22),或者啟動一個不同的操作系統.

由上可見,一個配置文件以一系列的全局選項開始),隨之是不同映象選項的描述.在映象描述中的選項將會覆蓋全局選項所設定的內容.

全局選項部分

boot=boot-device

設定包含引導扇區的設備的名稱(如一個硬碟的分區).如果未指定該關鍵字引導扇區將從當前作為根文件系統安裝的設備中讀取(或者可能也會寫入).

compact

試圖將相鄰扇區的多次讀取請求合併成一次讀取請求.這樣就大幅度地減少了讀取時間,並使系統描述(MAP)更小.在從軟碟機進行讀取時尤其要使用 'compact' 選項.

default=name

使用特別指定的映象作為默認的啟動映象.如果未設置 'defaul' 選項,則將使用在該配置文件中最早出現的那個映象作為啟動映象.

disc=device-name

定義特定硬碟的非標準參數.其對於定義 'BIOS=' 參數尤其有用.若你的硬碟的 BIOS 數據是 0x80 ,0x81(十六進位)等等,將無法判斷哪一塊 Linux 磁碟與哪一塊 BIOS 磁碟相對應(因為這決定於 BIOS 的設置和 BIOS 的類型).因此若你採用的是非一般的安裝,那你就需要說明 LINUX 磁碟和 BIOS 磁碟間的對應關係.比如:

map=map-file

定位磁碟描述(MAP)文件.若未指定 'map' 選項,就會使用 /boot/map 文件.



message=message-file

指定一個含有在運行啟動提示符前顯示的信息的文件.在顯示出 'LILO' 后等待按鍵的時間裡不會有信息顯示.在信息中,用FF字元([Ctrl L])清空本地顯示器.信息文件的大小限制在65535位元組以內.如果信息文件被改動或取消則必須重建磁碟描述(Map)文件.

prompt

不等待任何的按鍵事件發生就直接進入啟動提示符模式.如設定了 'promp'選項而沒設定 'timeout' 選項,則不能自行啟動.

timeout=tsecs

為鍵盤輸入設定一個超時選項(以10分之一秒為單位).若在指定的時間內沒有按鍵則第一個映象就會被自動啟動.同樣,如過用戶停頓過長則密碼輸入就會被取消.默認的超時值是無限.

另外,內核配置參數 append,ramdisk,read-only,read-write,root以及vga都可在全局選項中被設定.如果在相應的核心映象的配置欄中沒對其加以指定,該設定值其就會被用做默認的預設值.

單一映象部分

一個單一映象或者以一行
image=pathname
開始(以提示含有一個LINUX內核的啟動映象的文件或設備),或以一行
other=pathname
開始以提示啟動其他獨立的系統.

label=name

引導裝入程序使用每個映像說明的主文件名(不包含路徑)來標識該映像.通過設定變數'label'可使用不同的名稱.

alias=name

通過指定一個別名可對同一個目錄使用第二名稱.

password=password

用密碼保護映像.

restricted

若是在命令行被指定各參數則只在啟動映像使需要輸入密碼.

內核選項部分

如果被啟動的映像是一個LINUX內核,則可以將命令行參數傳送到該內核.

append=string

將指定的各選項增加到傳送於內核的參數行.其典型的運用於指定不能完全自檢或徹查對其有危害的硬碟的參數.比如:



append="hd=64,32,202"
ramdisk=size

該選項指定了任選RAM磁碟的大小.0 表示不應創立任何RAM磁碟.若不指定該參數,則使用在根文件系統中建立的RAM磁碟大小.

read-only

該參數指定根文件系統應該以只讀的形式裝載.典型的是,該系統的起始程序稍後將以可讀寫方式重新裝載根文件系統.

read-write

其指定根文件系統應以可讀寫方式裝載.

root=root-device

該參數指定應作為根文件系統裝載的設備.如果目前使用的是指定的名稱,則根驅動器就設在根文件系統目前所在的設備上.如果根設備被 -r 參數所修改,則使用相應的設備.若未指定 'root' 參數,則使用包含核心映象的根設備設置(該設置是編譯內核時在內核的 Makefile 文件中用 ROOT_DEV 變數設定的,並稍後可用 rdev(8)程序修改)

vga=mode

其指定在啟動時應選擇的 VGA 文本模式. 下列數值可被識別 (忽略大小寫):

normal:選擇普通 80x25 文本模式.
extent(或ext):選擇 80x50 文本模式.
ask:停止並要求用戶的輸入(在啟動時)

使用相應的文本模式.在啟動時用vga=ask選項或按[Enter]都可獲得一個可用模式的列表.若未指定該參數,則使用在核心映像中獲得的 VGA 文本環境.(該設置是編譯內核時在內核的 makefile 文件中用 SVGA_MODE 變數設定的)

二,關於lilo的問題

一、先裝了Windows,再裝Linux時,不能安裝LILO.這是大多數Linux新手的問題;有些BIOS不能識別大於8.4G的硬碟,舊的LILO不能識別位置大於1024柱面的系統內核 (kenerl).因此可能的問題是:LILO被裝入MBR,而為Linux準備的硬碟分區遠在1024柱面之外,因此Linux不能引導;LILO被裝入Linux的root分區(根分區),而它恰好在8.4G之外,又掛了!



解決方案:
也許你已經安裝了Linux,不要delete它,改改還能用!好,現在開始:

1. 用PartitionMagic5.0在第一個硬碟的開始分出個10M的ext2分區,格式化.最好把為Linux準備的分區也一同準備好,省得以後麻煩.
2. 用Loadlin或Linux的boot和rescue盤引導系統.mount那個10M的分區--/dev/hda1,假設我使用boot和rescue盤,mount到/mnt/tmp.把/boot/*和內核映象文件拷貝到/dev/hda1相同的目錄下,編輯/etc/lilo.conf,在所有的目錄前加上/dev/hda1的mount路徑,並且將LILO安裝到/dev/hda1.

把lilo.conf中的
boot = /dev/hda
install= /boot/boot.b
message = /boot/bootmsg
map= /boot/map
image = /boot/vmlinuz-2.2.13

修改為
boot = /dev/hda1
install= /mnt/tmp/boot/boot.b
message = /mnt/tmp/boot/bootmsg
map = /mnt/tmp/boot/map
image = /mnt/tmp/boot/vmlinuz-2.2.13

調用lilo命令,重新安裝LILO.重起系統,就完了.記住,要卸載Linux,可以用DOS下的fdisk /mbr清除MBR中的LILO.

二、多重引導NT、9x和Linux,並且想要比LILO更有好的界面,Linux NT-Loader-mini-HOWTO中有詳細的介紹;主要的問題是如何將Linux的引導記錄寫入bootsect.???文件,這裡假設你已經成功地安裝好Windows9x與NT了.(這裡假設Linux安裝於第一個邏輯分區,在Linux下為/dev/hda5,Windows9x安裝於第一個主分區,在Linux下為/dev/hda1,WindowsNT安裝於第二個主分區,在Linux下為/dev/hda2.)

解決方案:

用Loadlin或Linux的boot和rescue盤(指BluePoint光碟的啟動選項,RedHat里好像沒有)引導Linux系統.(loadlin比較好,rescue盤上可能沒有mtools,只能mount cp umount)用一下幾句命令創建該文件:
dd if=/dev/hda5 of=/root/bootsect.lix bs=512 count=1
插入軟盤,
mcopy /root/bootsect.lix a:


重新引導系統,進入DOS會快一些看到你的成果,進入ntldr所在硬碟分區的根目錄,或者說安裝WindowsNT前可引導的硬碟分區的根目錄(這裡是Weindows9x).拷貝軟盤上的bootsect.lix文件.去除boot.ini的只讀、隱藏屬性.在添加c:ootsect.lix="Go to Linux".存檔退出,添加boot.ini的只讀、隱藏屬性.重新引導系統,再試試看!注意在對Linux內核的作任何修改後,都必須重作以上步驟,才能正確引導Linux系統.

三、安裝多餘一個的Linux系統;
主要的問題還是如果多個Linux的LILO或根分區不能被BIOS找到,系統就會掛起!這裡假設BluePointLinux安裝於第一個邏輯分區,在Linux下為/dev/hda5,RedHat Linux安裝於第二個邏輯分區,在Linux下為/dev/hda6.)

解決方案:

我們就同樣的建個10M的分區.將兩個Linux的引導文件多拷貝到此分區,通常是/boot下的一切,有可能還有/vmlinuz--內核文件,依Linux的發行版本而不同.建議將其分裝入兩個目錄.假設為/bootBlurPoint和/bootRedHat.
編輯lilo.conf文件:

原始修改後
boot = /dev/hda
install= /boot/boot.b
message = /boot/bootmsg
map = /boot/map

image = /boot/vmlinuz-2.2.13
label = linux
root = /dev/hda1

修改為
boot = /dev/hda1
install= /mnt/tmp/bootBluePoint/boot.b
message = /mnt/tmp/bootmsg
map = /mnt/tmp/bootBluePoint/map

image = /mnt/tmp/bootBluePoint/vmlinuz-2.2.13
label = BluePoint
root = /dev/hda5

image = /mnt/tmp/bootRedHat/vmlinuz
label = RedHat
root = /dev/hda6

四,從主引導記錄中移走LILO並重存原先的windows MBR

1. c:> fdisk /mbr
2. #/sbin/lilo -u /dev/hda
3. #dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
4. #cat /boot/boot.0300 > /dev/hda

注意:只有你原先安裝windows 95后再安裝Linux時,/boot/boot.0300才是你原先的windows 95 MBR.



五,重存LILO到MBR

1. 用安裝軟盤或光碟啟動到boot:

boot: vmlinuz root=/dev/hdXY (如: hda1 )
啟動完成後運行 #/sbin/lilo

2. 用兩張軟盤啟動后:
#mount -t ext2 /dev/hda1 /mnt
#ln -s /mnt/boot boot
#ln -s /mnt/etc/lilo.conf /etc/lilo.conf
#/mnt/sbin/lilo

六,拷貝LILO到軟盤

1. /sbin/lilo -b /dev/fd0
2.用Redhat 安裝盤引導到 boot:
boot: vmlinuz root=/dev/hdXY (hdXY 為你的根分區)
update /etc/lilo.conf
root=/dev/fd0
boot=/dev/fd0
再運行:#/sbin/lilo -v

七,製作一張Redhat Linux 引導盤

#mkbootdisk --device /dev/fd0 2.0.36-3

八,拷貝內核至軟盤,讓軟盤單獨引導Linux並掛上硬碟上的根文件系統.

#fdformat /dev/fd0H1440
#dd if=/boot/vmlinuz of=/dev/fd0
#rdev /dev/fd0 /dev/hda1

第二部分:grub

grub 是一個多重啟動管理器.grub是GRand Unified Bootloader的縮寫,它可以在多個操作系統共存時選擇引導哪個系統.它可以引導的操作系統包括Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,WindowsNT,Windows2000.它可以載入操作系統的內核和初始化操作系統(如Linux,FreeBSD),或者把引導權交給操作系統(如Windows 98)來完成引導.

grub可以代替lilo來完成對Linux的引導,特別適用於linux與其它操作系統共存情況,與lilo相比,它有以下特點:

1,只要安裝時你的大硬碟是在LBA模式下,grub就可以引導根分區在8G以外的操作系統.
2,grub支持在引導開機的同時顯示一個開機畫面.對於玩家來說,這樣以製作自己的個性化開機畫面;對於PC廠商,這樣可以在開機時顯示電腦的一些信息和廠商的標誌等.grub支持640x480,800x600,1024x768各種模式的開機畫面,可以自動偵測選擇最佳模式,與Windows那320x400的開機畫面不可同日而語.


3,grub不但可以通過配置文件進行例行的引導,還可以在選擇引導前動態改變引導時的參數,還可以動態載入各種設備.例如你在Linux下編譯了一個新的核心,但不能確定它能不能工作,你就可以在引導時動態改變grub的參數,嘗試裝載這個新的核心進行使用.Grub的命令行有非常強大的功能,支持如bash或doskey一樣的歷史功能,你可以用上下鍵來尋找以前的命令.
4,在lilo下,你需要手工輸入操作系統的名字來引導不同的操作系統.而grub使用一個菜單來選擇不同的系統進行引導.你還可以自己配置各種參數,如延遲時間,默認操作系統等.
5,lilo是通過讀取硬碟上的絕對扇區來裝入操作系統,因此每次分區改變都必須重新配置lilo,例如你用PQ magic調整了分區的大小,那lilo在你重新配置好之前就不能引導這個分區的操作系統了.而grub是通過文件系統直接把核心讀取到內存,因此只要操作系統核心的路徑沒有改變,grub就可以引導系統. 除此之外,Grub還有許多非常強大的功能.例如支持多種外部設備,動態裝載操作系統內核,甚至可以通過網路裝載操作系統核心.Grub支持多種文件系統,支持多種可執行文件格式,支持自動解壓,可以引導不支持多重引導的操作系統等. 藍點Linux2.0則grub是默認安裝的.要把grub重新安裝到主引導扇區上,只需要簡單打入makebootable命令就可以了.

一,grub配置
grub啟動時會在/boot/grub/中尋找一個名字為menu.lst的配置文件,如果找不到此文件則不進入菜單模式而直接進入命令行模式.

  menu.lst 是一個文本文件,你可以用任何一個文本編輯器來打開它.每一行代表一個配置命令,如果一行的第一個字元為井號"#"則這一行為註釋,你可以簡單地用增加或減少註釋行來改變配置.



編輯menu.lst,一般會有以下各行

timeout second

設定在second秒之後引導默認的操作系統. 藍點Linux默認是timeout 5,就是5秒沒有其他指令就引導系統,如果設成-1,則grub會一直等待直到用戶選擇一個選項為止.

default num

默認啟動第num 1行選項,也就說default=0則默認啟動菜單第一行的操作系統,default=1則啟動第2行的系統,如此類推.

splash pathname/filename

指出開機畫面的文件所存放的路徑和文件名,如 splash /boot/logo/800x600x8.img是指用在/boot/logo路徑下的800x600.img文件作為開機畫面

title OSname title

後面的字元就是你在菜單項上所看見的選項,你可以寫上操作系統的名字和描述,如用 title BluePoint Linux, Single Mode 代表這一選項是引導藍點Linux的單用戶模式.

下面結合兩個系統引導描述來解釋幾個引導選項的意義

title BluePoint Linux, Default Mode
root (hd0,1)
kernel /boot/vmlinuz vga=auto root=/dev/hda2

hd0是指第一個硬碟(主硬碟) (hd0,1)是指第一個硬碟的第二個分區. kernel /boot/vmlinuz 是指出Linux核心的路徑在/boot/vmli 計算機的最初啟動是由BIOS控制的,在對一些硬體(如:內存、鍵盤等)初始化之後,它會試圖載入硬碟的主引導記錄(MBR)或軟盤的引導扇區.MBR可通過兩種方式運行,其一是定位到活動分區並載入相應的引導扇區,然後由引導扇區完成該分區內操作系統的基本組件的載入;其二是直接從一指定分區中載入信息,並通過它裝入任一分區的操作系統,諸如 LILO、gurb,OS/2 boot loader及PartitionMagic等引導載入程序都可以配置成這種方式.軟盤的引導扇區相當於硬碟活動分區的引導扇區,它通常用於裝入軟盤上的
操作系統.

只要把LILO之類的多重引導器安裝在MBR、活動分區或者引導軟盤上,就能接管計算機的控制權,然後由多重引導器完成後繼的引導過程.



LILO中建有一個引導表地址編碼,藉此它的引導程序就能定位到Linux的內核文件,這種地址編碼既可以按照柱面/磁頭/扇區(CHS)模式,又可以採用LBA的線性塊號模式,因此,即使對某些SCSI控制程序LILO也能運轉良好.

linux發行版本中的多重引導器一般是lilo,不過blue point linux2.0用的是gurb.關於舊版的lilo不支持大硬碟的問題,自從新版本發布后已解決.新的linux發行版本一般都不再有這個問題.我先介紹lilo,然後再介紹gurb.

第一部分:lilo

一,lilo的配置

lilo的配置文件是預設位置為/etc目錄下的lilo.conf.由引導裝入程序的安裝程序LILO 讀取.
下面給個lilo.conf的例子:

boot=/dev/hda3
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
default=new

image=/boot/vmlinuz-2.2.18
label=new
read-only
root=/dev/hda3

image=/boot/vmlinuz-2.2.16-22
label=linux
read-only
root=/dev/hda3

other=/dev/hda2
label=dos

本配置文件指定 LILO使用在/dev/hda路徑上的主引導記錄.啟動時,引導裝入程序會等待 5 秒的時間讓你按SHIFT鍵.如果未按,則上述提及的第一核心映象(vmlinuz-2.2.18),將被啟動.如果按下了SHIFT鍵則引導裝入程序就會問你要啟動哪一個映象. 萬一你忘了該選擇啟動哪個映象, 按[TAB]就會有個菜單給你選擇.你在這時可以選定或者啟動這個全新的內核,或者啟動一個原來可靠的內核(vmlinuz-2.2.16-22),或者啟動一個不同的操作系統.

由上可見,一個配置文件以一系列的全局選項開始),隨之是不同映象選項的描述.在映象描述中的選項將會覆蓋全局選項所設定的內容.

全局選項部分

boot=boot-device

設定包含引導扇區的設備的名稱(如一個硬碟的分區).如果未指定該關鍵字引導扇區將從當前作為根文件系統安裝的設備中讀取(或者可能也會寫入).



compact

試圖將相鄰扇區的多次讀取請求合併成一次讀取請求.這樣就大幅度地減少了讀取時間,並使系統描述(MAP)更小.在從軟碟機進行讀取時尤其要使用 'compact' 選項.

default=name

使用特別指定的映象作為默認的啟動映象.如果未設置 'defaul' 選項,則將使用在該配置文件中最早出現的那個映象作為啟動映象.

disc=device-name

定義特定硬碟的非標準參數.其對於定義 'BIOS=' 參數尤其有用.若你的硬碟的 BIOS 數據是 0x80 ,0x81(十六進位)等等,將無法判斷哪一塊 Linux 磁碟與哪一塊 BIOS 磁碟相對應(因為這決定於 BIOS 的設置和 BIOS 的類型).因此若你採用的是非一般的安裝,那你就需要說明 LINUX 磁碟和 BIOS 磁碟間的對應關係.比如:

map=map-file

定位磁碟描述(MAP)文件.若未指定 'map' 選項,就會使用 /boot/map 文件.

message=message-file

指定一個含有在運行啟動提示符前顯示的信息的文件.在顯示出 'LILO' 后等待按鍵的時間裡不會有信息顯示.在信息中,用FF字元([Ctrl L])清空本地顯示器.信息文件的大小限制在65535位元組以內.如果信息文件被改動或取消則必須重建磁碟描述(Map)文件.

prompt

不等待任何的按鍵事件發生就直接進入啟動提示符模式.如設定了 'promp'選項而沒設定 'timeout' 選項,則不能自行啟動.

timeout=tsecs

為鍵盤輸入設定一個超時選項(以10分之一秒為單位).若在指定的時間內沒有按鍵則第一個映象就會被自動啟動.同樣,如過用戶停頓過長則密碼輸入就會被取消.默認的超時值是無限.

另外,內核配置參數 append,ramdisk,read-only,read-write,root以及vga都可在全局選項中被設定.如果在相應的核心映象的配置欄中沒對其加以指定,該設定值其就會被用做默認的預設值.



單一映象部分

一個單一映象或者以一行
image=pathname
開始(以提示含有一個LINUX內核的啟動映象的文件或設備),或以一行
other=pathname
開始以提示啟動其他獨立的系統.

label=name

引導裝入程序使用每個映像說明的主文件名(不包含路徑)來標識該映像.通過設定變數'label'可使用不同的名稱.

alias=name

通過指定一個別名可對同一個目錄使用第二名稱.

password=password

用密碼保護映像.

restricted

若是在命令行被指定各參數則只在啟動映像使需要輸入密碼.

內核選項部分

如果被啟動的映像是一個LINUX內核,則可以將命令行參數傳送到該內核.

append=string

將指定的各選項增加到傳送於內核的參數行.其典型的運用於指定不能完全自檢或徹查對其有危害的硬碟的參數.比如:

append="hd=64,32,202"
ramdisk=size

該選項指定了任選RAM磁碟的大小.0 表示不應創立任何RAM磁碟.若不指定該參數,則使用在根文件系統中建立的RAM磁碟大小.

read-only

該參數指定根文件系統應該以只讀的形式裝載.典型的是,該系統的起始程序稍後將以可讀寫方式重新裝載根文件系統.

read-write

其指定根文件系統應以可讀寫方式裝載.

root=root-device

該參數指定應作為根文件系統裝載的設備.如果目前使用的是指定的名稱,則根驅動器就設在根文件系統目前所在的設備上.如果根設備被 -r 參數所修改,則使用相應的設備.若未指定 'root' 參數,則使用包含核心映象的根設備設置(該設置是編譯內核時在內核的 Makefile 文件中用 ROOT_DEV 變數設定的,並稍後可用 rdev(8)程序修改)



vga=mode

其指定在啟動時應選擇的 VGA 文本模式. 下列數值可被識別 (忽略大小寫):

normal:選擇普通 80x25 文本模式.
extent(或ext):選擇 80x50 文本模式.
ask:停止並要求用戶的輸入(在啟動時)

使用相應的文本模式.在啟動時用vga=ask選項或按[Enter]都可獲得一個可用模式的列表.若未指定該參數,則使用在核心映像中獲得的 VGA 文本環境.(該設置是編譯內核時在內核的 makefile 文件中用 SVGA_MODE 變數設定的)

二,關於lilo的問題

一、先裝了Windows,再裝Linux時,不能安裝LILO.這是大多數Linux新手的問題;有些BIOS不能識別大於8.4G的硬碟,舊的LILO不能識別位置大於1024柱面的系統內核 (kenerl).因此可能的問題是:LILO被裝入MBR,而為Linux準備的硬碟分區遠在1024柱面之外,因此Linux不能引導;LILO被裝入Linux的root分區(根分區),而它恰好在8.4G之外,又掛了!

解決方案:
也許你已經安裝了Linux,不要delete它,改改還能用!好,現在開始:

1. 用PartitionMagic5.0在第一個硬碟的開始分出個10M的ext2分區,格式化.最好把為Linux準備的分區也一同準備好,省得以後麻煩.
2. 用Loadlin或Linux的boot和rescue盤引導系統.mount那個10M的分區--/dev/hda1,假設我使用boot和rescue盤,mount到/mnt/tmp.把/boot/*和內核映象文件拷貝到/dev/hda1相同的目錄下,編輯/etc/lilo.conf,在所有的目錄前加上/dev/hda1的mount路徑,並且將LILO安裝到/dev/hda1.

把lilo.conf中的
boot = /dev/hda
install= /boot/boot.b
message = /boot/bootmsg
map= /boot/map
image = /boot/vmlinuz-2.2.13

修改為
boot = /dev/hda1
install= /mnt/tmp/boot/boot.b
message = /mnt/tmp/boot/bootmsg
map = /mnt/tmp/boot/map


image = /mnt/tmp/boot/vmlinuz-2.2.13

調用lilo命令,重新安裝LILO.重起系統,就完了.記住,要卸載Linux,可以用DOS下的fdisk /mbr清除MBR中的LILO.

二、多重引導NT、9x和Linux,並且想要比LILO更有好的界面,Linux NT-Loader-mini-HOWTO中有詳細的介紹;主要的問題是如何將Linux的引導記錄寫入bootsect.???文件,這裡假設你已經成功地安裝好Windows9x與NT了.(這裡假設Linux安裝於第一個邏輯分區,在Linux下為/dev/hda5,Windows9x安裝於第一個主分區,在Linux下為/dev/hda1,WindowsNT安裝於第二個主分區,在Linux下為/dev/hda2.)

解決方案:

用Loadlin或Linux的boot和rescue盤(指BluePoint光碟的啟動選項,RedHat里好像沒有)引導Linux系統.(loadlin比較好,rescue盤上可能沒有mtools,只能mount cp umount)用一下幾句命令創建該文件:
dd if=/dev/hda5 of=/root/bootsect.lix bs=512 count=1
插入軟盤,
mcopy /root/bootsect.lix a:
重新引導系統,進入DOS會快一些看到你的成果,進入ntldr所在硬碟分區的根目錄,或者說安裝WindowsNT前可引導的硬碟分區的根目錄(這裡是Weindows9x).拷貝軟盤上的bootsect.lix文件.去除boot.ini的只讀、隱藏屬性.在添加c:ootsect.lix="Go to Linux".存檔退出,添加boot.ini的只讀、隱藏屬性.重新引導系統,再試試看!注意在對Linux內核的作任何修改後,都必須重作以上步驟,才能正確引導Linux系統.

三、安裝多餘一個的Linux系統;
主要的問題還是如果多個Linux的LILO或根分區不能被BIOS找到,系統就會掛起!這裡假設BluePointLinux安裝於第一個邏輯分區,在Linux下為/dev/hda5,RedHat Linux安裝於第二個邏輯分區,在Linux下為/dev/hda6.)

解決方案:

我們就同樣的建個10M的分區.將兩個Linux的引導文件多拷貝到此分區,通常是/boot下的一切,有可能還有/vmlinuz--內核文件,依Linux的發行版本而不同.建議將其分裝入兩個目錄.假設為/bootBlurPoint和/bootRedHat.


編輯lilo.conf文件:

原始修改後
boot = /dev/hda
install= /boot/boot.b
message = /boot/bootmsg
map = /boot/map

image = /boot/vmlinuz-2.2.13
label = linux
root = /dev/hda1

修改為
boot = /dev/hda1
install= /mnt/tmp/bootBluePoint/boot.b
message = /mnt/tmp/bootmsg
map = /mnt/tmp/bootBluePoint/map

image = /mnt/tmp/bootBluePoint/vmlinuz-2.2.13
label = BluePoint
root = /dev/hda5

image = /mnt/tmp/bootRedHat/vmlinuz
label = RedHat
root = /dev/hda6

四,從主引導記錄中移走LILO並重存原先的windows MBR

1. c:> fdisk /mbr
2. #/sbin/lilo -u /dev/hda
3. #dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
4. #cat /boot/boot.0300 > /dev/hda

注意:只有你原先安裝windows 95后再安裝Linux時,/boot/boot.0300才是你原先的windows 95 MBR.

五,重存LILO到MBR

1. 用安裝軟盤或光碟啟動到boot:

boot: vmlinuz root=/dev/hdXY (如: hda1 )
啟動完成後運行 #/sbin/lilo

2. 用兩張軟盤啟動后:
#mount -t ext2 /dev/hda1 /mnt
#ln -s /mnt/boot boot
#ln -s /mnt/etc/lilo.conf /etc/lilo.conf
#/mnt/sbin/lilo

六,拷貝LILO到軟盤

1. /sbin/lilo -b /dev/fd0
2.用Redhat 安裝盤引導到 boot:
boot: vmlinuz root=/dev/hdXY (hdXY 為你的根分區)
update /etc/lilo.conf
root=/dev/fd0
boot=/dev/fd0
再運行:#/sbin/lilo -v

七,製作一張Redhat Linux 引導盤

#mkbootdisk --device /dev/fd0 2.0.36-3

八,拷貝內核至軟盤,讓軟盤單獨引導Linux並掛上硬碟上的根文件系統.

#fdformat /dev/fd0H1440
#dd if=/boot/vmlinuz of=/dev/fd0
#rdev /dev/fd0 /dev/hda1

第二部分:grub

grub 是一個多重啟動管理器.grub是GRand Unified Bootloader的縮寫,它可以在多個操作系統共存時選擇引導哪個系統.它可以引導的操作系統包括Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,WindowsNT,Windows2000.它可以載入操作系統的內核和初始化操作系統(如Linux,FreeBSD),或者把引導權交給操作系統(如Windows 98)來完成引導.



grub可以代替lilo來完成對Linux的引導,特別適用於linux與其它操作系統共存情況,與lilo相比,它有以下特點:

1,只要安裝時你的大硬碟是在LBA模式下,grub就可以引導根分區在8G以外的操作系統.
2,grub支持在引導開機的同時顯示一個開機畫面.對於玩家來說,這樣以製作自己的個性化開機畫面;對於PC廠商,這樣可以在開機時顯示電腦的一些信息和廠商的標誌等.grub支持640x480,800x600,1024x768各種模式的開機畫面,可以自動偵測選擇最佳模式,與Windows那320x400的開機畫面不可同日而語.
3,grub不但可以通過配置文件進行例行的引導,還可以在選擇引導前動態改變引導時的參數,還可以動態載入各種設備.例如你在Linux下編譯了一個新的核心,但不能確定它能不能工作,你就可以在引導時動態改變grub的參數,嘗試裝載這個新的核心進行使用.Grub的命令行有非常強大的功能,支持如bash或doskey一樣的歷史功能,你可以用上下鍵來尋找以前的命令.
4,在lilo下,你需要手工輸入操作系統的名字來引導不同的操作系統.而grub使用一個菜單來選擇不同的系統進行引導.你還可以自己配置各種參數,如延遲時間,默認操作系統等.
5,lilo是通過讀取硬碟上的絕對扇區來裝入操作系統,因此每次分區改變都必須重新配置lilo,例如你用PQ magic調整了分區的大小,那lilo在你重新配置好之前就不能引導這個分區的操作系統了.而grub是通過文件系統直接把核心讀取到內存,因此只要操作系統核心的路徑沒有改變,grub就可以引導系統. 除此之外,Grub還有許多非常強大的功能.例如支持多種外部設備,動態裝載操作系統內核,甚至可以通過網路裝載操作系統核心.Grub支持多種文件系統,支持多種可執行文件格式,支持自動解壓,可以引導不支持多重引導的操作系統等. 藍點Linux2.0則grub是默認安裝的.要把grub重新安裝到主引導扇區上,只需要簡單打入makebootable命令就可以了.



一,grub配置
grub啟動時會在/boot/grub/中尋找一個名字為menu.lst的配置文件,如果找不到此文件則不進入菜單模式而直接進入命令行模式.

  menu.lst 是一個文本文件,你可以用任何一個文本編輯器來打開它.每一行代表一個配置命令,如果一行的第一個字元為井號"#"則這一行為註釋,你可以簡單地用增加或減少註釋行來改變配置.

編輯menu.lst,一般會有以下各行

timeout second

設定在second秒之後引導默認的操作系統. 藍點Linux默認是timeout 5,就是5秒沒有其他指令就引導系統,如果設成-1,則grub會一直等待直到用戶選擇一個選項為止.

default num

默認啟動第num 1行選項,也就說default=0則默認啟動菜單第一行的操作系統,default=1則啟動第2行的系統,如此類推.

splash pathname/filename

指出開機畫面的文件所存放的路徑和文件名,如 splash /boot/logo/800x600x8.img是指用在/boot/logo路徑下的800x600.img文件作為開機畫面

title OSname title

後面的字元就是你在菜單項上所看見的選項,你可以寫上操作系統的名字和描述,如用 title BluePoint Linux, Single Mode 代表這一選項是引導藍點Linux的單用戶模式.

下面結合兩個系統引導描述來解釋幾個引導選項的意義

title BluePoint Linux, Default Mode
root (hd0,1)
kernel /boot/vmlinuz vga=auto root=/dev/hda2

hd0是指第一個硬碟(主硬碟) (hd0,1)是指第一個硬碟的第二個分區. kernel /boot/vmlinuz 是指出Linux核心的路徑在/boot/vmlinuz中.vga=auto 是設定顯示模式,root=/dev/hda2是指把第一個硬碟的第二個分區作為根掛載點("/").

title Microsoft Windows
root (hd1,0)
chainloader (hd1,0) 1

root (hd1,0)這是指第二個硬碟(從硬碟)上第一個分區 chainloader (hd1,0) 1 裝入一個扇區的數據然後把引導權交給它.



責任編輯:iamafan(01-10-09 18:30)


[火星人 ] linux多重引導器概述已經有614次圍觀

http://coctec.com/docs/linux/show-post-57811.html