Một hạt nhân hoảng loạn là gì?


19

Điều đó có nghĩa là gì khi máy tính của bạn bị "nhân hoảng loạn" ?

Nó có tương đương với các cửa sổ BsoD không?

Ngoài ra, phương pháp, mẹo, thủ thuật nào có sẵn cho người dùng khi hạt nhân hoảng loạn tấn công?


3
Một hoảng loạn hạt nhân tốt hơn BSOD vì tên của nó ngụ ý những gì người dùng nên làm khi nó xảy ra.
amphetamachine

Một cửa sổ màu xanh cũng cung cấp một số thông tin, hầu như không hữu ích lắm.
ott--

Câu trả lời:


16

Kernel hoảng loạn giống như BSOD và IIRC không thể cứu được. Tuy nhiên, lỗi nhỏ hơn là OOPS biểu thị một số lỗi trong kernel.

  1. Bạn có thể sử dụng kexec để chuyển sang kernel mới trong hoảng loạn (bạn có thể đe dọa nó khi khởi động lại nhanh) - có thể nhận được kết xuất hệ thống có ý nghĩa để gỡ lỗi sự cố
  2. Bạn có thể sử dụng panictham số khởi động lại kernel sau n giây. Bạn có thể hướng dẫn GRUB chuyển sang kernel dự phòng trong trường hợp đó
  3. Sử dụng các phím Magic SysRQ để in dấu vết ngăn xếp, v.v.

6
Chính xác hơn một BSOD là một KP với màn hình thông báo lỗi thực sự xấu.
xenoterracide

Phép thuật đáng chú ý nhất SysRq là emergency syncxả sạch bộ đệm (khi vẫn còn có thể).
ott--

6

Một hoảng loạn hạt nhân Linux là một lệnh gọi chương trình con mà hạt nhân thực thi khi logic hạt nhân xác định rằng một điều kiện tồn tại làm cho việc tiếp tục thực hiện logic thông thường là không thể hoặc vô trách nhiệm.

Nhân có thể gọi hoảng loạn khi:

  1. Nó phát hiện lỗi phần mềm trong mã kernel hoặc stack
  2. Khi có một điều kiện thời gian chạy như hết bộ nhớ mà không có quá trình tiêu diệt
  3. Một ngoại lệ CPU trong quá trình thực thi chế độ đặc quyền dẫn đến tình trạng rất tiếc

Có khoảng 950 điều kiện riêng biệt trong đó một hoảng loạn được gọi trong các hạt nhân 3.X. Chương trình con hoảng loạn trước tiên in kết xuất ngăn xếp kernel và các thanh ghi CPU vào bàn điều khiển. Sau đó, nếu một kernel kexec crash đã được cấu hình, nó sẽ khởi động kernel kexec. Nếu không, thói quen hoảng loạn phá vỡ tất cả các spinlocks và thực hiện khởi động lại khẩn cấp.

Oops là một chương trình con được gọi từ trình xử lý ngoại lệ CPU cho ngoại lệ CPU xảy ra trong khi thực hiện ở chế độ đặc quyền (tức là kernel). Ngoại lệ có thể xảy ra do lỗi mã hạt nhân hoặc do lỗi phần cứng hoặc do kết quả của một điều kiện bên ngoài gây ra ngoại lệ cụ thể. Trình xử lý ngoại lệ in một bản ghi kernel với các thanh ghi CPU và danh sách mô-đun. Không giống như các cuộc gọi hoảng loạn, logic hạt nhân tự nó không bao giờ gọi một oops bên ngoài bối cảnh của các trình xử lý ngoại lệ CPU.

Nếu kernel được cấu hình cho kexec, thì một oops sẽ dẫn đến kernel kexec được khởi động. Mặt khác, nếu ngoại lệ xảy ra trong khi thực hiện một trình xử lý ngắt, thì oops sẽ dẫn đến một lệnh gọi hoảng loạn kernel. Mặt khác, nếu kernel được cấu hình với panic hoảng loạn trên oops, thì các oops sẽ dẫn đến một cuộc gọi hoảng loạn. Mặt khác, kernel thoát khỏi trình xử lý ngoại lệ và tiếp tục thực thi. Khi kernel thoát khỏi trình xử lý ngoại lệ và tiếp tục thực thi, tính toàn vẹn của kernel bị nghi ngờ.

Xử lý ngoại lệ CPU là kiến ​​trúc cụ thể. Chúng thường được triển khai trong arch / * / kernel / traps.c và được đặt trong mã mục nhập kernel đặc trưng cho kiến ​​trúc để thiết lập bảng ngắt. Xem ví dụ arch/powerpc/kernel/traps.carch/powerpc/kernel/head_fsl_booke.S.

Cả hai điều kiện hoảng loạn hạt nhân và oops đều có thể được cấu hình để gọi một kmsg_dumpthói quen mà bạn có thể sử dụng để lưu thông tin gỡ lỗi sự cố vào RAM hoặc flash bộ nhớ trừ khi các lỗi xảy ra trong bối cảnh bị gián đoạn, trong trường hợp đó, chỉ có thể sử dụng thói quen của km km_d_dump. lưu vào RAM, không vào MTD. Khi lưu vào RAM, bạn có trách nhiệm a) đảm bảo rằng vùng RAM được sử dụng không bị ghi đè trong quá trình khởi động kexec hoặc khởi động lại khẩn cấp và b) để thu thập vùng nhớ từ nhân kexec hoặc từ logic bộ tải khởi động.


5

Đây là hành vi dòng chương trình không mong muốn (kernel là một chương trình trong trường hợp này). Trong trường hợp chương trình hoảng loạn ngừng hoạt động. Nó bằng với cửa sổ BsoD. KP có nghĩa là một cái gì đó sai với kernel hoặc mô-đun. Nếu đó là kernel ổn định - hãy nhìn vào trình điều khiển. Nếu không có gì đặc biệt và tất cả các trình điều khiển là phổ biến thì đó có thể là vấn đề phần cứng.


hoặc kernel đi dã ngoại ..
uray

Ngay cả trong một kernel ổn định, luôn có một số lỗi còn lại.
ott--
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.