Um zu verstehen, was los ist, müssen Sie wissen, wie Linux PXE startet.
- Der Kernel
vmlinuz
wird übertragen - Die initrd
initrd.gz
wird übertragen - Der Kernel installiert initrd und startet sein
init
Skript
Initrd ist ein ultra-minimales Linux-System, das die minimale Funktionalität für das Herstellen einer Verbindung zu (NFS) oder Abrufen (HTTP / CIFS) des "echten" Betriebssystems (in Ihrem Fall darin enthalten ubuntu_os.squashfs
) enthält, das Mounten und schließlich das "chrooting".
Ein PXE-fähiges init
Skript ist für die Syntaxanalyse der Kernelvariablen, das Starten der Netzdienste, die Verarbeitung von NFS, HTTP, CIFS usw. verantwortlich. In den meisten Fällen kann ein bestimmter initrd.gz
Benutzer nicht alle oben genannten Protokolle verarbeiten. Passen Sie "Ihre" an initrd.gz
oder erstellen Sie eine "ergänzende" initrd, die bei Bedarf die fehlenden Funktionen bereitstellt.
In Ihrem Fall ist Ihr init
Skript immer noch der Meinung, dass es ein NFS-Verzeichnis und keine Datei einhängen muss. Wenn Sie NFS verwenden möchten, sollten Sie das Verzeichnis einhängen, in dem Sie ubuntu_os.squashfs
sich befinden, und anschließend die ubuntu_os.squashfs
Datei einhängen . Dies bedeutet natürlich das Patchen init
(und / oder die zugehörigen Komponenten).
Wenn Sie nichts dagegen haben, ubuntu_os.squashfs
eine CIFS-Freigabe anzubieten, können Sie sehen, was Serva für PXE macht, wenn Sie Ubuntu-Live-Distributionen starten. Sie sehen dort alle Parameter für das CIFS-Booten (ich bin mit der Serva-Entwicklung verbunden)
dh Ubuntu LTS 14.04 Desktop Live
[PXESERVA_MENU_ENTRY] asset = Ubuntu LTS 14.04 Desktop Live platform = amd64 kernel = /NWA_PXE/$HEAD_DIR$/casper/vmlinuz append = showmounts toram root=/dev/cifs initrd=/NWA_PXE/$HEAD_DIR$/casper/initrd.lz,/NWA_PXE/$HEAD_DIR$/casper/INITRD_N11.GZ boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=dhcp ro