Problema al iniciar / pantalla de initramfs

Lee -  
 drom -
Hola,

Quise lanzarme de lleno en el mundo de Linux hace un mes. Instalé Zorin OS en mi disco duro. Todo iba bien hasta esta mañana.
Desde esta mañana, mi pantalla muestra el siguiente mensaje:

BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.2) built-in shell a(ash)
Enter 'help' for a list of built-in commands.

(initramfs)


Así que, queriendo encontrar la solución por mi cuenta y sin querer perder mis datos, leí un poco sobre el tema y encontré que el problema es que

1/no debí forzar el cierre (mantener apretado 3s+) (pero, ¿qué hacer cuando se bloquea mi computadora? y también, ¿por qué se bloquea de repente?)

2/ es un problema de arranque, si puedo expresarlo así. Sin embargo, leí que podría intentar el comando
fsck
. Aunque no aparece cuando escribo
help
al inicio.

Afortunadamente, tengo mi USB booteable que me permite probar Zorin OS antes de instalarlo / instalarlo.

También leí que desde mi USB podría reparar mi SO con el comando
fsck -y /dev/sdb1
(concluí que era el
sdb
porque
sda
parece ser la USB booteable)

Sin embargo, para hacer las cosas bien, encrypté mi disco duro (una opción que Zorin ofrece / no sé si todas las distribuciones de Linux lo proponen) y creo (no estoy seguro ya que soy principiante en Linux) que eso bloquea, entre otras cosas.

Intenté este comando
sudo fdisk -l mount
para intentar una reparación o incluso una reinstalación sin pérdida de datos, si es posible, pero no da resultados.

También intenté el comando
sudo fsck /dev/sdb1
, una vez más sin éxito.

Así que finalmente opté por boot repair siguiendo las líneas de código para instalarlo y actualizarlo // lo lancé y me dio un informe que está aquí. http://paste.ubuntu.com/p/8x3pSzjQSj/

Así que dos preguntas: según el informe de boot repair, ¿mi problema está solucionado? Si no, ¿qué más puedo hacer, por favor, sabiendo que me gustaría no perder mis datos?
Configuración: Linux / Firefox 73.0

2 respuestas

  1. mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 940
     
    Hola,

    Varios elementos de respuesta.

    Explicación del error

    Respecto al error de busybox: grub es el menú que permite elegir en qué sistema (y para Linux, con qué núcleos y qué opciones) se inicia. Cuando grub falla, típicamente ves un terminal "busybox". Puede fallar por múltiples razones (típicamente, un disco duro faltante, un núcleo no encontrado, particiones incoherentes con respecto a su configuración, etc).

    En la práctica, busybox no permite hacer gran cosa. La mayoría de las veces, hay que pasar por una reparación utilizando una llave USB booteable. Desde esta debe lanzarse un Linux permitiendo iniciar un "verdadero" terminal, desde el cual se podrá llevar a cabo la reparación. En sí, un disco (USB o CD) de instalación de Linux es suficiente. Pero no es obvio cuando uno es principiante.

    Por eso se creó boot-repair. Es un Linux booteable en una llave USB, pero este ha sido personalizado para que un principiante pueda realizar la reparación. Así que estás en el buen camino :)

    Luego no sé quién te dijo que hicieras un
    fsck
    (verificación del sistema de archivos) pero dudo mucho que eso te desbloquee. En terminología de Windows, esto corresponde a un scandisk, pero no es eso lo que corregirá tu configuración de grub para hacerla coherente con tu(s) discos duros. Comandos como
    sudo update-grub
    , lanzados desde tu Linux "chrooted" tienen mucho más sentido.

    Algunos requisitos previos


    Entonces, ¿qué es un
    chroot
    ?

    Bajo Linux, no hay noción de unidades como en Windows. No hay C: u otra. Hay una estructura jerárquica, cuya raíz es
    /
    que contiene todo. La noción más cercana es lo que se llama en Linux los "devices" (ver /dev). En los Linux modernos, los discos típicamente tienen un nombre que sigue esta nomenclatura:
    • /dev/sda
      identifica el primer disco (USB, disco duro, otro...)
    • /dev/sdb
      identifica el segundo disco (USB, disco duro, otro...)
    • /dev/sda1
      identifica la primera partición del disco sda.
    • /dev/md0
      designa un disco RAID


    Los devices en sí mismos no son directamente legibles. Hay que montar un device para ver el contenido de la partición que representa. Eso es lo que hace el comando
    mount
    .

    En particular, algunos de estos devices serán montados (como muñecas rusas) de modo que constituyan el contenido expuesto en la jerarquía
    /
    . Típicamente:
    • /
      contiene (si omites los elementos que siguen) la partición del sistema Linux en el que has iniciado
    • /home
      contiene la partición de Linux con tus documentos
    • los posibles periféricos, particiones de Windows, comparticiones remotas, etc. generalmente se montan en un subdirectorio de
      /media
      o de
      /mnt
      .


    En resumen, dado que
    /
    corresponde al sistema Linux en el que has iniciado, no tiene el mismo significado cuando inicias en un Linux USB o en el Linux de tu disco duro.
    /
    corresponde al sistema en el que has iniciado. Pero, si inicias desde tu Linux USB, puedes montar la partición de Linux del disco duro en un directorio (digamos
    /media/linux
    ).

    Por lo tanto, si inicias desde tu Linux USB y montas tu Linux del disco duro en
    /media/linux
    , la configuración de grub estará en ese momento en
    /media/linux/etc/default/grub
    y no en
    /etc/default/grub
    .

    Sin embargo, Linux permite "mover"
    /
    (bajo ciertas condiciones), en mi ejemplo, a nivel de
    /media/linux
    . Eso es lo que se llama hacer un
    chroot
    . Así que si te aseguras de que en este directorio esté todo lo necesario y te chrootes dentro, entonces todo sucederá en este terminal "como si" hubieses iniciado en el Linux del disco duro. Y desde allí, en particular, podrás reinstalar/reconfigurar todo lo que esté roto.

    Reparar grub (en condiciones normales)

    La esencia del procedimiento indicado en boot-repair consiste en realizar este
    chroot
    . Dado que has logrado hacer un informe de boot repair, significa que lo has conseguido.

    Idealmente, basta con lanzar en el entorno chrooted
    sudo update-grub
    lo que debería parecerse a esto:

    (mando@aldur) (~) $ sudo update-grub
    [sudo] Contraseña de mando:
    Generando archivo de configuración de grub ...
    Imagen de fondo encontraday: /usr/share/images/desktop-base/desktop-grub.png
    Imagen de Linux encontrada: /boot/vmlinuz-5.4.0-4-amd64
    Imagen initrd encontrada: /boot/initrd.img-5.4.0-4-amd64
    Imagen de Linux encontrada: /boot/vmlinuz-5.4.0-3-amd64
    Imagen initrd encontrada: /boot/initrd.img-5.4.0-3-amd64
    Imagen de Linux encontrada: /boot/vmlinuz-5.3.0-3-amd64
    Imagen initrd encontrada: /boot/initrd.img-5.3.0-3-amd64
    Imagen de Linux encontrada: /boot/vmlinuz-4.19.0-6-amd64
    Imagen initrd encontrada: /boot/initrd.img-4.19.0-6-amd64
    Gestor de arranque de Windows encontrado en /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
    Agregando entrada de menú de arranque para configuración de firmware EFI
    hecho


    Primera pregunta, ¿qué sucede en tu caso? (copia y pega el resultado)

    En tu caso

    Si observamos tu informe de boot repair, tienes errores extraños:

    ERROR: pdc: reading /dev/dm-0[Input/output error]
    ERROR: pdc: reading /dev/dm-0[Input/output error]
    ERROR: pdc: reading /dev/dm-0[Input/output error]
    ERROR: pdc: reading /dev/dm-0[Input/output error]
    ERROR: pdc: reading /dev/dm-0[Input/output error]
    ERROR: pdc: reading /dev/dm-0[Input/output error]


    Eso no es bueno, significa que un disco RAID (¿software?) está dañado. No sé si te divertiste configurando RAID, pero este tipo de error es una mala señal.

    Además, mencionas que has cifrado tu disco. Lo que significa que
    mount
    solo no es suficiente, primero hay que descifrar la partición. La idea sigue siendo la misma, pero se complica ligeramente porque hay LVM y LUKS que se involucran. Y en tu caso, probablemente RAID también...

    Método 1: el más simple

    Reinstalas, olvidas el cifrado y el RAID a menos que sepas lo que haces.

    Método 2: si tienes valor

    Particionado supuesto (a adaptar en tu caso)
    • /dev/sda1
      es
      /boot
    • /dev/sda5
      está cifrado con LUKS que contiene una partición LVM, donde reside
      /
      y la swap.


    Paso 1: Montar el sistema

    sudo -s mkdir -p /mnt/linux cryptsetup luksOpen /dev/sda5 sda5_crypt # Esto crea /dev/mapper/sda5_crypt # Ingresa la contraseña LUKS apt-get install lvm2 modprobe dm-mod vgchange -ay lvscan # En este punto deberíamos ver /dev/Ubuntu/{root, swap_1} ACTIVO


    Ahora montamos todo.

    mount /dev/mapper/Ubuntu-root /mnt/linux mount /dev/sda1 /mnt/linux/boot mount --bind /dev /mnt/linux/dev chroot /mnt/linux mount -t proc proc /proc mount -t sysfs sys /sys mount -t devpts devpts /dev/pts /etc/init.d/lvm2 start /etc/init.d/lvm2-lvmetad start /etc/init.d/lvm2-lvmpolld start


    Desde ahí podemos lanzar
    update-grub
    (uf).

    Paso 2: Reparar
    grub


    Verificamos los parámetros de
    cryptsetup
    basándonos en este tutorial.

    1) Verificar que la línea sobre
    sda5
    esté presente en
    /etc/crypttab
    (puedes abrir este archivo con
    nano /etc/crypttab
    , ctrl x para guardar y salir).

    Ejemplo: (atención, estos valores dependen de tu sistema):

    sda5_crypt UUID=8af9859f-9922-4ed3-9f9b-bc31f0c9aeb4 none luks,retry=1,lvm=Ubuntu
    storage_crypt UUID=f4e689ec-fda1-450e-8787-61c081c0bee7 none luks


    2) Verificar también
    /etc/initramfs-tools/conf.d/cryptroot
    .

    Ejemplo: (atención, estos valores dependen de tu sistema):

    CRYPTROOT=target=sda5_crypt,source=/dev/disk/by-uuid/8af9859f-9922-4ed3-9f9b-bc31f0c9aeb4


    3) Si todo está referenciado, entonces podemos lanzar:

    update-initramfs -k all -c


    4) Ahora, revisamos
    /etc/default/grub
    .

    Ejemplo: (atención, estos valores dependen de tu sistema):

    GRUB_CMDLINE_LINUX="cryptopts=target=sda5_crypt,source=/dev/disk/by-uuid/8af9859f-9922-4ed3-9f9b-bc31f0c9aeb4,lvm=Ubuntu"

    5) Finalmente, reinstalamos grub

    update-grub


    6) ... y salimos correctamente

    /etc/init.d/lvm2 stop
    /etc/init.d/lvm2-lvmetad stop
    /etc/init.d/lvm2-lvmpolld stop
    umount /sys
    umount /proc
    umount /dev/pts
    exit
    umount /mnt/linux/boot
    umount /mnt/linux/dev
    umount /mnt/linux
    reboot


    Buena suerte :-)
    0