
Я создал гибридный образ CD syslinux/isolinux для загрузки либо устаревшего BIOS, либо Eufi в зависимости от того, что нужно. Устаревший BIOS работает хорошо и работает уже много лет. Я использую новейшую версию syslinux (6.0.3). Я использовал rhel7 efiboot.img, который я получил с CD rhel7 bood, для загрузки части Eufi, просто в качестве теста. Я могу загрузить этот образ CD в виртуальной машине с UEFI BIOS.
Это перебрасывает меня в оболочку grub2, что является ожидаемым поведением, поскольку я пока не создал пригодный для использования grub.cfg (только стандартный, который был с файлом образа). Так что, по крайней мере, я могу загрузить этот CD в режиме uefi.
Я пытаюсь выполнить цепочку загрузки syslinux.efi через оболочку grub2, чтобы выяснить, смогу ли я вообще выполнить цепочку загрузки syslinux (и как это сделать), а затем посмотреть, сможет ли он загрузить меню, которое я использую для устаревшего BIOS.
Я использовал различные комбинации команд grub2, но я всегда получаю эту ошибку, что бы я ни пробовал. Поиск этой ошибки не дает много полезной информации
grub> set root='(cd0)'
grub> chainloader /syslinux/efi/syslinux.efi
grub> boot
Failed to locate root device to prep for file operations & ADV initialization
error: unknown error
grub>
Мне интересно, связана ли эта проблема с grub2 или файлом syslinux.efi, или это что-то совершенно другое.
Я не думаю, что это будет проблемой с efiboot.img, который я использую, поскольку он находится на компакт-диске, который, как известно, работает с UEFI.
Обратите внимание, что я думаю, что команда "chainloader" видит файл как что-то, что grub2 может потенциально использовать для загрузки. Если я использую другой файл или несуществующий файл, я получаю следующие ошибки:
grub> chainloader /isolinux/efi/libmenu.c32
error: cannot load image.
grub> chainloader /isolinux/efi/doesnotexist
error: file 'isolinux/efi/doesnotexist' not found.
Редактировать 9 августа 2019 г.
Я считаю, что это на самом деле невозможно с текущей версией syslinux (6.03). В качестве обходного пути я использовал загрузочный образ rhel7, скопировал каталог EFI и использовал его в качестве основы для создания загрузочного гибридного CD, который загружается как в режиме uefi, так и в режиме legacy bios. Чтобы создать загрузочное меню, файл EFI/BOOT/grub.cfg нужно просто адаптировать под ваши нужды. Я думаю, что на самом деле это использует gummiboot/systemd-boot. Я использовал то же самое для настройки сетевой загрузки uefi.