💥 How I Fixed Pop!_OS Booting into Emergency Mode

in #blog6 months ago

💥 How I Fixed Pop!_OS Booting into Emergency Mode

Recently, my Pop!_OS system dropped into emergency mode on boot. The error messages weren’t very friendly — BPF: Invalid name, device-mapper: crypt: unknown target type, and FAT-fs: IO charset iso8859-1 not found — and I couldn’t use apt, dpkg, or even remount the root filesystem as read-write. Here's how I recovered the system step-by-step.

🧯 Symptoms

On boot, I saw these messages:


FAT-fs: IO charset iso8859-1 not found

BPF: Invalid name

Emergency shell prompt appeared (Press Enter for maintenance or Ctrl+D to continue)

Neither apt nor dpkg worked, and even update-initramfs failed with:

Could not find block device

🛠️ Step-by-Step Recovery

  1. Check Disk Visibility
    In emergency mode, I checked if the system recognized the disk:
fdisk -l
blkid

My root partition showed up as something like /dev/nvme0n1p3.

  1. Unlock the Encrypted Volume
    I realized the device was LUKS-encrypted but hadn't been unlocked properly. I did:

cryptsetup luksOpen /dev/nvme0n1p3 cryptroot
Then verified the unlocked volume:

lsblk

  1. Mount the Root Filesystem
    With the encrypted device mapped, I mounted it:

mount /dev/mapper/cryptroot /mnt
And prepared a chroot environment:

mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
  1. Chroot into the System
    I switched into the real root environment:

chroot /mnt

  1. Fix Initramfs and GRUB
    Inside the chroot, I rebuilt the initramfs and reconfigured the bootloader:
update-grub
  1. Check /etc/fstab
    I double-checked that /etc/fstab had the correct UUID for /, matching the output from blkid.

Example entry:

UUID=XXXX-XXXX / ext4 defaults 0 1

  1. Reboot
    After exiting the chroot and unmounting:
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt
reboot

And just like that — Pop!_OS booted normally again.

✅ Lessons Learned

If you see device-mapper: crypt: unknown target type, it’s usually a missing dm-crypt module or a failure to unlock LUKS.

Always have a Live USB handy — it’s the easiest way to recover from serious boot failures.

Familiarity with chroot can save you from a full reinstall.

##🧃 Bonus Tip
To avoid charset issues like:

FAT-fs: IO charset iso8859-1 not found

Update your EFI mount options in /etc/fstab to use UTF-8:

fstab
Copy
UUID=XXXX-XXXX /boot/efi vfat defaults,iocharset=utf8 0 2