3.2 KiB
🛠️ GRUB EFI Repair Script
If you run Windows on Dual Boot with Linux, you may have faced issues like your windows partition overwrites the linux boot loader forcing user to log in on windows.
This script was created to solve that issue in UEFI based Linux systems.
A simple Bash script to reinstall GRUB on UEFI-based Linux systems and set the correct boot order.
⚠️ Requirements & Conditions
Before running this script, ensure your system meets all of the following conditions.
1. UEFI System Required
This script works only on UEFI systems. Legacy BIOS systems are not supported.
It uses:
grub-install --target=x86_64-efi
2. EFI Partition Must Be Mounted at /boot/efi
Your system must have an EFI System Partition (ESP) mounted at:
/boot/efi
The script expects this directory to exist:
/boot/efi/EFI
If your distribution uses a different mount point (such as /efi or /boot), adjust the script accordingly.
3. GRUB Must Be Installed and Used
This script only works with GRUB.
It does NOT support:
- systemd-boot
- rEFInd
- LILO
- vendor-specific boot managers
Running it on these setups will result in errors.
4. update-grub Must Exist
The script uses:
update-grub
This command is available only on Debian-based systems:
- Debian
- Ubuntu
- Linux Mint
- Kali
- MX Linux
It will not work on:
- Fedora / RHEL / CentOS / Rocky / AlmaLinux
- Arch Linux / Manjaro
- OpenSUSE
Those use grub2-mkconfig.
5. Bootloader ID Defaults to “Debian”
The GRUB installation uses:
--bootloader-id=Debian
Different distros use different EFI bootloader IDs:
- Ubuntu →
ubuntu - Fedora →
fedora - Linux Mint →
LinuxMint - Arch Linux →
arch
Update this value if needed.
6. Requires efibootmgr Support
The script modifies UEFI boot order using:
efibootmgr -o
This requires:
- Firmware that allows BootOrder modification
- Root access
Some cloud/VPS providers restrict this capability.
7. Must Be Run as Root
You must run the script with sudo or as root because it executes privileged commands:
grub-installupdate-grubefibootmgr
8. Multi-Boot Systems
If multiple OSes are installed (e.g., Windows + Linux), this script will set Debian GRUB as the first boot entry, overriding others.
9. Risk Warning
Changing GRUB/EFI settings can make a system unbootable if misconfigured.
Recommended:
- Keep a bootable USB handy
- Confirm your EFI mount point
- Back up important data
📜 Usage
Make the script executable:
chmod +x grub-fix.sh
Run the script:
sudo ./grub-fix.sh
Reboot when done.
✔ What the Script Does
- Verifies EFI directory presence
- Lists available EFI boot entries
- Reinstalls GRUB to the EFI System Partition
- Updates GRUB configuration
- Detects the Debian boot entry
- Sets Debian as the first boot option
- Completes cleanly
📌 Notes
This script is designed for Debian-based Linux systems with a standard EFI layout. It is not guaranteed to work on all Linux distributions.