Cette question concerne des questions fréquemment posées. La procédure est fréquemment mentionnée ou liée à un site externe, mais elle n’est pas souvent énoncée clairement et correctement. Dans le but de concentrer des informations utiles en un seul endroit, cette question vise à fournir une référence claire et correcte pour cette procédure.
Quelles sont les étapes appropriées pour préparer un environnement chroot pour une procédure de récupération?
Dans plusieurssituations , il est préférable de réparer une installation Linux endommagée de l'intérieur. l'installation. Mais si le système ne démarre pas, comment le réparer de l'intérieur?
Supposons que vous parveniez à démarrer sur un autre système. Une fois là-bas, vous devez accéder à votre installation endommagée afin de la réparer. Beaucoup récupérationHow-Tos recommande d'utiliser chroot afin d'exécuter des programmes comme si vous étiez réellement démarré dans l'installation endommagée.
Comme il s'agit d'un wiki de communauté, n'hésitez pas à éditer cette question pour l'améliorer également.
Voici quelques ressources:
"Changer de racine" ou "chrooter" est une méthode permettant de zoomer sur une partie de votre système de fichiers. Ainsi, 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 /
, pas à l'utilisateur root. (Cependant, vous aurez généralement besoin des privilèges d’utilisateur root pour pouvoir chrooter.)
Toutes les étapes de ce guide devront être effectuées en tant qu'utilisateur root.
Nous supposons que votre disque dur est à/dev/sda1 et que son type de fichier est ext3. Si vous ne connaissez ni l'emplacement ni le type de fichier de votre disque, lisez le résultat de fdisk -l
.
Assurez-vous que les architectures du système que vous avez démarré (par exemple, un LiveCD 32 bits) et du système que vous souhaitez entrer (par exemple, une installation 32 bits sur votre disque dur) correspondent. Vous pouvez déterminer l'architecture que vous avez démarrée avec 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 des packages mis à jour).
Initialisez votre partition de swap si nécessaire (par exemple, swapon /dev/sda3
).
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 répertoire /boot
se trouve sur une partition différente de votre /
et que vous souhaitez manipuler des fichiers dessus (par exemple, si vous travaillez avec GRUB, effectuez une mise à niveau du noyau, etc.), vous devrez également monter ce fichier. cloison. Si c'est à/dev/sda2 et que son type de fichier 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 résident sur des partitions distinctes mais auxquelles vous devez accéder. Généralement, lorsque vous chrootez pour réparer quelque chose que vous n'avez pas besoin d'accéder à/home, vous n'avez donc pas besoin de vous en préoccuper.
(Il est également possible de monter des systèmes de fichiers après avoir chrooté, mais il est plus judicieux de le faire auparavant. La raison en est que si vous le faites après, l'environnement extérieur/noyau ne saura rien sur les systèmes de fichiers montés. les démonter avant de quitter le chroot, le système ne saura pas non plus les démonter à la fermeture, ce qui pourrait endommager ces systèmes de fichiers.)
Si vous avez configuré votre réseau et que vous souhaitez l'utiliser dans le système chrooté, copiez-le sur /etc/resolv.conf
afin de pouvoir résoudre les noms de domaine:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Vous êtes maintenant prêt à passer au 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 chrooter vers une autre (par exemple, x86_64). La solution consiste à utiliser un LiveCD possédant la même architecture que le système souhaité. chroot dans.)
À ce stade, vous exécutez toujours le noyau avec lequel vous avez démarré, mais tous les chemins /path
feront référence à ce qui était auparavant /mnt/path
.
Si vous faites quelque chose avec GRUB, vous devez être sûr que votre fichier /etc/mtab
est à jour:
grep -v rootfs /proc/mounts > /etc/mtab
Il pourrait également être utile à ce stade:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your Prompt
À ce stade, vous pouvez effectuer le dépannage que vous devez effectuer:
Lorsque vous avez terminé, assurez-vous que tous les programmes en cours sont arrêtés. Puis 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é, cela peut signifier l'une des deux choses suivantes:
Un programme a été laissé en cours d'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 vous essayez de démonter/mnt.
Dans ce dernier cas, démontez simplement le point de montage incriminé en premier. Pour obtenir un rappel de tous les points de montage actuels, exécutez mount
sans paramètres.
Finalement:
reboot