Wie kann ich die Nachrichten anhalten (oder erfassen), die am Ende der Startsequenz vorbeifliegen?

8

Gegen Ende der "Startsequenz" 1 sehe ich eine lange Reihe von Diagnosemeldungen, die sehr schnell vorbeifliegen, kurz bevor ich die Anmeldeaufforderung 2 sehe .

AFAICT, die meisten, wenn nicht alle Zeilen, aus denen diese kurzlebige Ausgabe besteht, beginnen mit einer der unten gezeigten Zeichenfolgen

[  OK  ]
[FAILED]

... wo das OKin grün ist und das FAILEDin rot ist 3 .

Diese Nachrichten blinken zu kurz, als dass ich sie lesen könnte.

Meine Frage ist:

Gibt es eine Möglichkeit, diese Nachrichten leichter lesbar zu machen?


Mögliche Lösungen, die mir in den Sinn kommen, sind (in der Reihenfolge ihrer Präferenz):

  1. Abschlagen (oder einfach Umleiten) dieser Nachrichten wörtlich 4 in eine persistente Protokolldatei;
  2. Aktivieren eines Paging-Mechanismus ( Press any key to continue...);
  3. Einfügen einer Pause (konfigurierbarer Länge) nach dem Drucken dieser Nachrichten;
  4. Aktivieren einer Taste (oder Tastenkombination), um die Ausgabe auf dem Bildschirm anzuhalten 5 .

EDIT: Aufgrund der Kommentare, die ich bisher erhalten habe, muss ich zu dem Schluss kommen, dass das Wort wörtlich in (1) oben entweder nicht verstanden oder nicht ernst genommen wird, obwohl ich so viel wie möglich betont habe. Ich würde es blinken lassen, wenn ich könnte ...


EDIT2: Der Vorschlag, den meuh in den Kommentaren gemacht hat, scheint mir vielversprechend, aber ich konnte ihn noch nicht zum Laufen bringen. Folgendes habe ich getan:

Zuerst habe ich am Ende Folgendes hinzugefügt /etc/rsyslog.conf:

# Save boot messages also to boot.log
local7.* /var/log/boot.log

... und neu gestartet. Ich sah die üblichen Diagnosemeldungen vorbeifliegen, aber es wurde keine /var/log/boot.logDatei erstellt.

Dann habe ich in dem (zugegebenermaßen unwahrscheinlichen) Fall, dass das /var/log/boot.logbereits existieren muss, rsyslogdarauf schreiben kann (als root):

touch /var/log/boot.log
chgrp adm /var/log/boot.log
chmod 640 /var/log/boot.log

... wo die Befehle chgrpund chmoddazu gedacht waren, dass der Besitz und die Berechtigungen von /var/log/boot.logdenen aller anderen Protokolldateien unter übereinstimmen /var/log. Dann habe ich neu gestartet, die Nachrichten gesehen usw. Die Datei /var/log/boot.logblieb nach diesem Neustart leer.

(Ich habe das gleiche Nicht-Ergebnis erhalten, als ich die Berechtigungen von /var/log/boot.logauf geändert habe 666.)

Ich habe grepdie Ausgabe journalctl --bootund die Dateien unter /var/logfür alles, was mir einfällt, bearbeitet rsyslog, was auf etwas Falsches bei mir hinweisen könnte , aber nichts gefunden. (Ich bin überhaupt nicht vertraut rsyslog, daher bin ich mir sicher, dass meine Suche ziemlich unpassend war.)

Es ist klar, dass das, was ich bisher getan habe, nicht ausreicht, um die gewünschte Protokollierung zu ermöglichen. Ich suche jetzt nach dem, was mir fehlt. Ich konnte jedoch nicht viele relevante Unterlagen finden. Zum Beispiel weder zu erklären rsyslog.conf(5)noch rsyslogd(8)zu erklären, was local7ist ( rsyslog.conf(5)ist zumindest so freundlich, es einmal zu erwähnen, ohne weitere Informationen zu geben).


EDIT3

Informationen zur Distribution:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.3 (jessie)
Release:    8.3
Codename:   jessie
$ uname -a
Linux myhost 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux

EDIT4

Zusätzliche potenziell relevante Informationen:

$ cat /lib/systemd/system/rsyslog.service
[Unit]
Description=System Logging Service
Requires=syslog.socket
Documentation=man:rsyslogd(8)
Documentation=http://www.rsyslog.com/doc/

[Service]
Type=notify
ExecStart=/usr/sbin/rsyslogd -n
StandardOutput=null
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=syslog.service
$ cat /proc/$(pgrep rsyslogd)/limits
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             128529               128529               processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       128529               128529               signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        

$ sudo ls /proc/$(pgrep rsyslogd)/fd | wc -l
10

1 Das heißt, was passiert, wenn ich meinen Computer (neu) starte.

2 FWIW multi-user.targetist meine Standardeinstellung.

3 Der verbleibende Text ist ganz in Weiß über einem schwarzen Hintergrund. Dies gilt für die nachfolgende Anmeldeaufforderung.

4 Ich finde eine Lösung völlig inakzeptabel , bei der ich den genauen Text dieser Nachrichten nicht sehen kann, wie sie während der Startsequenz angezeigt wurden. Da ich ausnahmslos nicht genau weiß, worauf sich eine dieser Diagnosemeldungen bezieht, kann ich nicht alle Arten erkennen, in denen die zugrunde liegenden Informationen, die von der ursprünglichen Nachricht übermittelt werden, umschrieben und auf mehrere andere Nachrichten verteilt werden können , nur in anderen Nachrichten usw. zusammengefasst. (Nur wenn ich online nach dem genauen Wortlaut der ursprünglichen Nachricht suche, habe ich Hoffnung, eine Lösung für das Problem zu finden.) Alles, was ich bisher versucht habe, einschließlich journalctl -bund dmesgfehlgeschlagen, es mir zu geben die ursprünglichen Nachrichten wörtlich. Wenn ich zum Beispiel Startup starte, sehe ich nur ein rotes FAILED, aber es journalctl --boot | grep FAILED | wc -lkehrt zurück 0und journalctl --boot | grep -i FAILED | wc -l kehrt zurück 1086. Beides ist nicht das, wonach ich suche.

5 In meinem System hätte ich weniger als eine Sekunde Zeit, um eine solche Taste oder Tastenkombination zu drücken, und es gibt keine Warnung, wann dieses kurze Intervall beginnt. Sofern man nicht in der Lage ist, die Dauer des Intervalls zu konfigurieren, in dem ein solcher Tastendruck erfolgen muss, sind auf Tastendruck basierende Lösungen zu unpraktisch, um mehr als ein Manöver der letzten Instanz zu sein. Außerdem, FWIW, habe ich versucht, entweder die Taste oder die Taste zu drücken, als die Nachrichten blitzten, aber keiner machte einen Unterschied.Scroll
Lock
Pause/
Break

kjo
quelle
4
Gibt journalctl -bIhnen (als root) nicht genau das, dh sehen Sie den genauen Text dieser Nachrichten, wie sie während der Startsequenz erschienen sind ?
don_crissti
2
Abhängig von Ihrem System können Sie die Nachrichten in der Datei finden/var/log/boot.log
meuh
2
@Theophrastus: Ich fange an zu verstehen, warum so viele Linux-Benutzer es verabscheuen systemd, und ich bin dabei, mich ihren Reihen anzuschließen ... Ich habe meine Fn 4 bearbeitet, um (noch mehr) darzulegen journalctl --boot | grep -i fail, warum zum Beispiel nicht was ist Ich suche.
kjo
3
kjo, der einzige Unterschied, den ich zwischen den Nachrichten während des Startvorgangs und denen sehe, die am angemeldet sind, journalist das Vorhandensein von [OK]/ [FAILED]. Die Nachrichten sind ansonsten identisch. Der richtige Weg, um ausgefallene Geräte zu diagnostizieren / zu beheben , ist jedoch über systemctl, nur damit Sie es wissen. Ich weiß nicht, ob Sie den Startvorgang über eine Tastenkombination anhalten können (sie sagen, STRG + S / STRG + Q sollte funktionieren, aber nicht, zumindest nicht auf i915 / KMS). Sie können jedoch das Löschen von Startnachrichten deaktivieren und mit Umschalt + PgUp / Ab durch diese Nachrichten auf TTY1 scrollen.
don_crissti
2
Vielleicht gibt die folgende Frage / Antwort etwas: superuser.com/questions/480370/…
Ralph Rönnquist

Antworten:

1

Sie können ein Kernel-Befehlszeilenargument (so etwas wie console=tty0 console=ttyS0,115200n8) festlegen , um diese stattdessen an eine serielle Konsole zu senden. Das Gerät, das die serielle Schnittstelle überwacht, kann sie dann einfach protokollieren, da es sich nur um einen Textstrom handelt.

Und systemd ist ziemlich dumm, wenn es dieses Zeug sowieso nicht protokolliert. Openrc macht es in /var/log/rc.log. Auch wenn es nicht systemd wäre, könnten Sie wahrscheinlich inittab so ändern, dass dort kein getty / Xorg auf tty1 platziert wird, und verhindern, dass etwas (wie Xorg) an einen anderen Ort wechselt, und der alte Text bleibt möglicherweise erhalten (genau wie bei alt) pre-systemd openSUSE). Oder kopieren Sie es in ein anderes tty (was meiner Meinung nach eher Syslog als inittab ist ... und Sie sehen möglicherweise viele Linux-Installer, die dies auf tty9 + tun). Wenn es weg und zurück wechselt, wird es einfach nicht zurückblättern (Shift + Pgup) ), wird aber wahrscheinlich eine Ausgabeseite haben. Vielleicht kennt jemand, der mehr über systemd weiß, das neue Äquivalent zu inittab, und Sie können das ändern.

Peter
quelle
Wenn Sie die Kommentare lesen, werden Sie sehen, dass systemddieses Zeug protokolliert wird.
don_crissti