-
Recompilar grubx64.efi para que busque grub.cfg en una ubicación determinada
Si queremos que grub cargue el archivo grub.cfg desde una carpeta específica no estándar, deberemos compilarlo manualmente con esa configuración:
grub-mkimage \ -O x86_64-efi \ -o grubx64.efi \ -p '(hd0,gpt1)/EFI/OpenWrt' \ part_gpt fat normal configfile search search_fs_file echo
También podemos llamarlo bootx64.efi y hacer que busque directamente en /EFI/OpenWrt/grub.cfg:
grub-mkimage \ -O x86_64-efi \ -o bootx64.efi \ -p '(hd0,gpt1)/EFI/OpenWrt' \ part_gpt fat normal configfile search search_fs_file echo
Si sólo queremos cambiar la ruta, sin compilar nada, la forma más parecida a como Debian lo hace es no recompilar a mano con grub-mkimage, sino usar grub-install con –bootloader-id=OpenWrt. En sistemas UEFI, Debian instala GRUB bajo \EFI\debian\grubx64.efi por defecto, y grub-install permite cambiar ese identificador con –bootloader-id=ID, que es precisamente lo que determina el subdirectorio bajo EFI. Lo haríamos así:
1. Crear imagen FAT32
dd if=/dev/zero of=/tmp/esp.img bs=1M count=64 sudo mkfs.vfat /tmp/esp.img
2. Montarla como loop
sudo mkdir -p /efi sudo mount -o loop /tmp/esp.img /efi
3. Instalar grub ahí
sudo grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=OpenWrt
Ese archivo grubx64.efi, una vez cargado por la EFI, buscará el archivo grub.cfg en la misma partición desde la que se cargue grubx64.efi, pero en la carpeta /EFI/OpenWrt/