Réponses:
Voir Wikipedia: PXE
C'est ma compréhension!
PXE (côté client) a diffusé une demande d'adresse IP. Réponse du serveur DHCP avec les informations requises: IP, Next Server IP (TFTP server IP), pxelinux.0
(nom du fichier du chargeur d'amorçage PXE), ... etc
PXE (côté client) demande le pxelinux.0
fichier au serveur TFTP, le charge dans la RAM puis passe le contrôle à pxelinux.0
.
pxelinux.0
obtient le fichier de configuration de démarrage du serveur TFTP avec le nom:
(s'il n'existe pas, il essaie avec le suivant)
default
déposerChoix de l'utilisateur ou entrée de menu par défaut. pxelinux.0
demande le noyau et le RAMDisk correspondants au serveur TFTP et les charge dans la RAM.
Transmet ensuite les paramètres de démarrage et le contrôle au noyau chargé.
Le noyau charge les parties restantes à partir du serveur TFTP ou de tout autre serveur de protocole en fonction de ses caractéristiques / propriétés.
Il existe de nombreuses façons de configurer le serveur PXE, c'est l'une d'entre elles.
Ces instructions ont été testées sur Ubuntu 9.10 et Ubuntu 10.04 sur une vraie machine. Ils devraient être toujours valides avec seulement quelques modifications. (Mis à jour et testé pour Ubuntu 14.04 sur VirtualBox, vérifiez les révisions d'édition pour les anciennes versions)
Mon objectif était PartedMagic 4.5 , il devrait être similaire à Ubuntu ou à toute distribution Linux.
Installer les packages DHCP et TFTP
sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
Configuration DHCP
Modifier /etc/default/isc-dhcp-server
, interface Ethernet pour le service DHCP
INTERFACES="eth0"
Modifier /etc/dhcp/dhcpd.conf
ou /etc/ltsp/dhcpd.conf
il existe, configuration du service DHCP
Configurations spécifiques PXE: filename
&next-server
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.50 192.168.10.100;
option subnet-mask 255.255.255.0;
option routers 192.168.10.123;
option broadcast-address 192.168.10.255;
filename "pxelinux.0";
next-server 192.168.10.123;
}
Configurez une adresse IP statique pour eth0
, 192.168.10.123
dans mon cas, en utilisant le gestionnaire de réseau pour l'édition Desktop ou /etc/network/interfaces
pour l'édition Server.
auto eth0
iface eth0 inet static
address 192.168.10.123
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
Réinitialisez l'interface réseau:
sudo ifdown eth0
sudo ifup eth0
Redémarrez le service
sudo service isc-dhcp-server restart
Vérifier l'état
netstat -lu
Production
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:bootpc *:*
Configuration TFTP
Modifiez /etc/inetd.conf
, supprimez #<off>#
du début de la tftp
ligne ou ajoutez-le s'il n'est pas sous le #:BOOT:
commentaire (Ignorez ceci avec systemd, 15.10 et versions ultérieures)
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
Activer le service de démarrage pour inetd
sudo update-inetd --enable BOOT
Démarrer le service
sudo service openbsd-inetd restart
sudo service tftpd-hpa restart
Vérifier l'état
netstat -lu
Production
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:tftp *:*
Configuration des fichiers de démarrage PXE
Décompressez pmagic-pxe-4.5.zip
. Si ce pxelinux.0
n'est pas le cas, récupérez-le dans le sysliux-common
package installé sur /usr/lib/syslinux/pxelinux.0
, Syslinux Project ou Ubuntu Netboot Image .
Mettez-les dans une structure similaire.
/var/lib/tftpboot/
|-- pxelinux.0
|-- pxelinux.cfg/
| `-- default
`-- pmagic/
|-- bzimage
`-- initramfs
Modifiez /var/lib/tftpboot/pxelinux.cfg/default
, si nécessaire, des exemples de chemins: pmagic/bzimage
&pmagic/initramfs
DEFAULT partmagic
LABEL partmagic
MENU LABEL PartMagic 4.5
KERNEL pmagic/bzimage
APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
Configurer les autorisations correctes
sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \;
sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
Modifiez l'ordre de démarrage du BIOS une seule fois à l'aide de F9ou F12, pour une configuration permanente à partir de la configuration du BIOS DEL, F2ou F12. (Selon la marque de la machine)
Déplacer vers le haut: [PXE | NIC | LAN | Ethernet | Network]
.
inetutils-inetd
ou xinetd
peut être utilisé à la place de openbsd-inetd
, certaines inetd
étapes sont différentes.
Le répertoire racine TFTP peut être modifié depuis /etc/default/tftpd-hpa
. N'oubliez pas de mettre à jour /etc/inetd.conf
aussi.
De nombreuses distributions prennent en charge le chargement de RAMDisk via de nombreux protocoles: SSH (SFTP), SMB, NFS ... Exemple Ubuntu prend en charge NFS.
Certaines anciennes cartes réseau ne prennent pas en charge PXE, iPXE ( Ex. GPXE ou Etherboot ) peut être utilisé, soit sur disquette, clé USB, disque dur ( /boot
partition) ou même le flasher sur ROM (seulement quelques NIC pris en charge). GRUB2 possède un module pour prendre en charge le démarrage à l'aide de PXE.
Voir aussi Wikipedia: gPXE et ROM-O-matic .
Ubuntu Netboot Image from cdimage.ubuntu.com/netboot/ fournit l'installation d'Ubuntu à partir du réseau et il vous demandera de télécharger tous les packages requis depuis le miroir officiel ou local si vous en avez un.
La plupart des utilisateurs recherchent le démarrage d'une image en direct via PXE. Cette question était uniquement pour configurer un serveur PXE. Voir Ubuntu Wiki: Installation - LocalNet
Le menu PXE peut être personnalisé, le meilleur modèle à apprendre est Ubuntu NetBoot . Voir Pxeboot Multiple image
memdisk
peut être utilisé pour charger directement les images ISO ou de disquette via PXE. syslinux-common
le paquet en a une copie. Le client doit avoir suffisamment de RAM pour contenir l'image et une partie pour exécuter le système d'exploitation chargé.
Exemple de configuration:
/var/lib/tftpboot/
|-- FDSTD.144
|-- memdisk
|-- pxelinux.0
|-- slitaz-cooking.iso
|-- pxelinux.cfg
| `-- default
`-- pmagic/
|-- bzimage
`-- initramfs
/pxelinux.cfg/default
DEFAULT partmagic
LABEL partmagic
MENU LABEL PartMagic 4.5
KERNEL pmagic/bzimage
APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
LABEL slitaz
MENU LABEL ^Slitaz.iso
TEXT HELP
Testing boot from iso.
ENDTEXT
KERNEL memdisk
APPEND initrd=slitaz-cooking.iso
LABEL freedos_std
MENU LABEL ^FreeDOS STD
TEXT HELP
Testing boot from Floppy IMG.
ENDTEXT
KERNEL memdisk
APPEND initrd=FDSTD.144
Les packages PartedMagic ont été supprimés du site officiel après que le développeur d'origine ait décidé de le rendre commercial, certaines versions ont pu être trouvées via le réseau torrent. Ma réponse ici est un résumé de la première configuration PXE qui a fonctionné pour moi. Ubuntu Netboot Image devrait fonctionner avec les mêmes instructions.
netstat -lu | grep tftp
montre en mode d'écoute. Le dossier / tftpboot est 777, mais si j'essaye tftp> get pxelinux.0
depuis le client, j'obtiens toujours une erreur tftp: pxelinux.0: Autorisation refusée . Avez-vous une idée pour le déboguer? Merci d'avance.
/var/lib/tftpboot/
avec 755 (par défaut) devrait être ok. Vérifiez si vous pxelinux.0
avez 644 ou exécutez sudo chmod -R +r /var/lib/tftpboot/
pour rendre tout son contenu lisible.
filename "pxelinux.0";
... aucun commentaire; P ... merci pour votre réponse et pour cette excellente (et complète) réponse. Vive