You are not logged in.

#1 2023-05-11 14:29:33

user371
Member
Registered: 2023-05-11
Posts: 3

Grub can't find LV for root partition: disk `lvmid/.../...' not found.

Hello, after over 20 hours of trying to fix my problem with exactly no progress, I hope that anyone has an idea for me.

Setup

I run arch with current updates.
I have full disk encryption with LUKS1, similar to the setup described in "Encrypted boot partition (GRUB)".
To be precise:

  • /dev/sda1 (mounted to /efi) is my EFI partition (unencrypted)

  • /dev/sda2 (UUID: 885f0c4e-0ac3-...) is a LUKS 1 encrypted Partition. Let's call it cryptlvm

  • Inside the cryptlvm is a LVM with a single volumegroup (called t45)

  • The VG t45 has the UUID WcGvED-Lxfv-... (based on vgs -v)

  • The voloumgroup t45 has several Logical volumes, of which the following are important:

  • - t45-swap

  • - t45-root (mounted to /) (UUID: XJQhB6-zsPJ-...)

  • - t45-home (mounted to /home)

Note: I have no external /boot partition. It is part of the LV t45-root wich is encrypted.
Note: different from the documentation in "Encrypted boot partition (GRUB)", I have no BIOS boot partition, because I boot in UEFI-mode only.

I also followed the instruction in the Section  "Avoiding having to enter the passphrase twice".
Whenever the wiki-page gave an alternative to use the sd-encrypt hook, I choose it.

/dev/sda uses GUID Partition Table (GPT).
I use the Bootmanager Grub 2.

This setup worked for me for several years.

Configs

/etc/default/grub:

GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet intel_idle.max_cstate=3"

GRUB_CMDLINE_LINUX="rd.luks.name=885f0c4e-0ac3-...=cryptlvm rd.luks.key=885f0c4e-0ac3-...=/root/cryptlvm.keyfile resume=/dev/t45/swap" 
# I also tried the following with no success:
# GRUB_CMDLINE_LINUX="rd.luks.name=885f0c4e-0ac3-...=cryptlvm rd.luks.key=885f0c4e-0ac3-...=/root/cryptlvm.keyfile resume=/dev/t45/swap root=/dev/t45/root"

GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# I also tried the following with no success:
# GRUB_PRELOAD_MODULES="part_gpt part_msdos lvm mdraid09 mdraid1x cryptodisk luks"

GRUB_ENABLE_CRYPTODISK=y
GRUB_TIMEOUT_STYLE=menu
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=auto

/etc/mkinitcpio.conf:

MODULES=()
BINARIES=()
FILES=(/root/cryptlvm.keyfile)
HOOKS=(base udev systemd autodetect keyboard sd-vconsole modconf block sd-encrypt lvm2 filesystems fsck)
# I also tried the following with no success:
#HOOKS (base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt lvm2 filesystems fsck)
Problem

After I rebooted from a working system, and entered my LUKS password, I was greeted with the GRUB error:

Enter passphrase for hd0,gpt2 (88f0c4e-0ac3-...):
Attempting to decrypt master key...
Slot 0 opened
error: disk `lvmid/WcGvED-Lxfv-.../XJQhB6-zsPJ-...` not found.
Entering rescue mode...
grub rescue> 

What I have done
As far as I can undertand the situation, grub is able to handle/decrypt LUKS 1 /dev/sda2 just fine. The issue seems to be something with LVM.
The Path of the lvmid that grub can't find matches the path to the LV t45-root.

I can boot via the arch-iso.
I then can decrypt /dev/sda2 (cryptsetup luksOpen /dev/sda2 cryptlvm)
I mount the following:
- /dev/mapper/t45-root > /mnt
- /dev/mapper/t45-home > /mnt/home
- /dev/sda1 > /mnt/efi

With arch-chroot /mnt I can enter the system.

Inside the system, I tried several /etc/mkinitcpio.conf and /etc/default/grub configurations (see commented part).

Reinstalling the packets grub, linux and linux-headers does not solve my issue.

Whenever I run `grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --recheck`
I get the error

grub-install: error: disk 'lvmid/WcGvED-Lxfv-.../XJQhB6-zsPJ-...' not found.

Whenever I run `grub-mkconfig -o /boot/grub/grub.cfg`
I get the error:

/user/bin/grub-probe: error: disk 'lvmid/WcGvED-Lxfv-.../XJQhB6-zsPJ-...' not found.

The command `mkinitcpio -p linux` has only the "usual warnings" for missing firmwares, and exits with `Image generated successful`

In one desperate attempt to solve the Issue, I cleared the existing GRUB entry from the UEFI boot manager with `efibootmgr -B -b 12` where 12 was the ID of the GRUB entry.
Because grub-install fails, I have no Grub-entry in the UEFI boot manager anymore.

As far as I can see, some people who had the `disk not found` error tried to use LUKS Version 2 with Grub. I made sure to check, that /dev/sda2 is still Luks Version 1.

I can not see what changed to cause this problem. I didn't even update the system in the session before the error occurred.
And I can not understand why grub can know that the root-partition is t45-root, but on the other hand can't find it. (But that Is just my limited understanding of Grub).

If you have any tips, suggestion or anything I can look into, I would really appreciate it. My knowledge is at its limit.

Thank you.

Last edited by user371 (2023-05-11 22:22:18)

Offline

#2 2023-05-13 14:24:41

user371
Member
Registered: 2023-05-11
Posts: 3

Re: Grub can't find LV for root partition: disk `lvmid/.../...' not found.

This seems to be a complex error.
After days of no working Laptop, frustration and hate, I came to the conclusion that an encrypted initramfs-linux is probably worth nothing at all. And since GRUB has no LUKS2 support, and LUKS1 is now insecure https://mjg59.dreamwidth.org/66429.html, I don't want to use GRUB anyway.

I can now use systemd-boot (as backup) and UEFI Firmware Boot Manager directly (my 1st. choice).

I may look into on how to encrypt initramfs later.

Last edited by user371 (2023-05-13 16:47:35)

Offline

#3 2023-06-21 12:54:57

calamity
Member
Registered: 2022-03-09
Posts: 3

Re: Grub can't find LV for root partition: disk `lvmid/.../...' not found.

Today I encountered the exact same problem which I also found the solution for. I don't understand why it works, but generating a new UUID for your LVM volume group, reinstalling GRUB and regenerating its config helps.

Here's how:

cryptsetup open /dev/<whatever> cryptlvm
lvchange -an /dev/<volume_group_name>/*
pvchange --uuid /dev/mapper/cryptlvm    // This is probably not necessary. Leaving it anyway, just in case…
vgchange --uuid <volume_group_name> 
lvchange -ay /dev/<volume_group_name>/{<logical_volume_name1>,<logical_volume_name2>,<logical_volume_name3>}    // You may use lvdisplay if you forgot the names.

Mount the according partitions, arch-chroot, run grub-install and grub-mkconfig, exit, unmount, reboot.

Offline

#4 2023-06-21 14:21:22

user371
Member
Registered: 2023-05-11
Posts: 3

Re: Grub can't find LV for root partition: disk `lvmid/.../...' not found.

Thank you for your message and findings.
I would have never thought that regenerating the UUID could help on this issue.

I'm glad it resolved your issue. If I go back to grub, I will give your solution a go.

Offline

#5 2023-06-25 21:17:35

pxeger
Member
Registered: 2020-08-26
Posts: 4

Re: Grub can't find LV for root partition: disk `lvmid/.../...' not found.

I have exactly the same problem (except that I am using BIOS, not UEFI). I think it must be a bug in grub or something because I'm using an installation script which worked perfectly a few months ago.

Regenerating the UUID and reinstalling didn't help me - I get the exact same error message in grub (but with a different LVM UUID!) calamity, are you sure that's what you did that fixed it?

Last edited by pxeger (2023-06-25 21:18:33)

Offline

Board footer

Powered by FluxBB