問題描述及相關解釋
Fedora 16 默認使用Grub2,在安裝過程中提示無法寫入到MBR。然後啟動系統後試圖用命令grub2-install命令安裝時提示以下錯誤:
grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding won't be possible!
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.However, blocklists are UNRELIABLE and its use is discouraged. grub-setup: error: If you really want blocklists, use --force.
網上搜索時發現其它系統也有存在該問題的:
https://bbs.archlinux.org/viewtopic.php?pid=574510#p574510
論壇上有人對該問題的說明如下:
https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760
之後在Arch的維基頁面上找到對Grub的如下說明:
MBR 即 msdos 分區專用指令
通常情況下,在許多 MBR(或 msdos 磁盤標簽)分區的系統中,只要 DOS 兼容扇區對齊問題能夠滿足,MBR 後面就有 32KiB 空白(MBR 512字節區域之後,第一個分區之前)。然而,要放置 grub2 的 core.img, 推薦使用 1MiB 或 2 MiB。建議使用支持 1MiB 分區對齊的分區工具獲取所需空間,同時滿足其他非 512 字節簇的問題(與嵌入 core.img 無關)。
解決方法
磁盤第一個主分區上安裝了XP系統,正好現在也不用,就直接把第一個分區刪除了,然後又用Gparted新建一個分區(默認會保留2MB的空間,不過自己可以選擇是在新建分區之前或之後),這時用grub2-install /dev/sda命令可以正常安裝grub2。只是用Gparted無法格式化為NTFS格式(有該選項,但是應用時出錯,即使用LiveCD啟動也無法進行),只好又用U盤啟動PE,用WinPM格式化(打開WinPM時只顯示一個未格式化的分區,沒有顯示留出的2MB空白)。
盡管沒有試,但根據以上資料的解釋,如果不刪除分區,而直接進入PE,用分區調整工具從C盤中分出幾MB的空間應該也可以的。只是當時手邊沒有現成的PE鏡像,下載又太慢,只好采取這種極端的方式了。
問題的出現
在使用Fedora前,曾用過Ubuntu,10.04版的,也是默認采用Grub2,都沒有問題,但這次即使用ubuntu的LiveCD,安裝時也提示同樣的錯誤。看到Arch的維基頁面上的解釋之後才想起來,之前在Win下調整過分區,好像在C盤前看到一個2MB的空閒分區,當時想都沒有想就合並到C盤裡了,而且還想當然地認為是Gparted分區時計算不准確的問題,這真是因小失大了。