我有一台运行 Debian 6 的机器。由于最近的一些变化,我尝试升级到 Grub2(是的,默认情况下安装了 grub legacy)。一切都很顺利(链式加载、重新启动),直到我开始“从 grub legacy 升级”。该机器有 2 个硬盘,其中包含两个软件 raid1 - /dev/md0,一个小硬盘包含 /boot 和 /dev/md1,使用剩余容量。
Parted 显示:
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 512MB 512MB primary ext2 raid
2 513MB 2560MB 2047MB primary linux-swap(v1)
3 2560MB 954GB 951GB primary ext3 raid
对于第二个磁盘:
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 512MB 512MB primary ext2 raid
2 513MB 2560MB 2047MB primary linux-swap(v1)
3 2560MB 954GB 951GB primary ext3 raid
“upgrade-from-grub-legacy”的对话框显示:
[ ] /dev/sda (1000204 MB; Hitachi_HDS721010CLA332)
[ ] /dev/sdb (1000204 MB; Hitachi_HDS721010CLA332)
[ ] /dev/md0 (511 MB; ???)
[ ] /dev/md1 (951308 MB; ???)
但无论我选择哪一个,它都无法说:
/usr/sbin/grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding won't be possible!.
/usr/sbin/grub-setup: error: embedding is not possible, but this is required when the root device is on a RAID array or LVM volume.
据我从各种帖子猜测,某处应该有一个 boot_grub 标志。
我可以在当前配置中使用 Grub2 吗?如果可以,如何使用以及在当前阶段重新启动是否安全?
答案1
好的,我明白了。
问题是 grub2 需要空间来保存 stage2 加载器 - 但在我的配置中,没有空间。
解决方案是使用 resize2fs、parted 和 mdadm 从 RAID 中一次取出一个磁盘,缩小两个磁盘上的分区 1。
我缩小了分区 1 前面的 16MB,重试了“upgrade-from-grub-legacy”,安装到 /dev/sda 和 /dev/sdb,因为机器可以从其中任何一个启动。一切顺利,重新启动 - 就完成了。
所以,总结一下:是的,我可以使用 Grub2,但我必须重新排列分区以便为 stage2 腾出空间。是的,只要“upgrade-from-grub-legacy”尚未完成,重新启动就是安全的,因为带有 grub1 的 chainloader 仍在原位并正常工作。