Fedora Grub2 安装出错及解决办法
问题描述及相关解释
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 磁盘标签)分区的系统中,只要 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分区时计算不准确的问题,这真是因小失大了。