บันทึกความตื่นตระหนกของเคอร์เนลอยู่ที่ไหน


31

ฉันมีปัญหากับ Handbrake / ffmpeg หลังจากการแปลงรหัส ~ 5 นาทีคอมพิวเตอร์จะล็อค ฉันค่อนข้างแน่ใจว่ามันเป็นความตื่นตระหนกของเคอร์เนลเนื่องจากตัวพิมพ์ใหญ่เริ่มกะพริบ

มีคำถามเชิงตรรกะสองสามข้อเกี่ยวกับสิ่งที่ต้องทำและบางอย่างเกี่ยวกับข้อผิดพลาดเฉพาะ แต่ฉันจริง ๆ หลังจากสิ่งหนึ่ง: เกิดอะไรขึ้นก่อนที่ทุกอย่างจะตาย!

ฉันได้ตรวจสอบ/var/log/kern.logแล้วและสิ่งที่ฉันเห็นในเวลานั้นคือฉันติดแผ่นดีวีดีแล้วไม่กี่นาทีต่อมาระบบจะบูตขึ้นมา ไม่มีข้อผิดพลาดไม่ต้องตกใจ

มีวิธีใดที่จะบังคับให้ตื่นตระหนกให้เข้าสู่ระบบหรือไม่? ฉันค่อนข้างแน่ใจว่าฉันสามารถทำซ้ำได้ (เกิดขึ้น 100% ของเวลาที่ฉันพยายามเมื่อเร็ว ๆ นี้) ดังนั้นในขณะที่ฉันต้องการ "เพิ่งทำงาน" ฉันมีความสุขมากที่จะรีบูตสองสามครั้งถ้านั่นหมายความว่าฉันทำได้ ค้นหาสาเหตุของความตื่นตระหนก


ข้อความใด ๆ ที่คุณได้รับเมื่อทำการแปลงรหัส? อาจมีประโยชน์ในการติดตามการแก้ปัญหา;)
Rinzwind

@Rinzwind Nope ไม่ได้แสดงอะไรเลยเพียงแค่แช่แข็ง
Oli

น่าจะเป็นปัญหาความร้อนสูงเกินไป การแปลงรหัสเป็นตัวขับเคลื่อน CPU อย่างหนักและหากการระบายความร้อนของคุณไม่มีประสิทธิภาพ 100% CPU จะเข้าสู่การปิดระบบฉุกเฉิน ฉันเคยเห็นสิ่งนี้เกิดขึ้นเมื่อตัววางระบายความร้อนแห้งบนซีพียูฮีทซิงค์ นอกจากนี้ยังเกิดขึ้นเมื่อการตั้งค่าการโอเวอร์คล็อกถูกทำให้ยุ่งเหยิงใน BIOS ลองใช้ xsensors เพื่อตรวจสอบอุณหภูมิ CPU ก่อนการล็อก
Neil Mayhew

คำตอบ:


21

ทุกระบบของคุณบันทึกในอูบุนตูจะถูกจัดการโดยrsyslogซึ่งช่วยให้การกำหนดค่าในและ/etc/rsyslog.conf/etc/rsyslog.d/

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการกำหนดค่าและตัวเลือกที่เป็นไปได้เยี่ยมชมrsyslogrsyslog.conf man page

เปิด/etc/rsyslog.d/50-default.confคุณจะเห็นว่าหนึ่งในบรรทัดมี

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

หมายความว่าไฟล์ที่คุณกำลังค้นหาในกรณีนี้คือ/var/log/syslogไฟล์บันทึกขนาดใหญ่ที่คุณอาจมี

คุณจะเห็นว่าชื่อไฟล์นั้นเริ่มต้นด้วย a -ซึ่งหมายความว่าไฟล์นั้นถูกเก็บไว้ก่อนที่จะเขียนมันยอดเยี่ยม แต่สามารถทำให้คุณมีบันทึกที่ไม่ดีสิ่งที่คุณต้องการก็คือไฟล์นั้นจะถูกเขียนทันทีที่มีปัญหา นำเส้นประและบูตหรือโหลดแล้วทำให้คอมพิวเตอร์ของคุณผิดพลาดอีกครั้งตรวจสอบrsyslog/var/log/syslog


1
ลบว่า "-" รีบูตเลือก / var / log / syslog | grep panic มันไม่ได้ผล. ฉันพลาดอะไรไปหรือเปล่า?
AAI

26

ถ้ามันเป็นความตื่นตระหนกเคอร์เนลจริงๆมันจะไม่ถูกเขียนลงในบันทึกผ่านวิธีการปกติ เนื่องจากเคอร์เนลมีปัญหา ณ จุดนี้การเขียนลงในระบบไฟล์จึงเป็นการดำเนินการที่มีความเสี่ยง - เคอร์เนลไม่สามารถไว้ใจได้อีกต่อไปดังนั้นการเขียนลงในบันทึกจึงอาจทำให้เกิดการสุ่มอึเหนือ bootloader ของคุณ!

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

Ubuntu Wiki มีCrashdumpRecipeที่อาจมีประโยชน์ - ถึงแม้ว่ามันจะดูล้าสมัยไปแล้ว แต่ฉันคิดว่ามันน่าจะเปลี่ยนไปมาก


10
CrashdumpRecipe อ้างถึงเครื่องมือ Linux Kernel Crash Dump (LKCD) ที่มีอยู่ในSourceforge - มีแพ็คเกจสำหรับ Ubuntu ที่เรียกว่าlinux-crashdump; แพ็คเกจนี้ยังคงมีอยู่ในทุกรุ่น
พ.ค.

3

พอร์ตอนุกรม

พอร์ตอนุกรมเป็นกลไกการสื่อสารระดับต่ำอย่างง่ายระหว่างคอมพิวเตอร์

ข้อดี:

  • ติดตั้งง่ายเพียงครั้งเดียว (ถ้าคุณมีฮาร์ดแวร์)
  • เชื่อถือได้เนื่องจากการส่งข้อมูลจะขึ้นอยู่กับการวางสายอย่างง่ายและเคอร์เนล API ซึ่งมีโอกาสน้อยที่จะได้รับผลกระทบจากความตื่นตระหนกยิ่งกว่าระบบย่อย TCP / IP

ข้อเสีย:

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

พอร์ตอนุกรมมีลักษณะดังนี้:

และใน RPI นั้นมีให้บริการผ่าน GPIO

จากนั้นหากคุณมีฮาร์ดแวร์ที่ต้องการเชื่อมต่อจากคอมพิวเตอร์เครื่องที่สองไปยังคอมพิวเตอร์หลักด้วย:

screen /dev/ttyS0 115200

สิ่งนี้ให้เปลือกคุณจริงๆ

จากนั้นบนเครื่องหลักเริ่มการทำงานที่น่าตกใจ

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

วิธีอื่น ๆ

นอกจากนี้ยังมีวิธีการอื่น ๆ ที่เอาชนะข้อ จำกัด ของฮาร์ดแวร์ดังกล่าวข้างต้นในราคาที่ซับซ้อนและเชื่อถือได้น้อยกว่า วิธีการที่โดดเด่น:

  • netdump: สตรีมความตื่นตระหนกผ่าน TCP / IP อาศัยระบบย่อย TCP / IP ที่ไม่ได้รับความเสียหาย
  • kdump: ดูเหมือนจะเป็นกลไกพื้นฐานของ linux-crashdump ที่กล่าวถึงที่: https://askubuntu.com/a/104793/52975บูทเคอร์เนล Linux ตัวที่สองเพื่อตรวจสอบเคอร์เนลที่ล้มเหลว สิ่งที่อาจจะผิดไป?! :-)

ดูคำตอบที่ยอดเยี่ยมเช่นนี้: https://unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic

การดีบักขั้นตอน

ในท้ายที่สุดการเอาท์พุทความตื่นตระหนกต้องการให้ฟังก์ชั่นเคอร์เนลบางตัวทำงานได้

แต่ใครต้องการความหวาดกลัวถ้าคุณสามารถใช้ GDB บนเคอร์เนลได้ หากคุณเป็นฮาร์ดคอร์นั้นลองดูที่:

ปัญหาทุกอย่างเกิดขึ้นเมื่อคุณมีทัศนวิสัยที่ชัดเจน (และมีเวลาพอ!)

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