You are in emergency mode after an Omarchy update
Omarchy drops to emergency mode after an update. Boot a Limine snapshot, then repair the kernel cmdline, the LUKS selector, or the failed fstab mount.
Reboot and pick a dated snapshot entry in the Limine menu instead of the normal one. That almost always boots. Then remount root read-write, check systemctl --failed and journalctl -xb, and rebuild the boot image with limine-mkinitcpio. The usual causes are a UKI built without root=, a LUKS unlock parameter the initramfs does not understand, or a mkinitcpio run that failed during the update.
Two different screens get called “emergency mode” and they need different repairs, so read the text before you touch anything.
If you see ERROR: Failed to mount ... on real root followed by a line about being dropped into an emergency shell, and the prompt is [rootfs ~]#, you never left the initramfs. The kernel command line or the LUKS unlock failed.
If you see a message about being in emergency mode with a normal login prompt, systemd booted fine and a mount in /etc/fstab failed. That is usually /boot.
A third thing also uses the word: Hyprland 0.56 shows an emergency binds banner when your Lua config fails to load, reported in issue #8637. That is a desktop banner, not a boot failure, and your machine is running fine.
The fix
- Power cycle the machine and stop at the Limine menu. If you turned on direct boot, pick Limine from your firmware boot menu first.
- Choose a dated snapshot entry from before the update instead of the normal Omarchy entry. Omarchy takes a snapshot on every update, and snapshot entries point at a complete kernel and boot image, so they usually boot when the main entry does not. In issue #6894, @fowlie recovered this way after an upgrade was interrupted mid transaction. Not every snapshot is good: the reporter on issue #4781 had to go back to the second oldest one. On 4.0.4 there is a second option, since the kernel migration leaves your previous kernel installed as its own Limine entry next to
linux-omarchy. - In @fowlie’s report the snapshot came up read-only. Make it writable:
sudo mount -o remount,rw /
One thing to know before you edit anything. Omarchy 4’s initramfs boots snapshots through the btrfs-overlayfs hook, and limine-snapper-sync documents that writes made in that session land in a temporary layer and are discarded on reboot. The ESP is a separate partition, so a rebuilt UKI and /boot/limine.conf do survive. A line you add to /etc/default/limine does not. Plan to repeat step 5 once you are back on the real root, or do the repair from a live USB chroot as described below, where edits land on the real root.
- Find out what actually broke:
systemctl --failed
sudo journalctl -xb -p err
sudo limine-entry-tool --get-cmdline default
sudo grep cmdline: /boot/limine.conf
Do not read /proc/cmdline here. You booted the snapshot entry, so it shows the snapshot’s parameters, not the broken ones.
- If the
defaultcmdline fromlimine-entry-toolhas noroot=, or the normal entry’scmdline:line in/boot/limine.confhas nothing but boot cosmetics on it, pin the parameters yourself. This is the same checkomarchy-upgrade-to-quattroruns. Add a line to/etc/default/limine:
KERNEL_CMDLINE[default]+=" root=UUID=<your-root-uuid> rw rootflags=subvol=@"
Use findmnt -no UUID / to get the UUID. On an encrypted root add the unlock parameter too, then rebuild:
sudo limine-mkinitcpio
- On an encrypted root, check which unlock parameter you have. Omarchy 4 ships
HOOKS=(... block encrypt filesystems fsck btrfs-overlayfs)in/etc/mkinitcpio.conf.d/omarchy_hooks.conf. That classicencrypthook only readscryptdevice=. If the Quattro upgrade carried ard.luks.name=parameter over from an older systemd based setup, the initramfs ignores it and/dev/mapperstays empty. Replace it with the equivalent form and rebuild:
cryptdevice=UUID=<luks-uuid>:root root=/dev/mapper/root rw
This is issue #7222, still open as of 4.0.4.
- If the failure is a failed
boot.mountrather than root, your kernel modules or boot image are incomplete. Reinstall the kernel package behind the entry you boot and rebuild everything. On 4.0.4 that islinux-omarchy, which the kernel migration installs and puts first inBOOT_ORDER. On 4.0.3 and earlier it islinux:
sudo pacman -S linux-omarchy # or: sudo pacman -S linux
sudo mkinitcpio -P
sudo limine-update
- Reboot into the normal entry. If you ran
limine-updatewhile running from a snapshot, the new entry may be rooted on the snapshot. Restore the snapshot you were running from withomarchy-snapshot restorebefore you trust it, then checkmount | grep " / "showssubvol=/@. Once you are on the real root, redo step 5 if you needed it, since that edit did not survive the snapshot session.
On 3.x the same steps apply, except the Quattro cmdline problem in step 5 and 6 does not exist. The 3.x reports are about a failed mkinitcpio run leaving stale modules, so start at step 7.
Verify it worked
Boot the normal Omarchy entry with no menu tricks. Then run:
mount | grep " / "
systemctl --failed
cat /proc/cmdline
You want subvol=/@ on root, an empty failed list, and a command line that names your root filesystem. Confirm the UKI carries it too:
sudo objcopy -O binary --only-section=.cmdline \
/boot/EFI/Linux/omarchy_linux.efi /dev/stdout | tr -d '\0'
That is the same check omarchy-upgrade-to-quattro runs on itself in 4.0.4.
Why it happens
Omarchy boots a unified kernel image through Limine, so the command line that matters is the one embedded in the UKI on the EFI partition. /boot/limine.conf mirrors it, and the upgrade script checks both.
For the Quattro upgrade, PR #6951 (posted on behalf of dhh) reproduced the failure in a VM and measured it. The omarchy-defaults.conf drop-in appends to KERNEL_CMDLINE[default], which makes limine-entry-tool stop falling back to /proc/cmdline. On installs that predate the ISO pinning root=, a kernel bump in the same transaction can bake a UKI with no root= at all. The instrumented run found roughly ten seconds where that state existed before the upgrade repaired it. Ten seconds is short, but an upgrade that dies inside that window cannot boot. That PR was still open in September 2026.
The other family is a boot image that was never rebuilt. In issue #5026, @amlucas0xff traced pacman hook ordering: depmod runs before DKMS builds its modules, so mkinitcpio cannot find them, fails, and skips the UKI rebuild. What stays on the ESP is the previous image, and it wants a modules directory the kernel upgrade already removed. Issue #4605 is the same shape from a different angle, with the UKI build crashing on an x86-64-v2 only CPU. Issue #4192 is the same again, with vfat missing so /boot could not mount.
Collaborator @ryanrhughes said in issue #4781 that the update does check whether mkinitcpio succeeded, and that the fix for essentially everyone has been to trigger a rebuild. That matches what the reports show.
If that did not work
If no snapshot entry boots, or the Limine menu is gone entirely, use the Omarchy ISO as a live USB and chroot in. The one trap people hit is Btrfs. Mounting the top level gives you a directory of subvolumes and arch-chroot fails on it, as @wico-merkel described in issue #4192. Mount the root subvolume explicitly:
cryptsetup luksOpen /dev/nvmeXn1pY root # encrypted roots only
mount -o subvol=@ /dev/mapper/root /mnt
mount /dev/nvmeXn1pZ /mnt/boot
arch-chroot /mnt
Then run steps 5 through 7 inside the chroot.
If /etc/kernel/cmdline and the Limine files are missing altogether, one reporter on issue #4781 had to reinstall limine, rebuild DKMS modules, recreate the command line file, and then rebuild the boot image, in that order. DKMS has to build before mkinitcpio runs or the rebuild fails again.
If you are on NVIDIA and the rebuild reports missing nvidia modules, install the matching DKMS package before rebuilding. Note that modules belong in a drop-in under /etc/mkinitcpio.conf.d/, not in /etc/mkinitcpio.conf itself, per @ryanrhughes in issue #4781.
Evidence for the 4.x cmdline cases is thin in one respect: both #7222 and #6951 are open, no 4.0.x release notes list a fix for them, and most of the tracked reports are from 3.x. Treat the 4.x guidance as a repair, not a permanent fix.
Related
Upstream threads about this error
11 issues on the Omarchy tracker match this error cluster. Newest fixes often appear as comments on the most-discussed threads.
| Issue | State | Comments | Opened |
|---|---|---|---|
| #3154 3.1.5 update this morning bricked my machine | closed | 29 | 2025-11-04 |
| #1887 Black screen after post installation update on Thinkpad T460s | closed | 28 | 2025-09-22 |
| #4554 Upgrade issues on older CPU | closed | 27 | 2026-02-08 |
| #4192 Kernel 6.18.1-arch1-2 update breaks boot - missing vfat module prevents /boot mount · fixed by #5448 | closed | 9 | 2026-01-09 |
| #4781 Omarchy 3.4.0 breaks boot with LUKS encryption - emergency mode with locked root | closed | 9 | 2026-02-27 |
| #4827 [Enhancement] Auto-detect NVIDIA 580xx users & enforce DKMS + mkinitcpio MODULES during omarchy-update | closed | 3 | 2026-03-01 |
| #4648 Updating to 3.3.3 breaks everything | closed | 3 | 2026-02-19 |
| #4605 UKI Build Regression: Illegal Instruction (Exit Status 32) on x86-64-v2 Hardware | closed | 2 | 2026-02-14 |
| #4616 Install Package Site is empty and trying to install anything results in error | closed | 2 | 2026-02-16 |
| #5026 Boot failure: depmod runs before DKMS, leaving modules.dep stale for mkinitcpio | open | 1 | 2026-03-15 |
Accepted answers upstream
- [Enhancement] Auto-detect NVIDIA 580xx users & enforce DKMS + mkinitcpio MODULES during omarchy-update · answered by lukejmorrison
- Updating to 3.3.3 breaks everything · answered by filipon12
- Omarchy emergency mode after updating · answered by AR8XPRO
Questions people ask
- Is my data gone?
- No. Every case in the tracked issues was a boot image or kernel command line problem, not filesystem damage. Your Btrfs subvolumes are intact, which is why mounting them by hand from the emergency shell works.
- Does restoring a snapshot roll back my home directory?
- No. The Omarchy manual states a restore replaces the root filesystem only and leaves /home alone. Your ~/.config is also kept as-is, so config written by the newer version stays behind.
- Should I just reinstall?
- Not yet. Every tracked report was fixed by rebuilding the boot image, from a snapshot boot or a live USB chroot. Even the reporter on issue #4781 whose ESP was left empty recovered from the live USB without reinstalling.
Sources and credit
Fixes on this page were worked out by fowlie (Found the truncated cmdline line in /boot/limine.conf and the snapshot-boot repair path), gcarre (Traced the rd.luks.name against encrypt hook mismatch on encrypted roots), rubas (Reported that adding btrfs, md_mod, raid0 and dm_crypt to MODULES fixed the rebuild), amlucas0xff (Documented the depmod before DKMS hook ordering race). Text here is our own paraphrase; follow the links for the original threads.
- issueIssue #6894: System does not boot after upgrade to quattro · arrowcircle · 2026-08-14
- prPR #6951: Pin root= before the packages that can drop it · dhh · 2026-08-15
- issueIssue #7222: Quattro upgrade writes rd.luks.name while mkinitcpio uses encrypt hook, breaking encrypted root boot · gcarre · 2026-08-17
- issueIssue #4192: Kernel 6.18.1-arch1-2 update breaks boot - missing vfat module prevents /boot mount · KhlifiIsmail · 2026-01-09
- issueIssue #4781: Omarchy 3.4.0 breaks boot with LUKS encryption - emergency mode with locked root · folone · 2026-02-27
- issueIssue #5026: Boot failure: depmod runs before DKMS, leaving modules.dep stale for mkinitcpio · amlucas0xff · 2026-03-15
- issueIssue #4605: UKI Build Regression: Illegal Instruction (Exit Status 32) on x86-64-v2 Hardware · acraig78 · 2026-02-14
- issueIssue #8637: Hyprland reload-pause guard silently fails to prevent mid-update Lua reload, emergency mode banner during omarchy update · tecnarchico · 2026-08-27
- manualOmarchy manual: System snapshots · omarchy · 2026-09-16
- docslimine-snapper-sync README: btrfs-overlayfs hook and snapshot restore · Zesko · 2026-09-17