Installationsschritte für den PXE-Boot-Server in Ubuntu Server VM


Antworten:


31

PXE (Preboot eXecution Environment, ausgesprochen Pixie)

Siehe Wikipedia: PXE

Wie es funktioniert?

Das ist mein Verständnis!

PXE_Diagram_en.png

  1. Der Client-Computer ist eingeschaltet. Das BIOS sucht nach Geräten. Anschließend wird versucht, den Bootloader von dem erforderlichen Gerät zu laden, wie in Startreihenfolge / -reihenfolge aufgeführt . Es lädt PXE vom Netzwerkkarten-ROM.
  2. 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_Boot_1.png

  3. PXE (Client-Seite) fordert eine pxelinux.0Datei vom TFTP-Server an, lädt sie in den RAM und übergibt die Steuerung an pxelinux.0.

    pxelinux.0Ruft die Startkonfigurationsdatei vom TFTP-Server mit folgendem Namen ab:
    (Wenn sie nicht existiert, versucht sie es mit der nächsten)

    • UUID
    • MAC
    • IP in Großbuchstaben
    • Ein Teil der IP
    • Ablegen in defaultDatei

    PXE_Boot_2.png

  4. Entweder Benutzerauswahl oder Standardmenüeintrag. pxelinux.0fordert 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.

    PXE_Linux.png

  5. Der Kernel lädt die verbleibenden Teile vom TFTP-Server oder einem anderen Protokollserver, abhängig von dessen Funktionen / Eigenschaften.

    Parted_Magic_1.png Parted_Magic_2.png

Server-Setup

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.

  1. Installieren Sie DHCP- und TFTP-Pakete

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. 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.confexistiert, 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.123in meinem Fall mit Network Manager für Desktop Edition oder /etc/network/interfacesfü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                *:*                                
      
  3. TFTP-Setup

    • Bearbeiten ‪/etc/inetd.conf, #<off>#vom tftpZeilenanfang 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                  *:*                          
      
  4. Setup der PXE-Startdateien

    • Entpacken pmagic-pxe-4.5.zip. Wenn dies pxelinux.0nicht der Fall ist , beziehen Sie es aus dem sysliux-commonPaket /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/defaultbei 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 {} \;
      

Client-Setup

Ä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].

Anmerkungen

  • inetutils-inetdoder xinetdkann anstelle von verwendet werden openbsd-inetd, sind einige inetdSchritte 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 ( /bootPartition) 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

    Ubuntu NetBoot - Offizieller Archivspiegel Ubuntu NetBoot - Benutzerdefinierter / lokaler Archivspiegel

  • Das PXE-Menü kann angepasst werden. Die beste Vorlage, von der Sie lernen können, ist Ubuntu NetBoot . Siehe Pxeboot Multiple Image

    PXE_Linux_Menu.png

  • memdiskkann verwendet werden, um die ISO- oder Disketten-Images direkt über PXE zu laden. syslinux-commonPaket 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.


Freunde, eigentlich arbeite ich an Pxeboot. Ich habe diese Pakete in einer virtuellen Maschine (Oracle Virtualbox) installiert, apt-get installiere nfs-kernel-server, apt-get installiere tftpd-hpa, inetutils-inetd, apt-get installiere syslinux, apt-get installiere isc-dhcp-server .conf Datei und brachte den DHCP-Server zum Laufen
Anfänger

@ Snetsher: Hallo, ich verwende tftpd-hda, konfiguriert mit Standardwerten. A netstat -lu | grep tftpzeigt es im Hörmodus. Der / tftpboot-Ordner ist 777, aber wenn ich tftp> get pxelinux.0es vom Client versuche, erhalte ich immer einen tftp: pxelinux.0: Fehler " Berechtigung verweigert" . Haben Sie eine Idee zum Debuggen? Danke im Voraus.
Danduk82

@Danduk82, /var/lib/tftpboot/mit 755 (default) sollte das ok sein. Überprüfen Sie, ob pxelinux.0644 vorhanden ist, oder führen Sie es aus sudo chmod -R +r /var/lib/tftpboot/, um den gesamten Inhalt lesbar zu machen.
user.dz

1
Hallo, eigentlich habe ich das Problem gelöst: Tatsächlich habe ich (blöd) vergessen, den DHCP-Dienst nach dem Hinzufügen neu zu starten filename "pxelinux.0";... kein Kommentar; P ... danke für deine Antwort und für diese tolle (und vollständige) Antwort. Cheers
Danduk82

1
@Matthieu, Möglicherweise finden Sie einige Veröffentlichungen über das Torrent-Netzwerk. Die Pakete wurden von der offiziellen Website entfernt, nachdem der ursprüngliche Entwickler beschlossen hatte, sie kommerziell zu nutzen. Sie können auch cdimage.ubuntu.com/netboot verwenden, wenn Sie nur PXE zum ersten Mal testen oder einrichten möchten .
user.dz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.