Quelqu'un a-t-il une suggestion sur la façon de déplacer la partition racine vers un nouveau lecteur et de configurer grub2 pour qu'il démarre sur ce lecteur ? Je semble n'avoir aucune chance d'indiquer à grub-mkconfig ce que je veux faire (par exemple, chroot'int dans ma nouvelle racine confond tous les scripts).
Contexte J'utilise Debian Squeeze sur un NAS basse consommation sans tête. Ma configuration actuelle est /
sur sda0
et /boot
sur sde0
(une carte CF) :j'avais besoin du /boot
séparé parce que sd[a-d]
besoin de faire un spin-up retardé. Maintenant, j'ai trouvé un ancien disque IDE 2.5″ à utiliser comme /
y compris /boot
pour me permettre de faire tourner tous les gros disques.
Ce que j'ai essayé En gros j'y suis allé
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Puis j'ai essayé
chroot /mnt/newroot
update-grub
Mais cela a échoué avec grub demandant si root était monté.
Ensuite, j'ai tenté sans enthousiasme de configurer /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 vient de m'envoyer une invite de secours grub lorsque j'ai essayé de démarrer à partir de sdf
.
Mon plan de sauvegarde consiste simplement à réinstaller, donc une question bonus (pas de coche pour celle-ci) :que dois-je faire pour obtenir ma configuration lvm2 et mdadm ? Est-ce que tout est stocké dans les systèmes de fichiers (et sera-t-il automatiquement découvert), ou dois-je m'en occuper 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 j'ai procédé :
[email protected]:/mnt/newroot$ sudo cp -ax / /mnt/newroot
[email protected]:/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). Corrigez le nouveau etc/fstab
pour pointer vers la nouvelle racine :
[email protected]:/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
à la nouvelle racine et chroot :
[email protected]:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
[email protected]:/mnt/newroot$ sudo mount -t proc none /mnt/newroot/proc
[email protected]:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
[email protected]:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on
[email protected]:/mnt/newroot$ sudo chroot .
Nous sommes maintenant chrootés à la future racine exactement comme elle apparaîtra. Selon Maciej, il devrait suffire d'appeler grub-install
, mais j'ai fait un update-grub
d'abord jeter un œil au /boot/grub/grub.cfg
généré avant d'installer le bootloader. Je ne suis pas sûr qu'il sera automatiquement mis à jour ?
[email protected]:/# update-grub
[email protected]:/# grub-install /dev/sdb
Réponse acceptée :
Montez les systèmes de fichiers de base et copiez/modifiez les fichiers tout en chrootant comme :
- /dev (
mount -o bind /dev/ /path/to/chroot/dev
) - /proc (
mount -t proc none /path/to/chroot/proc
) - /sys (
mount -t sysfs none /path/to/chroot/sys
)
IIRC qui a fonctionné pour moi lors de l'installation de Grub 2 dans arch et de nombreuses fois sur Gentoo. Puis après chroot vers /path/to/chroot
la commande était simplement :
grub-install /dev/<boot_disk>
Depuis lvm2 (et je crois que madm mais je ne l'ai pas utilisé), la configuration est stockée sur le disque. Il y a une configuration qui doit être lue pour découvrir les appareils. En supposant que vos appareils se trouvent dans des emplacements standard (/dev/sd*
ou /dev/hd*
) il ne devrait pas y avoir de problème.
PS. Je ne ferais pas confiance au simple cp du système live car il y a plusieurs endroits où cela peut mal tourner :
- J'ai oublié de modifier
/etc/fstab
et d'autres fichiers utiles - Fichiers modifiés lors de l'accès
- Copier les ordures (
/tmp
etc.)