Nach einigen kürzlichen Updates bootet mein Computer nicht mehr! Folgendes könnte ich feststellen:
- Dies ist ein sehr neuer Computer, der mir von der Unternehmens-IT zur Verfügung gestellt wurde. Es hat eine neuere Intel-CPU (Skylake-Generation).
- Auf dem Computer läuft Ubuntu 16.04.
- Der Computer wurde zuletzt im März einige Zeit korrekt gestartet. Das Problem ist vermutlich auf ein Software-Update oder einen Hardware-Fehler zurückzuführen.
- Ich habe einen anderen Computer mit 16.04, auf dem so ziemlich dieselbe Software installiert ist (ich habe sie verwendet
apt-clone
), und er funktioniert einwandfrei. Es hat unterschiedliche Hardware (auch amd64, aber unterschiedliche CPU, unterschiedliche GPU, etc.). - Der Kernel startet, die initrd funktioniert korrekt. Wenn ich mit einem Begrüßungsbildschirm im Grafikmodus boote, werde ich zur Eingabe des Kennworts für mein dm-crypt-Volume aufgefordert. Als letztes sehe ich, dass es erfolgreich gemountet wurde.
- Der Hang tritt auf, bevor ich eine Anmeldeaufforderung erhalte. Wenn der Computer hängt, ist es ein harter Hang. Sogar Alt+ SysRqantwortet nicht. Die CPU ist offenbar zu 100% ausgelastet, da die Lüfter auf Hochtouren laufen.
- Ich habe immer noch den Kernel, den ich vor dem Neustart ausgeführt habe. Wenn ich diesen Kernel im Grub-Menü auswähle, erhalte ich die gleiche Sperrung. Es sieht also so aus, als ob dies ein bereits vorhandener Kernel-Fehler ist, der von etwas anderem ausgelöst wird - aber was?
- Wenn ich den Begrüßungsbildschirm ausschalte (
splash
von derlinux
Befehlszeile in Grub entfernen ), werden eine Reihe von Diensten gestartet, und der Bildschirm stürzt ab . Ich kann eine Root-Shell erhalten, indem ich
init=/bin/sh
sie derlinux
Befehlszeile in Grub hinzufüge . Ich kann durch Hinzufügen sogar noch weiter kommensystemd.unit=basic.target systemd.shell
Dies startet eine Reihe von Diensten und führt eine Root-Shell auf tty9 aus.
- Wenn ich
systemctl start multi-user.target
von dieser Root-Shell aus starte, stürzt der Computer ab. Vermutlich wird das Problem also von einem dieser Dienste ausgelöst. - Ich bin gelaufen, um
systemctl list-dependencies multi-user.target
zu sehen, welche Dienste gestartet werden. Ich habe die aufgelisteten Abhängigkeiten einzeln manuell gestartet, und alles hat gut angefangen.
Das sieht also wie ein Hardware-Fehler aus (da er auf einem Computer auftritt, auf dem anderen jedoch nicht), der von einer bestimmten Software ausgelöst wird. Aber welche Software? Da der Computer so stark abstürzt, kann ich keine Protokolle abrufen. Ich kann nicht einmal eine nützliche Konsolenausgabe erhalten.
Nützliche Debugging-Techniken:
- Alt+ SysRq: magische SysRq-Taste , mit der Sie beispielsweise einen Notfall-Neustart durchführen können. Es greift auf den Kernel auf einer sehr niedrigen Ebene zu, sodass es bei allen außer den schlimmsten Abstürzen funktioniert. In meinem Fall reagiert Alt+ SysRqnicht, was zeigt, wie tief der Absturz geht.
- Um die Boot-Parameter zu ändern, halten Sie Shifteinige Sekunden nach dem Einschalten gedrückt. Sie müssen ihn drücken, nachdem das BIOS die Tastatur initialisiert hat, aber bevor das Betriebssystem startet. Dadurch wird das Grub- Menü angezeigt.
- Drücken Sie im Grub-Menü, eum die Befehlszeile für einen Menüeintrag zu bearbeiten. Navigieren Sie zu der Zeile, die mit beginnt, um die Linux-Startparameter zu ändern
linux
. Auf einem modernen Ubuntu finden Sie alte Kernel unter "Erweiterte Optionen für Ubuntu". Wenn Sie die gewünschten Änderungen in der Befehlszeile vorgenommen haben, drücken Sie Ctrl+, xum den Computer zu starten. Alle Änderungen, die Sie hier vornehmen, gelten nur für diesen Start. Sie werden nicht auf der Festplatte gespeichert. - Einige nützliche Optionen in der
linux
Befehlszeile:quiet nosplash
verbirgt fast alle Bootmeldungen. Entfernen Sie sie, um während des Startvorgangs Meldungen auf der Konsole zu erhalten, die erforderlich sind, um Probleme zu diagnostizieren.recovery
gibt Ihnen eine Root-Shell mit fast keinen Diensten. Sie müssen das root-Passwort kennen. Der Menüeintrag „Wiederherstellungsmodus“ verwendet dies.init=/bin/sh
gibt Ihnen eine Root-Shell ohne Dienste überhaupt. Führen Sie den folgenden Befehl aus, um den normalen Startvorgang fortzusetzenexec init
. Sie können an dieser Stelle systemd-Optionen übergeben, z. B.exec init --unit=basic.target
um init und einige Dienste zu starten (beachten Sie, dass dies keine Möglichkeit zur Anmeldung bietet, sodass eine Shell auf einer anderen Konsole ausgeführt werden sollte). Beachten Sie, dass das Root-Dateisystem schreibgeschützt bereitgestellt ist. laufenmount -o remount,rw /
, um schreiben zu können.systemd.unit=basic.target
startet eine sehr grundlegende Reihe von Diensten. Beachten Sie, dass dies keine Art der Anmeldung beinhaltet! Sie können dies zur Standardeinstellung machen, indem Siesystemctl set-default basic.target
an einer Root-Eingabeaufforderung ausführen. Führen Sie zum Wiederherstellen des ursprünglichen Standardzielssystemctl set-default graphical.target
(odersystemctl set-default multi-user.target
einen Server ohne GUI) aus.systemd.debug-shell
Startet eine Root-Shell auf tty9. Sie können dies für jeden Start aktivieren, indem Siesystemctl enable debug-shell
an einer Root-Eingabeaufforderung ausführen. Vergessen Sie nicht, dies zu deaktivieren, nachdem Sie das Problem mit behoben habensystemctl disable debug-shell
. Drücken Sie Alt+ F9wechseln tty9.- Siehe auch Fedora systemd Tipps , Arch Linux - Boot - Problem Tipps .