Voici quelques ressources :
Le "changement de racine" ou "chrooting" est une méthode permettant de zoomer sur une partie de votre système de fichiers, de sorte que, par exemple, /path
fera référence à ce qui était auparavant accessible à /mnt/path
. La "racine" dans l'expression "chroot" fait référence au système de fichiers racine. /
et non à l'utilisateur root. (Bien que typiquement vous aurez besoin des privilèges de l'utilisateur root afin de chrooter).
Préparation
-
Toutes les étapes de ce guide devront être effectuées en tant qu'utilisateur root.
-
Supposons que votre disque dur se trouve sur /dev/sda1 et que son type de fichier est ext3. Si vous ne connaissez pas la localisation et le type de fichier de votre disque, lisez la sortie de fdisk -l
.
-
Assurez-vous que les architectures du système sur lequel vous avez démarré (par exemple, c'est un LiveCD 32bit) et du système dans lequel vous souhaitez entrer (par exemple, c'est une installation sur votre disque dur). Vous pouvez déterminer l'architecture avec laquelle vous avez démarré en utilisant uname -m
.
-
Assurez-vous que tous les modules du noyau dont vous avez besoin ont été chargés.
-
Configurez votre réseau si vous en avez besoin (par exemple, pour installer les paquets mis à jour).
-
Initialiser votre partition swap si nécessaire (par exemple, swapon /dev/sda3
).
Exécution du chroot
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
Si votre /boot
se trouve sur une partition différente de celle de votre /
et que vous voulez manipuler des fichiers dessus (par exemple, si vous travaillez avec Grub, effectuez une mise à jour du noyau, etc.), vous devrez également monter cette partition. Si elle se trouve sur /dev/sda2 et que son filetype est ext2, alors faites :
mount -t ext2 /dev/sda2 /mnt/boot
De même pour toutes les autres parties de votre système de fichiers ( /var
, /usr
) qui se trouvent sur des partitions séparées mais auxquelles vous devez accéder. En général, lorsque vous faites un chrootage pour réparer quelque chose, vous n'avez pas besoin d'accéder à /home, donc vous n'avez pas besoin de vous en préoccuper.
(Il est également possible de monter des systèmes de fichiers après avoir effectué un chrootage, mais il est plus judicieux de le faire avant. La raison en est que si vous le faites après, l'environnement extérieur/kernel ne connaîtra pas les systèmes de fichiers montés, donc si vous oubliez de les monter avant de quitter le chroot, le système ne saura pas non plus les monter lorsqu'il s'éteindra. Cela pourrait endommager ces systèmes de fichiers).
Si vous avez configuré votre réseau et que vous voulez l'utiliser dans le système chrooté, copiez sur /etc/resolv.conf
afin que vous puissiez résoudre les noms de domaine :
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Maintenant vous êtes prêt à vous déplacer dans le système de fichiers monté :
chroot /mnt /bin/bash
(Si cela renvoie une erreur chroot: cannot run command '/bin/bash': Exec format error
Cela indique généralement que vous avez démarré avec une architecture (par exemple x86_32) et que vous essayez de vous connecter à une autre (par exemple x86_64). La solution est d'utiliser un LiveCD qui a la même architecture que le système dans lequel vous voulez chrooter).
À ce stade, vous utilisez toujours le noyau avec lequel vous avez démarré, mais tous les chemins /path
fera référence à ce qui était /mnt/path
.
Si vous devez faire quoi que ce soit avec Grub, vous devez vous assurer que votre /etc/mtab
est à jour :
grep -v rootfs /proc/mounts > /etc/mtab
Il pourrait également être utile à ce stade de faire :
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Faites votre sale boulot
À ce stade, vous pouvez effectuer tous les dépannages dont vous avez besoin :
- resintall Grub au MBR de votre disque
- réinitialiser un mot de passe oublié
- effectuer une mise à niveau du noyau (ou une mise à niveau inférieure)
- reconstruire votre initramdisk
- corrigez votre /etc/fstab
- réinstaller les paquets en utilisant votre gestionnaire de paquets
- quoi que ce soit
Le nettoyage
Lorsque vous avez terminé, assurez-vous que tous les programmes en cours se sont arrêtés. Ensuite, quittez le chroot :
exit
Maintenant, démontez toutes les partitions que vous avez montées :
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Enfin, essayez de démonter votre disque dur :
umount /mnt
Si vous obtenez une erreur indiquant que /mnt (ou toute autre partition) est occupée, cela peut signifier deux choses :
-
Un programme a été laissé en exécution à l'intérieur du chroot.
-
Ou plus fréquemment : un point de montage existe toujours sur ce montage. Par exemple, /mnt/usr est toujours monté lorsque l'on essaie de démonter /mnt.
Dans ce dernier cas, il suffit de démonter d'abord le point de montage incriminé. Pour obtenir un rappel de tous les points de montage actuels, exécutez mount
sans paramètres.
Enfin :
reboot