Назад | Перейти на главную страницу

Цепная загрузка syslinux с использованием grub2

Я создал ISO-образ гибридного компакт-диска syslinux / isolinux для загрузки устаревшей BIOS или eufi в зависимости от того, что необходимо. Устаревшая часть BIOS работает хорошо и работает много лет. Я использую самую новую (6.0.3) версию syslinux. Я использовал rhel7 efiboot.img, который я получил с компакт-диска rhel7 bood для загрузки части eufi, просто в качестве теста. Я могу загрузить этот ISO-образ компакт-диска в виртуальную машину с биос uefi.

Это помещает меня в оболочку grub2, что является ожидаемым поведением, поскольку я еще не создал пригодного для использования grub.cfg (только тот, который по умолчанию пришел с файлом изображения). По крайней мере, я могу загрузить этот компакт-диск в режиме 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 и использовал его в качестве основы для создания загрузочного компакт-диска с гибдридом, который загружается в режиме uefi, а также в устаревшем режиме BIOS. Чтобы создать меню загрузки, файл EFI / BOOT / grub.cfg просто необходимо адаптировать к вашим потребностям. Я думаю, что на самом деле здесь используется gummiboot / systemd-boot. Я использовал то же самое для настройки загрузки по сети uefi.