因為要學習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了!非常棒!