Aquí hay algunos recursos:
"Cambiar la raíz" o "chrooting" es un método para hacer zoom en una parte de su sistema de archivos, por lo que, por ejemplo, /path
se referirá a lo que antes era accesible /mnt/path
. La "raíz" en la expresión "chroot" se refiere al sistema de archivos raíz /
, no al usuario raíz. (Aunque, por lo general, necesitará privilegios de usuario root para poder hacer chroot).
Preparación
Todos los pasos de esta guía deberán realizarse como usuario root.
Suponemos que su disco duro está en / dev / sda1 y su tipo de archivo es ext3. Si no conoce la ubicación y el tipo de archivo de su disco, lea la salida de fdisk -l
.
Asegúrese de que las arquitecturas del sistema en el que inició (por ejemplo, es un LiveCD de 32 bits) y el sistema que desea ingresar (por ejemplo, es una instalación de 32 bits en su disco duro) coinciden. Puede determinar la arquitectura con la que inició utilizando uname -m
.
Asegúrese de que se hayan cargado todos los módulos del núcleo que necesita.
Configure su red si la necesita (por ejemplo, para instalar paquetes actualizados).
Inicialice su partición de intercambio si es necesario (por ejemplo, swapon /dev/sda3
).
Realizar el 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 su /boot
directorio está en una partición diferente de la /
suya y desea manipular archivos en él (por ejemplo, si trabajará con GRUB, realizará una actualización del núcleo, etc.), también necesitará montar esa partición. Si está en / dev / sda2 y su tipo de archivo es ext2, entonces haga lo siguiente:
mount -t ext2 /dev/sda2 /mnt/boot
De manera similar, para cualquier otra parte de su sistema de archivos ( /var
, /usr
) que resida en particiones separadas pero a las que necesite acceder. En general, cuando estás haciendo chrooting para arreglar algo a lo que no necesitarás acceso / home, no necesitas preocuparte por ello.
(También es posible montar sistemas de archivos después de haber hecho un chroote, pero es más inteligente hacerlo de antemano. La razón es que cuando lo haga después, el entorno externo / kernel no sabrá sobre los sistemas de archivos montados, así que si olvida desmontarlos antes de salir del chroot, el sistema tampoco sabrá desmontarlos cuando se apague. Esto podría dañar esos sistemas de archivos).
Si ha configurado su red y desea usarla en el sistema chrooteado, copie /etc/resolv.conf
para poder resolver los nombres de dominio:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Ahora está listo para pasar al sistema de archivos montado:
chroot /mnt /bin/bash
(Si esto devuelve un error chroot: cannot run command '/bin/bash': Exec format error
, generalmente indica que arrancó con una arquitectura (por ejemplo, x86_32) y está tratando de pasar a otra (por ejemplo, x86_64). La solución es usar un LiveCD que tenga la misma arquitectura que el sistema que desea. chroot en.)
En este punto, todavía está ejecutando el núcleo con el que arrancó, pero todas las rutas /path
se referirán a lo que solía ser /mnt/path
.
Si va a hacer algo con GRUB, deberá asegurarse de que su /etc/mtab
archivo esté actualizado:
grep -v rootfs /proc/mounts > /etc/mtab
También podría ser útil en este punto hacer:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Haz tu trabajo sucio
En este punto, puede realizar cualquier solución de problemas que necesite hacer:
- vuelva a instalar GRUB en el MBR de su disco
- restablecer una contraseña olvidada
- realizar una actualización del kernel (o downgrade)
- reconstruye tu disco de inicio
- arregla tu / etc / fstab
- reinstalar paquetes usando su administrador de paquetes
- lo que sea
Limpiar
Cuando haya terminado, asegúrese de que todos los programas en ejecución se hayan detenido. Luego salga del chroot:
exit
Ahora desmonta todas las particiones que montaste:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Finalmente intente desmontar su disco duro:
umount /mnt
Si recibe un error que dice que / mnt (o cualquier otra partición) está ocupada, esto puede significar una de dos cosas:
Se dejó un programa ejecutándose dentro del chroot.
O más frecuentemente: todavía existe un punto de montaje en este montaje. Por ejemplo, / mnt / usr todavía está montado al intentar desmontar / mnt.
En el último caso, simplemente desmonte el punto de montaje ofensivo primero. Para recibir un recordatorio de todos los puntos de montaje actuales, ejecute mount
sin parámetros.
Finalmente:
reboot
chroot.sh
en la raíz de cada sistema que utilizo, cuyo contenido coincide más o menos con el anterior. Cuando necesito hacer un chroot en ese sistema desde un LiveCD o algo así, simplemente monte el sistema de archivos raíz y ejecuto el script chroot. No más google frenético para los comandos correctos.SHELL=/bin/bash chroot /mnt
si el SHELL predeterminado de livecd no está en el entorno chrooteado (defalut zsh de systemrescuecd es un ejemplo) para arreglar, por ejemplo,!
en Vim./run
estos díasmount --bind /run /mnt/run
.