24juin2011
Changer sa partition racine de disque

Astuce bien pratique s'il en est !
Voici un article dont j'ai pensé qu'il pourrait être utile à quelques uns.
merci à Djibux de http://www.think-underground.com
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 le /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 déjà 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.
Poursuivons :
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…
