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 (
splashvon derlinuxBefehlszeile 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/shsie derlinuxBefehlszeile in Grub hinzufüge . Ich kann durch Hinzufügen sogar noch weiter kommensystemd.unit=basic.target systemd.shellDies startet eine Reihe von Diensten und führt eine Root-Shell auf tty9 aus.
- Wenn ich
systemctl start multi-user.targetvon 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.targetzu 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
linuxBefehlszeile:quiet nosplashverbirgt fast alle Bootmeldungen. Entfernen Sie sie, um während des Startvorgangs Meldungen auf der Konsole zu erhalten, die erforderlich sind, um Probleme zu diagnostizieren.recoverygibt Ihnen eine Root-Shell mit fast keinen Diensten. Sie müssen das root-Passwort kennen. Der Menüeintrag „Wiederherstellungsmodus“ verwendet dies.init=/bin/shgibt 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.targetum 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.targetstartet 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.targetan einer Root-Eingabeaufforderung ausführen. Führen Sie zum Wiederherstellen des ursprünglichen Standardzielssystemctl set-default graphical.target(odersystemctl set-default multi-user.targeteinen Server ohne GUI) aus.systemd.debug-shellStartet eine Root-Shell auf tty9. Sie können dies für jeden Start aktivieren, indem Siesystemctl enable debug-shellan 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 .