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

Grub輕松解決單硬盤3OS+n個Linux多系統啟動

 因為要學習Linux和Unix,不得在一塊硬盤上安裝4個操作系統:    FreeBSD(Unix最純的一種)+Win98+RedHat9+紅旗4。安裝不難,可是要想讓他們和睦共處,,可我花了一番功夫!經過一星期的死磨硬泡,總算搞定!這期間,我在網上發現這也算是個熱點話題,干脆也把我的體會也告訴大家。    1-0-1 開端:    因為Linux特殊的硬盤管理模式,可以說是"固定"式的:決不會因為硬盤的增減、BIOS中 硬盤啟動順序更改,而造成像Windows裡的分區號的變更/混亂。因此其下的GRUB啟動管理器是實現多系統啟動的最佳工具。    Grub的功能強大、支持16位色1024分辨率開機背景、更改開機菜單簡單方便、故障恢復也很簡單。因為Grub是一個獨立的,有他自己的一套命令行指令(可以脫離操作系統運作)。    相比有人用NT/2K/XP的Ntload來實現,這需要獲得其他系統啟動分區的啟動扇區文件。這個要直接讀寫硬盤扇區,你要是不會Linux/Unix,在Windows/Dos下,簡直是惡夢!!操作難度高,出錯?!後果不堪設想!    同樣是獲得啟動扇區 在Linux/Unix下只要一個簡單的 dd if=/目的分區of=/輸出路徑/輸出文件的指令行就OK。    2-0-1 安裝系統前的分區規劃:    因為一塊硬盤最多只可劃分4個主分區。擴展分區算作一個主分區,它只能有一個!    2-0-a.假若你要裝BSD,要給它分一個主分區(分區類型不限,先別問為什麼)。    2-0-b.假若你要裝MS Windows 請給每個Windows分一個主分區。    2-0-c.確認你已經沒有需要安裝在主分區上才能使用的系統/已經分完了3個主分區。    2-0-d.如上一步已經確認,則可以把剩下的空間全交給擴展分區。    2-0-e.假若你還需要更多的Win分區空間,可以在擴展分區裡繼續分些。    2-0-f.確認完成後,刪除先前給BSD分好的分區。    2-0-g.保存分區表,重啟生效。    #注意:不要激活任何分區/設為活動Active分區,到下一步再作。    BSD的"類型安裝",選Xuser,只需要不到400M空間。    沒有給Linux分區,這不要緊,當安裝時再分更方便。建議如果用XWindow圖形界面,最少給每個Linux留2.5G空間。    3-0-1 安裝系統:    按照下面順序安裝    3-0-a.安裝Windows大家都會吧?    如多個Windows,要裝哪個分區就先把那個分區激活,然後就直接裝在C:裡,是WinNT/2K/XP的,一定要手動設置為是單個系統啟動,不要多系統菜單,也可以自己編輯根目錄下的隱藏boot.ini把多系統的其他選項行去掉。如不把前面預留給BSD的分區干掉 現在說不定很容易搞錯。我是用Ghost系統鏡像灌的,不會出錯!當然,你也用Ghost的,就不用設置活動分區這些。    3-0-b.安裝BSD時,要選擇是否安裝BootManger一定選None跳過,這裡不用!    3-0-a.安裝Linux,直接在擴展分區分區就行,全裝成邏輯分區!畢竟主分區很寶貴!或者你早用完了!    3-0-d.如果硬盤裡除了主分區、擴展分區還有空閒的空間,Linux可能會自動把"/"分區,或者"/boot"分區(假如你單獨給/boot分區的話)強行轉變成主分區。特討厭!如這樣,你要返回上面2-0-e步,手動給Linux分區(每個詳細的分區:/、/boot、swap、/usr等,只要大小和你真正的linux分區一樣就可以。做好後就可以重新開始安裝Linux了。    3-0-e.因為你是把Linux裝在邏輯分區,他可能會警告你,不管他,強行設置分區、掛載點、文件系統格式,最好都選擇格式化 。    3-0-f.繼續安裝,只是在安裝引導程序GRUB時一定要裝在MBR或者叫/dev/hda上!多系統菜單現在不用編輯,裝好後再編輯。    3-0-g.假如你只裝一個Linux,那就到此結束。    3-0-h.要裝多個Linux,那麼3f這步,需要注意,Grub只需要在其中一Linux的安裝時安裝就可以了。其余幾個,要直接選擇不安裝引導程序,安裝也完全沒有必要,還會造成麻煩。    3-0-i.所有Linux都安裝完後,根據系統提示取出光盤,自動重啟。啟動後就會看到啟動菜單。    4-0-1.Grub、Linux分區管理理論基礎    Linux管理分區很特別也很先進,但對一般Windows用戶來說很陌生,但不難。懂了後就會發現它的巨大好處. Grub因為可視作一個帶有一些操作系統基本功能的軟件,因此它的硬盤管理/識別規則不同於其他任何操作系統,但和Linux最接近,同樣也是"固定不變式的"。下面用個很簡單的對比表就可說明它們的關系:    主板IDE接口 Linux環境 Grub    IDE0 主盤------------------------------ /dev/hda--------------------------------hd0     第一主分區-------------------- /dev/hda1------------------------------hd0,0  第二主分區--------------------/dev/hda2-------------------------------hd0,1  第三主分區--------------------/dev/hda3-------------------------------hd0,2  擴展分區--------------------/dev/hda4-------------------------------hd0,3  第一邏輯分區-------/dev/hda5-------------------------------hd0,4  第二邏輯分區-------/dev/hda6-------------------------------hd0,5  第N邏輯分區--------/dev/hdaN------------------------------hd0,N-1      IDE0 從盤------------------------------ /dev/hb--------------------------------hd1     第一主分區-------------------- /dev/hdb1------------------------------hd1,0  第二主分區--------------------/dev/hdb2-------------------------------hd1,1  第三主分區--------------------/dev/hdb3-------------------------------hd1,2  擴展分區--------------------/dev/hdb4-------------------------------hd1,3  第一邏輯分區-------/dev/hdb5-------------------------------hd1,4  第二邏輯分區-------/dev/hdb6-------------------------------hd1,5  第N邏輯分區--------/dev/hdbN------------------------------hd1,N-1     IDE1 主盤------------------------------ /dev/hdc--------------------------------hd2   第一主分區-------------------- /dev/hdc1------------------------------hd2,0  第二主分區--------------------/dev/hdc2-------------------------------hd2,1  第三主分區--------------------/dev/hdc3-------------------------------hd2,2  擴展分區--------------------/dev/hdc4-------------------------------hd2,3  第一邏輯分區-------/dev/hdc5-------------------------------hd2,4  第二邏輯分區-------/dev/hdc6-------------------------------hd2,5  第N邏輯分區--------/dev/hdcN------------------------------hd2,N-1    IDE1 從盤------------------------------ /dev/hdd--------------------------------hd3   第一主分區-------------------- /dev/hdd1------------------------------hd3,0  第二主分區--------------------/dev/hdd2-------------------------------hd3,1  第三主分區--------------------/dev/hdd3-------------------------------hd3,2  擴展分區--------------------/dev/hdd4-------------------------------hd3,3  第一邏輯分區-------/dev/hdd5-------------------------------hd3,4  第二邏輯分區-------/dev/hdd6-------------------------------hd3,5  第N邏輯分區--------/dev/hddN------------------------------hd3,N-1    5-0-1.檢測分區和設置啟動菜單:    都裝好了麼?最好確保現在通過Grub只能啟動一個Linux! OK!我們開始!    5-0-a.以root身份進入Linux,在控制台下/終端下,輸入fdisk -l小寫的哦!注意空格!    我的硬盤分區信息顯示如下: (以下#後的是我寫的注釋,方便讀者理解)    [root@SGI root]# fdisk -l    Disk /dev/hda: 20.0 GB, 20020396032 bytes  255 heads, 63 sectors/track, 2434 cylinders  Units = cylinders of 16065 * 512 = 8225280 bytes  Device Boot Start End Blocks Id System  /dev/hda1 * 575 765 1534207+ b Win95 FAT32 #我的Win98    /dev/hda2 766 2434 13406242+ f Win95 Ext'd (LBA) #我的擴展分區(在dos下分的)  /dev/hda3 1 574 4610623+ a5 FreeBSD #我的FreeBSD  /dev/hda5 766 1148 3076416 b Win95 FAT32 #我的FAT32邏輯分區  /dev/hda6 1149 1161 104391 83 Linux #紅旗Linux的/boot分區  /dev/hda7 1162 1289 1028128+ 83 Linux #紅旗Linux的/分區  /dev/hda8 1290 1672 3076416 83 Linux #紅旗Linux的/usrt分區  /dev/hda9 1673 1737 522081 82 Linux swap #Linux的SWAP交換分區  /dev/hda10 1738 1747 80293+ 83 Linux #RH 9Linux的/boot分區  /dev/hda11 1748 2129 3068383+ 83 Linux #RH 9Linux的/usr分區  /dev/hda12 2130 2193 514048+ 83 Linux #RH 9Linux的/分區  /dev/hda13 2194 2244 409626 83 Linux #RH 9Linux的/tmp分區    Partition table entries are not in disk order    [root@SGI root]#      有點眼暈是不是?慢慢看就好了!擴展分區不是hda4,這個有點不好解釋,和Windows/FreeBSD的安裝有關,反正這兩個夠難侍候,這也就是為什麼要先裝他們的原因---當分區穩定後再進行多啟動設置,一次就行不用反復調整!但邏輯分區不會改變,第一個邏輯分區是hda5嘛!    Device Boot Start End     驅動器/分區 是否激活 起起始數據塊 結束數據塊     Blocks     數據塊數/容量大小(單位:kB)    Id     就是工業上統一的對各種文件系統/分區格式的標識代碼,只要你用過專業點的分區工具(如國產的DiskMan也叫DiskGeniue)就很好理解。這些早就成了業界統一的標准!    System    系統,很明顯,這是fdisk自動根據文件系統識別出的系統類型。    5-0-b.好了,我們只注意你的系統所在的Device驅動器標識。    Win98 安裝在 /dev/hda1     FreeBSD 安裝在 /dev/hda3 (我只用了一個分割,實際的只要記下/所在的hdxn代號就可以了.)    5-1-1. Linux稍稍麻煩點,分兩種情況:    5-1-a.像我一樣,專門給/boot分了一個分區,/boot和/不是一個分區。這就要分別記錄/和/boot的分區標識!    5-1-b.直接用/分區,沒有專用的/boot分區,那就只記錄/分區的標識就可以。    建議專給/boot建一分區,這樣啟動速度和安全(所有系統穩定後,可把/boot分區設為只讀!)更有保障!    5-2-1.我的例子記錄的是:    紅旗是:/ 是/dev/hda7 /boot 是/dev/hda6 RH9 / 是 /dev/hda12 /boot 是/dev/hda10    5-3-1.辛苦了半天最後一步很簡單,就是編輯個文本,大家都會吧?    用個文本編輯器打開/boot/grub/grub.conf文件,我的是紅旗的文件,RH的也一樣,編輯如下:(#後的都是注釋,上面系統原有的,最好別刪,那都是規則說明!我寫的,你看看就行,不用加進去。)     ***注意:Grub裡的分區標識和Linux下的不同,請參照 4-1-0轉換!***    # grub.conf generated by anaconda  #  # Note that you do not have to rerun grub after making changes to this file  # NOTICE: You have a /boot partition. This means that  # all kernel and initrd paths are relative to /boot/, eg.  # root (hd0,5)  # kernel /vmlinuz-version ro root=/dev/hda7  # initrd /initrd-version.img  #boot=/dev/hda   default=0 #系統默認選項 (0為第一項,1為第二項,依此類推)  timeout=10 #選單等待時間 單位:秒  splashimage=(hd0,5)/grub/splash.xpm.gz #選單背景畫面文件路徑    title Red Flag Linux (2.4.20-8)   root (hd0,5)   kernel /vmlinuz-2.4.20-8 ro root=/dev/hda7 vga=785 console=/dev/null CONSOLE=/dev/tty2 acpi=off  initrd /initrd-2.4.20-8.img    title Red Flag Linux (Safe Mode)  root (hd0,5)  kernel /vmlinuz-2.4.20-8 root=/dev/hda7 acpi=off 4  initrd /initrd-2.4.20-8.img    title Red Flag Linux (Console Mode)  root (hd0,5)  kernel /vmlinuz-2.4.20-8 root=/dev/hda7 acpi=off 3  initrd /initrd-2.4.20-8.img    title Red Hat Linux (2.4.20-8) #系統選單標識  root (hd0,9) #系統引導分區(就是/boot所在分區)  kernel /vmlinuz-2.4.20-8 ro root=/dev/hda12 #內核路徑 和/分區標識 initrd /initrd-2.4.20-8.img #內核文件系統鏡像文件路徑    title Windows 98 SE #系統選單標識  rootnoverify (hd0,0) #系統引導分區(就是Win98安裝所在分區)  makeactive #自動激活  chainloader +1 #交由此系統自行引導,不可忘記!!忘了,讓你發瘋我不管!    title FreeBSD 4.8   rootnoverify (hd0,2a) #系統/分區所在的驅動器標識,別忘了加個a ,忘了?同上!  makeactive #同上  chainloader +1 #同上    5-4-1.注意:***這裡的設置都是以擁有一個單獨的/boot分區為例,如果你沒把/boot獨立出來,那麼你需要作下面的:    5-4-a.把 "root (hd0,9)" #系統引導分區(就是/boot所在分區)修改為你的/分區標識    5-4-b.把"kernel /vmlinuz-2.4.20-8 ro root=/dev/hda12 #內核路徑 和/分區標識" 和"initrd /initrd-2.4.20-8.img #內核文件系統鏡像文件路徑"中的路徑都修改為真實的路徑如:    "kernel /boot/vmlinuz-2.4.20-8 ro root=/dev/hda12 #/分區標識按實際修改     "initrd /boot/initrd-2.4.20-8.img #內核文件系統鏡像文件路徑     5-4-2.對於#選單背景你可參照#選單背景畫面文件路徑的文件自己作,比MS的好多!    5-4-3.確認完工,保存退出,重啟就OK。    6-0-1.遇故障,恢復Grub多啟動菜單:    雖然Linux很穩定,但也不是鐵板一塊,再說人的"不穩定性"遠勝機器,大部分都是人為失誤造成故障。(比如,又胡亂裝系統,裝那種強制性修改MBR的系統:如MS的。重新大規模分區,造成Linux隨完好但是啟動不起來的情況。)    這也分兩種情況:    6-1-1.Linux系統損壞/刪除,這只有在重裝Linux時裝上Grub了。然後從4-0-1開始了!    6-2-1.Linux系統正常只是MBR損壞/被覆蓋了。這樣需要重新把Grub裝在MBR就OK了。    很簡單就三步:    6-2-a.用Linux救援/啟動軟盤(與你的內核版本一致,或參看《電腦報2001合定本 (上)64頁 <制作Linux啟動盤的四種方法>》)啟動。或者Linux安裝光盤啟動進入linux seUCe 拯救模式。     6-2-b.現用fdisk -l查看分區,然後把你的"啟動版"Linux的 /、 /boot 、/usr都mount上來,然後進入mounted的對應原/boot目錄.(如有在安裝"啟動版"Linux時創建的啟動軟盤,就可省略這一步,應該是可以 直接啟動Linux的。(但是當你把Linux裝在主分區上,而主分區又改變了,那還是用fdisk 和mount吧!).    6-2-c.確認/boot/grub的路徑,執行grub命令,請稍等,Grub在檢測完BIOS後會起動,會有一個grub> 的提示符(像個操作系統吧?)    輸入以下命令,一次輸完:    install_(hd0,5)/grub/stage1_d_(hd0)_(hd0,5)/grub/stage2_p_(hd0,5)/grub/grub.conf    全都正確的話,什麼也不會顯示,鍵入quit或exit退出!reboot就好了!    注意:下劃線實際為空格!    *這只是針對擁有 Linux下標識為/dev/hda6 即Grub格式 hd0,5 的獨立/boot分區的情況!*    6-3-1.對於沒有獨立/boot分區,只有/分區的用戶,可以用:    install_(hd0,6)/boot/grub/stage1_d_(hd0)_(hd0,6)/boot/grub/stage2_p_(hd0,6)/boot/grub/grub.conf    *這是針對只有一個Linux下標識為/dev/hda7 即Grub格式 hd0,6 的/分區情況!  *實際的參數需要fdisk -l 檢查和通過4-0-1的對照表來轉換!    6-4-0.這第二種方法同樣適用於因為MBR被重寫/損壞導致的Linux無法啟動的情況!    7-4-0.後記:    總算寫完了!看來,Linux適應能力夠強的!就像,像----病毒!我是在RH9 Gnome環境用OPenOffice寫的,還不錯,輸出的Doc文檔,WPS和MS-OfficeWord下都可以正常打開、顯示、編輯!當然沒有一次死機、藍屏、崩潰、死鎖!    外:一個竅門,因為Linux/Unix和Windows的數據結構不同,用Linux/Unix的編輯器寫的中文*.TXT文檔在Windows/Dos下不能正常顯示,英文*.TXT也是換行不正確。我經過實驗,使用Gnome自帶的 附件"文本編輯器"寫出的中文文檔,在KDE下根本無法顯示,在KDE下用Kwaiter/Kate寫的中文*.txt在Windows下可以顯示,但是換行不正常!最好的辦法是用OpenOffice寫,文件--另存為 "文件類型"選"文字,使用編碼的" 接下來的 "字符集"用GB2312 "換段落"用 CR&LF 就OK了!非常棒!






Copyright © Linux教程網 All Rights Reserved