web-dev-qa-db-fra.com

Grub à la recherche d'un UUID racine chiffré avant le déchiffrement du conteneur

Je nettoyais Ubuntu 18.10 avec Bleachbit lorsque mon PC a gelé. Lors du redémarrage, j'étais coincé après Grub chez BusyBox (initramfs). Lorsque je quitte BusyBox, je reçois le message suivant:

_ALERT! UUID=f6fc1852-25c6-47a6-9976-... does not exist. Dropping to a Shell._

Le mode de récupération a tout aussi bien échoué.

J'ai redémarré avec un Live CD et ai exécuté _fsck -f_ sur le disque. Des erreurs mineures ont été détectées et corrigées, puis la sortie était correcte, mais le système n'a pas réussi à transmettre Grub au redémarrage.

J'ai un LVM entièrement chiffré avec une partition différente _/boot_ en clair:

_$ Sudo fdisk -l
Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 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: 6B6C7A2C-478C-4999-ABD9-53A3BB5FE607

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048     534527    532480   260M EFI System
/dev/nvme0n1p2    534528     567295     32768    16M Microsoft reserved
/dev/nvme0n1p3    567296  547442295 546875000 260.8G Microsoft basic data
/dev/nvme0n1p4 998166528 1000214527   2048000  1000M Windows recovery environment
/dev/nvme0n1p5 547442688  547969023    526336   257M Linux filesystem
/dev/nvme0n1p6 547969024  998166527 450197504 214.7G Linux filesystem

$ Sudo blkid
/dev/nvme0n1p1: LABEL="SYSTEM" UUID="7AA1-7D80" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="8030af7e-64f9-4090-9457-fcd97de33216"
/dev/nvme0n1p3: LABEL="Windows" UUID="DA32A3D932A3B8C1" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="ccc54701-8855-4d06-a7af-b3c4ce9e3c11"
/dev/nvme0n1p4: LABEL="WinRE_DRV" UUID="B242A4E642A4B111" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="73272228-de36-4cb9-959e-53792c2dc104"
/dev/nvme0n1p5: UUID="8618de9e-f06e-46de-9717-38f6da7b1969" TYPE="ext4" PARTUUID="7cdfe2e1-103d-4cf1-9436-0008d34b5ed6"
/dev/nvme0n1: PTUUID="6b6c7a2c-478c-4999-abd9-53a3bb5fe607" PTTYPE="gpt"
/dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="6d62624f-eba4-4fbb-838e-9ce6087d1135"
/dev/nvme0n1p6: UUID="69a32ddc-3092-487f-99b5-b0e757c5ddf1" TYPE="crypto_LUKS" PARTUUID="f7199882-ca6f-44a9-8730-92386d62ef50"
_

Aucun UUID ne commence ici par _f6fc_. Je pense que c'était l'UUID du LVM chiffré sur la partition _/_ une fois déchiffré avec _udisksctl unlock -b_.

La fstab est

_# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/nvme0n1p6_crypt /               ext4    errors=remount-ro 0       1
# /boot was on /dev/nvme0n1p5 during installation
UUID=8618de9e-f06e-46de-9717-38f6da7b1969 /boot           ext4    defaults        0       2
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=7AA1-7D80  /boot/efi       vfat    umask=0077      0       1
# /windows was on /dev/nvme0n1p3 during installation
UUID=DA32A3D932A3B8C1 /windows        ntfs    defaults,umask=007,gid=46 0       0
/swapfile                                 none            swap    sw              0       0
_

J'ai donc essayé de chrooter le système et de réinstaller Grub, en utilisant à la fois _udisksctl unlock -b_ et ce qui suit pour déchiffrer la racine:

_$ Sudo cryptsetup luksOpen /dev/nvme0n1p6 crypt
Enter passphrase for /dev/nvme0n1p6: 
$ Sudo vgchange -ay
$ Sudo mount /dev/mapper/crypt /mnt
$ Sudo mount /dev/nvme0n1p5 /mnt/boot/
$ Sudo mount -t proc proc /mnt/proc
$ Sudo mount -o bind /dev /mnt/dev
$ Sudo mount -o bind /sys /mnt/sys
$ Sudo chroot /mnt
root@ubuntu:/# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-4.18.0-12-generic
Warning: couldn't identify filesystem type for fsck hook, ignoring.
root@ubuntu:/# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.0-12-generic
Found initrd image: /boot/initrd.img-4.18.0-12-generic
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
Adding boot menu entry for EFI firmware configuration
done
_

Mais, ici, Grub ne détecte pas Windows 10 et vous devinez si je poste ici, c'est parce que cela ne fonctionnait pas. Je suis toujours coincé avec cette erreur étrange sur un UUID qui n'est pas dans fstab. J'ai également essayé de _grub-install_ sur tout le disque, aucun changement.

Edit: déverrouiller la racine avec _udisks2_, je reçois:

_$ Sudo udisksctl unlock -b /dev/nvme0n1p6
Unlocked /dev/nvme0n1p6 as /dev/dm-0.
$ Sudo udisksctl mount -b /dev/dm-0 
Mounted /dev/dm-0 at /media/root/f6fc1852-25c6-47a6-9776-4ed8b8d6b70e.
_

remarquez le nom du média, il est identique à l’UUID défectueux. Je suppose donc que Grub recherche l'UUID du LVM déchiffré avant qu'il ne soit réellement déchiffré. Le problème est où trouver cet appel?

Edit 2: entre temps, après avoir redémarré sous Windows 10 pour la première fois en 3 mois, les micrologiciels BIOS et SSD ont été mis à jour. Toujours pas de chance avec Grub.

Edit 3: J'ai trouvé le mauvais appel dans _/boot/grub/grub.cfg_:

_menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-f6fc1852-25c6-47a6-9776-4ed8b8d6b70e' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_gpt
    insmod ext2
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  8618de9e-f06e-46de-9717-38f6da7b1969
    else
      search --no-floppy --fs-uuid --set=root 8618de9e-f06e-46de-9717-38f6da7b1969
    fi
    linux   /vmlinuz-4.18.0-12-generic root=UUID=f6fc1852-25c6-47a6-9776-4ed8b8d6b70e ro  quiet splash elevator=noop $vt_handoff
    initrd  /initrd.img-4.18.0-12-generic
}
_

mais voici _/etc/default/grub_:

_# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
_

Alors, comment puis-je remédier à cela?

2
Aurélien Pierre

Si /et/crypttab est vide, c'est certainement un problème.

Vous devez y placer votre partition racine comme ceci:

nvme0n1p6_crypt UUID=f6fc1852-25c6-47a6-9776-4ed8b8d6b70e none luks

Je suppose que vous allez taper votre mot de passe au démarrage. Si vous souhaitez utiliser un fichier de clé, remplacez "aucun" par votre fichier de clé.

Vous devez donc réexécuter update-initramfs à partir de chroot. Et je ne suis pas sûr, mais cela devrait faire l'affaire. Vous pouvez également relancer update-grub pour en être sûr.

# boot a live USB/CD and open a terminal
$ Sudo cryptsetup luksOpen /dev/nvme0n1p6 crypt
Enter passphrase for /dev/nvme0n1p6: 
$ Sudo mount /dev/mapper/crypt /mnt
# edit your /mnt/etc/crypttab to add root parttion as shown above
$ Sudo mount /dev/nvme0n1p5 /mnt/boot/
$ Sudo mount -o bind /proc /mnt/proc
$ Sudo mount -o bind /dev /mnt/dev
$ Sudo mount -o bind /sys /mnt/sys
$ Sudo chroot /mnt
root@ubuntu:/# Sudo update-initramfs -u -k all
root@ubuntu:/# Sudo update-grub
root@ubuntu:/# exit
$ Sudo umount /mnt/proc
$ Sudo umount /mnt/sys
$ Sudo umount /mnt/dev
$ umount /mnt/boot
$ umount /mnt
$ Sudo reboot
2
solsTiCe

Réparation de démarrage fonctionne généralement

Démarrez avec une clé USB en direct et sélectionnez "Essayer Ubuntu sans installer". Puis ouvrez un nouveau terminal, puis tapez les commandes suivantes (appuyez sur Entrée après chaque ligne):

Sudo add-apt-repository ppa:yannubuntu/boot-repair
Sudo apt-get update
Sudo apt-get install -y boot-repair && boot-repair

Réparation recommandée

  1. lancez Boot-Repair à partir du tableau de bord (le logo Ubuntu en haut à gauche de l'écran) ou en tapant "boot-repair" dans un terminal.

  2. Cliquez ensuite sur le bouton "Réparation recommandée". Lorsque la réparation est terminée, notez l'URL (paste.ubuntu.com/XXXXX) qui apparaît sur un papier, puis redémarrez et vérifiez si vous avez restauré l'accès à vos systèmes d'exploitation.

  3. Si la réparation a échoué, indiquez l'adresse URL aux personnes qui vous aident par courrier électronique ou par forum.

Attention: les réglages par défaut sont ceux utilisés par la "Réparation recommandée". Les changer peut aggraver votre problème. Ne les modifiez pas avant de créer une URL BootInfo et de demander conseil sur la section Débutants absolus des forums Ubuntu ou dans Installation et mises à niveau.

0
WinEunuuchs2Unix