一、開篇敘述我第一次安裝Linux和接下來的經歷(遭遇)
開篇:按照北南兄弟的《FC4菜鳥圖文版安裝教程》我順利地以本地SATA硬盤方式安裝了FC4. 當時按照建議我把FC4的Linux版本GRUB程序裝在了MBR(Main Boot Record主引導記錄)裡面。
先簡單介紹一下我的遭遇:
我的機器沒有安裝軟驅,SATA(也就是俗稱串口)接口的硬盤1塊,當時配機子的時候考慮到兩塊硬盤在價格方面比一塊相當容量的硬盤要貴出一些,並且我當時也沒有太長遠的打算到底多大空間分給Windows多少分給Linux,所以我選擇了一些Linux入門書上介紹的比較便宜的配置,就是一塊硬盤安裝以上的兩種操作系統。像一般的那樣我首先安裝了windowsXP(因為windows目前好象沒有義務識別linux,後裝windows可能帶來很多麻煩),由於我買的redhat linux9安裝光盤作為引導的內核(不知能不能這樣形容)不能識別SATA接口硬盤,當時的提示是:
An error has occurred - no valid devices were found on which to create new file systems.Please check your hardware for the cause of this problem.No hard drives have been found.You probably need to manually choosedevice drivers for the installation to sUCceed.Would you like to select drivers now?(如果你也覺得眼熟,那麼我們遇到過類似的情況,如果看不懂,麻煩您查字典也好Google也好自行解決)
解決的辦法之一就是我從網上下載了一個FC4的安裝鏡像(安裝盤應該有4張)如果你進的是“FTP://...Fedora/1(或2,3)/...”的話那麼懇請您點“向上”按扭然後找形如Fedora/../4/..這個路徑下面的文件,那幾個路徑下應該是FC 1,2,3的鏡像。之後我按照“菜鳥教程”裡說的那樣用wingrub引導安裝,之後把linux GRUB裝載到MBR裡面,然後啟動的時候當然是linuxGRUB來調度工作了,之後我學著重編內核(加載了網卡驅動程序)然後下載安裝了OpenQ插件,再後來安裝完顯卡驅動程序配置好後重啟,問題出現了...怪我太貪心,分辨率的設置有點偏高了...之後的情況就是Linux可以照常運行,而顯示器不做任何反應,從開始用戶初始化配置開始顯示器就顯示沒有輸入信號.....對我來說這是噩夢的開始,我當時沒有任何解決這類問題的辦法(也沒有刻一張rescue盤),然後就直接格式化開始重新安裝一切了.....(End of 遭遇介紹)
後面我發現發言權掌握在LinuxGRUB手裡對我來說比較麻煩,所以想找到一個讓win GRUB支配啟動的辦法,再次安裝FC4進行分區配置和引導程序選擇加載時,我不再選擇把GRUB放在MBR裡,而是專門分了一個/boot區出來把MBR放進去,寄希望於引導程序自動握手然後開始工作(很天真不是嗎?)當時我還選擇了Force LBA32選項,然後繼續,安裝所有的包,提示安裝成功,提示重啟。然後果然Linux沒有被辨認出。這時怎麼辦??
二、想讓WinGrub來支配引導的分析和做法
這時再重裝一遍然後加載GRUB嗎?且慢,當時提示我已經安裝成功了也,我也實在不想再來一遍了..這時要回溯到北南兄弟提供的另一篇文章了:《編譯內核操作流程》引用其中這一段:
1、復制bzImage等相關文件,並創建initrd文件;
[root@localhost linux-2.6.12.3]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12.3
[root@localhost linux-2.6.12.3]# cp System.map /boot/System.map-2.6.12.3
[root@localhost linux-2.6.12.3]# cd /boot
[root@localhost linux-2.6.12.3]# /sbin/mkinitrd initrd-2.6.12.3.img 2.6.12.3
我們把 編譯出來的bzImage,拷入到/boot目錄,拷貝成 vmlinuz-2.6.12.3;
並且用 mkinitrd 來創建imitrd-xxx.img 文件,其中xxx為內核的版本號,是通過 查看 /lib/modules來版本來對應的,我們是編譯出
來的是 2.6.12.3,所以就運行上面的命令創建,創建的出來的是initrd-2.6.12.3.img ;不創建這個文件,有時是啟動不起來的,比如提示VFS錯誤等;
看到了嗎?我第一次編譯內核的時候也就是照著這個路子來的,最重要的是vmlinuz-a.b.c和initrd-a.b.c還有System.map都在/boot路徑下面。在這裡做一下內核的簡要介紹:linux內核用vmlinuz-a.b.c之類的名稱存放在/boot目錄中,所有的內核版本號采用major.minor.patch編號格式。還有一個重要的基本概念:linux的所有所謂分區啦,文件夾一類的東西都用分區來表示,其實並不難理解,我覺得就好象是第一人稱視角游戲和第三人稱視角游戲有些相似的地方:Windows是分得很明顯地這個是整個系統的哪部分,linux的說法則是我的哪部分下面有什麼什麼部分組成。同時就有了mount(掛載)的介入了.即使是/boot這樣看起來就很嚇人的名號,在linux裡的表示方法也不過就是根分區(/)下的一部分罷了。
2、wingrub的 menu.lst的寫法;
其實在Windows下編輯menu.lst(引導菜單)時已經很明顯了,我能夠加上
title Fedora Core4 Installation
root (hd0,6)
kernel (hd0,6)/linux/vmlinuz
initrd (hd0,6)/linux/initrd.img (我的設置是這樣的Fat32格式引導安裝的分區)
這樣一段,難道就不可以在menu.list文件裡添加諸如:
title Fedora Core (2.6.11-1.1369_FC4)
root (hd0,7)
kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.11-1.1369_FC4.img
加注:因為我單獨分了root分區所以寫成這樣,如果沒有單獨的root分區的話應該是下面這樣
title Fedora Core (2.6.11-1.1369_FC4)_te1
root (hd0,7)
kernel /root/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
initrd /root/initrd-2.6.11-1.1369_FC4.img
這樣一段來引導linux系統嗎?當然,沒有人給我說不可以。結果是這辦法可行 =) 因為我就是這麼做的。之後重編譯內核後要加載內核什麼的辦法類似,我就不再多說什麼了。
注意:建議搞明白以後再下手,windows下設備的標號(hd0,7)與linux的/dev/sda6有可能指的是一個設備,這就像英語中first floor的意思:[英]二樓;[美]底樓,一樓. 道理類似。請一定耐心。
三、關於WinGRUB的總結敘述
總結,這裡可以看到,我只用到了WinGRUB來引導雙操作系統,其實linux的/boot分區上裝載的GRUB沒有被用到,要加載內核的話只需在windows下面對WinGrub的menu.lst設置做點修改就可以了,linux 出了問題可以毫不猶豫地予以重裝(當然這是最壞的辦法),windows出了問題也大概不必擔心(我還沒有實驗)對我這樣的新手來說,我個人認為這不失為一種好辦法。這一定程度上帶來一些方便,僅僅是對我來說.
四、關於本文;
首先說明我也是新手,如果出現嚴重的錯誤敬請前輩們指教,還請高手費心給予指點,詞不達意之處敬請見諒,強烈歡迎表達能力夠強的前輩幫忙加以修改.錯誤之處請一定指出,在此謝過。