The
df -h command identifies mounted filesystems and their mount points, which is essential for locating the correct root and boot partitions before repairing GRUB. By mapping these device paths to their corresponding block devices, you can accurately target the installation during a chroot environment. This process ensures that GRUB installs to the correct disk rather than a temporary or incorrect partition.
Understanding Filesystem Layout with df -h
When GRUB fails to boot, the first diagnostic step is often verifying where your system files reside. The
df -h command provides a human-readable list of all currently mounted filesystems. Unlike
lsblk, which shows the block device hierarchy,
df -h tells you exactly where directories like
/,
/boot, or
/boot/efi are located in the live environment.
Run
df -h in your terminal. Look for the output lines corresponding to your root partition (usually mounted at
/) and your EFI System Partition if you are using UEFI. Note the Device column (e.g.,
/dev/sda1 or
/dev/nvme0n1p2). These identifiers are critical because GRUB must be installed to the specific drive containing the bootloader, not just any partition.
If you are dealing with a complex setup, such as one described in
How is the grub boot menu presented if the gpt looks for efi system partition, knowing the exact mount point of the EFI partition is vital. A mismatch here will cause the repair to fail silently or install the bootloader to the wrong disk.
Preparing the Chroot Environment
Simply identifying the partitions is not enough; you must enter them to run installation commands as if you were inside the broken system. This requires creating a chroot environment. Without this step, package managers and GRUB utilities will interact with the live USB's kernel and libraries, leading to incompatible binaries and failed installations.
First, mount your root partition. If your root is on
/dev/sda2, run:
sudo mount /dev/sda2 /mnt
Next, mount the boot and EFI partitions if they are separate. For UEFI systems, mount the EFI partition to
/mnt/boot/efi. For BIOS systems, ensure
/boot is mounted if it is on a separate partition. Then, bind the necessary virtual filesystems so the chroot has access to hardware and process information:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
Now, change root into your mounted system:
sudo chroot /mnt
You are now operating within the context of your installed Linux distribution. Any command you run affects the installed system, not the live USB.
Reinstalling GRUB Correctly
Once inside the chroot, you can reinstall GRUB. The command varies slightly depending on whether you are using BIOS or UEFI firmware.
For BIOS systems, specify the disk device (not the partition number) in the final argument:
grub-install /dev/sda
For UEFI systems, you must specify the directory where the EFI partition was mounted and the target platform:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
After installation, update the GRUB configuration file to reflect any changes in UUIDs or mount points detected by
df -h:
update-grub
This step regenerates the
grub.cfg file, ensuring that the bootloader knows how to find the kernel and initramfs images. If you have multiple kernels or custom entries, this command will consolidate them into a single bootable configuration.
Verifying the Repair
Exit the chroot environment by typing
exit. Unmount the filesystems in reverse order to prevent data corruption:
sudo umount /mnt/run
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/boot/efi
sudo umount /mnt
Reboot the machine. If successful, the GRUB menu should appear, allowing you to select your operating system. If the issue persists, check the
Linux Breaks Windows 11 Boot guide for insights on multi-boot conflicts that might interfere with GRUB's detection logic.
Frequently Asked Questions
Why does df -h show different device names than lsblk?
df -h displays the device name associated with the current mount point, which may differ from the raw block device shown in
lsblk if LVM or software RAID is used. Always trust the device listed in
df -h for the specific mount point you are targeting, as it reflects the active logical path the kernel is using.
Can I repair GRUB without chrooting?
No, attempting to run
grub-install from a live USB without chrooting will install the bootloader to the live environment's configuration, not your installed OS. You must chroot to ensure the bootloader interacts with the correct kernel headers, initramfs, and configuration files of the target system.
What if my EFI partition is not mounted at /boot/efi?
Check your
/etc/fstab inside the chroot to see where the EFI partition is actually mounted. If it is mounted elsewhere, adjust the
--efi-directory flag in the
grub-install command to match that path. Using the wrong directory will result in an error stating that the EFI partition could not be found.
Does df -h help identify swap partitions?
While
df -h lists mounted filesystems, swap partitions are typically not mounted and thus do not appear in its output. Use
swapon --show or
lsblk to identify swap devices if you need to troubleshoot memory-related boot issues, but they are not directly involved in GRUB installation.
How do I fix permissions if chroot fails?
If
chroot returns a "Permission denied" error, ensure you ran the command with
sudo. Additionally, verify that the root partition is correctly mounted and readable. In rare cases, SELinux contexts may block access; temporarily setting SELinux to permissive mode can help diagnose permission-related failures during the chroot process.