Apa itu "panik kernel"?

19

Apa artinya saat komputer Anda memiliki "kernel panic" ?

Apakah ini sama dengan windows BsoD ?

Juga, metode, kiat, trik apa yang tersedia bagi pengguna ketika panik kernel menyerang?

Stefan
sumber
3
Panik kernel lebih baik daripada BSOD karena namanya menyiratkan apa yang harus dilakukan pengguna ketika terjadi.
amphetamachine
Jendela biru juga memberikan beberapa info, sehingga tidak terlalu banyak membantu.
ott--

Jawaban:

16

Panik kernel sama dengan BSOD dan IIRC tidak dapat diselamatkan. Namun kegagalan yang lebih kecil adalah OOPS yang menunjukkan beberapa kesalahan dalam kernel.

  1. Anda dapat menggunakan kexec yang beralih ke kernel baru dengan panik (Anda dapat mengancamnya saat reboot cepat) - mungkin mendapatkan dump sistem yang berarti untuk debug masalah
  2. Anda dapat menggunakan panicparameter yang mem-boot kernel setelah n detik. Anda dapat menginstruksikan GRUB untuk beralih ke kernel cadangan dalam kasus seperti itu
  3. Gunakan tombol Magic SysRQ untuk mencetak jejak tumpukan dll.
Maciej Piechotka
sumber
6
BSOD yang lebih benar adalah KP dengan layar pesan kesalahan yang sangat buruk.
xenoterracide
SysRq sihir yang paling terkenal adalah emergency syncmenyiram buffer (bila memungkinkan).
ott--
6

Panic kernel Linux adalah panggilan subrutin yang dijalankan oleh kernel ketika logika kernel menentukan bahwa ada kondisi yang membuat eksekusi lanjutan dari logika normal menjadi tidak mungkin atau tidak bertanggung jawab.

Kernel dapat memanggil panik ketika:

  1. Ini mendeteksi kesalahan perangkat lunak dalam kode kernel atau stack
  2. Ketika ada kondisi run-time seperti kehabisan memori tanpa ada proses yang dapat dibunuh
  3. Pengecualian CPU selama eksekusi mode istimewa menghasilkan kondisi oops

Ada sekitar 950 kondisi berbeda di mana kepanikan disebut di kernel 3.X. Panic subroutine pertama kali mencetak dump stack kernel dan register CPU ke konsol. Kemudian, jika kernel crash kexec telah dikonfigurasi, itu mem-boot kernel kexec. Kalau tidak, rutinitas panik menghentikan semua spinlocks dan melakukan restart darurat.

Ups adalah subrutin yang dipanggil dari pengendali pengecualian CPU untuk pengecualian CPU yang terjadi saat menjalankan dalam mode privilege (yaitu kernel). Pengecualian dapat terjadi sebagai akibat dari kesalahan dalam kode kernel, atau karena kegagalan perangkat keras, atau sebagai akibat dari kondisi eksternal yang menyebabkan pengecualian tertentu. Pawang untuk pengecualian mencetak log kernel dengan daftar register dan modul CPU. Tidak seperti panggilan panik, logika kernel itu sendiri tidak pernah memanggil oops di luar konteks penangan pengecualian CPU.

Jika kernel dikonfigurasi untuk kexec, maka sebuah oops akan menghasilkan kernel kexec yang sedang di-boot. Jika tidak, jika pengecualian terjadi saat menjalankan interrupt handler, maka oops menghasilkan panggilan panik kernel. Jika tidak, jika kernel dikonfigurasi dengan "panic on oops", maka oops akan menghasilkan panggilan panik. Kalau tidak, kernel keluar dari penangan pengecualian dan melanjutkan eksekusi. Ketika kernel keluar dari handler pengecualian dan melanjutkan eksekusi, integritas kernel dicurigai.

Penangan pengecualian CPU khusus arsitektur. Mereka biasanya diimplementasikan di arch / * / kernel / traps.c, dan diatur dalam kode entri kernel khusus arsitektur yang mengatur tabel interupsi. Lihat misalnya arch/powerpc/kernel/traps.cdan arch/powerpc/kernel/head_fsl_booke.S.

Baik panik panik dan kondisi oops dapat dikonfigurasi untuk memanggil kmsg_dumprutin yang dapat Anda gunakan untuk menyimpan informasi macet debug ke RAM, atau untuk mem-flash memori kecuali oops terjadi dalam konteks interupsi, dalam hal ini rutin "kmsg_dump" hanya dapat digunakan untuk simpan ke RAM, bukan ke MTD. Ketika menyimpan ke RAM, Anda bertanggung jawab untuk a) memastikan bahwa area RAM yang digunakan tidak ditimpa selama boot kexec atau boot restart darurat, dan b) untuk memanen area memori dari kernel kexec atau dari logika boot loader.

Jonathan Ben-Avraham
sumber
5

Ini adalah perilaku aliran program yang tidak terduga (kernel adalah program dalam kasus ini). Dalam kasus program panik berhenti bekerja. Itu sama dengan windows BsoD. KP berarti ada yang salah dengan kernel atau modul. Jika kernel stabil - lihat driver. Jika tidak ada yang istimewa dan semua driver adalah umum, itu bisa menjadi masalah hardware.

Dmytro Leonenko
sumber
atau kernel piknik ..
uray
Bahkan di kernel yang stabil, selalu ada beberapa bug yang tersisa.
ott--