# Recovering from Linux Boot Problems # The system won't boot. Now what? - Can the firmware/UEFI/BIOS find a bootable device? - Does the boot loader (grub) run? - Does the boot loader find the `/boot` partition? - Does the root partition mount? Get a recovery/rescue/live image from which to boot. Most distros provide one. The Debian installer has a rescue mode. At the installer "boot:" prompt, enter `rescue/enable=true` (on a RedHat-derived system: `linux rescue`). Move through the first few steps of the installer. At what would normally be the disk partitioning stage, we can select a partition to mount, including partitions on RAID or LVM volumes. Once selected, installer dumps us into a shell on that partition. At that point, with our filesystem mounted, we must diagnose the problem. If we need to reinstall the boot loader on the master boot record, for example, run `grub-install '(hd0)'`. It may be necessary to remount a read-only filesystem as read-write: # mount -o remount,rw / To mount all filesystems found in `/etc/fstab`: # mount --all If we don't know the names of all physical partitions: # fdisk -l If we don't know the names of all LVM physical volumes, volume groups, or logical volumes, use `pvdisplay`, `vgdisplay` or `lvdisplay`. If we've mounted the root partition in at a temporary mount point, and now want to change it it as root: # chroot /mnt/tmproot Fix broken grub (assuming we have the final/real `/boot/` partition mounted): # grub-install /dev/sdX # grub-install --recheck /dev/sdX # grub-install --recheck /dev/sdX ## Repairing GRUB by mounting root ## Mount the root partition: # mount /dev/sdXN /mnt Bind mount other necessary partitioins: # for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done Use `parted` or `fdisk -l` to find our EFI partition. It will have an "esp" flag and/or "EFI" type. Mount this partition. # sudo mount /dev/sdXN /mnt/boot/efi Change to our real root: # chroot /mnt Try to update grub: # update-grub If that doesn't work, reinstall grub: # grub-install /dev/sdX # update-grub ### What `grub-install` and `update-grub` actually do ### `grub-install` should create the EFI boot entries. We can double-check this like: % efibootmgr -v `update-grub` (re)generates a grub config file at `/boot/grub/grub.cfg`. ## Links ## - https://paulgorman.org/technical/linux-boot.php - https://www.debian.org/releases/stable/i386/ch08s07.html.en - https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-basic-system-recovery.html