Voici quelques ressources:
"Changer de racine" ou "chrooter" est une méthode permettant de zoomer sur une partie de votre système de fichiers, de sorte que, par exemple, fasse /path
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.)
Préparation
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 using 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 d'échange si nécessaire (par exemple, swapon /dev/sda3
).
Effectuer le 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
répertoire se trouve sur une partition différente de la vôtre /
et que vous souhaitez y manipuler des fichiers (par exemple, si vous travaillez avec GRUB, effectuez une mise à niveau du noyau, etc.), vous devrez également monter cette partition. 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 souhaitez l'utiliser dans le système en mode chroot, copiez-le /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 que vous souhaitez utiliser. chroot dans.)
À ce stade, vous exécutez toujours le noyau avec lequel vous avez démarré, mais tous les chemins /path
renvoient à ce qui était auparavant /mnt/path
.
Si vous faites quelque chose avec GRUB, vous devez vous assurer que votre /etc/mtab
fichier 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
Faites votre sale boulot
À ce stade, vous pouvez effectuer le dépannage que vous devez effectuer:
- resintaller GRUB sur le MBR de votre disque
- réinitialiser un mot de passe oublié
- effectuer une mise à niveau (ou rétrogradation) du noyau
- reconstruire votre disque initram
- réparer votre / etc / fstab
- réinstaller des paquets en utilisant votre gestionnaire de paquets
- peu importe
Nettoyer
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-le mount
sans aucun paramètre.
Finalement:
reboot
chroot.sh
à la racine de chaque système que j'utilise, dont le contenu correspond plus ou moins à ce qui précède. Quand j'ai besoin de chrooter dans ce système depuis un LiveCD ou quelque chose du genre, je monte simplement le système de fichiers racine et lance le script chroot. Pas plus google frénétique pour les bonnes commandes.SHELL=/bin/bash chroot /mnt
si le shell par défaut de livecd n'est pas dans l'environnement chrooté (par exemple, defalut zsh de systemrescuecd), il convient de le réparer, par exemple!
dans Vim./run
ces jours avecmount --bind /run /mnt/run
.