
Ich habe einen PXE-Server mit TFTP eingerichtet, er funktioniert mit einem Debian-Installer.
http://www.debian-administration.org/articles/478
Jetzt möchte ich keinen Installer, sondern ein System, das bereits existiert (auf USB). Wie kann ich dieses USB-Image booten und insbesondere den pxelinux.0-Bootloader dafür erstellen? Unter Debian finde ich nur Installer-Images.
Bearbeiten: OK, ich habe ein System auf USB installiert und möchte es über das Netzwerk mit PXE auf mehreren Clients booten. Ich habe ein einfaches Debian mit TFTP-Server und einer PXE-Umgebung gemäß dem Tutorial unter dem oben angegebenen Link installiert. Es funktioniert für das Installationsprogramm, aber ich habe versucht, einen anderen Kernel zu verwenden, aber dann heißt es, Datei nicht gefunden, weil die Datei pxelinux.0 auf den Installationskernel der Debian-Distribution verweist.
Antwort1
Sie müssen verstehen, dass nicht jedes über USB bootfähige/installierbare Linux-Image in einer PXE-Umgebung funktioniert.
Ein Nicht-PXE-Image bootet normalerweise und ruft die erforderlichen Komponenten vom Bootgerät (Festplatte, USB usw.) ab.
Ein PXE-fähiges Image wird zunächst aus dem Netz gebootet „und“ das Init-Skript ist bereit zum Mounten eines NFS-, HTTP-, SMB- usw.-Systems, um die erforderlichen Komponenten von dort abzurufen.
Nicht-PXE-Installationsimages verfügen nicht nur nicht über ein Init-Skript zum Abrufen von Komponenten aus dem Netz, sondern verwenden häufig auch Kernel/Busybox-Builds, die nicht einmal Netzwerkunterstützung bieten oder nicht über die Kernelmodule für einige der Protokolle verfügen, die das Leben bei der PXE-Installation einfacher machen, wie etwa HTTP oder SMB.
Denken Sie daran, dass TFTP nur bei einigen anfänglichen Übertragungen (pxelinux/vesamenu/kernel/initrd) verwendet wird. Der Großteil der Installation wird später per HTTP oder mithilfe einer NFS- oder SMB-Freigabebereitstellung übertragen.
Wenn Sie dann ein USB-Linux-Installationsimage per PXE booten möchten, müssen Sie die Initrd der Distribution analysieren und prüfen, ob das enthaltene Init-Skript PXE unterstützt. Als Nächstes müssen Sie prüfen, ob der Kernel/die Busybox die erforderlichen Komponenten für den Net-Boot enthält. Das ist keine triviale Aufgabe.
Wenn Sie ein Image booten möchten, das „keine Installation“, sondern eine Live-Distribution ist, müssen Sie dem Init-Skript den Code zum Net-Mounten der Squashfs-Datei hinzufügen.
Wenn Sie ein Image booten möchten, das weder eine Installation noch eine Live-Distribution ist, wird es noch komplizierter.