В основном пункты меню grub создаются соответствующими операционными системами. Вы можете использовать такие вещи, как os-prober
или написать в пользовательский скрипт, но, вероятно, самый простой способ получить то, что вы хотите, — это связать -загрузку GRUB с другим GRUB, который загружается перед ним со своей собственной конфигурацией, содержащей что-то подобное в егоgrub.cfg
:
insmod part_gpt
insmod search_fs_uuid
insmod chain
menuentry "Debian" {
search --fs-uuid --no-floppy --set=root 1234-abcd
chainloader ($root)/EFI/debian/grubx64.efi
}
menuentry "Ubuntu" {
search --fs-uuid --no-floppy --set=root 1234-abcd
chainloader ($root)/EFI/ubuntu/grubx64.efi
}
menuentry "Windows" {
search --fs-uuid --no-floppy --set=root 1234-abcd
chainloader ($root)/EFI/MICROSOFT/BOOT/bootmgfw.efi
}
Где set root — это UUID ESP для каждого загрузчика. Они, наверное, все одинаковые.
Это также означает, что каждый загрузчик имеет свои собственные настройки и тему, а также расширенные записи и т. д.
Кажется, у вас есть какой-то исполняемый файл. В Debian (и, возможно, в других дистрибутивах )есть пакет call bin -utils. Он имеет инструменты для интерпретации содержимого этого типа файла. Версия по умолчанию в вашей системе, вероятно, будет работать только с файлами для той же архитектуры вашей ОС/оборудования. Но вы можете получить версии для многих других архитектур и, возможно, версию, которая поддерживает их все.