Saltar al contenido
TURNKEYGNU / LINUX
AplicacionesDocumentaciónBlogCapturas de pantallaGitHubTurnKey Hub
文Español
EnglishEspañol中文日本語PortuguêsDeutsch
Home/Cómo: Chroot en un sistema roto a través de CD/ISO en vivo o sistema Linux alternativo

Documentación

Cómo: Chroot en un sistema roto a través de CD/ISO en vivo o sistema Linux alternativo

En ocasiones, es posible que necesite rescatar un servidor TurnKey roto/inbootable. Tal vez has tenido un fallo de hardware, o tal vez has roto algo inadvertidamente, o tal vez has instalado una actualización de buggy que ha roto cosas?

A menudo estos problemas se pueden fijar "arrastrando" en el sistema roto de un sistema funcional (Linux), luego tomando los pasos necesarios para resolver el problema (reinstalar grub, reinstalar un núcleo, reconstruir un initramfs, etc. Obviamente los pasos para arreglar un sistema roto dependerán de lo que realmente haya roto. Si no estás seguro, entonces probablemente será mejor que empieces un nuevo hilo en el foros (requiere cuenta de usuario gratuita para iniciar un nuevo hilo) para que podamos ayudar a diagnosticar el problema.

En este doc, sólo le aconsejaré hasta el punto en el que entras en el chroot, y no entrará en los detalles de cómo resolver cualquier problema específico (aunque, si/cuando obtengo un oportunidad, quizás escribiré páginas de doc para algunos de los problemas más comunes?!).

Nota: Esta guía supone que se ha iniciado sesión con la cuenta de usuario raíz. Si no, la mayoría (si no todos) los comandos que se ejecutan fuera del chroot pueden necesitar ser prefabricados por 'sudo'. Si entras en el chroot vía sudo, entonces no se debe exigir una vez dentro del chroot.

Así que primero, un poco de fondo, si prefieres saltar directamente hacia la configuración de chrootPor favor, siéntete libre.

¿Qué es una "chroot"

Según Wikipedia, a chroot:

cambia el directorio raíz aparente para el proceso de funcionamiento actual y sus hijos. Un programa que se ejecuta en un entorno tan modificado no puede nombrar (y por lo tanto normalmente no puede acceder) archivos fuera del árbol de directorio designado.

Como usuario de Linux, hay 2 tipos de chroot que puedes encontrar. Lo que llamo un chroot "estándar" (lo que cubre esta página doc), entonces también hay una "caja de raíz".

El propósito de una cárcel de chroot para bloquear a un usuario o proceso dentro de una parte determinada de un árbol de directorios. un programa puede ser "arraigado" en su propio directorio (Postfix se establece como este por ejemplo), sin acceso al resto del sistema de archivos. O un usuario limitado puede ser "chrooted" en su directorio de inicio, por lo que pueden utilizar (por ejemplo) SFTP, pero no pueden navegar por todo el sistema de archivos.

Un chroot "estándar" puede ser utilizado para investigar y posiblemente reparar un sistema inbootable. También se utiliza comúnmente para construir nuevos sistemas Linux. Por ejemplo, TurnKey utiliza un chroot "estándar" (on TKLDevPara construir el TurnKey appliances, ese es el tipo de chroot que documentaré aquí.

Configurar un chroot

Preparación

Lo primero que hay que hacer es asegurar que el sistema de archivos del sistema roto sea accesible desde el sistema de trabajo. En el caso de una instalación de metal desnudo o un VM, la forma más fácil de hacer esto es a menudo para arrancar de un CD/USB/ISO en vivo. Como regla general, es generalmente mejor utilizar el mismo sistema operativo que el sistema roto. En el caso de TurnKey, puede utilizar B. (o cualquier otro servidor; sólo Core es el más pequeño) de la misma versión principal. E.g. v15.0 Core está bien para usar para fijar cualquier v15.x appliance. Si esa no es una opción, un sistema Debian Live también es una buena opción. En el peor de los casos, podrías escaparte con cualquier distro Linux relativamente reciente, aunque TurnKey (o Debian) de una versión coincidente es preferible.

Lo que sea que hagas DO NOT ¡Instalar sobre la parte superior de tu sistema roto! ¡Eso hará que sea inalcanzable!

Alternativamente, podría mover el disco (físico o virtual) a otra máquina (trabajando) (con TurnKey/Debian/etc como encima de correr). Para un servidor AWS que es también esencialmente lo que necesitará hacer (es decir, desvincular el volumen primario del sistema roto y reajustar a un sistema de trabajo).

Encontrar el volumen adecuado para montar

Después de haber adjuntado el volumen primario roto a un sistema de trabajo, el siguiente paso es montarlo. Para montarlo, necesitará asegurarse de que tiene una ubicación de montaje limpia y también tendrá que resolver qué disco/volumen/partition(s) necesita montar.

Una manera fácil de asegurar que usted tiene una ubicación limpia de montaje para utilizar, es para crearlo! Así que algo como esto:

mkdir /rescue

Asegurarse de que usted encuentra el disco correcto / volumen / partición(s) puede ser un poco más difícil, pero una herramienta que puede utilizar es fdisk. Para ver todos los volúmenes adjuntos, ejecutar:

fdisk -l

Aquí está la salida en un servidor AWS en el que estoy trabajando actualmente. Tiene una unidad secundaria (el volumen raíz de otro servidor) adjunta como /dev/xvdf, el volumen raíz predeterminado (es decir, el volumen raíz predeterminado). el volumen raíz del servidor de trabajo) es /dev/xvda. Puede ser diferente para usted (aunque si usted está en AWS es probable que sea el mismo). Aquí está la salida completa:

root@core ~# fdisk -l
Disk /dev/xvda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6183BC26-31B1-41F2-9AB9-319B7C4A85B0

Device     Start      End  Sectors Size Type
/dev/xvda1  2048     6143     4096   2M BIOS boot
/dev/xvda2  6144 20969471 20963328  10G Linux filesystem

Disk /dev/xvdf: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0029AB38-4BE5-4009-B163-9A7B4F597FE4

Device     Start      End  Sectors Size Type
/dev/xvdf1  2048     6143     4096   2M BIOS boot
/dev/xvdf2  6144 20969471 20963328  10G Linux filesystem

Si no está seguro cuál volumen es el que, comprobar qué volúmenes ya están montados. Haga eso de esta manera:

 mount | grep ^/dev

Eso comprobará todas las líneas de la salida de montaje que comienza con /dev. En mi caso, esto confirma lo que ya sé, el voume que ya he montado es /dev/xvda:

root@core ~# mount | grep ^/dev
/dev/xvda2 on / type ext4 (rw,relatime,data=ordered)
/dev/xvda2 on /tmp type ext4 (rw,relatime,data=ordered)
/dev/xvda2 on /var/cache/tklbam type ext4 (rw,relatime,data=ordered)

Montaje del sistema roto listo para chroot

Así que una vez que hayas trabajado qué partición necesitarás montarlo. Eso es bastante simple. En mi caso, la partición que necesito montar es /dev/xvdf2 (es decir, la segunda partición en /dev/xvf). Si usted mira arriba, a mi salida de fdisk, verá que /dev/xvdf1 es el tipo de "Bota BIOS" y /dev/xvdf2 es "sistema de archivos Linux". Para montar eso es tan fácil como esto:

mount /dev/xvdf2 /rescue

Si ahora revisas /rescue (es decir, es /rescue), deberías ver algo así:

root@core ~# ls -l /rescue
total 92
drwxr-xr-x   2 root root  4096 Apr 16 02:49 bin
drwxr-xr-x   3 root root  4096 Apr 16 02:50 boot
drwxr-xr-x   5 root root  4096 Oct  3  2018 dev
drwxr-xr-x 100 root root  4096 Apr 16 02:50 etc
drwxr-xr-x   3 root root  4096 Oct  3  2018 home
lrwxrwxrwx   1 root root    29 Oct  3  2018 initrd.img -> boot/initrd.img-4.9.0-8-amd64
lrwxrwxrwx   1 root root    29 Oct  3  2018 initrd.img.old -> boot/initrd.img-4.9.0-8-amd64
drwxr-xr-x  18 root root  4096 Oct  3  2018 lib
drwxr-xr-x   2 root root  4096 Mar 11  2018 lib64
drwx------   2 root root 16384 Oct  3  2018 lost+found
drwxr-xr-x   2 root root  4096 Mar 11  2018 media
drwxr-xr-x   4 root root  4096 Apr 16 02:49 mnt
drwxr-xr-x   2 root root  4096 Mar 11  2018 opt
drwxr-xr-x   2 root root  4096 Feb 23  2018 proc
drwx------   5 root root  4096 Oct  3  2018 root
drwxr-xr-x  12 root root  4096 Oct  3  2018 run
drwxr-xr-x   2 root root  4096 Apr 16 02:49 sbin
drwxr-xr-x   2 root root  4096 Mar 11  2018 srv
drwxr-xr-x   2 root root  4096 Feb 12  2017 sys
drwxrwxrwt   7 root root  4096 Apr 16 02:51 tmp
drwxr-xr-x  10 root root  4096 Mar 11  2018 usr
drwxr-xr-x  13 root root  4096 Oct  3  2018 var
lrwxrwxrwx   1 root root    26 Oct  3  2018 vmlinuz -> boot/vmlinuz-4.9.0-8-amd64
lrwxrwxrwx   1 root root    26 Oct  3  2018 vmlinuz.old -> boot/vmlinuz-4.9.0-8-amd64

Obviamente las fechas serán diferentes, pero de lo contrario, que muestra que el sistema está montado como se espera. Todas las construcciones actuales de TurnKey incluyen la partición /boot, aunque en algunas versiones anteriores, si la instalación utiliza LVM, entonces la partición /boot puede necesitar ser montada por separado. En ese caso, después de que el sistema operativo principal se monta, montar el directorio de arranque. Es decir, algo como esto (ajuste para el traje):

mount /dev/sdXN /rescue/boot

Donde /dev/sdXN es la partición donde reside la información de arranque.

Pero espere que haya más...! Una vez que el sistema operativo principal ha sido montado, entonces también necesita montar algunos directorios especiales del host para que el chroot funcione correctamente. Principalmente estos son /dev, /proc y /sys. /dev/pts también vale la pena montar. En mi experiencia, usted puede escapar sin montar eso, pero a menudo obtendrá errores, por lo que vale la pena montar que para reducir el ruido.

mount -t proc proc /rescue/proc
mount -t sysfs sys /rescue/sys
mount -o bind /dev /rescue/dev
mount -t devpts pts /rescue/dev/pts

Chrooting in

Ahora simplemente necesitas entrar, eso es lo que se hace así:

chroot /rescue

Simple como eso...! :)

Ahora haga lo que necesite para arreglar su sistema. Una vez que esté feliz (o sólo listo para probar) entonces puede salir de la raíz como esta:

exit

Limpieza después

Si necesita detener el servidor para eliminar la unidad rota, entonces no se requiere limpieza. Todos los componentes deben ser auto inexplorados como parte del proceso de apagado. Si no necesita detener el servidor, reiniciar es la forma más fácil de limpiar el chroot. Sin embargo, si no detienes el servidor que estás usando, o por alguna otra razón te gustaría deshacer el config de chroot, entonces después de haber salido de la chroot, sólo tienes que backtrack en los comandos anteriores. Es decir, utilizar umount en lugar de montaje, y desmontarlos en el orden inverso que fueron montados.

umount /rescue/dev/pts
umount /rescue/dev
umount /rescue/sys
umount /rescue/proc

Si montaste una partición de arranque separada, desmonta la siguiente. Es decir, 'umount /rescue/boot'. Entonces finalmente, el volumen principal:

umount /rescue
TURNKEYGNU / LINUX

Controla tu infraestructura sin empezar desde cero.

Explorar TurnKey
Acerca deDocumentaciónPreguntas frecuentesBlogGitHub
Libre y de código abiertoSeguro de forma predeterminadaListo para desplegar