“ ความตื่นตระหนกของเคอร์เนล” คืออะไร?


19

มันหมายความว่าอย่างไรเมื่อคอมพิวเตอร์ของคุณมี"kernel panic" ?

มันเปรียบกับ windows BsoDหรือไม่?

นอกจากนี้ผู้ใช้ยังมีวิธีการเคล็ดลับและลูกเล่นอะไรบ้างเมื่อเคอร์เนลเกิดการตื่นตระหนก


3
ความตื่นตระหนกของเคอร์เนลนั้นดีกว่า BSOD เพราะชื่อของมันบ่งบอกถึงสิ่งที่ผู้ใช้ควรทำเมื่อมันเกิดขึ้น
แอมเฟตามาจิน

หน้าต่างสีน้ำเงินก็ให้ข้อมูลบางอย่างด้วย แต่ก็ไม่ค่อยมีประโยชน์เท่าไหร่
ott--

คำตอบ:


16

Kernel panic นั้นเหมือนกับ BSOD และไม่สามารถกู้คืนได้ IIRC อย่างไรก็ตามความล้มเหลวเล็กน้อยคือ OOPS ซึ่งแสดงถึงข้อผิดพลาดบางอย่างในเคอร์เนล

  1. คุณสามารถใช้kexecซึ่งเปลี่ยนไปใช้เคอร์เนลใหม่บนความตื่นตระหนก (คุณสามารถคุกคามว่าเป็นการรีบูตอย่างรวดเร็ว) - อาจได้รับการถ่ายโอนข้อมูลที่มีความหมายของระบบเพื่อดีบักปัญหา
  2. คุณสามารถใช้panicพารามิเตอร์ที่รีบูตเคอร์เนลหลังจาก n วินาที คุณสามารถสั่งให้ GRUB เปลี่ยนเป็นเคอร์เนลทางเลือกได้ในกรณีนี้
  3. ใช้ปุ่ม Magic SysRQเพื่อพิมพ์ร่องรอยสแต็ก ฯลฯ

6
ถูกต้องมากขึ้น BSOD เป็น KP ที่มีหน้าจอข้อความข้อผิดพลาดที่ไม่ดีจริงๆ
xenoterracide

SysRq เวทมนตร์ที่มีชื่อเสียงที่สุดคือการemergency syncล้างบัฟเฟอร์ (เมื่อยังคงเป็นไปได้)
ott--

6

Linux kernel panic เป็นการเรียกรูทีนย่อยที่เคอร์เนลเรียกใช้งานเมื่อลอจิกเคอร์เนลพิจารณาว่ามีเงื่อนไขที่ทำให้การดำเนินการต่อของตรรกะปกติเป็นไปไม่ได้หรือไม่รับผิดชอบ

เคอร์เนลสามารถเรียกตกใจเมื่อ:

  1. ตรวจพบข้อผิดพลาดซอฟต์แวร์ในรหัสเคอร์เนลหรือสแต็ค
  2. เมื่อมีเงื่อนไขรันไทม์เช่นหน่วยความจำไม่เพียงพอไม่มีกระบวนการที่สามารถฆ่าได้
  3. ข้อยกเว้นของ CPU ในระหว่างการเรียกใช้โหมดสิทธิพิเศษส่งผลให้เกิดเงื่อนไขแบบอุ๊ปส์

มีเงื่อนไขที่แตกต่างกันประมาณ 950 ข้อที่เรียกว่าความตื่นตระหนกในเมล็ด 3.X รูทีนย่อย panic ก่อนพิมพ์เคอร์เนลดัมพ์สแต็กและ CPU ลงทะเบียนไปยังคอนโซล จากนั้นหากเคอร์เนล kexec เกิดความผิดพลาดได้รับการกำหนดค่ามันจะบู๊ตเคอร์เนล kexec มิฉะนั้นความตื่นตระหนกจะทำหน้าที่ล็อคสปินล็อคทั้งหมดและทำการรีสตาร์ทฉุกเฉิน

oops เป็นรูทีนย่อยที่เรียกจากตัวจัดการข้อยกเว้น CPU สำหรับข้อยกเว้นของ CPU ที่เกิดขึ้นขณะดำเนินการในโหมดสิทธิพิเศษ (เช่นเคอร์เนล) ข้อยกเว้นสามารถเกิดขึ้นได้เนื่องจากข้อผิดพลาดในรหัสเคอร์เนลหรือเนื่องจากความล้มเหลวของฮาร์ดแวร์หรือเป็นผลมาจากสภาพภายนอกที่ทำให้เกิดข้อยกเว้นเฉพาะ ตัวจัดการสำหรับข้อยกเว้นพิมพ์บันทึกเคอร์เนลด้วยรายการ CPU register และโมดูล ซึ่งแตกต่างจากการโทรเสียขวัญเคอร์เนลตัวเองไม่เคยเรียก oops นอกบริบทของตัวจัดการข้อยกเว้นของ CPU

หากเคอร์เนลถูกกำหนดค่าสำหรับ kexec ดังนั้น oops จะส่งผลให้เคอร์เนล kexec ถูกบูต มิฉะนั้นหากข้อยกเว้นเกิดขึ้นขณะดำเนินการตัวจัดการขัดจังหวะแล้ว oops ผลในการเรียกเคอร์เนลตกใจ มิฉะนั้นหากเคอร์เนลได้รับการกำหนดค่าด้วย“ panic on oops” ดังนั้น oops จะส่งผลให้เกิดการเรียกแบบตกใจ มิฉะนั้นเคอร์เนลจะออกจากตัวจัดการข้อยกเว้นและดำเนินการต่อ เมื่อเคอร์เนลออกจากตัวจัดการข้อยกเว้นและดำเนินการต่อการดำเนินการความสมบูรณ์ของเคอร์เนลเป็นที่น่าสงสัย

ตัวจัดการข้อยกเว้น CPU เป็นสถาปัตยกรรมเฉพาะ พวกเขามักจะนำมาใช้ใน arch / * / kernel / traps.c และตั้งค่าในรหัสรายการเคอร์เนลเฉพาะสถาปัตยกรรมที่ตั้งค่าตารางขัดจังหวะ ดูตัวอย่างและarch/powerpc/kernel/traps.carch/powerpc/kernel/head_fsl_booke.S

ทั้งเงื่อนไขเคอร์เนลที่ตื่นตระหนกและ oops สามารถกำหนดค่าให้เรียกkmsg_dumpรูทีนที่คุณสามารถใช้เพื่อบันทึกข้อมูลการดีบักความผิดพลาดไปยัง RAM หรือหน่วยความจำแฟลชเว้นแต่ว่า oops เกิดขึ้นในบริบทอินเตอร์รัปต์ซึ่งในกรณีนี้รูทีน“ kmsg_dump” บันทึกไปที่ RAM ไม่ใช่กับ MTD เมื่อบันทึกเป็น RAM คุณต้องรับผิดชอบในการ a) ตรวจสอบให้แน่ใจว่าพื้นที่ RAM ที่ใช้ไม่ถูกเขียนทับระหว่างการบูต kexec หรือการบูตแบบรีสตาร์ทฉุกเฉินและ b) เพื่อเก็บเกี่ยวพื้นที่หน่วยความจำจากเคอร์เนล kexec หรือจากตรรกะโหลดเดอร์


5

มันเป็นพฤติกรรมการไหลของโปรแกรมที่ไม่คาดคิด (เคอร์เนลเป็นโปรแกรมในกรณีนี้) ในกรณีที่โปรแกรมตื่นตระหนกหยุดทำงาน มันเท่ากับ windows BsoD KP หมายถึงบางสิ่งผิดปกติกับเคอร์เนลหรือโมดูล ถ้าเป็นเคอร์เนลที่เสถียร - ดูไดรเวอร์ หากไม่มีอะไรพิเศษและไดรเวอร์ทั้งหมดเป็นเรื่องปกติอาจเป็นปัญหาฮาร์ดแวร์


หรือเคอร์เนลออกไปปิกนิก ..
uray

แม้ในเคอร์เนลที่เสถียรมีข้อบกพร่องบางอย่างเหลืออยู่เสมอ
ott--
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.