当我试图修复我的(生锈的)旧路由器时,它的系统磁盘(CF 卡)出现故障(可能是因为我忽略了针对这种类型的介质正确调整 Ubuntu),我想利用这个机会使用 BTRFS 为整个 CF 卡安装 12.04 服务器。BTRFS 据说可以更好地针对闪存盘进行调整,所以我认为这是个好主意。所以我用一张新的 CF 卡替换了有缺陷的 CF 卡,并从 12.04 服务器 CD 启动。
虽然安装过程非常缓慢(超过 3 小时),但我已经了解到这是在闪存盘上使用 BTRFS 时的一个已知问题,所以我并不那么担心。
然而,当安装过程最后在即将安装 GRUB 时,我收到以下错误:
Unable to install GRUB in /dev/sda
Executing 'grub-install /dev/sda' failed.
This is a fatal error.
这是我切换回 TTY4 时看到的内容:
grub-installer: info: Installing grub on '/dev/sda'
grub-installer: info: grub-install supports --no-floppy
grub-installer: info: Running chroot /target grub-install --no-floppy --force "/dev/sda"
grub-installer: /usr/sbin/grub-setup: warn:
grub-installer:
grub-installer: Your core.img is unusually large. It won't fit in the embedding area.
grub-installer: .
grub-installer: /usr/sbin/grub-setup: warn:
grub-installer:
grub-installer: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However blocklists are UNRELIABLE and their use is discouraged.
grub-installer: .
grub-installer: /usr/sbin/grub-setup: error:
grub-installer:
grub-installer: cannot read '/@/boot/grub/core.img' correctly
grub-installer: .
grub-installer: error: Running 'grub-install --no-floppy --force "/dev/sda"' failed.
然后我尝试将 GRUB 安装到 /dev/sda1,没有出现任何错误。但是,当我现在启动系统时,出现了臭名昭著的“GRUB 错误 17”。
所以我的问题是 - 我该如何解决这个问题?这是我需要报告的安装程序中的错误吗?你可以想象,我不想再花 3 个小时重新完成整个安装...
编辑:我快速查看了 core.img 的大小,它是 38284 字节。如果我理解正确的话,GRUB 想要将其放在磁盘上的第一个位置,在第一个分区之前应该有一小块空间可用。在我的情况下,如果我正确解释了“fdisk -l /dev/sda”的数据,这个空间只有 63 x 512 = 32256 字节大小……难怪 GRUB 抱怨 core.img 不适合!
但是 core.img 怎么会这么大呢?是因为 BTRFS 吗?例如,我的笔记本电脑的 core.img 只有 26052 字节(而且它没有使用 BTRFS)。除了重新格式化为 BTRFS 以外的其他格式外,我该如何让它适合?
编辑 2:我鼓起勇气,使用 gparted 将 sda1 稍微“向右”移动,以扩大第一个分区之前的空间。之后,我在 resque + 专家模式下启动了 12.04 服务器 CD,并尝试再次安装 GRUB。这次我得到了一个不同的错误:
grub-installer: /usr/sbin/grub-probe: error:
grub-installer:
grub-installer: cannot find a device for /boot/grub (is /dev mounted?)
grub-installer: .
grub-installer: error: Running 'grub-install --no-floppy --force "/dev/sda"' failed.
怎么办?
答案1
grub+btrfs 模块对于 MBR 中的可用空间来说太大,请参见错误 #1059827 - “非平凡的 grub2 安装不再适合小的嵌入区域”。