Fix Kernel Panic: VFS Unable to Mount Root Filesystem

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

Kernel panic with 'VFS: Unable to mount root fs' occurs when the kernel cannot locate or mount the root filesystem. This guide covers causes and step-by-step recovery using a live CD.

Symptoms

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

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

The system fails to reach the login prompt and may hang or reboot. This occurs immediately after the kernel loads the initial RAM disk (initramfs/initrd).

Root Causes

  • Missing or corrupted initramfs/initrd: The initial RAM disk does not contain the necessary modules (e.g., filesystem driver, storage controller driver) to mount the root filesystem.
  • Incorrect root= parameter in kernel command line: The bootloader (GRUB) passes a wrong root device (e.g., wrong UUID or device name).
  • Filesystem corruption on root partition: The root filesystem is damaged and cannot be read.
  • Missing storage driver: The kernel lacks the driver for the storage controller (e.g., NVMe, SATA, RAID) in the initramfs.
  • Bootloader misconfiguration: GRUB configuration points to a non-existent or incorrect kernel or initramfs.

Step-by-Step Fix

Prerequisites

  • Boot from a live Linux USB/CD (e.g., Ubuntu Live, SystemRescue).
  • Identify your root partition using lsblk or fdisk -l.

Step 1: Check and Repair Filesystem

  1. Unmount the root partition if mounted: umount /dev/sdXY
  2. Run filesystem check: fsck -y /dev/sdXY (replace sdXY with your root partition, e.g., sda2).
  3. If errors are found and fixed, reboot and test.

Step 2: Verify Kernel Command Line

  1. Mount the root partition: mount /dev/sdXY /mnt
  2. Chroot into the system: chroot /mnt
  3. Check GRUB configuration: cat /boot/grub/grub.cfg | grep root=
  4. Ensure the root= parameter uses the correct UUID or device. Update /etc/default/grub if needed, then run update-grub (Debian/Ubuntu) or grub-mkconfig -o /boot/grub/grub.cfg (others).

Step 3: Rebuild Initramfs

  1. While chrooted, rebuild the initramfs:
    • On Debian/Ubuntu: update-initramfs -u -k all
    • On RHEL/CentOS/Fedora: dracut -f
    • On Arch: mkinitcpio -p linux
  2. Exit chroot: exit, then reboot.

Step 4: Reinstall Bootloader

  1. If GRUB is corrupted, reinstall it:
    • Mount the EFI partition (if UEFI): mount /dev/sdXY /mnt/boot/efi
    • Chroot: chroot /mnt
    • Reinstall GRUB: grub-install /dev/sdX (replace sdX with disk, e.g., sda).
    • Update GRUB: update-grub

Alternative Fixes

  • Use fallback initramfs: Some distributions include a fallback initramfs (e.g., initramfs-linux-fallback.img). Boot it from GRUB advanced options.
  • Boot with nomodeset: Add nomodeset to kernel parameters to rule out graphics driver issues.
  • Manual root mount: At GRUB, press 'e' to edit boot parameters and manually set root=/dev/sdXY (or UUID) and ro.
  • Reinstall kernel: If the kernel image is missing or broken, reinstall the kernel package via live environment.

Prevention

  • Always keep a live USB handy for recovery.
  • After kernel or driver updates, verify that initramfs rebuilds successfully.
  • Use UUIDs in /etc/fstab and GRUB instead of device names (e.g., /dev/sda1) to avoid boot failures due to device reordering.
  • Regularly backup GRUB configuration and critical boot files.
  • Test boot after each major system update before rebooting production systems.

Was this solution helpful?