2 votes

Créer une image bootable iPXE UEFI pour QEMU/Libvirt avec un next-server et un nom de fichier personnalisés

Je peux créer une VM avec libvirt/qemu pour démarrer en mode UEFI. Je sais qu'il fait iPXE par défaut, mais je veux créer/modifier une image iPXE afin d'outrepasser le mode filename y next-server propriétés.

Comment puis-je faire une telle chose ?

EDIT :

J'ai essayé ce qui suit :

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

Dans le répertoire ipxe/src, créez un script iPXE script :

Contenu du fichier 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

Construire l'image avec le script intégré :

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

Construire l'image :

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"

Je crée ensuite une VM en spécifiant ce fichier usb.img sur le périphérique de stockage de la VM. Il démarre iPXE, imprime le fichier filename y next-server se substitue, obtient l'IP par DHCP, puis tente de démarrer à partir du serveur, obtient le bootloader correspondant, puis lance le Grub Grub, car il semble qu'il n'essaye pas de télécharger un quelconque grub configuration de next-server (vérifié deux fois dans ses journaux, il n'enregistre que les bootx64.efi.0 et non grub.cfg comme s'il ne redirigeait pas le démarrage PXE vers le second serveur.

2voto

dres Points 338

Au moins sous Debian, les images ROM iPXE utilisées par qemu sont situées à l'adresse suivante /usr/lib/ipxe y /usr/lib/ipxe/qemu selon le NIC virtuel que vous utilisez dans votre VM.

Télécharger le code source de l'iPXE, y apporter vos modifications, construire les images ROM et remplacer les images standard par vos images personnalisées.

1voto

Clearer Points 369

IPXE a plus de fonctionnalités que le bootloader moyen, dans ce cas, lors du démarrage de Grub, Grub essaiera de charger la configuration à partir du même emplacement que celui à partir duquel il a été démarré, mais cela ne fonctionne pas en raison des fonctionnalités mentionnées précédemment.

Pour contourner ce problème, assurez-vous de construire iPXE avec la bonne configuration, dans ce cas, il s'agit de CONFIG=qemu qui fait #define EFI_DOWNGRADE_UX (page avec quelques détails : https://bugs.launchpad.net/maas/+bug/1789319/comments/16 il existe des listes de diffusion avec plus de détails)

En ce qui concerne les configurations nommées, voir https://ipxe.org/appnote/named_config

Vous pouvez alors le construire en tant que ROM pour remplacer l'original, soit en remplaçant le fichier original, soit en fournissant le chemin vers la ROM en ligne de commande. D'autres moyens sont de chaîner de l'original vers le nouveau, ou comme vous le faites maintenant de construire un périphérique usb.

Je pense que vous pouvez même l'avoir dans votre cible pour éviter l'étape de construction manuelle de l'image : make bin-x86_64-efi/ipxe.usb EMBED=chain.ipxe CONFIG=qemu

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X