Device stuck in emergency shell, /proc/ is not mounted but required for systemd-tmpfiles

I updated my system, there was a new kernel. After reboot, I got stuck in emergency shell with the following information on the screen.

mount: /run: mount(2) system call failed: Function not implemented.
dmesg(1) may have more information after failed mount system call.

/init: line 16: can't open /proc/cmdline: no such file

/proc/ is not mounted but required for successful operation of systemd-tmpfiles. Please mount /proc/. Alternatively, consider using the --root= or —image= switches.

Failed to parse kernel command Line, ignoring No such file or directory
Starting systemd-udevd version 253.4-1-arch 
:: running hook [udev]
: Triggering events.
Running in chroot, ignoring request.
Running in chroot, ignoring request.
Running in chroot, ignoring request.
:: running hook [keymap]
:: Loading keymap…done
:: mounting ‘’ on real root
mount: /new root; mount failed: Operation not permitted
You are now being dropped into an emergency shell.

I eventually got access to a Manjaro live usb where I ran the following commands to no success.

$ lsblk
Name      MAJ:Min       RM      SIZE       RO       TYPE       MOUNTPOINTS
loop0. 7:0 0 158.7M 1 loop /run/miso/sfs/livefs
loop1 7:1 0 880.8M 1 loop /run/miso/sfs /mhwdfs
loop2 7:2 0 926. 3M 1 loop /run/miso/sfs/desktopfs
loop3 7:3 0 680.9M 1 loop /run/miso/sfs/rootfs
sda 8:0 0 238.5G 0 disk
  |- sda1 8:1 0 238.5G
sdb 0 part 8:16 14.5G 0 disk /run/miso/bootmnt
 |-sdb1 8:17 2.7G 0 part
 |-sdb2 8:18 1 4M 0 part

~]S sudo manjaro-chroot -a
   grub-probe: error: cannot find a GRUB drive for /dev/sdb1. Check your device.map.
   grub-probe: error: cannot find a GRUB drive for /dev/sdb1. Check your device.map.
==> Mounting (ManjaroLinux) [/dev/sda1]
--> mount: (/mnt]

[manjaro@manjaro boot] mount /dev/sda1 /boot/efi 
mount: /boot/efi: mount point does not exist.
	dmesg(1) may have more information after failed mount system call.

[manjaro@manjaro boot]s mount | grep efi
efivarfs on /sys/firmware/efi/efivars type efivarfs … (more)
trying inside the manjaro-chroot terminal
$ grub-install
Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.
[manjaro /]# exit
exit
- -> umount: [/mnt]  /

// trying same command again in the normal terminal
[manjaro@manjaro ~]S grub-install
Installing for X86_64-efi platform. 
grub-install: error: cannot find EFI directory. 

[manjaro@manjaro ~ ]S mount | grep /boot/efi 
[manjaro@manjaro ~]S mount | grep /dev/efi 

[manjaro@manjaro ~ ]S sudo mount /dev/efi /mnt mount:
 /mnt: special device /dev/efi does not exist.
 dmesg(1) may have more information after failed mount system call.

$ sudo pacman -S linux510
warning: database file for 'core' does not exist (use '-Sy' to download) 
warning: database file for 'extra' does not exist (use '-Sy' to download) 
warning: database file for 'community' does not exist (use '-Sy' to download) 
warning: database file for 'multilib' does not exist (use "-Sy' to download)
error: target not found: linux510

[manjaro@manjaro ~]S sudo update-grub
usr/bin/grub-probe: error: failed to get canonical path of 'overlay'

These are the commands that I ran, which were suggested from other threads on this forum where users had also gotten stuck in emergency shells.

If anyone has any ideas about what I could try, I would be very thankful.
If you need more information, please ask also.

Mr. F

Hi @floating, and welcome!

I’m no expert and might be completely wrong here, but it almost looks, at least to me, that your kernel is missing somehow. Also, those commands aren’t correct. At least, most of them are redundant.

But I think you were going in the correct direction. I think you must install a kernel from chroot. So let’s try that:


How to chroot

  1. Ensure you’ve got a relatively new ISO or at least one with a still supported LTS kernel.

  2. Write/copy/dd the ISO to a USB thumb drive.

  3. When done, boot with the above mentioned USB thumb drive into the live environment.

  4. Once booted, open a terminal and enter the following command to enter the chroot encironment:

manjaro-chroot -a
  1. If you have more than one Linux installation, select the correct one to use from the list provided.

When done, you should now be in the chroot environment.

But, be careful, as you’re now in an actual root environment on your computer, so any changes you make will persist after a restart.

Also, be sure to read the messages. Errors are bad and potentially dangerous if you don’t pay attention to them, and ignore the incorrect ones.

In the chroot environment, reinstall the kernel:

mwhd-kernel --install linux515

This will install kernel version 5.15, which is LTS.

When it’s done with no errors, exit the chroot environment:

exit

…reboot and see if it helped. If there were errors, reply to this topic and paste/provide them. The same if this didn’t work.

Hope it helps!

1 Like

There are a hundred different reasons why you can strand in an emergency shell.

The solutions are also different.

First you need to investigate why you got stranded there.
:footprints:

1 Like

Something’s wrong here, you don’t seem to have esp/UEFI partition

Show this output for someone to be able to help…
inxi -v7azy

1 Like
System:
    Kernel: 6.1.29.1-Manjaro arch: x86_64 

Drives: 
    Local Storage: total: 252 GiB used: 0 kib 
    ID-1: /dev/sda maj-min 8:0  vendor .. model .. 
    
Partition: 
  Message: no partition data found
Swap:
  Alert: No swap data was found

Unmounted:
  ID-1: dev/sda1 maj-min: 8:1 size 238.47GiB fs: ext4 label: N/a uuid: xxx..
  ID-2: dev/sdb1 maj-min: 8:17 size 2.66GiB fs: iso9660 
  ID-3: dev/sdb2 maj-min: 8:18 size: 4MiB fs: vfat label: MISO_EFI

Hopefully this info can help, I got it from running the command on the live usb. Not from within the emergency shell.

Thank you for your response firstly, @Mirdarthos

I tried using command mhwd-kernal and I get command not found, weird.

I found another forum post where a commenter used sudo pacman -Sy linux515 instead of mhwd…

So I used this, with the knowledge that it might be more dangerous than the mhwd… command. (I do not have easy access to create another fresh live usb right now)

Here are the following errors from trying to install a new kernel from pacman


==> WARNING: cannot detect type of overlayfs root filesystem

==> WARNING: possibly missing firmware for module: ast
(Also for, wd719x, qla2xxx, qed, boa, aic94xx)

==> Image generation successful
(4/4) Updating Grub-bootmenu
/usr/bin/grub-probe: error: failed to get canonical path of ‘overlay’
Error: command failed to execute correctly 

This should be mhwd-kernel instead of mhwd-kernal

2 Likes

Very well spotted, a bad mistake by me :frowning:

[manjaro /]# mhwd-kernel --install linux515
Error: Please make sure if the given kernel(s) exist(s)
available kernels: 

This makes me think it wasn’t a Manjaro live USB. Either that or the USB is very old.

I’ve seen people doing this, and I know mhwd-kernel does this in the background, however I’ve never done this and can’t help you.

According to what I found online, this :point_up: makes me think the command wasn’t run in the chroot environment. So that makes me think you should try again, from scratch, but this time make absolutely sure there are no errors.

Update your mirrors:

pacman-mirrors -f 5 && pacman -Syyu

…in the chroot environment and try again.

2 Likes

I wasn’t able to run pacman-mirrors in the chroot

file "usr/bin/pacman-mirrors", line 20 in <module>
from pacman_mirrors import pacman_mirrors
ModuleNotFoundError: no module named 'pacman_mirrors;

pacman-mirrors works outside of the chroot shell.

Following some other guide online for how to fix pacman-mirrors, I tried to add 1 mirror myself and see if it improved anything.

  • Navigated to the mirror-list file: sudo nano /etc/pacman.d/mirrorlist
  • At the top of the file I added: Server = https://mirror.alpix.eu/manjaro/stable/$repo/$arch
  • I also did pacman -Syyu

Then staying inside the chroot shell I did

[manjaro /]# mhwd-kernel -li 
Currently running 6.1.29.1-Manjaro (linux61)
The following kernels are install in your system:
* linux510
* linux54
* linux59

[manjaro /]# mhwd-kernel --install linux515
::synchronizing package databases 
   core 100%
   extra , community, multilib 100%   
error: no targets specified (use -h for help)

I saw another possible error online where if the currently running linux kernel(linux61), and the installed linux kernels are different, the results of the mhwd-kernel -li. This can result in the error no targets specified when mhwd-kernel is run with --install. mhwd-kernel -i only works when you boot with a Manjaro kernel · Issue #49 · manjaro/mhwd · GitHub

Has been EOL for quite some time. Since Dec. 2020 already. Considering it shouldn’t be installed if your system is up-to-date, it would seem that it has been a long time since your last update. And considering Manjaro is a rolling-release distribution, of course it’ll cause breakage.

So you need to either:

  • Get a new USB, enter a chroot environment again, remove that older kernel, (re)install supported ones, do a complete system upgrade, handle all .pacnew file meerges, and hope and pray it works. Or
  • Make a complete backup of your system, and reinstall with a new ISO.

:man_shrugging:

1 Like