เคอร์เนล panic คืออะไร


52

ฉันเพิ่งจบหลักสูตรระบบปฏิบัติการ ฉันได้ยินวลี" เคอร์เนลตกใจ "มาก คุณสามารถอธิบาย

  1. เคอร์เนล panic คืออะไร
  2. ทำไมมันเกิดขึ้น?
  3. ฉันจะทราบได้อย่างไรว่าเคอร์เนลเกิดความตื่นตระหนก
  4. มันมีผลกระทบอะไรกับระบบ?
  5. มันเกิดขึ้นใน Linux เท่านั้นหรือ
  6. ฉันจะป้องกันได้อย่างไร

Kernel panic เป็นส่วนหนึ่งของข้อความแสดงข้อผิดพลาดบน mac ถ้ามันบอกว่า "ความหวาดกลัวที่เรากำลังแขวนอยู่ที่นี่" (เดาก็คือว่ามันอาจจะเป็นส่วนหนึ่งของยูนิกซ์.)
อัลวาร์

21
หากคุณกำลังเรียนหลักสูตร OS ทำไมคุณไม่ขอให้อาจารย์อธิบายคำศัพท์ที่ใช้ คุณจะได้รับมากขึ้นจากการศึกษาของคุณ
TRiG

คำตอบ:


56

1 คำถามต่อครั้งตามคำถามที่พบบ่อย

  1. เคอร์เนล panic คืออะไร
    เมื่อเคอร์เนลไม่สามารถโหลดได้อย่างถูกต้องหรือ "หลุดออก" และล้มเหลวในการบูตอย่างถูกต้องหรือเกิดปัญหา (ดูแก้ไขเครดิตที่ด้านล่าง)

  2. ทำไมมันเกิดขึ้น?
    การอัปเดตที่ถูกขโมยฮาร์ดแวร์ที่ล้มเหลวฮาร์ดแวร์ที่ไม่สนับสนุนไดรฟ์หรือพาร์ติชันที่ล้มเหลวหรือหายไป (ดูเครดิตการแก้ไขที่ด้านล่าง)

  3. ฉันจะเข้าใจความตื่นตระหนกของเคอร์เนลได้อย่างไร
    ดูการเตือนการบู๊ต (ปิดพารามิเตอร์เคอร์เนลที่เงียบ) หรือเครื่องของคุณไม่สามารถบู๊ตได้

  4. มีผลกระทบอะไรกับระบบ?
    ความล้มเหลวในการบูตหรือระบบล่ม

  5. มันเกิดขึ้นใน Linux เท่านั้นหรือ
    ไม่ระบบปฏิบัติการที่เหมือนยูนิกซ์ทั้งหมดสามารถมีความตื่นตระหนกของเคอร์เนลได้ มันเทียบเท่ากับWindows Blue Screen of Death

  6. ฉันจะป้องกันได้อย่างไร
    ปกติแล้วมันจะไม่เกิดขึ้น ทดสอบการอัปเดตและแก้ไขปัญหา ใช้เสถียรภาพแทนสาขาการพัฒนา

หมายเหตุเพิ่มเติม: ความตื่นตระหนกเคอร์เนลและความล้มเหลวของระบบ / การปิดระบบสามารถรับผิดชอบโดยตรงในการปกป้องคอมพิวเตอร์ของคุณจากความเสียหายทางกายภาพ ตัวอย่าง ได้แก่ การหยุดก่อนที่ความร้อนสูงเกินไปหรือดิสก์เสียหาย ดูเครดิตแก้ไขที่ด้านล่างสำหรับใบเสนอราคาโดยตรง

การแก้ไข

ต่อB. Rolandดิสก์ที่หายไปหรือเสียหายหรือไดรฟ์อาจทำให้สิ่งนี้เช่นกัน
(จุดดีและฉันมองข้าม)

ความตื่นตระหนกต่อKees Kernel ยังสามารถเกิดขึ้นได้ในขณะที่ทำงาน
หมายเหตุ: สามารถเกิดขึ้นได้เมื่อฟังก์ชั่นล้มเหลวในการจัดเรียงอย่างสง่างามภายในเคอร์เนล แต่ส่วนใหญ่มักจะเกิดขึ้นในระหว่างการโหลดโมดูลหรือเคอร์เนล (ซึ่งมักจะเป็นในระหว่างการบูต) ฉันคิดว่าฉันแตะมันที่ "ในระหว่างการบูตหรือระบบขัดข้อง" แต่ฉันเห็นว่าคำตอบของฉัน (1) ระบุว่าจะเกิดขึ้นเฉพาะในระหว่างการบูต

ต่อคำพูดของrafalcieslakโดยตรง - 'มีสิ่งสำคัญอย่างหนึ่งที่ต้องเพิ่ม: จุดหลักในความตื่นตระหนกของเคอร์เนลทั้งหมดคือการปกป้องคอมพิวเตอร์ของคุณ เคอร์เนลค้างไม่เพียงเพราะมันล้มเหลวในการทำบางสิ่ง แต่ยังเพื่อป้องกันคอมพิวเตอร์ของคุณจากความร้อนสูงเกินไปความเสียหายของฮาร์ดไดรฟ์และปัญหาฮาร์ดแวร์อื่น ๆ ที่อาจเกิดขึ้นหากมีการดำเนินการคำสั่งที่ไม่ถูกต้องของโมดูล ตัวอย่างเช่นโมดูลที่รับผิดชอบในการควบคุมพัดลม) ไม่สามารถโหลดเป็นต้นนี่คือเหตุผลที่เคอร์เนลชอบที่จะหยุดนิ่งกว่าจะเอาชนะปัญหา '


3
เพิ่มไปยัง q # 2: ไฟล์สำหรับบู๊ตที่หายไป (เช่นเมื่อปริมาณ LVM หายไป) ...
antivirtel

@B Roland เพิ่มและให้เครดิต
RobotHumans

ดีขอบคุณ - ฉันเขียนมันเพราะเมื่อมันเกิดขึ้นกับฉัน ... (ฉันบังเอิญจัดรูปแบบปริมาณใน LVM ... )
antivirtel

8
คำตอบนี้ไม่ถูกต้อง ความตื่นตระหนกของเคอร์เนลไม่ได้ จำกัด อยู่เพียงแค่การบูตล้มเหลว คำตอบของ JanC นั้นถูกต้องมากขึ้น ("เคอร์เนลตรวจพบข้อผิดพลาดที่ไม่สามารถกู้คืนได้") การไม่สามารถบู๊ตเป็นเพียงหนึ่งในหลาย ๆ เงื่อนไข
Kees Cook

2
มีสิ่งหนึ่งที่สำคัญมากที่ต้องเพิ่ม: จุดหลักในการตื่นตระหนกของเคอร์เนลทั้งหมดคือการปกป้องคอมพิวเตอร์ของคุณ เคอร์เนลค้างไม่เพียงเพราะมันล้มเหลวในการทำบางสิ่ง แต่ยังเพื่อป้องกันคอมพิวเตอร์ของคุณจากความร้อนสูงเกินไปความเสียหายของฮาร์ดไดรฟ์และปัญหาฮาร์ดแวร์อื่น ๆ ที่อาจเกิดขึ้นหากมีการดำเนินการคำสั่งที่ไม่ถูกต้องของโมดูล ตัวอย่างโมดูลที่รับผิดชอบในการควบคุมพัดลม) ล้มเหลวในการโหลดเป็นต้นนี่คือสาเหตุที่เคอร์เนลต้องการที่จะหยุดนิ่งกว่าจะเอาชนะปัญหา
RafałCieślak

31

ตื่นตระหนกเคอร์เนลที่เกิดขึ้นเมื่อเคอร์เนลตรวจพบข้อผิดพลาดจากการที่ไม่สามารถกู้คืน ฟังก์ชั่นที่ตั้งชื่อpanic()เพื่อจัดการสถานการณ์นี้ (บ่อยครั้งโดยการทิ้งข้อมูลการดีบักและ / หรือการรีบูตระบบ) ได้รับการแนะนำครั้งแรกในหนึ่งในรุ่น UNIX รุ่นแรก ๆ ดังนั้นจึงเป็นที่มาของชื่อ (และมันยังคงเรียกมันว่า เช่นระบบปฏิบัติการรวมถึง Mac OS X)

Blue Screen Of Death ที่มีชื่อเสียง(เรียกอย่างเป็นทางการว่าระบบข้อผิดพลาดร้ายแรงเช่นเดียวกับใน VMS / OpenVMS) ในเคอร์เนล NT ของ Microsoft ก็เป็นรูปแบบของ "เคอร์เนลตกใจ"

ข้อผิดพลาดของเคอร์เนล linux ซึ่งเคอร์เนลสามารถกู้คืนได้ (บางส่วนหรือชั่วคราว) เรียกว่าเคอร์เนล oops (คุณอาจเห็นสิ่งเหล่านั้นในdmesgเอาต์พุตในบางครั้ง)

สาเหตุของความตื่นตระหนกของเคอร์เนลอาจเป็นข้อผิดพลาดในเคอร์เนล (เช่นในไดรเวอร์ที่เป็นส่วนหนึ่งของเคอร์เนล) หรือปัญหาฮาร์ดแวร์หรือซอฟต์แวร์ที่ทำให้เกิดเงื่อนไขที่ไม่คาดคิด / ไม่แน่นอนสำหรับเคอร์เนล (เช่นเมื่อไม่สามารถเริ่มต้นinitกระบวนการหรือไม่ก็ถูกฆ่า)

หากต้องการทราบว่าเกิดจากสาเหตุใดคุณสามารถดูได้ว่ามีสิ่งใดพิมพ์บนหน้าจอหรือคอนโซลอนุกรม (หากคุณกำหนดค่าไว้) หากมีการกำหนดค่าให้ทำเช่นนั้นคุณสามารถให้ระบบสร้างเคอร์เนลการถ่ายโอนข้อมูลความเสียหายของ linuxซึ่งจะบันทึกหน่วยความจำเคอร์เนลลงในดิสก์ในกรณีที่เกิดความตื่นตระหนกเพื่อให้ผู้พัฒนาเคอร์เนลสามารถวิเคราะห์ได้ (แน่นอนว่าต้องใช้ สามารถเขียนลงดิสก์ได้) ในบางกรณี/var/log/messagesอาจมีข้อมูลที่เป็นประโยชน์ (เช่นในบางกรณีการกู้คืนจาก oops อาจทำให้เกิดข้อผิดพลาดที่ไม่สามารถกู้คืนได้ในภายหลัง) มีบางข้อมูลรายละเอียดมากขึ้นคือที่นี่


1

ฉันมีความตื่นตระหนกเคอร์เนลในระบบของฉันตอนนี้ Ubuntu 16.04 คอมพิวเตอร์ของฉันบ่นว่าดิสก์สำหรับบูตเต็มดังนั้นฉันจึงเรียกใช้ 'apt autoremove' มันลบสิ่งที่ฉันคิดว่าเป็นไฟล์ที่ไม่จำเป็นออกและผลลัพธ์ก็คือความตื่นตระหนกของเคอร์เนล

ดังนั้นฉันจึงเดาว่าการแก้ไขดิสก์การบูตในระดับใดอาจทำให้เคอร์เนลเกิดความตื่นตระหนก ดังนั้นอย่าเล่นกับมันถ้าคุณไม่ใส่ใจกับสิ่งที่คุณกำลังทำอยู่


สิ่งนี้ไม่ได้ช่วยตอบคำถามของ OP :(
Mike Williamson

1

@RobotHumans 'คำตอบที่อยู่ทุกส่วนของคำถามของคุณ อย่างไรก็ตามฉันต้องการที่จะอธิบายสาเหตุของ Kernel Panic

ประการแรก Kernel Panic มี 2 ประเภทคือ - Soft Kernel Panic (หรือที่รู้จักกันในชื่อโอ๊ะโอ) และ (Hard Kernel Panics รู้จัก Aieee!)

ระบบทำงานในโหมดตกใจเคอร์เนลเมื่อพบข้อยกเว้นที่ไม่สามารถจัดการได้ Soft kernel panics นั้นจัดการได้ง่ายกว่า

สาเหตุของ Kernel Panic

มีสาเหตุหลายประการ แต่ที่พบบ่อยที่สุดอยู่ด้านล่าง:

  • RAM ที่มีข้อบกพร่องหรือเข้ากันไม่ได้เป็นสาเหตุที่พบบ่อยที่สุดของ Kernel Panic
  • ส่วนขยายเคอร์เนลที่ล้าสมัยเข้ากันไม่ได้หรือเสียหาย
  • ไดรเวอร์เคอร์เนลที่ล้าสมัยเข้ากันไม่ได้หรือเสียหาย
  • ความเสียหายของฮาร์ดดิสก์หรือปัญหาเช่นเซกเตอร์เสียหรือไดเรกทอรีเสียหายอาจทำให้เกิดความตื่นตระหนกของเคอร์เนล
  • RAM ไม่เพียงพอหรือพื้นที่ว่างบนฮาร์ดดิสก์
  • ฮาร์ดแวร์ที่มีข้อบกพร่องโปรแกรมที่เขียนไม่ดีหรือความล้มเหลวของฮาร์ดแวร์ยังสามารถนำไปสู่เคอร์เนล Panic

นี่เป็นสิ่งสำคัญที่จะต้องทราบว่าเฉพาะโมดูลที่อยู่ภายในพื้นที่เคอร์เนลเท่านั้นที่สามารถทำให้เกิดความตื่นตระหนกของเคอร์เนลได้ lsmodสามารถรันคำสั่งเพื่อรับรายการของโมดูลที่โหลดแบบไดนามิก

ในการแก้ไขปัญหาความตื่นตระหนกของเคอร์เนลให้ตรวจสอบ / var / log / messages บางครั้งข้อมูลทั้งหมดอาจถูกบันทึกไว้ที่นั่นในขณะที่บางครั้งไม่มีอะไรเกี่ยวข้องกับ kernel panic อาจถูกบันทึกไว้ที่นั่น แม้ว่าจะหลีกเลี่ยงไม่ได้ที่จะพบกับความตื่นตระหนกของเคอร์เนล แต่ก็ไม่มีอะไรน่าเป็นห่วง

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