Linux 系統硬件管理的基礎知識(三)
以下主要介紹我的第一次安裝Linux系統遭遇,以及怎么度過這個遭遇的,希望對大家有所幫助。不喜歡的可以略過。以下接《Linux 系統硬件管理的基礎知識(二)》。
一、開篇敘述我第一次安裝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
加注:因為我單獨分了boot分區所以寫成這樣,如果沒有單獨的boot分區的話應該是下面這樣
title Fedora Core (2.6.11-1.1369_FC4)_te1
root (hd0,7)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.11-1.1369_FC4.img
這樣一段來引導linux系統嗎?當然,沒有人給我說不可以。結果是這辦法可行 =) 因為我就是這么做的。之后重編譯內核后要加載內核什么的辦法類似,我就不再多說什么了。
以下主要講述在Linux系統中存儲設備的兩種表示方法,沒事發出來,希望對一些不懂得有所幫助。懂的話就可以略過了。
請點下面《Linux 系統硬件管理的基礎知識(四)》
【編輯推薦】