You are not logged in.
Hello,
I can't start my Archlinux installation correctly, when I start I go to GRUB, then I select Arch and there instead of asking me for the decryption password, I get the plymouth screen running, then I get the error:
[ TIME ] Timed out waiting for device /dev/disk/by-uuid/3cac9f29-3763-441e-9107-153a77b09c8f
[DEPEND] Dependency failed for /sysroot.
[DEPEND] Dependency failed for Initrd Root File System.
[DEPEND] Dependency failed for Mountpoints Configured in the Real Root.
[DEPEND] Dependency failed for Initrd Root Device.
[DEPEND] Dependency failed for File System Check on /dev/disk/by-uuid/3cac9f29-3763-441e-9107-153a77b09c8f.
[ OK ] Stopped target Basic System.
[ OK ] Reached target Initrd File Systems.
[ OK ] Stopped target System Initialization.
[ OK ] Started Emergency Shell.
[ OK ] Reached target Emergency Mode.
[...]
Cannot open access to console, the root account is locked.
I have a 512Gb NVME disk. For partitioning, I have the EFI paritition, a XBOOTLDR partition and a LUKS2 partition:
archiso# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
loop0
sda
├─sda1
└─sda2
nvme0n1
├─nvme0n1p1 510.8M 0% /efi
├─nvme0n1p2 285.5M 44% /boot
└─nvme0n1p3
└─cryptdev 472G 0% /var/tmp
/var/log
/var/lib/libvirt
/var/cache
/.snapshots
/home
/
I'd also like to point out that the main partition is formatted in BTRFS and that I've used PBKDF2 to ensure that my LUKS2 system is compatible with GRUB.
Here is my partition table:
archiso# cat /etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/mapper/cryptdev LABEL=archlinux
UUID=3cac9f29-3763-441e-9107-153a77b09c8f / btrfs rw,noatime,compress-force=zstd:1,ssd,space_cache=v2,subvolid=256,subvol=/@ 0 0
# /dev/mapper/cryptdev LABEL=archlinux
UUID=3cac9f29-3763-441e-9107-153a77b09c8f /home btrfs rw,noatime,compress-force=zstd:1,ssd,space_cache=v2,subvolid=257,subvol=/@home 0 0
# /dev/mapper/cryptdev LABEL=archlinux
UUID=3cac9f29-3763-441e-9107-153a77b09c8f /.snapshots btrfs rw,noatime,compress-force=zstd:1,ssd,space_cache=v2,subvolid=258,subvol=/@snapshots 0 0
# /dev/mapper/cryptdev LABEL=archlinux
UUID=3cac9f29-3763-441e-9107-153a77b09c8f /var/cache btrfs rw,noatime,compress-force=zstd:1,ssd,space_cache=v2,subvolid=259,subvol=/@cache 0 0
# /dev/mapper/cryptdev LABEL=archlinux
UUID=3cac9f29-3763-441e-9107-153a77b09c8f /var/lib/libvirt btrfs rw,noatime,compress-force=zstd:1,ssd,space_cache=v2,subvolid=260,subvol=/@libvirt 0 0
# /dev/mapper/cryptdev LABEL=archlinux
UUID=3cac9f29-3763-441e-9107-153a77b09c8f /var/log btrfs rw,noatime,compress-force=zstd:1,ssd,space_cache=v2,subvolid=261,subvol=/@log 0 0
# /dev/mapper/cryptdev LABEL=archlinux
UUID=3cac9f29-3763-441e-9107-153a77b09c8f /var/tmp btrfs rw,noatime,compress-force=zstd:1,ssd,space_cache=v2,subvolid=262,subvol=/@tmp 0 0
# /dev/nvme0n1p1 LABEL=ESP
UUID=C4D5-C42C /efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme0n1p2 LABEL=BOOT
UUID=C514-A880 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
For initramfs I use mkinicpio with systemd hooks:
archiso# cat /etc/mkinitcpio.conf
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(usbhid xhci_hcd)
MODULES=(btrfs)
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No RAID, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect modconf block filesystems fsck)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev modconf block filesystems fsck)
#
## This setup assembles a mdadm array with an encrypted root file system.
## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
# HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
## This setup loads an lvm2 volume group.
# HOOKS=(base udev modconf block lvm2 filesystems fsck)
#
## This will create a systemd based initramfs which loads an encrypted root filesystem.
# HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole sd-encrypt block filesystems fsck)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr and fsck hooks.
HOOKS=(base systemd plymouth keyboard autodetect microcode modconf kms block sd-vconsole sd-encrypt filesystems fsck)
# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used for Linux ≥ 5.9 and gzip compression is used for Linux < 5.9.
# Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()
# MODULES_DECOMPRESS
# Decompress loadable kernel modules and their firmware during initramfs
# creation. Switch (yes/no).
# Enable to allow further decreasing image size when using high compression
# (e.g. xz -9e or zstd --long --ultra -22) at the expense of increased RAM usage
# at early boot.
# Note that any compressed files will be placed in the uncompressed early CPIO
# to avoid double compression.
#MODULES_DECOMPRESS="no"
And GRUB is configured as such:
[root@archiso /]# cat /etc/default/grub
# GRUB boot loader configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="fbcon=nodefer rw rd.luks.allow-discards quiet bgrt_disable rd.luks.name=57886c42-8eea-4212-80d6-991d0fb5ae6f=cryptdev root=/dev/mapper/cryptdev splash vt.global_cursor_default=0"
GRUB_CMDLINE_LINUX=""
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos luks2"
# Uncomment to enable booting from LUKS encrypted devices
GRUB_ENABLE_CRYPTODISK=y
# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=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 `videoinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT=true
# Uncomment to disable submenus in boot menu
#GRUB_DISABLE_SUBMENU=y
# Probing for other operating systems is disabled for security reasons. Read
# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
# functionality install os-prober and uncomment to detect and include other
# operating systems.
#GRUB_DISABLE_OS_PROBER=false
[root@archiso /]# cat /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
insmod luks2
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod cryptodisk
insmod luks2
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha256
insmod btrfs
cryptomount -u 57886c42-8eea-4212-80d6-991d0fb5ae6f
set root='cryptouuid/57886c428eea421280d6991d0fb5ae6f'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/57886c428eea421280d6991d0fb5ae6f' 3cac9f29-3763-441e-9107-153a77b09c8f
else
search --no-floppy --fs-uuid --set=root 3cac9f29-3763-441e-9107-153a77b09c8f
fi
font="/@/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-3cac9f29-3763-441e-9107-153a77b09c8f' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root C514-A880
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=3cac9f29-3763-441e-9107-153a77b09c8f rw rootflags=subvol=@ fbcon=nodefer rw rd.luks.allow-discards quiet bgrt_disable rd.luks.name=57886c42-8eea-4212-80d6-991d0fb5ae6f:cryptdev splash vt.global_cursor_default=0
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-3cac9f29-3763-441e-9107-153a77b09c8f' {
menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-3cac9f29-3763-441e-9107-153a77b09c8f' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root C514-A880
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=3cac9f29-3763-441e-9107-153a77b09c8f rw rootflags=subvol=@ fbcon=nodefer rw rd.luks.allow-discards quiet bgrt_disable rd.luks.name=57886c42-8eea-4212-80d6-991d0fb5ae6f:cryptdev splash vt.global_cursor_default=0
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux.img
}
menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-3cac9f29-3763-441e-9107-153a77b09c8f' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root C514-A880
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=3cac9f29-3763-441e-9107-153a77b09c8f rw rootflags=subvol=@ fbcon=nodefer rw rd.luks.allow-discards quiet bgrt_disable rd.luks.name=57886c42-8eea-4212-80d6-991d0fb5ae6f:cryptdev splash vt.global_cursor_default=0
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux-fallback.img
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
insmod bli
fi
### END /etc/grub.d/25_bli ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
fwsetup --is-supported
if [ "$?" = 0 ]; then
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
fi
fi
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###
Finally, here are my boot entries:
[root@archiso /]# efibootmgr
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001
Boot0000* GRUB HD(1,GPT,4b54759e-e0c0-4008-b9fa-f2e24b1e01e3,0x800,0x100000)/\EFI\GRUB\grubx64.efi
Boot0001* UEFI: USB PciRoot(0x0)/Pci(0x8,0x3)/Pci(0x0,0x4)/USB(1,0)/CDROM(1,0x1d3000,0x48298)0000424f
For my purposes, I need my configuration to have the following characteristics:
LUKS2
BTRFS
Systemd instead of Busybox
GRUB is not mandatory but I'll need a bootloader afterwards and as it supports BTRFS snapshots I thought it would be a good choice.
Can you help me repair my system?
[EDIT]
archiso# blkid -s UUID
/dev/nvme0n1p3: UUID="57886c42-8eea-4212-80d6-991d0fb5ae6f"
/dev/nvme0n1p1: UUID="C4D5-C42C"
/dev/nvme0n1p2: UUID="C514-A880"
/dev/mapper/cryptdev: UUID="3cac9f29-3763-441e-9107-153a77b09c8f"
/dev/sda2: UUID="6665-2677"
/dev/sda1: UUID="2024-05-01-17-04-31-00"
Last edited by virgilggx (2024-05-19 14:51:16)
Offline
We need to know what the error is, what you're seeing is the result of the error, not the error itself. Get rid of the quiet and splash parameters, at least, then do you see more?
The actual grug config file is generally more useful, what you posted is just a file to configure grub-mkconfig
Your fstab is mounting the same partition to both /efi and /boot, and the lsblk output shows that nvme0n1p2 is empty. You are not actually using an XBOOTLDR partition. Since the ESP is at /boot, you are also not using any of GRUB's encryption features
Edit: your rd.luks.name entry seems to be formatted incorrectly, that's possibly causing your issue.
Last edited by Scimmia (2024-05-12 15:29:53)
Offline
We need to know what the error is, what you're seeing is the result of the error, not the error itself. Get rid of the quiet and splash parameters, at least, then do you see more?
The actual grug config file is generally more useful, what you posted is just a file to configure grub-mkconfig
Your fstab is mounting the same partition to both /efi and /boot, and the lsblk output shows that nvme0n1p2 is empty. You are not actually using an XBOOTLDR partition. Since the ESP is at /boot, you are also not using any of GRUB's encryption features
Edit: your rd.luks.name entry seems to be formatted incorrectly, that's possibly causing your issue.
I've fixed the /boot problem (GRUB is now installed there).
But I still have the same problem at startup.
I've updated my original post and added the GRUB configuration file.
I also corrected rd.luks.name and root but it still doesn't work.
Last edited by virgilggx (2024-05-12 19:06:16)
Offline
Alright, so it appears that it's trying to access the root filesystem before unlocking. It shouldn't matter, but why do you have both the sd-encrypt and encrypt hooks? The latter shouldn't be there.
When you gave the lsblk output, you skipped the UUIDs. Are you absolutely sure the UUID you have for rd.luks.name is correct?
When switching up partitions, did you regenerate the initramfs, or just move it? When was the last time it was regenerated?
Did you regenerate grub.cfg after fixing rd.luks.name?
Last edited by Scimmia (2024-05-13 00:33:35)
Offline
Alright, so it appears that it's trying to access the root filesystem before unlocking. It shouldn't matter, but why do you have both the sd-encrypt and encrypt hooks? The latter shouldn't be there.
When you gave the lsblk output, you skipped the UUIDs. Are you absolutely sure the UUID you have for rd.luks.name is correct?
When switching up partitions, did you regenerate the initramfs, or just move it? When was the last time it was regenerated?
Did you regenerate grub.cfg after fixing rd.luks.name?
Thank you for your reply, to answer your questions :
I've edited my initial post by adding the UUIDs of my partitions but it looks OK to me.
I removed the “encrypt” which was a mistake on my part.
I regenerate the initramfs every time I make a change (the time it takes to repair) and the latest one is the one generated by the configuration of my initial post.
Yes I obviously regenerated the grub config, it's on my initial post.
Last edited by virgilggx (2024-05-13 18:28:22)
Offline
Yes I obviously regenerated the grub config, it's on my initial post.
The initial post specifically shows that you didn't regenerate it. rd.luks.name is still wrong there.
Offline
virgilggx wrote:Yes I obviously regenerated the grub config, it's on my initial post.
The initial post specifically shows that you didn't regenerate it. rd.luks.name is still wrong there.
Thanks for your answer, can you tell me more about how I should write rd.luks.name? I have regenerated the configuration via grub-mkconfig.
[EDIT]
I managed to boot the machine cleanly by changing via ctrl+e “...:cryptdev” to “=cryptdev”. But I don't understand, I've run “grub-mkconfig -o /boot/grub/grub” several times... How can I fix this for good?
Last edited by virgilggx (2024-05-13 21:39:29)
Offline
It's "grub-mkconfig -o /boot/grub/grub.cfg" but you also have an ESP and a distinct /boot, how sure are you your GRUB is setup to read it's config from /boot and not from your /efi mount point?
cat /boot/grub/grub.cfg
cat /efi/grub/grub.cfg #If your setup is correct, this shouldn't exist
Offline
have you tried using a live usb, mounting and chrooting? it usually works well for fixing stuff, i messed up my system once and this worked like a charm. you should boot into the live usb, mount your drive, and chroot. here is an example:
mount /dev/DEVICE /mnt
arch-chroot /mnt
and fix your problem from there, you should hopefully have full control over your install, and you should be able to fix your install. you can try to delete/wipe the efi system partition (esp) and reinstall grub, make sure you follow the steps in the wiki to install grub. good luck!
Addicted to ricing.
Offline
It's "grub-mkconfig -o /boot/grub/grub.cfg" but you also have an ESP and a distinct /boot, how sure are you your GRUB is setup to read it's config from /boot and not from your /efi mount point?
cat /boot/grub/grub.cfg cat /efi/grub/grub.cfg #If your setup is correct, this shouldn't exist
Thanks, that solved all the problems.
Offline