Dracut emergency shell after update

after a recent update linux has decided to break. Only the kernel versions before the update work (6.3.12-200.fc38.x86_64)
the error is

Warning: /dev/disk/by-uuid/e1ab5594-68e1-43df-9858-46bb6efd8686 does not exist

and the system enters a emergency shell

i’ve already updated the initramfs with the command sudo dracut --regenerate-all --force

the error showing before entering the emergency shell is

[226.787797] dracut-initqueue[469]: [-e "/dev/disk/by-uuid/e1ab5594-60e1-43df-9050-46bb6efd8686" ]
[226.789164] dracut-initqueue[469]: fi"
[226.7185361] dracut-initqueue[469]: Warning: dracut-initqueue: starting timeout scripts
[227.232178] dracut-initqueue[469]: Warning: dracut-initqueue: timeout, still waiting for following initqueue hooks: 
[227.234226] dracut-initqueue[469]: Warning: /lib/dracut/hooks/initqueue/finished/98-crypt.sh: "I-e /dev/disk/by-id/dm-uuid-
[227.235962] dracut-initqueue[469]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2fdisk\x2fby-uuidx2felal 
pysetup service 2>/dev/null; then

note: this is copied from a photo so might contain errors

1 Like

Hi @youpie ,

Can I request you to list the contents of your current initramfs using following command and paste the contents?

sudo --login lsinitrd /boot/initramfs-$( name --kernel-release).img

I believe it is the empty etc/fstab.empty file in your current sudo ls -i -l -h -F -Z /boot/initramfs-$( uname --kernel-release).img causing this issue.

The boot process is having challenges identifying your root device and root filesystem

Please help me with your inputs

Why do you use —login?

I am just curious as i never see that used in scripts.

Hi @barryascott ,

The option --login creates a login shell when executing the command following the sudo command. I want my .profile file to be read and apply my environment customizations if any I have when executing commands

Regards,
Ramu Mohan Srinivasan Radhakrishnan

Understand.

In a production environment that would usually be unsafe to do in my experience. But this is off topic.

Thanks a lot for your inputs @barryascott . I will make a note of the same moving forward

this is the output of a working kernel version (initramfs-6.3.12-200.fc38.x86_64.img): working version

and this is the output of a non working kernel version (initramfs-6.4.10-200.fc38.x86_64.img): not working version

note: name --kernel-release did not work so i entered the image name of the kernels directly

Hi @youpie ,

Are you able to get at the bootloader prompt ( this is the grub2 prompt ) ?

grub>

This is done by pressing Esc or any other equivalent key specific to your system when the system powers up. You might want to determine the hard disk on which Fedora is installed. This can be done by typing the following sequence of command at the grub2 prompt

Determine the filesystem on each partition

for DISKNO in {1..10} ; do for PARTNO in {1..120} ; do ls (hd$DISKNO,gpt$PARTNO) ; ls (hd$DISKNO,gpt$PARTNO)/ ; done ; done 

I am making few assumptions in the aforementioned command. You have atleast 1 hard-disk and you are using GUID partition scheme to partition your disks . Please help me with output from above command.

Once the root partition has been determined following sequence of commands can be typed at the grub prompt

grub>

to successfully boot and login to the installed system

# i assume your boot partition is on first hard-disk and first partition. Please make
# the appropriate changes
# I also assume your root mounted at / is on third partition /dev/sda3. This is obtained from
# aforementioned command
linuxefi (hd0,gpt1)/vmlinuz-6.4.10-200.fc38.x86_64 root=/dev/sda3 rootfstype=ext4 rootfsdelay=3600 rd.debug rd.udev.debug udev.log_level=debug systemd.log_level=debug systemd.hostname=youp-lamb
initrdefi (hd0,gpt1)/initramfs-6.4.10-200.fc38.x86_64.img
boot

Please let me know if you were able to recover your system

Hello @ramumsrk & @barryascott ,
as per sudo’s manpage …

-i, --login
             Run the shell specified by the target user's password database
             entry as a login shell.  This means that login-specific resource
             files such as .profile, .bash_profile, or .login will be read by
             the shell.  If a command is specified, it is passed to the shell
             as a simple command using the -c option.  The command and any
             args are concatenated, separated by spaces, after escaping each
             character (including white space) with a backslash (‘\’) except
             for alphanumerics, underscores, hyphens, and dollar signs.  If no
             command is specified, an interactive shell is executed.  sudo at‐
             tempts to change to that user's home directory before running the
             shell.  The command is run with an environment similar to the one
             a user would receive at log in.  Most shells behave differently
             when a command is specified as compared to an interactive ses‐
             sion; consult the shell's manual for details.  The Command
             environment section in the sudoers(5) manual documents how the -i
             option affects the environment in which a command is run when the
             sudoers policy is in use.

and also of note and related …

Since environment variables can influence program behavior, sudoers pro‐
     vides a means to restrict which variables from the user's environment are
     inherited by the command to be run.  There are two distinct ways sudoers
     can deal with environment variables.

By default, the env_reset flag is enabled.  This causes commands to be
     executed with a new, minimal environment.  On AIX (and Linux systems
     without PAM), the environment is initialized with the contents of the
     /etc/environment file.

So how you use sudo determines what it will actually do with the command passed, and what environment it uses. Since Fedora uses PAM, it’s behaviour would be a bit different I would think, otherwise why note it in the manpage.

Hi @jakfrost ,

Thanks a lot for your inputs. I am going through the man page

hi, sorry for the late response, then I enter the first command in the grub command line I get the error:

error: ../../grub-core/script/lexer.c:352: syntax error.

error: ../../grub-core/script/lexer.c:352: Incorrect command.

error: ../../grub-core/script/lexer.c:352: syntax error.

I’ve tripple checked it and I didn’t make a typing error. my drive is a nvme drive and it’s the only drive in my system. I used the default fedora btrfs partition layout with luks encryption if that’s helps

Hi @youpie ,

Can I request you to share the output of following commands entered at grub prompt?

grub>ls

hey, the output of that command is
memdisk) (proc) (hd0) (hd0, gpt5) (hd0, gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1
I assume its hd0 gpt3 because it is /dev/nvme0n1p3 in linux

Sincere apologies for the delay in reply @youpie

Can I request you to try and help me with the listing on each of the disks and their associated partitions with the following commands at the grub prompt?

ls (hd?,gpt?)

ls (hd?,gpt?)/

hi,
you don’t have to apologize haha, i am also slow in responding. The problem however has been solved. after i entered these two commands:

linuxefi (hd0,gpt1)/vmlinuz-6.4.10-200.fc38.x86_64 root=/dev/sda3 rootfstype=ext4 rootfsdelay=3600 rd.debug rd.udev.debug udev.log_level=debug systemd.log_level=debug systemd.hostname=youp-lamb
initrdefi (hd0,gpt1)/initramfs-6.4.10-200.fc38.x86_64.img

like you suggested, the system first kernel panicked but after a restart it just suddenly started working on the latest kernel version. I don’t know if the command solved the issue or if it just resolved itself. either way, thank you so much for your help!

@youpie ,
Great to hear you’re back up and running! Can you please mark what you feel was the solution so some other :fedora: user can use your solution if they have a similar issue?

Thanks a lot for your inputs and feedback @youpie . Have a great time ahead exploring Fedora. Wishing you success in all your endeavours @youpie

1 Like