2009-05-20 7 views
0

Was sind die möglichen Täter für Abstürze während Kernel-Init?Probleme während des Linux-Kernel init

Ich habe einen Kernel mit initramfs, die inittab ist sehr einfach rcS (als sysinit) und getty (respawn). Während des Bootens bekomme ich keine Fehlermeldung, aber die Init gibt mir folgende Meldung: S0 Respawn zu schnell: deaktiviert für 5 Minuten, wo S0 ist eigentlich die Respawn :: getty Linie (es scheint als getty stürzen), auch Keine der vom rcS generierten Nachrichten wird auf der Konsole angezeigt (ich nehme an, dass rcS-Befehle auch abstürzen).

Wenn ich den Kernel gezwungen bin, zu/bin/sh (statt/init) zu gehen, kann ich rcS manuell aufrufen und bekomme keine Fehler, dasselbe passiert für getty (wenn ich getty mit den gleichen Parametern von inittab aufruft, funktioniert es fein).

Ich frage mich, was ist der Unterschied zwischen der Art, wie init spawns Prozesse und der Weg/bin/sh tut.

+0

Sie müssen den Inhalt Ihrer/etc/inittab angeben. Lassen Sie keine Kommentare und Leerzeilen aus - nur die Eingeweide. – camh

Antwort

0

Einige Log-Init-Respawns von OS auf wtmp, möchten Sie vielleicht dort überprüfen. Auch das Hochfahren des Syslog könnte helfen.

Wenn Sie getty über/bin/sh starten, läuft es weiter? AFAIK, der Trick mit init Respawn ist, dass die PID, die es erzeugt, überwacht wird und wenn es ausfällt, startet es einen anderen.

+0

Nein, wenn ich den Respawn in/bin/sh ändere bekomme ich die gleiche Meldung "Respawning too fast: deaktiviert für 5 Minuten" Die einzige Möglichkeit dies zu vermeiden, ist/bin/sh anstelle von/init auszuführen Da die Syslogs auf der Ramdisk gemountet sind, sehe ich keine Nachricht. – uzurpatorul

0

Das Lager/bin/sh ist nicht statisch gebaut, noch ist getty. Sie müssen sich die Shared Library-Abhängigkeiten von/bin/sh und getty ansehen, dass alle Bibliotheken vorhanden sind.

Sie können ldd oder 'readelf -a' verwenden, um die Abhängigkeiten der gemeinsam genutzten Bibliotheken anzuzeigen.

+0

Ich habe das versucht, ich bekomme eine ungültige Anweisung, wenn ich versuche, ldd zu benutzen. Ich denke, mit meiner Distribution ist etwas grundsätzlich falsch, ich frage mich, ob ich etwas Besonderes für DDR2 mit 64 Bit im Linux-Kernel machen muss, dies ist die einzige Änderung am aktuellen Evaluierungsboard. – uzurpatorul

+0

Wenn Sie Ihren Speicher verdächtigen, sollten Sie memtest von der Installations-CD versuchen, die meisten Distributionen bieten sie im Boot-/Installationsmenü an. – codeDr

0

Vielleicht nichts einrichtet /dev/tty1, /dev/tty2, etc, aber Sachen laufen ok auf /dev/console (was nicht dasselbe wie /dev/tty1 ist). Wenn Sie davon abhängig sind, dass sich ein/dev-Verzeichnis in Ihrem Initramfs- oder Root-Dateisystem befindet, überprüfen Sie diese.

Wahrscheinlich der Hauptunterschied zwischen init =/bin/sh und lassen init spawn Zeug ist die /dev/console vs /dev/ttyx. Ich kann mir nichts anderes vorstellen, was relevant wäre. Bedenken Sie, dass das initramfs zuerst ausgeführt wird, denke ich.

Und BTW, Sie sind offensichtlich hinter der Kernel-Initialisierungsstufe, wenn init (8) oder /bin/sh ausgeführt werden kann.

Verwandte Themen