歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> gnu grub faq (簡體中文版)

gnu grub faq (簡體中文版)

日期:2017/2/27 9:48:27   编辑:更多Linux
* 0. GRUB?我有問題!
* 1. GNU GRUB和Erich's的原始版本GRUB有什麼不同?
* 2. GRUB能從超過8G的硬盤引導嗎?
* 3. 我能把第二階段引導程序(Stage2)放在1024柱面以外的分區上嗎?
* 4. 如何創建帶菜單界面的GRUB啟動軟盤?
* 5. 如何指定某個分區?好象Grub對分區的命名和操作系統完全不同...
* 6. GRUB不能識別我的GNU/Hurd分區。
* 7. 我已經裝了binutils的最新版本,但GRUB還是會在引導時死掉。
* 8. 我無法在Red Hat 7.0上編譯GRUB。
* 9. 如何為Linux指定任意內存大小?
* 10. 如何從非第一個硬盤(指主硬盤)引導Windows (或DOS)。
* 11. 我的GNU/Linux (或其它類UNIX系統)有一個獨立的引導區,似乎GRUB無法正確處理這種情況。
* 12. 如何從硬盤卸載GRUB?
* 13. GRUB在讀取我的IDE大硬盤時掛起。
* 14. 為什麼Linux (FreeBSD、NetBSD、等)不采用多重引導?
0. GRUB?我有問題!

首先,請仔細閱讀GRUB發行版中的文檔。你應該能夠從這些文檔中得到幾乎所有信息。本FAQ只是給你一些額外的提示。

1. GNU GRUB和Erich's的原始版本GRUB有什麼不同?

GNU GRUB是Erich's的出色的GRUB的後繼版本。他由於別的任務而不能繼續完成GRUB,所以由現在的維護者--Gordon Matzigkeit--來接替他的維護任務,並且開放了這個項目的研發工作,以使每個人都能參與進來。

從技術角度講,GNU GRUB比最初的GRUB增加了許多新特性。例如:GNU GRUB能通過grub shell指令/sbin/grub,在類UNIX系統(如GNU/Linux)上安裝;它支持邏輯塊尋址(LBA)方式,解決了1024柱面問題;支持TAB鍵自動補全文件名(文件名不重復時);當然,我們也修復了許多bug,所以我們推薦使用GNU GRUB。

2. GRUB能從超過8G的硬盤引導嗎?

這取決於你的BIOS和操作系統。你必須確定你的硬盤能在LBA模式下正常訪問。通常情況下,這是可以通過BIOS(原文如此,應為CMOS)設置工具來配置的。更多信息請參考你的BIOS設置手冊。

此外,某些操作系統(例如DOS)無法訪問任何大硬盤,這個問題任何引導管理器都無法解決。據我所知,至少GNU/Hurd和GNU/Linux可以從這樣的大硬盤引導。

3. 我能把第二階段引導程序(Stage2)放在1024柱面以外的分區上嗎

是的,只要你的BIOS支持LBA模式就可以。雖然在早期的版本中,為了這樣做,你不得不使用一個特別定制的Stage1,但已經不再需要了,因為現在的Stage1支持所有模式。

4. 如何創建帶菜單界面的GRUB啟動軟盤?

# 按照手冊上的描述,建立一張普通的啟動盤。

# 在另一張軟盤上建立文件系統,然後把GRUB的映像和你的配置文件拷貝到這張軟盤上。

# 用普通的啟動盤(第一張盤)引導系統,然後放入建有文件系統的盤(第二張盤)。

# 和在硬盤上安裝GRUB一樣操作,在軟盤上安裝GRUB。

5. 如何指定某個分區?好象Grub對分區的命名和操作系統完全不同...

是的,GRUB的設備語法和其它系統有很大不同,但它和DOS以及Windows 98有些類似:GRUB並不區分IDE或是SCSI硬盤,所以你的硬盤用(hd%d)來表示,(%d是一個整數,從0開始計算)。同樣的,軟驅用(fd%d)來表示。

真正讓用戶困惑的是分區編號的計算。GRUB從0開始計算分區,而幾乎所有其它的操作系統都從1開始。我們將改進這一點以取得統一。

6. GRUB不能識別我的GNU/Hurd分區。

我不知道為什麼,FDISK程序的作者錯誤的把分區類型0x63分配給了GNU Hurd。一種分區類型應該指出該分區使用的格式,包括文件系統以及BSD片段等,而不應該用來指定該分區被什麼操作系統擁有。所以不論該分區的擁有者是不是Hurd,當分區使用ext2fs文件系統的時候用0x83;當分區使用ffs文件系統的時候用0xA5。我們將會使用0x63來代表GNU Hurd文件系統,但現在還沒有采用這種表示。

7. 我已經裝了binutils的最新版本,但GRUB還是會在引導時死掉。

請用以下命令檢查你的binutils版本:

$ ld -v

這個命令會顯示兩個版本號,只有後面一個是有意義的。如果它和你安裝的版本號是一樣的,就算安裝好了。

然後,敲:

$ gcc -Wl,-v 2>&1 grep "GNU ld"

如果這次和上面的結果不一樣,你應該在配置腳本裡指定安裝binutils的路徑,例如:

$ ./configure --with-binutils=/usr/local/bin

如果你按以上方法操作,GRUB還是會崩潰,可能就是GRUB有大bug了,請向<[email protected]>郵件列表報告這個錯誤。

8. 我無法在Red Hat 7.0上編譯GRUB。

你讀了這條消息嗎?我們從沒有支持過gcc的任何未發行版本。

附--原文大意:

GCC 2.96

我們注意到個別GNU/Linux發行版包含了“GCC 2.96”。GCC 2.96並非GCC的正式發行版,也不會有這樣的發行版本號,它只是我們的一個開發代碼,正式發行時將是GCC 3.0。




2.96和2.97都是我們的開發代號,不建議在正式發行的版本中使用,GCC小組不向上述版本提供支持。

9. 如何為Linux指定任意內存大小?

向你的Linux內核傳遞一個mem=參數,就象這樣:

grub> kernel /vmlinuz mem=128M

你也可以用同樣方法傳遞其它啟動參數。可用的參數請參考Linux文檔。

10. 如何從非第一個硬盤(指主硬盤)引導Windows (或DOS)。

使用map命令,交換虛擬BIOS驅動,如下:

grub> map (hd0) (hd1)

grub> map (hd1) (hd0)

11. 我的GNU/Linux (或其它類UNIX系統)有一個獨立的引導區,似乎GRUB無法正確處理這種情況。

這經常被視為一個bug,其實並不是bug,而是一種特性。

因為GRUB是一種引導管理器,它常常運行在還沒有操作系統的裸機上,它並不知道你的操作系統會掛載哪個分區。因此,如果你劃分了/boot分區,並且把GRUB映像安裝在/boot/grub路徑下,GRUB會認為映像安裝在/grub路徑下而不是/boot/grub。既然不能保證你的所有操作系統會把同一個分區掛載為/boot,那好,這種情況有以下幾種解決方法:

# 把GRUB安裝到/boot/boot/grub路徑而非/boot/grub。這樣很難看,但是很管用。
# 在安裝GRUB前先建立一個符號鏈接,例如:cd /boot && ln -s . boot。只有根分區的文件系統支持符號鏈接,並且GRUB也支持這一特性時,這個方法才有效。
# 用install命令安裝GRUB,明確指定GRUB映像的路徑。例如:

grub> root (hd0,1)

grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst

12. 如何從硬盤卸載GRUB?

對於引導管理器而言,沒有卸載這個概念,因為一旦你卸載了引導管理器,就只剩下一台不能啟動的破銅爛鐵。所以,正確的做法是用別的引導管理器覆蓋現在的,換句話說,你可以直接安裝別的引導管理器而無須卸載GRUB。

比方說,如果你想安裝Windows的引導程序,只需要在Windows下運行FDISK /MBR。如果你想安裝LILO(盡管這樣做是不可思議的),在GNU/Linux下運行/sbin/lilo就可以了。

13. GRUB在讀取我的IDE大硬盤時掛起。

如果你的硬盤大於32GB,可能你需要升級主板的BIOS來解決這個問題。這是個眾所周知的bug,多數(主板)供應商都會提供補丁。例如,對ASUS-P3BF主板,將BIOS升級到V1007beta1或更高版本可以解決。請向你的(主板)供應商索取更多信息。

14. 為什麼Linux (FreeBSD、NetBSD、等)不采用多重引導?

這個就要問它們的維護者了。如果所有的自由(操作系統)內核都支持多重引導,我們豈不是生活在烏托邦?




比方說,如果你想安裝Windows的引導程序,只需要在Windows下運行FDISK /MBR。如果你想安裝LILO(盡管這樣做是不可思議的),在GNU/Linux下運行/sbin/lilo就可以了。

13. GRUB在讀取我的IDE大硬盤時掛起。

如果你的硬盤大於32GB,可能你需要升級主板的BIOS來解決這個問題。這是個眾所周知的bug,多數(主板)供應商都會提供補丁。例如,對ASUS-P3BF主板,將BIOS升級到V1007beta1或更高版本可以解決。請向你的(主板)供應商索取更多信息。

14. 為什麼Linux (FreeBSD、NetBSD、等)不采用多重引導?

這個就要問它們的維護者了。如果所有的自由(操作系統)內核都支持多重引導,我們豈不是生活在烏托邦?



Copyright © Linux教程網 All Rights Reserved