I have 2 disks (/dev/sda and /dev/sdb) on UEFI laptop. Both GPT.
sda1 - NTFS - Windows,
sda2 - FAT32 - EFI partition where is Windows Boot Manager and GRUB
sdb1 - NTFS - another windows
sdb2 - NTFS - My data
sdb3 - FAT32 - EFI partition
sdb4 - EXT4 - Debian
in EFI order i can see Windows Boot Manager and GRUB. I can change between then and thats working. I consider to use syslinux to boot to debian. I want to have syslinux on sdb3, I mounted that and copy these files to this partition at the location:
/EFI/SYSLINUX/initrd.img
/EFI/SYSLINUX/ldlinux.e64
/EFI/SYSLINUX/syslinux.cfg
/EFI/SYSLINUX/syslinux.efi
/EFI/SYSLINUX/vmlinuz
vmlinuz and initrd i copied from sdb4\boot and rename. syslinux.efi and ldlinux.e64 i copied from syslinux-6.03.tar.gz downloaded from http://kernel.org. syslinux.cfg i wrote and contents is
PROMPT 0
TIMEOUT 300
DEFAULT deb
LABEL deb
LINUX vmlinuz
APPEND ROOT=/dev/sdb4
INITRD initrd.img
then i added record to EFI via command
efibootmgr -c -d /dev/sdb3 -p 1 -l \\EFI\\SYSLINUX\\syslinux.efi -L "SYSLINUX2"
efiboot manager responded success and shows SYSLINUX2 as boot options but when i reboot computer (by reboot command) and goes to UEFI settings, there is no SYSLINUX2 option added. There are only GRUB and Windows Boot Manager. After next boot to debian, efibootmgr too responses only Windows Boot Manager and GRUB.
I have read that some people had problems with secure boot. I have disabled it and GRUB have not problem with this.
What is wrong? How to make efibootmgr setting persistent? Where i did mistake (if any)?
Best Answer
You're seeing a bug, and it's almost certainly not related to Secure Boot. I have several suggestions, but none is guaranteed to fix the problem:
-B
option toefibootmgr
) can also work around corrupted entries. Tryefibootmgr
alone, orefibootmgr -v
for more verbose output, to locate duplicate or unwanted entries. (Note that the firmware may re-create some automatically when you reboot. This may happen with network boot options or options to boot external media, for instance.)efibootmgr
doesn't work but a tool in another OS (likebcdedit
or EasyUEFI in Windows) or thebcfg
tool in an EFI shell will get the job done. Thus, you might try these tools instead ofefibootmgr
.EFI/BOOT/bootx64.efi
on x86-64 systems) can be used if nothing else is working; however, this filename will typically be the last one a computer tries to boot. Thus, if it's already booting via some other name (like the Windows boot loader,EFI/Microsoft/Boot/bootmgfw.efi
), you may need to back that up, rename your desired boot manager/loader to the currently-booting default, and reconfigure the new boot loader to offer to boot the one it's masquerading as using its new name. This is a bit of a juggling act at best, and not all EFI boot loaders for Linux can chainload to another EFI program, so it may not work properly. (I don't recall offhand if SYSLINUX can chainload another EFI program.)