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…