J'essaie de démarrer PXE des clients UEFI. Ma configuration actuelle pour les clients BIOS utilise pxelinux.0 avec un fichier pxelinux.cfg/default comme ceci:
DEFAULT vmlinuz-3.8.0-25-generic
APPEND initrd=initrd.img-3.8.0-25-generic root=/dev/nfs nfsroot=10.17.76.1:/var/lib/tribble/ephemeral ip=dhcp ro nomodeset
Mais j'ai du mal à faire la même chose avec UEFI, parti, car il y a tellement d'approches différentes qui peuvent être adoptées, et il y a si peu de bonne documentation.
Suite à cela guide sur le démarrage PXE de netboot mini.iso sur UEFI , j'ai pu démarrer PXE dans le programme d'installation, mais je n'ai pas encore trouvé le moyen d'adapter ces instructions à mon cas d'utilisation.
Donc, il y a peu de choses que je recherche:
Quel chargeur de démarrage est recommandé pour le démarrage PXE de clients UEFI?
Pouvez-vous me donner un exemple concret d'utilisation dudit chargeur de démarrage pour démarrer PXE avec un client UEFI dont le fichier rootfs est exporté via NFS?
J'ai vu de nombreux tutoriels référençant les modules pxe et pxecmd , mais ceux-ci ne sont pas présents sur Ubuntu 13.04 ... sont-ils obsolètes, et si oui, qu'est-ce qui les remplace?
Options envisagées:
Utilisez syslinux.efi
Utilisez elilo
Utilisez grub2
Utilisez le chargeur de stub EFI Linux (un peu pénible, car nous aurions à compiler notre propre noyau avec des paramètres de démarrage codés en dur)
Dans cet océan d'options, j'espère trouver une solution à faible risque qui continuera d'être bien prise en charge par Ubuntu.
Comment faire pour qu'EFI se lance sur le net?
Vous n’avez besoin d’aucun logiciel supplémentaire pour permettre à EFI de démarrer une session Netboot. Tout ordinateur EFI peut être configuré pour démarrer une session PXE/DHCP SI il possède une carte réseau qui prend en charge le protocole UNDI/PXE. La plupart des cartes modernes ont un tel support.
Pour activer le démarrage sur réseau, vous devez accéder au menu de maintenance du gestionnaire de démarrage EFI et à "Ajouter une option de démarrage". Sur l'écran, vous voyez la liste des périphériques à partir desquels démarrer. Au moins l'un d'entre eux doit être de la forme:
Load File [Acpi(PNP0A03,0)/Pci(5|0)/Mac(00D0B7A6FC25)]
qui représentent une carte Ethernet (adresse Mac). Si vous ne disposez pas de cette option, cela signifie que votre ordinateur ne possède pas de carte réseau ou que la ROM optionnelle n'est pas prise en charge par UNDI/PXE.
Vous devez sélectionner cette option et lui attribuer un nom logique tel que "netboot", par exemple. Ensuite, vous quittez le menu de maintenance et revenez au menu principal. Vous avez maintenant une nouvelle option du menu de démarrage. Si vous sélectionnez 'Netboot', EFI lancera la demande de découverte PXE/DCHP et recherchera un serveur pour obtenir une adresse IP.
Du côté du serveur, vous pouvez utiliser un serveur DHCP standard.
Netboot avec PXE
EFI a un support intégré pour PXE. En fait, il essaie d'abord PXE, puis DHCP par défaut, lorsqu'il ne trouve pas de serveur PXE valide.
Un package de serveur PXE est disponible à partir de Linux/ia32, mais ce package ne possède pas les extensions nécessaires pour communiquer avec le côté EFI.
Il n’est pas nécessaire d’utiliser des options spéciales ou des indicateurs de compilation pour que elilo fonctionne avec PXE au lieu de DHCP standard. Une fois netbooté, elilo détectera automatiquement s’il a été téléchargé via PXE ou DHCP et déterminera comment les fichiers suivants sont demandés.
Vous avez besoin d'une version spéciale du serveur DHCPD développée par Internet Software Consortium ( http://www.isc.org ) avec un correctif spécial pour ajouter les extensions PXE. Malheureusement, à compter de la version 3.0xx, le correctif n’a pas encore été intégré à l’arborescence officielle. Il est supposé apparaître dans la version 3.1 du serveur dhcpd.
Dans tous les cas, le paquetage elilo contient un exemple simple illustrant comment vous pouvez configurer le fichier /etc/dhcpd.conf
pour un serveur DHCP compatible PXE à l'aide des extensions fournies dans le correctif. Vous pouvez regarder dans examples/dhcpd-pxe.conf
. La syntaxe est très différente de celle d’un serveur DHCP standard.
Les éléments clés à garder à l’esprit sont les couches PXE utilisées par elilo pour demander les différents fichiers:
Layer 0 : to get the name of the boot loader (elilo.efi)
Layer 1 : to get the name of the elilo config file
Layer 2 : to get the name of the kernel image
Il y a une distinction IMPORTANTE entre ces couches. Les deux premiers (0,1) et demandés systématiquement alors que le dernier n’est utilisé que lorsque le fichier de configuration n’est pas trouvé, c’est-à-dire quel est le noyau par défaut à démarrer. Les fichiers sont toujours téléchargés via TFTP. Par conséquent, le serveur TFTP doit également être configuré (voir la section précédente pour plus d’informations à ce sujet).
Obtenir le fichier de configuration
Dans ce mode, elilo utilise la couche 1 PXE pour obtenir le fichier de configuration à utiliser. Par conséquent, cela doit être défini côté serveur. Elilo utilisera la séquence suivante pour rechercher un fichier de configuration:
- use the name provide by the PXE server Layer 1 or
- elilo-ia64.conf/elilo-ia32.conf/elilo-x86_64 or
- elilo.conf
Exemple de fichier elilo.conf
chooser=textmenu
default=install
delay=20
Prompt
message=boot-screens/elilo_menu.msg
f1=boot-screens/general.msg
f2=boot-screens/params.msg
relocatable
image=vmlinuz
label=install
description="Install"
initrd=initrd.gz
append="--"
read-only
image=vmlinuz
label=expert
description="Install [Expert mode]"
initrd=initrd.gz
append="priority=low --"
read-only
image=vmlinuz
label=rescue
description="Rescue"
initrd=initrd.gz
append="rescue/enable=true --"
read-only
Un autre
boot=/dev/sda1
delay=30
timeout=50
default=Gentoo
append="console=ttyS0,9600"
Prompt
image=/vmlinuz
label=Gentoo
root=/dev/sda2
read-only
image=/vmlinuz.old
label=Gentoo.old
root=/dev/sda2
read-only
Consultez également elilo.conf , et Gestion des chargeurs de démarrage EFI pour Linux: avec ELILO
Elilo s'arrête au premier match. Avec PXE, elilo n'essaie pas de télécharger un fichier de configuration nommé d'après l'adresse IP attribuée, contrairement à DHCP, car la configuration du serveur PXE est suffisamment flexible pour ce faire.
Obtenir l'image du noyau
Lorsqu'il n'y a pas de fichier de configuration, elilo utilisera le nom du noyau renvoyé par PXE Layer 2. S'il n'est pas spécifié, il utilisera par défaut "vmlinux".
Récupération du ramdisk initial
Le nom de fichier du disque mémoire DOIT provenir du fichier de configuration. Elilo n'utilise pas de couche PXE pour demander un nom par défaut.
Obtenir des informations sur l'adresse IP
Lorsque elilo est démarré sur le réseau, le module du système de fichiers réseau initialise certaines variables elilo avec les informations reçues du serveur DHCP. Au minimum, il a reçu l'adresse IP.
Les informations suivantes sont stockées dans les variables indiquées ci-dessous:
assigned IP address -> %I
assigned netmask -> %M
assigned domainname -> %D
assigned gateway -> %G
Ces variables peuvent être utilisées pour ajuster dynamiquement les arguments de ligne de commande passés au noyau.
Pour plus d'informations, voir PXE Linux et Implémentation du démarrage PXE
Source: HP
Seulement signifié comme questions "d'éveil":
L'UEFI sur ces clients est-il obligatoire? -
Vous ne pouvez pas désactiver UEFI sur chaque client et activer uniquement EFI sur ceux-ci? -
Il serait probablement plus facile de démarrer toutes les installations avec grub2.
Vous pouvez envisager de régler les paramètres du BIOS sur EFI-boot au lieu de UEFI-boot, car le double démarrage avec UEFI n’est pas très fiable, par exemple. Windows 7 ou Windows 8. Je connais certaines installations. Ubuntu avec UEFI-dual-boot Win7 est souvent tombé en panne dans gdm.