Ubuntu 16.04 para de inicializar, tem criptografia LVM e LUKS configurada, restauração de superbloco já tentada

Ubuntu 16.04 para de inicializar, tem criptografia LVM e LUKS configurada, restauração de superbloco já tentada

De repente, meu Ubuntu 16.04 me leva a um initramfsprompt 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)

Se eu digitar, exitrecebo:

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)

Coisas que tentei, sem sucesso até agora:

  • Tentei recuperar um backup do superbloco com um disco de inicialização USB, mas ainda inicializa com isso.
  • Não é possível inicializar em um kernel diferente porque, ao pressionar SHIFTno momento do grub, recebo apenas um kernel nas opções avançadas.

Quando chego na tela do grub, se eu pressionar eestas são minhas configurações:

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

Se eu inicializar em um disco USB inicializável do LIVE, sudo fdisk -lretornará:

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...)

Se eu montar as partições via nautilus (a criptografada solicita minha senha, que eu insiro), então sudo lsblkretorna:

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

O que está errado? O que está impedindo o sistema de inicializar e me perguntar a senha de criptografia como de costume? Obrigado!

Responder1

Você pode tentar executar o script abaixo no LiveCD (possivelmente versões atualizadas no link). O script tenta automatizar parcialmente o processo para você. Ele foi escrito e testado para uma unidade NVMe, então você pode precisar mudar um pouco as coisas se estiver usando uma unidade SATA/IDE com um /dev/sd*caminho. Se não estiver usando EFI, você pode excluir qualquer linha que contenha efiou EFIexecutando sed -i -e '/efi/d' -e '/EFI/d' crypt-fix.shapós salvar o script em seu computador. Terá que adicionar alguma lógica de detecção para isso eventualmente.

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

criptografia-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"

informação relacionada