首先,請仔細閱讀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小組不向上述版本提供支持。
你也可以用同樣方法傳遞其它啟動參數。可用的參數請參考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也支持
你也可以用同樣方法傳遞其它啟動參數。可用的參數請參考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也支持