Changer sa partition racine de disque
Dans ma petite folie de nettoyage de printemps annuel, j'ai décidé de changer ma partition racine de disque. Je voulais donc migrer un système (Debian Sid) d'un disque dur vers un autre disque dur, si possible depuis ce système directement (c'est-à-dire typiquement en m'évitant de booter avec un live CD).
Attention, soyez certains de comprendre ce que vous faites en lisant la suite de cet article. En particulier, une copie d'un système « à chaud » n'est pas forcément la chose la plus intelligente à laquelle j'ai pu penser ces dernières années… mais ça a très bien marché.
Admettons — arbitrairement mais pas tout à fait par hasard — que mes partitions s'appellent /dev/hda1
(origine) et /dev/sda1
(cible).
Recopie du système et « chroot »
- Monter le nouveau disque et y copier les données :
mkdir /media/newroot mount /dev/sda1 /media/newroot cp -xa / /media/newroot
- Se connecter sur le nouveau système et adapter son
/etc/fstab
!!!.
chroot /media/newroot vim /etc/fstab
Installation de Grub
À partir de là, tout semble bien sauf que update-grub
ou grub-install
m'insulte en me disant que la partition root
n'est pas montée. Un peu étonnant car j'y suis connecté, mais pas si fou si on considère que le répertoire /dev
est vide…
Solution ? Greffer /dev
et autres joyeusetés sur ceux du système existant :
mount -o bind /dev/ /path/to/chroot/dev mount -t proc none /path/to/chroot/proc mount -t sysfs none /path/to/chroot/sys
Et là, miracle, Grub accepte de s'installer.
Ensuite
Ensuite… Ensuite… Ben on redémarre (proprement, après avoir démonté — virtuellement — les disques…) puis on croise les doigts. Moi ça s'est bien passé Au pire, j'avais toujours le système d'origine sous la main…