Fix Kernel Panic: VFS Unable to Mount Root Filesystem

Linux & Unix Intermediate 👁 19 views 📅 May 25, 2026

Kernel panic with 'VFS: Unable to mount root fs' indicates the kernel cannot find or mount the root filesystem. This guide covers causes and step-by-step recovery using initramfs repair, boot parameter changes, and filesystem checks.

Symptoms

During Linux boot, the system displays a kernel panic message similar to:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Other common variations include references to unknown-block(8,1) or unknown-block(253,0). The boot process halts, and the system drops to a limited shell or hangs indefinitely.

Root Causes

  1. Corrupted or missing initramfs/initrd – The initial RAM filesystem fails to load necessary drivers or modules for the root device.
  2. Incorrect root= boot parameter – The kernel is pointed to a wrong partition, device, or UUID.
  3. Filesystem corruption – The root partition has severe errors preventing mounting.
  4. Missing or misconfigured storage drivers – For SCSI, NVMe, or RAID controllers not included in initramfs.
  5. LVM or encryption issues – Volume groups not activated or LUKS passphrase prompt not appearing.

Step-by-Step Fix

1. Boot into Rescue Mode or Live USB

Use a Linux live USB or the distribution’s rescue mode. For Ubuntu/Debian, press Shift during boot to access GRUB, then select Advanced options > Recovery mode > root.

2. Identify the Root Device

Run lsblk and blkid to list partitions and their UUIDs. Note the correct root partition (e.g., /dev/sda2 or UUID=xxxx).

3. Check and Repair Filesystem

fsck -y /dev/sdX2

Replace /dev/sdX2 with your root partition. Use -f for a full check even if clean.

4. Rebuild Initramfs

Mount the root partition and chroot:

mount /dev/sdX2 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt

Then rebuild initramfs:

  • Ubuntu/Debian: update-initramfs -u -k all
  • RHEL/CentOS/Fedora: dracut -f
  • Arch Linux: mkinitcpio -P

Exit chroot (exit) and unmount: umount -R /mnt.

5. Verify GRUB Configuration

Check /boot/grub/grub.cfg or /etc/default/grub for the root= parameter. Ensure it matches the correct UUID or device. Regenerate GRUB:

  • UEFI: grub-mkconfig -o /boot/grub/grub.cfg
  • BIOS: grub2-mkconfig -o /boot/grub2/grub.cfg

6. Boot with Manual Parameters

At the GRUB menu, press e to edit the boot entry. Locate the line starting with linux and modify root= to use the correct UUID or device path (e.g., root=UUID=xxxx). Press Ctrl+X or F10 to boot.

Alternative Fixes

  • Add missing drivers: If using hardware RAID or custom storage, add the driver module to /etc/mkinitcpio.conf (Arch) or /etc/dracut.conf.d/ (RHEL) and rebuild initramfs.
  • LVM recovery: Boot live, activate volume groups with vgchange -ay, then mount logical volumes.
  • Encrypted root: Ensure cryptdevice= parameter is correct in GRUB and the initramfs includes encryption modules.
  • Reinstall GRUB: If bootloader is corrupted, reinstall: grub-install /dev/sdX.

Prevention

  • Regularly update initramfs after kernel or driver changes.
  • Use UUIDs instead of device names in /etc/fstab and GRUB.
  • Perform periodic filesystem checks (tune2fs -c 30 /dev/sdX2 sets check every 30 mounts).
  • Maintain backups of /boot and configuration files.
  • Test boot with a fallback kernel entry in GRUB.

Was this solution helpful?