Gibt es eine Standard-Conf-Datei zum Erstellen eines Kernels für das Starten von pxe?

571
Paul

Zusammenfassung:

Ich versuche einen Kernel zu bauen, um Clonezilla zu booten. Ich denke, das, was mit der Live-CD geliefert wird, hat Probleme beim Starten von pxe. Ich muss also einen Kernel bauen und bis jetzt haben alle meine Versuche mit einer Panik geendet. Ich hatte gehofft, dass jemand ein Basis-Conf teilen könnte, aus dem ich versuchen und bauen könnte. Gibt es so etwas?

Etwas mehr Kontext zur Frage ....

Versuch, die Clonezilla zu booten. Dieser Link https://bugs.busybox.net/show_bug.cgi?id=1963 erklärt, was ich sehe. Aber nach einiger Forschung glaube ich nicht, dass es das Problem ist. Meine Schnittstelle erhält keine IP-Adresse. Wenn ich es von der Kommandozeile aus ausführe, heißt es Adresse auswählen, aber die Schnittstelle wird nicht eingestellt. Ich habe versucht, pxelinux.0 (09.02.2009), pxelinux.0 (06.10.2014) und gpxelinux.0 (06.10.2014), und alle zeigen dasselbe Problem.

Da keine IP-Adresse vorhanden ist, kann der Startvorgang nicht fortgesetzt werden, da die squashfs-Datei nicht abgerufen werden kann.

Als ich fragte, ob Clonezilla und udchpd nicht funktionierten, gab es einen Vorschlag, dass das Problem möglicherweise der Kernel war. Damals begann ich mit dem Aufbau eines neuen und sah die DHCP-Parameter.

Ich denke, diese beziehen sich auf mein Problem, aber nicht auf meine Frage. Wenn Sie die richtigen Parameter für den Kernel-Build erhalten, werden möglicherweise deren Probleme behoben.

TFTP-Clonezilla-Dateien vom WDS-TFTP-Server während des PXE-Startens nicht möglich

Ein squashFS und eine initrd in einer einzigen Datei zusammenführen (PXE-Booten)

0

1 Antwort auf die Frage

0
telcoM

Nein, es gibt keine Standard-Kernelkonfiguration für das Starten von PXE. Es ist möglich, einen monolithischen Kernel zu kompilieren, der automatisch versucht, eine IP-Adresse mithilfe von BOOTP / DHCP zu erhalten. Dies ist jedoch nicht der übliche Weg.

Der moderne Ansatz besteht darin, einen Bootloader (z. B. pxelinux oder iPXE) zu verwenden, der zwei Dateien herunterlädt: den Kernel und eine initramfs / initrd-Datei. Die initramfs / initrd -Datei kann Kernel-Module (die bei Bedarf nach Erkennung entsprechender Hardware geladen werden müssen) und Dienstprogramme enthalten, die für die Initialisierung kritischer Hardware erforderlich sind, damit der Startvorgang fortgesetzt werden kann. Beim Booten vom Netzwerk umfasst dies die Initialisierung der Netzwerkschnittstellen. Was danach passiert, wird durch die Kombination aus Code / Scripts, die in der Datei initramfs / initrd integriert sind, und den Boot-Optionen bestimmt, die der Kernel vom Bootloader (meistens mit dem Schlüsselwort APPEND) angegeben hat.

Ich bin mit udhcpd nicht sehr vertraut, aber es scheint ein sehr minimaler DHCP-Client zu sein. Es kann also die folgenden Eigenschaften haben: - Es kann erwartet werden, dass die Netzwerkschnittstelle vorzeitig eingeschaltet wird (z. B. "ifconfig eth0 up" oder "ip link set eth0 up"), abhängig davon, ob der alte Konfigurationsbefehl "ifconfig" oder der neuere "ip" ist verfügbar) - es kann nicht die eigentliche Schnittstelleneinrichtung handhaben, nachdem die DHCP-Parameter empfangen wurden: Stattdessen werden sie an ein Skript übergeben, von dem erwartet wird, dass es Befehle wie "ifconfig", "ip" verwendet. und / oder "routen", um die Netzwerkschnittstelle entsprechend den erhaltenen Parametern einzurichten.

Ich denke, Sie haben sich vielleicht unnötig auf die Idee eines Kernels fixiert. Es ist sehr unwahrscheinlich, dass dies die Ursache Ihres Problems ist. Sie beziehen sich auf https://bugs.busybox.net/show_bug.cgi?id=1963, das jetzt 7 Jahre alt ist. (In voll ausgestatteten Linux-Distributionen ist "ifup -a" ein häufiger Befehl auf hoher Ebene zum Initialisieren aller Netzwerkschnittstellen; in kompakten Konfigurationen wie Clonezilla ist der Befehl ifup normalerweise nicht vorhanden.)

Sie sagten, Ihre Versuche seien bisher mit einer Panik beendet. Das bedeutet, dass der Kernel nicht auf das Root-Dateisystem zugreifen kann. Mit Clonezilla befindet sich das Root-Dateisystem in der Datei filesystem.squashfs, die von der initrd heruntergeladen werden soll, sobald die Netzwerkschnittstelle konfiguriert wurde.

Wissen Sie genau, was bei Ihren Versuchen schief gelaufen ist? Haben Sie den Netzwerkverkehr mit Wireshark oder ähnlichem überwacht?

Das Problem bei der Fehlerbehebung beim Netzwerkstart besteht darin, dass der Linux-Kernel und die zugehörigen Dienstprogramme häufig so viele Informationen ausgeben, dass beim Start etwas schief läuft, dass die ersten Fehlermeldungen vom Bildschirm gescrollt werden. Normalerweise ist diese erste Fehlermeldung die wichtigste: Es ist sehr wahrscheinlich, dass alle nachfolgenden Fehler die Folge dieses ersten Fehlers sind.

Durch die Überwachung des Netzwerkverkehrs können Sie einige harte Fakten erhalten: - Wird der Bootloader den Kernel und die initrd-Datei erfolgreich vom TFTP-Server herunterladen? - Nachdem der Bootloader den Kernel gestartet hat, können Sie eine weitere DHCP-Abfrage sehen. Das wäre udhcpd, der die Netzwerkparameter erhält. - Danach sollte eine TFTP-Anforderung für die Datei filesystem.squashfs vorliegen. Ist es erfolgreich oder nicht? Wenn nicht, an was wird die tatsächlich gesendete TFTP-Anforderung gesendet und welcher Pfadname wird im Dateisystem des TFTP-Servers zugeordnet? Befindet sich diese Datei unter dem richtigen Pfadnamen und darf der TFTP-Server sie senden?

Haben Sie Clonezilla Live ausprobiert, eine Version von Clonezilla, die ausdrücklich als PXE-Netzboot geeignet ist? http://clonezilla.org/livepxe.php