是否有人对如何将根分区移动到新驱动器并设置grub2以便在该驱动器上启动提出建议?我似乎没有运气来指示grub-mkconfig我想做什么(例如,将chroot'int插入我的新根目录只会混淆所有脚本)。
背景信息我在无头的低功耗NAS上运行Debian Squeeze。我目前的设置是/
在sda0
和/boot
上sde0
(CF卡):我需要独立/boot
,因为sd[a-d]
需要做延迟自旋向上。现在我已经找到了一个老2.5" IDE磁盘用作/
包括/boot
让我纺所有的大磁盘下来。
我尝试过的东西基本上我去了
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
然后我尝试
chroot /mnt/newroot
update-grub
但这以grub询问是否已安装root失败。然后,我全心全意地尝试在其上/mnt/newroot/grub/grub.cfg
找到内核映像sdf5
,然后进行grub-install --root-directory=/mnt/newroot /dev/sdf
。但是,当我尝试从引导时,这只是让我陷入了抢救的提示sdf
。
我的备份计划是重新安装,因此有一个额外的问题(此问题没有复选标记):我该怎么做才能使我的lvm2和mdadm配置完整?它是否全部存储在文件系统中(并且会自动发现),还是我需要自己使用它?
解决方案(由于Maciej Piechotka):正如Maciej所指出的,我需要适当的chroot才能使所有grub工具正常工作。供参考,这是我的方法:
janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
现在将复制所有文件(有关复制策略的信息,请参见此处)。修复新问题,etc/fstab
使其指向新的根目录:
janus@nasguld:/mnt/newroot$ diff -u etc/fstab.old etc/fstab
-UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 / ext3 errors=remount-ro 0 1
-UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults 0 2
+UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 / ext3 noatime,errors=remount-ro 0 1
最后,安装dev
,sys
和proc
新根的chroot:
janus@nasguld:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ sudo mount -t proc none /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on
janus@nasguld:/mnt/newroot$ sudo chroot .
现在,我们已经完全扎根到将来的根源。根据Maciej的说法,只需致电就可以了grub-install
,但是在安装引导程序之前,我update-grub
首先进行了研究/boot/grub/grub.cfg
。我不确定会自动更新吗?
root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
/etc/fstab
在中进行更新chroot
(这与update-grub
抱怨“ \未装入” 是一致的)。如果要再次执行此操作,那么我将首先尝试而不必费心在chroot中安装特殊文件系统。
/etc/default/grub
和的确切成绩单update-grub
。