Я могу создать виртуальную машину с 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 и замените стандартные образы на свои собственные.