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

Создайте загрузочный образ iPXE UEFI для QEMU / Libvirt с настраиваемым следующим сервером и именем файла

Я могу создать виртуальную машину с libvirt / qemu для загрузки в режиме UEFI. Я знаю, что по умолчанию используется iPXE, но я хочу создать / изменить образ iPXE, чтобы переопределить filename и next-server свойства.

Как я могу это сделать?

РЕДАКТИРОВАТЬ:

Я пробовал следующее:

git clone git://git.ipxe.org/ipxe.git

В каталоге ipxe / src создайте скрипт iPXE:

Содержимое файла ipxe / src / chain.ipxe:

#!ipxe
prompt --key 0x02 --timeout 2000 Press Ctrl-B for the iPXE command line... && shell ||
dhcp
set net0/filename /pxeserver/loader/uefi/bootx64.efi.0
set net0/next-server <IP>
show net0/filename
show net0/next-server
autoboot

Создайте образ с помощью встроенного скрипта:

make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe

Создайте образ:

truncate -s 3MiB usb.img
mkfs.vfat usb.img
mmd -i usb.img "::/efi"
mmd -i usb.img "::/efi/boot"
mcopy -i usb.img bin-x86_64-efi/ipxe.efi "::/efi/boot/bootx64.efi"

Затем я создаю виртуальную машину, указав этот usb.img на устройстве хранения виртуальной машины. Он загружает iPXE, печатает filename и next-server переопределяет, получает IP через DHCP, затем пытается загрузиться с сервера, получает соответствующий загрузчик, а затем запускает оболочку grub, поскольку кажется, что она не пытается загрузить какие-либо grub конфигурация из next-server (дважды проверил его журналы, он регистрирует только bootx64.efi.0 файл, а не grub.cfg файл вообще, как будто он не перенаправляет загрузку PXE на второй сервер.

По крайней мере, в Debian образы iPXE ROM, используемые qemu, расположены по адресу /usr/lib/ipxe и /usr/lib/ipxe/qemu, в зависимости от того, какую виртуальную сетевую карту вы используете в своей виртуальной машине.

Загрузите исходный код iPXE, внесите в него изменения, создайте образы ROM и замените стандартные образы на свои собственные.