Antworten:
Siehe Wikipedia: PXE
Das ist mein Verständnis!
PXE (Client-Seite) sendet eine Anforderung für eine IP. Antwort des DHCP - Servers mit den erforderlichen Informationen: IP, IP des nächsten Servers (TFTP - Server - IP), pxelinux.0
(Dateiname des PXE - Bootstrap - Loaders), ... usw
PXE (Client-Seite) fordert eine pxelinux.0
Datei vom TFTP-Server an, lädt sie in den RAM und übergibt die Steuerung an pxelinux.0
.
pxelinux.0
Ruft die Startkonfigurationsdatei vom TFTP-Server mit folgendem Namen ab:
(Wenn sie nicht existiert, versucht sie es mit der nächsten)
default
DateiEntweder Benutzerauswahl oder Standardmenüeintrag. pxelinux.0
fordert den entsprechenden Kernel und die RAMDisk vom TFTP-Server an und lädt sie in den RAM.
Übergibt dann die Boot-Parameter und die Steuerung an den geladenen Kernel.
Der Kernel lädt die verbleibenden Teile vom TFTP-Server oder einem anderen Protokollserver, abhängig von dessen Funktionen / Eigenschaften.
Es gibt viele Möglichkeiten, einen PXE-Server einzurichten. Dies ist eine davon.
Diese Anweisungen wurden unter Ubuntu 9.10 und Ubuntu 10.04 auf einer realen Maschine getestet . Sie sollten mit nur wenigen Änderungen noch gültig sein. (Aktualisiert und getestet für Ubuntu 14.04 auf VirtualBox, überprüfen Sie die Bearbeitungsrevisionen für ältere Versionen.)
Mein Ziel war PartedMagic 4.5 , es sollte Ubuntu oder einer anderen Linux-Distribution ähneln.
Installieren Sie DHCP- und TFTP-Pakete
sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
DHCP-Setup
Bearbeiten /etc/default/isc-dhcp-server
, Ethernet-Schnittstelle für DHCP-Dienst
INTERFACES="eth0"
Bearbeiten /etc/dhcp/dhcpd.conf
oder /etc/ltsp/dhcpd.conf
existiert, DHCP-Dienst Konfiguration
PXE-spezifische Konfigurationen: 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;
}
Richten Sie eine statische IP für ein eth0
, 192.168.10.123
in meinem Fall mit Network Manager für Desktop Edition oder /etc/network/interfaces
für Server Edition.
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
Reinitialisieren Sie die Netzwerkschnittstelle:
sudo ifdown eth0
sudo ifup eth0
Starten Sie den Dienst neu
sudo service isc-dhcp-server restart
Status überprüfen
netstat -lu
Ausgabe
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:bootpc *:*
TFTP-Setup
Bearbeiten /etc/inetd.conf
, #<off>#
vom tftp
Zeilenanfang entfernen oder hinzufügen, wenn es dort nicht unter #:BOOT:
Kommentar steht. (Überspringen Sie dies mit systemd, 15.10 und höher)
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
Aktivieren Sie den Boot-Service für inetd
sudo update-inetd --enable BOOT
Dienst starten
sudo service openbsd-inetd restart
sudo service tftpd-hpa restart
Status überprüfen
netstat -lu
Ausgabe
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:tftp *:*
Setup der PXE-Startdateien
Entpacken pmagic-pxe-4.5.zip
. Wenn dies pxelinux.0
nicht der Fall ist , beziehen Sie es aus dem sysliux-common
Paket /usr/lib/syslinux/pxelinux.0
, das unter Syslinux Project oder Ubuntu Netboot Image installiert wurde .
Legen Sie sie in eine ähnliche Struktur.
/var/lib/tftpboot/
|-- pxelinux.0
|-- pxelinux.cfg/
| `-- default
`-- pmagic/
|-- bzimage
`-- initramfs
Bearbeiten Sie /var/lib/tftpboot/pxelinux.cfg/default
bei Bedarf die Beispielpfade: 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
Richten Sie die richtigen Berechtigungen ein
sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \;
sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
Ändern Sie die BIOS-Startreihenfolge einmalig mit F9oder F12, um das BIOS dauerhaft zu konfigurieren DEL, F2oder F12. (Abhängig von der Maschinenmarke)
Verschieben nach oben: [PXE | NIC | LAN | Ethernet | Network]
.
inetutils-inetd
oder xinetd
kann anstelle von verwendet werden openbsd-inetd
, sind einige inetd
Schritte unterschiedlich.
Das TFTP-Stammverzeichnis kann von geändert werden /etc/default/tftpd-hpa
. Denken Sie daran, auch zu aktualisieren /etc/inetd.conf
.
Viele Distributionen unterstützen das Laden von RAMDisk über viele Protokolle: SSH (SFTP), SMB, NFS ... Beispiel Ubuntu unterstützt NFS.
Einige alte Netzwerkkarten unterstützen PXE nicht, iPXE (z . B. gPXE oder Etherboot ) kann entweder auf Diskette, USB-Laufwerk, Festplatte ( /boot
Partition) oder sogar auf ROM (nur wenige NICs unterstützt) verwendet werden. GRUB2 verfügt über ein Modul, das das Booten mit PXE unterstützt.
Siehe auch Wikipedia: gPXE und ROM-O-matic .
Ubuntu Netboot Image von cdimage.ubuntu.com/netboot/ bietet die Installation von Ubuntu über das Netzwerk und fordert Sie auf, alle erforderlichen Pakete vom offiziellen oder einem lokalen Spiegel herunterzuladen, falls Sie eines haben.
Die meisten Benutzer möchten ein Live-Image über PXE starten. Diese Frage galt nur zum Einrichten eines PXE-Servers. Siehe Ubuntu Wiki: Installation - LocalNet
Das PXE-Menü kann angepasst werden. Die beste Vorlage, von der Sie lernen können, ist Ubuntu NetBoot . Siehe Pxeboot Multiple Image
memdisk
kann verwendet werden, um die ISO- oder Disketten-Images direkt über PXE zu laden. syslinux-common
Paket hat eine Kopie. Der Client sollte über genügend RAM für das Image sowie einen Teil für das Ausführen des geladenen Betriebssystems verfügen.
Konfigurationsbeispiel:
/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
PartedMagic-Pakete wurden von der offiziellen Website entfernt, nachdem der ursprüngliche Entwickler beschlossen hatte, sie zu vermarkten. Einige Veröffentlichungen konnten über das Torrent-Netzwerk gefunden werden. Meine Antwort hier ist eine Zusammenfassung des ersten PXE-Setups, das für mich funktioniert hat. Ubuntu Netboot Image sollte mit den gleichen Anweisungen funktionieren.
netstat -lu | grep tftp
zeigt es im Hörmodus. Der / tftpboot-Ordner ist 777, aber wenn ich tftp> get pxelinux.0
es vom Client versuche, erhalte ich immer einen tftp: pxelinux.0: Fehler " Berechtigung verweigert" . Haben Sie eine Idee zum Debuggen? Danke im Voraus.
/var/lib/tftpboot/
mit 755 (default) sollte das ok sein. Überprüfen Sie, ob pxelinux.0
644 vorhanden ist, oder führen Sie es aus sudo chmod -R +r /var/lib/tftpboot/
, um den gesamten Inhalt lesbar zu machen.
filename "pxelinux.0";
... kein Kommentar; P ... danke für deine Antwort und für diese tolle (und vollständige) Antwort. Cheers