使用MD RAID将grub升级到grub2

我有一台运行Debian 6的机器。由于最近发生了一些变化,我尝试升级到Grub2(是的,默认安装了grub legacy)。 一切顺利(chainload,重新启动),直到我开始“从grub-legacy升级”。 该机器有2个硬盘,其中包含两个软件raid1 – / dev / md0,一个小硬盘包含/ boot和/ dev / md1剩余容量。

分手给我看:

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 

“从grub-legacy升级”对话框显示:

 [ ] /dev/sda (1000204 MB; Hitachi_HDS721010CLA332) [ ] /dev/sdb (1000204 MB; Hitachi_HDS721010CLA332) [ ] /dev/md0 (511 MB; ???) [ ] /dev/md1 (951308 MB; ???) 

但无论我select哪一个,它都不会说:

 /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标志的地方。

我可以在当前的configuration中使用Grub2吗?如果是的话,在当前阶段如何安全地重启?

好吧,我明白了。

问题是grub2需要空间来保存stage2加载器,而在我的configuration中,却没有。

解决scheme是使用resize2fs,parted和mdadm,通过从RAID中一次取出一个磁盘,在两个磁盘上缩小分区1。

我缩小了分区1的前端16MB,重试了“从grub-legacy升级”,安装到/ dev / sda和/ dev / sdb,因为机器可以从任何一个引导。 一切顺利,重新启动 – 它完成了。

所以,总结:是的,我可以使用Grub2,但是我不得不重新安排分区,为stage2腾出空间。 是的,只要“从grub-legacy升级”还没有完成就可以安全地重新启动,因为grub1的链式加载程序还在工作中。