Di mana log panik kernel?

31

Saya punya masalah dengan Handbrake / ffmpeg. Setelah ~ 5 menit transcoding, komputer terkunci. Saya cukup yakin itu panik kernel karena caps-lock mulai berkedip.

Ada beberapa pertanyaan logis tentang apa yang harus dilakukan dan beberapa tentang bug tertentu tetapi saya benar-benar setelah satu hal: apa yang terjadi tepat sebelum semuanya mati ?!

Saya sudah memeriksa /var/log/kern.logdan yang saya lihat sekitar waktu adalah saya menempel di DVD dan kemudian beberapa menit kemudian, sistem boot. Tidak ada kesalahan, tidak ada pemberitahuan panik.

Apakah ada cara untuk memaksa panik untuk dicatat? Saya cukup yakin saya dapat mereproduksi ini (itu terjadi 100% dari kali saya mencoba baru-baru ini) jadi sementara saya lebih suka ini "hanya bekerja", saya cukup senang untuk reboot beberapa kali jika itu berarti saya bisa temukan penyebab kepanikan.

Oli
sumber
Adakah pesan khusus yang Anda dapatkan saat melakukan transkode? Mungkin bermanfaat dalam melacak solusinya;)
Rinzwind
@Rinzwind Tidak. Tidak menunjukkan apa-apa, hanya membeku.
Oli
Kemungkinan besar masalah overheating. Transcoding menggerakkan CPU dengan keras, dan jika pendinginan Anda tidak 100% efektif, CPU akan dimatikan secara darurat. Saya telah melihat ini terjadi ketika pasta termal dikeringkan pada heatsink CPU, misalnya. Itu juga terjadi ketika pengaturan overclocking kacau di BIOS. Coba gunakan xsensor untuk memonitor suhu CPU tepat sebelum penguncian.
Neil Mayhew

Jawaban:

21

Semua log sistem Anda di Ubuntu ditangani oleh rsyslogyang menyimpan konfigurasinya di /etc/rsyslog.confdan /etc/rsyslog.d/.

Untuk informasi lebih lanjut tentang cara mengonfigurasi rsyslogdan opsi yang mungkin, kunjungi rsyslog.conf man page.

Membuka /etc/rsyslog.d/50-default.confAnda dapat melihat bahwa salah satu baris berisi

*.*;auth,authpriv.none -/var/log/syslog*

Berarti file yang Anda cari dalam kasus ini adalah salah satu dari /var/log/sysloglog besar yang mungkin Anda miliki.

Anda dapat melihat bahwa nama file juga dimulai dengan -, ini berarti bahwa file di-cache sebelum menulis, itu bagus tetapi dapat meninggalkan Anda dengan log yang buruk, yang Anda inginkan adalah log ditulis segera setelah ada masalah. Hapus tanda hubung dan reboot atau memuat ulang rsyslogdan kemudian membuat komputer Anda crash lagi, periksa /var/log/syslog.

Bruno Pereira
sumber
1
menghapus "-" yang di-boot ulang, dicentang / var / log / syslog | grep panic. Tidak bekerja. Apakah saya melewatkan sesuatu?
AAI
26

Jika itu benar-benar panik kernel maka itu tidak akan ditulis ke dalam log melalui metode normal. Karena kernel pada saat ini mengalami crash, menulis ke sistem file adalah operasi yang berisiko - tidak banyak dari kernel yang dapat dipercaya lagi, jadi menulis ke log mungkin sebenarnya memuntahkan omong kosong acak di atas bootloader Anda!

Sebagai gantinya, Anda dapat membuang konten memori ke swap Anda, dan kemudian men-debugnya nanti. Ini dikenal sebagai kernel crash / core dump.

Wiki Ubuntu memiliki CrashdumpRecipe yang mungkin berguna - meskipun terlihat agak ketinggalan zaman, saya tidak berpikir terlalu banyak yang harus diubah.

Cesium
sumber
10
CrashdumpRecipe mengacu pada alat Linux Kernel Crash Dump (LKCD) yang tersedia di Sourceforge - ada paket untuk Ubuntu yang disebut linux-crashdump; paket ini masih tersedia di semua versi.
Mei
3

Port serial

Port serial adalah mekanisme komunikasi tingkat rendah yang sederhana antar komputer.

Keuntungan:

  • pengaturan sederhana sekali (jika Anda memiliki perangkat keras)
  • andal, karena pengiriman data hanya tergantung pada kabel sederhana dan API kernel, yang cenderung terpengaruh oleh kepanikan daripada mengatakan, subsistem TCP / IP.

Kerugian:

  • kebanyakan laptop modern tidak memiliki port serial lagi (terbuka?) untuk menghemat ruang. Tetapi desktop dan mesin virtual masih melakukannya.
  • Anda juga memerlukan komputer kedua dengan port serial juga untuk menerima data, tetapi pada dasarnya ini adalah kasus untuk semua papan pengembangan yang disematkan seperti Raspberry Pi.
  • dibatasi oleh panjang kabel serial layer fisik, tidak seperti jaringan TCP / IP yang tidak terbatas. Namun ini dapat dikerjakan dengan perangkat yang antarmuka antara serial dan TCP / IP. Tetapi ada perangkat yang mengkonversi antara keduanya.

Port serial terlihat seperti ini:

dan pada RPI tersedia melalui GPIO.

Kemudian, jika Anda memiliki perangkat keras yang diperlukan, sambungkan dari komputer kedua ke komputer utama dengan:

screen /dev/ttyS0 115200

Ini sebenarnya memberi Anda shell.

Kemudian pada mesin utama, mulailah operasi yang panik.

Saat kepanikan terjadi, kepanikan itu dialirkan ke mesin kedua, dan Anda bisa melihat semuanya dengan menggulir ke atas di terminal.

Metode lainnya

Ada juga metode lain yang mengatasi keterbatasan perangkat keras yang disebutkan di atas, dengan biaya yang lebih kompleks dan kurang dapat diandalkan. Metode penting:

  • netdump: stream panik melalui TCP / IP. Mengandalkan subsistem TCP / IP tidak rusak.
  • kdump: tampaknya merupakan mekanisme yang mendasari linux-crashdump yang disebutkan di: https://askubuntu.com/a/104793/52975 Boot kernel Linux kedua untuk memeriksa kernel crash. Apa yang mungkin salah ?! :-)

Lihat juga jawaban yang bagus ini: https://unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic

Langkah debugging

Pada akhirnya, mendapatkan output panik mengharuskan beberapa fungsi kernel berfungsi, dan fungsionalitas kernel apa pun bisa rusak oleh panik.

Tapi siapa yang butuh panik jika Anda bisa menggunakan GDB di kernel? Jika Anda hardcore, lihat:

Setiap masalah jatuh setelah Anda memiliki visibilitas penuh (dan cukup waktu!).

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber