Bagaimana cara menghentikan (atau menangkap) pesan yang terbang pada akhir urutan startup?

8

Menjelang akhir "urutan startup" 1 , saya melihat serangkaian pesan diagnostik gondrong terbang dengan sangat cepat, tepat sebelum saya melihat prompt login 2 .

AFAICT, sebagian besar, jika tidak semua, dari garis-garis yang membentuk output yang berumur pendek ini dimulai dengan salah satu dari string yang ditunjukkan di bawah ini

[  OK  ]
[FAILED]

... di mana OKhijau, dan FAILEDmerah 3 .

Pesan-pesan ini terlalu singkat untuk saya baca.

Pertanyaanku adalah:

Apakah ada cara untuk membuat pesan-pesan ini lebih mudah dibaca?


Kemungkinan solusi yang muncul termasuk (dalam urutan pilihan):

  1. teeing (atau hanya mengarahkan) pesan-pesan tersebut kata demi kata 4 ke beberapa file log persisten;
  2. mengaktifkan mekanisme tipe paging ( Press any key to continue...);
  3. menyisipkan jeda (dengan panjang yang dapat dikonfigurasi) setelah pesan-pesan itu dicetak;
  4. mengaktifkan beberapa tombol (atau kombinasi tombol) untuk menghentikan sementara output ke layar 5 .

EDIT: berdasarkan komentar yang saya dapatkan sejauh ini, saya harus menyimpulkan bahwa kata kata demi kata di (1) di atas tidak dipahami, atau tidak dianggap serius, meskipun saya telah menekankan sebanyak yang saya bisa. Saya akan membuatnya flash jika saya bisa ...


EDIT2: saran yang saya berikan dalam komentar tampaknya menjanjikan bagi saya, tapi saya belum bisa membuatnya bekerja. Inilah yang saya lakukan:

Pertama, saya menambahkan yang berikut di akhir /etc/rsyslog.conf:

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

... dan reboot. Saya melihat pesan diagnostik biasa lewat, tetapi tidak ada /var/log/boot.logfile yang dibuat.

Kemudian, dalam acara (memang tidak mungkin) yang /var/log/boot.logharus ada sebelum rsyslogdapat menulis ke sana, saya mengeksekusi (sebagai root):

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

... di mana perintah chgrpdan chmoddimaksudkan untuk membuat kepemilikan dan izin /var/log/boot.logcocok dengan semua file log lainnya di bawah /var/log. Lalu saya reboot, melihat pesan, dll. File /var/log/boot.logtetap kosong setelah reboot ini.

(Saya mendapat hasil yang sama ketika saya mengubah izin /var/log/boot.loguntuk 666.)

Saya sudah grepmeng-output journalctl --bootdan file-file di bawah /var/loguntuk apa pun yang saya bisa pikirkan yang mungkin menunjuk ke sesuatu yang serba salah dengan saya rsyslog, tetapi tidak menemukan apa pun. (Saya sama sekali tidak terbiasa dengan rsyslog, jadi saya yakin pencarian saya cukup tidak kompeten.)

Jelas bahwa apa yang telah saya lakukan sejauh ini tidak cukup untuk mengaktifkan pencatatan yang diinginkan. Saya sekarang mencari apa pun yang saya lewatkan. Saya belum dapat menemukan banyak dokumentasi yang relevan. Sebagai contoh, tidak ada rsyslog.conf(5)atau rsyslogd(8)berkenan untuk menjelaskan apa local7itu ( rsyslog.conf(5)setidaknya cukup ramah untuk menyebutkannya sekali, tanpa memberikan informasi lebih lanjut).


EDIT3

Informasi distro:

$ 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

Informasi tambahan yang berpotensi relevan:

$ 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 Yaitu apa yang terjadi ketika saya (kembali) mem-boot mesin saya.

2 FWIW, multi-user.targetadalah standar saya.

3 Teks yang tersisa semuanya berwarna putih di atas latar belakang hitam. Ini berlaku untuk prompt masuk berikutnya.

4 Saya menemukan solusi yang sama sekali tidak dapat diterima yang tidak membuat saya melihat teks yang tepat dari pesan-pesan ini seperti yang muncul selama urutan startup. Karena, selalu, saya tidak akrab dengan apa pun dari pesan diagnostik yang dirujuk, tidak mungkin bagi saya untuk mengenali semua cara di mana informasi yang mendasarinya disampaikan oleh pesan asli dapat diparafrasekan, tersebar di beberapa pesan lainnya , dimasukkan dalam pesan lain, dll. (Hanya dengan mencari secara online untuk kata - kata yang tepat dari pesan aslinya, saya memiliki harapan untuk menemukan solusi untuk masalah tersebut.) Semua yang saya coba sejauh ini, termasuk journalctl -bdan dmesgtelah gagal memberi saya pesan asli kata demi kata. Sebagai contoh, ketika saya menjalankan startup saya hanya bisa melihat satu warna merah FAILED, tetapi journalctl --boot | grep FAILED | wc -lkembali 0, dan journalctl --boot | grep -i FAILED | wc -l kembali 1086. Tak satu pun dari ini yang saya cari.

5 Dalam sistem saya, saya akan memiliki kurang dari satu detik untuk menekan tombol atau kombinasi tombol tersebut, dan tidak ada peringatan tentang kapan interval singkat ini dimulai. Kecuali jika seseorang dapat mengkonfigurasi durasi interval di mana penekanan tombol seperti itu harus terjadi, solusi berbasis penekanan tombol apa pun terlalu tidak praktis untuk menjadi apa pun selain manuver pilihan terakhir. Juga, FWIW, saya memang mencoba menekan salah satu atau tombol ketika pesan melintas, tetapi tidak ada bedanya.Scroll
Lock
Pause/
Break

kjo
sumber
4
Tidak journalctl -b(sebagai root) memberi Anda persis seperti itu, yaitu melihat teks yang tepat dari pesan-pesan ini ketika muncul selama urutan startup ?
don_crissti
2
Bergantung pada sistem Anda, Anda dapat menemukan pesan dalam file/var/log/boot.log
meuh
2
@Theophrastus: Saya mulai melihat mengapa begitu banyak pengguna Linux membenci systemd, dan saya akan bergabung dengan barisan mereka sendiri ... Saya telah mengedit fn 4 saya untuk menjelaskan (bahkan lebih) mengapa journalctl --boot | grep -i fail, misalnya, bukan apa Saya mencari.
kjo
3
kjo, satu-satunya perbedaan yang saya lihat antara pesan saat boot dan yang masuk journaladalah kehadiran [OK]/ [FAILED]. Pesan-pesannya identik. Meskipun demikian, cara yang tepat untuk mendiagnosis / memecahkan masalah unit gagal adalah systemctl, hanya agar Anda tahu. Saya tidak tahu apakah Anda dapat menjeda proses booting melalui pintasan keyboard (kata mereka CTRL + S / CTRL + Q harus bekerja tetapi tidak, setidaknya tidak pada i915 / KMS). Namun, Anda bisa Nonaktifkan menghapus pesan - pesan boot dan gulir ke pesan-pesan itu di TTY1 dengan Shift + PgUp / Down.
don_crissti
2
Mungkin T / A berikut memberikan sesuatu: superuser.com/questions/480370/…
Ralph Rönnquist

Jawaban:

1

Anda dapat mengatur argumen baris perintah kernel (sesuatu seperti console=tty0 console=ttyS0,115200n8) untuk mengirim ini ke konsol serial, dan kemudian perangkat yang mendengarkan pada port serial dapat dengan mudah mencatatnya, karena itu hanya aliran teks.

Dan systemd sangat konyol jika tidak mencatat hal ini. Openrc melakukannya di /var/log/rc.log. Juga jika itu bukan systemd, Anda mungkin bisa memodifikasi inittab untuk tidak menempatkan getty / Xorg di tty1, dan mencegah apa pun (seperti Xorg) beralih ke tempat lain, dan teks lama mungkin tetap dimasukkan (seperti yang dilakukan pada lama openSUSE pra-systemd). Atau salin ke tty lain (yang saya pikir syslog melakukan itu daripada inittab ... dan Anda mungkin melihat banyak installer linux melakukan ini di tty9 +) Jika ia berganti dan kembali, itu tidak akan menggulir ke belakang (shift + pgup ), tetapi mungkin akan memiliki satu halaman output. Mungkin seseorang yang tahu lebih banyak tentang systemd tahu yang baru setara dengan inittab dan Anda dapat mengubahnya.

Peter
sumber
Jika Anda membaca komentar Anda akan melihat bahwa systemdini mencatat hal ini.
don_crissti