GRUB repair

From Kaisen Linux

GRUB repair with CLI method

Once the system is installed but after the impossibility of installing GRUB on a system in UEFI, here is the procedure to follow for the installer according to your partitioning.

You can help yourself with Gparted software for this tutorial.

Only the CLI method will be presented, because it is the most efficient, relevant, and few tools or none can replace this method.

GRUB EFI

Classic partition

*sudo fdisk -l (Locate the EFI Linux partition and /)
*sudo mount /dev/sdX /mnt (X represents the drive letter)
*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 /dev/sdXY /mnt/boot/efi (X represents the drive letter, and the Y the EFI partition number, it should be 
the first)
*sudo apt install grub-efi-amd64
*sudo cp -rvf /usr/lib/grub/x86_64-efi /mnt/usr/lib/grub/ or sudo cp -rvf /usr/lib/grub/x86_64-efi-signed 
/mnt/usr/lib/grub/
*sudo chroot /mnt
*grub-install --target=x86_64-efi /dev/sdX
*update-grub (cancel the operation in progress at the time it makes Warning (impossible to update the GRUB entries via 
*os-prober which is normal in chrooted environment) 
*mv /boot/grub/grub.cfg.new /boot/grub/grub.cfg
*exit
*sudo reboot

Once the system has started, reinstall GRUB correctly with:

 sudo apt install grub-efi

The problem should be solved


LVM without LUKS encryption

*sudo fdisk -l (Locate the EFI Linux partition and /)
*sudo vgscan
*sudo vgchange -ay
*sudo mount /dev/mapper/name--vg-root /mnt (name--vg-root represents the name of the logical volume returned by the 
vgscan command)
*sudo mount /dev/sdXY /mnt/boot (mount boot partition)
*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 /dev/sdXY /mnt/boot/efi (mount the EFI partition often, this partition is often the first)
*sudo apt install grub-efi-amd64
*sudo cp -rvf /usr/lib/grub/x86_64-efi /mnt/usr/lib/grub/ or sudo cp -rvf /usr/lib/grub/x86_64-efi-signed 
/mnt/usr/lib/grub/ 
*sudo chroot /mnt
*grub-install --target=x86_64-efi /dev/sdX
*update-grub (close the terminal 20 seconds after the execution of the command, because it will normally run in a 
vacuum)
*exit
*sudo reboot 

CAUTION:

If the update-grub is spinning, after running sudo reboot, restart the live, and do the following steps:

*sudo vgscan
*sudo vgchange -ay
*sudo mount /dev/mapper/name--vg-root /mnt (name--vg-root represents the name of the logical volume returned by the 
vgscan command)
*sudo mount /dev/sdX /mnt/boot (mount boot partition)
*sudo mount --bind /dev /mnt/dev
*sudo mount --bind /proc /mnt/proc
*sudo chroot /mnt
*update-grub
*exit
*sudo reboot

Once the system has started, reinstall GRUB correctly with:

sudo apt install grub-efi

The problem should be solved


LVM with LUKS encryption

*sudo fdisk -l (Locate the EFI Linux partition and /)
*sudo cryptsetup luksOpen /dev/sdXY sdxy_crypt (X represents the drive letter, Y the partition / encrypted number)
*sudo vgscan
*sudo vgchange -ay
*sudo mount /dev/mapper/name--vg-root /mnt (name--vg-root represents the name of the logical volume returned by the 
vgscan command)
*sudo mount /dev/sdXY /mnt/boot (mount boot partition)
*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 /dev/sdXY /mnt/boot/efi (mount the EFI partition often /dev/sdX1)
*sudo apt install grub-efi-amd64
*sudo cp -rvf /usr/lib/grub/x86_64-efi /mnt/usr/lib/grub/ or sudo cp -rvf /usr/lib/grub/x86_64-efi-signed 
/mnt/usr/lib/grub/
*sudo chroot /mnt
*grub-install --target=x86_64-efi /dev/sdX
*update-grub (close the terminal 20 seconds after the execution of the command, because it will normally run in a 
vacuum)
*exit
*sudo reboot 

CAUTION:

If the update-grub is running in a vacuum, restart the system, and do the following steps:

*sudo fdisk -l (Locate the EFI Linux partition and /)
*sudo cryptsetup luksOpen /dev/sdXY sdxy_crypt (X represents the drive letter, Y the partition / encrypted number)
*sudo vgscan
*sudo vgchange -ay
*sudo mount /dev/mapper/name--vg-root /mnt (name--vg-root represents the name of the logical volume returned by the 
vgscan command)
*sudo mount /dev/sdX /mnt/boot (mount boot partition)
*sudo mount --bind /dev /mnt/dev
*sudo mount --bind /proc /mnt/proc
*sudo chroot /mnt
*update-grub
*exit
*sudo reboot 

Once the system has started, reinstall GRUB correctly with:

sudo apt install grub-efi

The problem should be solved




Return to home page