Quelqu'un at-il une suggestion sur la façon de déplacer la partition racine vers un nouveau lecteur et de configurer grub2 pour démarrer sur ce lecteur? Il me semble que je n'ai aucune chance de demander à grub-mkconfig ce que je veux faire (par exemple, chroot'int dans ma nouvelle racine confond simplement tous les scripts).
Contexte J'utilise Debian Squeeze sur un NAS sans tête et de faible puissance. Ma configuration actuelle est /
sur sda0
et /boot
sur sde0
(une carte CF): Je avais besoin séparé /boot
parce que le sd[a-d]
besoin de faire un spin-up retardée. Maintenant, j'ai trouvé un vieux disque IDE 2.5 "à utiliser comme /
y compris /boot
pour me permettre de tourner tous les gros disques vers le bas.
Ce que j'ai essayé Fondamentalement, je suis allé
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
J'ai essayé
chroot /mnt/newroot
update-grub
Mais cela a échoué avec grub demandant si root était monté. Ensuite, j'ai fait une tentative sans enthousiasme de mettre en place /mnt/newroot/grub/grub.cfg
pour trouver l'image du noyau sur sdf5
, suivi d'un grub-install --root-directory=/mnt/newroot /dev/sdf
. Mais cela m'a juste envoyé une invite de sauvetage grub lorsque j'ai essayé de démarrer sdf
.
Mon plan de sauvegarde consiste simplement à réinstaller, donc une question bonus (pas de coche pour celui-ci): Que dois-je faire pour faire passer ma configuration lvm2 et mdadm? Est-ce que tout est stocké dans les systèmes de fichiers (et sera-t-il découvert automatiquement), ou dois-je en prendre moi-même?
Solution (merci à Maciej Piechotka): Comme le souligne Maciej, j'ai besoin d'un chroot approprié pour que tous les outils grub fonctionnent. Pour référence, voici comment je l'ai fait:
janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Tous les fichiers sont maintenant copiés (voir ici pour une discussion sur les stratégies de copie). Fixez le nouveau etc/fstab
pour pointer vers la nouvelle racine:
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
Enfin, montez dev
, sys
et proc
vers la nouvelle racine et le nouveau 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 .
Nous sommes maintenant chrootés vers la future racine exactement comme elle apparaîtra. Selon Maciej, il devrait être correct d'appeler grub-install
, mais j'ai fait une update-grub
première pour jeter un œil au fichier généré /boot/grub/grub.cfg
avant d'installer le chargeur de démarrage. Je ne suis pas sûr qu'il sera automatiquement mis à jour?
root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
/etc/fstab
à jour le chroot
(ce serait cohérent avec le fait de se update-grub
plaindre que "\ n'est pas monté"). Si je devais recommencer, j'essaierais d'abord sans prendre la peine de monter les systèmes de fichiers spéciaux dans le chroot.
/etc/default/grub
et la transcription exacte deupdate-grub
.