Ubuntu 16.04 deja de arrancar, tiene cifrado LVM y LUKS configurado, ya se intentó la restauración de superbloque

Ubuntu 16.04 deja de arrancar, tiene cifrado LVM y LUKS configurado, ya se intentó la restauración de superbloque

De repente, mi Ubuntu 16.04 me muestra un initramfsmensaje como este:

BusyBox v.1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash)   
Enter 'help' for list of built-in commands.  

(initramfs)

Si escribo exitobtengo:

Gave up waiting for root device. Common problems:
  — Boot args (cat /proc/cmdline)
    — Check rootdelay= (did the system wait long enough?)
    — Check root= (did the system wait for the right device?)
  — Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/ubuntu--vg-root does not exist. Dropping to a shell!

BusyBox v.1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash)   
Enter 'help' for list of built-in commands. 

(initramfs)

Cosas que he probado, sin éxito hasta ahora:

  • Intenté recuperar una copia de seguridad de superbloque con un disco de arranque USB, todavía arranca en esto.
  • No puedo iniciar en un kernel diferente porque cuando presiono SHIFTen el momento de grub solo aparece un kernel en las opciones avanzadas.

Cuando llego a la pantalla de grub, si presiono, eestas son mis configuraciones:

setparams 'Ubuntu'

    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 7ec61194-f216-4f1b-b684-5b2e2d643c25
    else
      search --no-floppy --fs-uuid --set=root 7ec61194-f216-4f1b-b684-5b2e2d643c25
    fi
    linux        /vmlinux-4.4.0-24-generic root=/dev/mapper/ubuntu--vg-root ro  quiet splash $vt_handoff
    initrd         /initrd.img-4.4.0-24-generic

Si inicio en un disco USB LIVE de arranque sudo fdisk -l, devuelve:

Disk /dev/sda: 480.1 GB, 480103981056 bytes
255 heads, 63 sectors/track, 58369 cylinders, total 937703088 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
Disk identifier: 0x60229a0a

   Device  Boot     Start       End     Blocks    Id   System
/dev/sda1    *       2048    999423     498688    83   Linux
/dev/sda2         1001470 937701375  468349953     5   Extended
/dev/sda5         1001472 937701375  468349952    83   Linux

Disk /dev/sdb: (skipping since I think this is the USB disk...)

Si monto las particiones a través de nautilus (la cifrada me solicita mi contraseña, que ingreso), luego sudo lsblkdevuelve:

NAME                                                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                                                    8:0    0 447.1G  0 disk
├─sda1                                                 8:1    0   487M  0 part /media/ubuntu/7ec61194-f216-4f1b-b684-5b2e2d643c
├─sda2                                                 8:2    0     1K  0 part
└─sda5                                                 8:5    0 446.7G  0 part
  └─luks-11613ca4-65f2-4079-a750-6f71b6318903 (dm-0) 252:0    0 446.7G  0 crypt
    └─ubuntu--vg-root (dm-1)                         252:1    0 439.2G  0 lvm
    └─ubuntu--vg-swap_1 (dm-2)                       252:2    0   7.5G  0 lvm
sdb                                                    8:16   1   1.9G  0 disk
└─sdb1                                                 8:17   1   1.9G  0 part /cdrom
sr0                                                   11:0    1  1024M  0 rom
loop0                                                  7:0    0 938.7M  1 loop

¿Qué ocurre? ¿Qué impide que el sistema se inicie y me solicite la contraseña de cifrado como de costumbre? ¡Gracias!

Respuesta1

Puede intentar ejecutar el siguiente script desde el LiveCD (posiblemente versiones actualizadas en el enlace). El script intenta automatizar parcialmente el proceso por usted. Fue escrito y probado para una unidad NVMe, por lo que es posible que deba cambiar ligeramente las cosas si está utilizando una unidad SATA/IDE con una /dev/sd*ruta. Si no está utilizando EFI, puede eliminar cualquier línea que contenga efio EFIejecutar sed -i -e '/efi/d' -e '/EFI/d' crypt-fix.shdespués de guardar el script en su computadora. Eventualmente habrá que agregar alguna lógica de detección para eso.

https://gist.github.com/dragon788/e777ba64d373210e4f6306ad40ee0e80

cripto-fix.sh

#!/bin/bash
# Call with `sudo bash DEBUG=1 ./crypt-fix.sh` for verbose output
[ -n "$DEBUG"] && set -x
# Prompt user for device from /dev/sd* /dev/nvme* /dev/mmc* prefixes?
# For /dev/sda probably sda1 is EFI and sda2 is boot and sda3 is encrypted
DEVICE=/dev/nvme0n1
EFIPATH="${DEVICE}p1"
BOOTPATH="${DEVICE}p2"
CRYPTPATH="${DEVICE}p3"
TARGETPATH=/mnt
# Need root for mounting stuff
if ! (( $EUID == 0 )); then echo "Please run with `sudo $0`"; fi

clear_mounts () {
# Clears mounts in case of interrupt or upon exit to allow running script multiple times
umount $TARGETPATH/boot/efi
umount $TARGETPATH/boot
umount $TARGETPATH/proc
umount $TARGETPATH/dev
umount $TARGETPATH
vgchange -an
cryptsetup close temp_name
cryptsetup close $CRYPTNAME
set +x
}
trap clear_mounts INT EXIT

cryptsetup open $CRYPTPATH temp_name
vgchange -ay
# Can't get this until LVM devices are scanned above
ROOTPATH=$(ls /dev/mapper/* | grep root)
# Make sure nothing else is mounted on our $TARGETPATH
umount $TARGETPATH
wait
mount $ROOTPATH $TARGETPATH
# Find the name that is required for `update-initramfs` to properly update things
CRYPTNAME=$(cat $TARGETPATH/etc/crypttab | awk '/^[ ]*[^#]/ { print $1; exit }')
umount $TARGETPATH
vgchange -an
cryptsetup close temp_name
# This proper name is required for `update-initramfs` to properly update things
cryptsetup open $CRYPTPATH $CRYPTNAME
wait
vgchange -ay
ROOTPATH=$(ls /dev/mapper/* | grep root)
mount $ROOTPATH $TARGETPATH
mount $BOOTPATH $TARGETPATH/boot
mount $EFIPATH $TARGETPATH/boot/efi
mount -t proc proc $TARGETPATH/proc
mount -o bind /dev $TARGETPATH/dev
# Have also seen people mounting dev/pts and run and sys, they don't appear to be necessary

chroot $TARGETPATH update-initramfs -c -k all
echo "Completed crypt-fix, try rebooting and you should get prompted for your passphrase after grub"

información relacionada