การอัปเดตเคอร์เนลอาจทำให้ Ubuntu ค้างอยู่ที่หน้าจอเข้าสู่ระบบที่มีกราฟิกความละเอียดต่ำ หน้าจอสีดำ หรือเดสก์ท็อปที่ทำงานได้โดยไม่มีการเร่งความเร็วของ NVIDIA นั่นไม่ได้หมายความว่าการ์ดกราฟิกเสียโดยอัตโนมัติ การอัปเดตเคอร์เนลจะเปลี่ยนเคอร์เนลที่ใช้ในการสร้างโมดูล NVIDIA ที่อยู่นอกโครงสร้าง และ Secure Boot อาจปฏิเสธการโหลดโมดูลที่มีคีย์ลงนามที่ไม่น่าเชื่อถือ
เริ่มต้นด้วยการระบุว่าปัญหาของคุณเกิดจากอะไร หากเคอร์เนลเวอร์ชันก่อนหน้าบูตได้โดยที่ NVIDIA ทำงานได้ เคอร์เนลเวอร์ชันใหม่หรือการสร้างโมดูลน่าจะเป็นปัญหา หากโมดูลปรากฏว่าติดตั้งแล้ว แต่เคอร์เนลรายงานการปฏิเสธคีย์หรือลายเซ็น ให้ตรวจสอบ Secure Boot และการลงทะเบียน Machine Owner Key (MOK) คู่มือนี้ใช้เวิร์กโฟลว์ไดรเวอร์แบบแพ็กเกจของ Ubuntu; คำในเมนูและสาขาไดรเวอร์อาจแตกต่างกันไปตามเวอร์ชันของ Ubuntu และฮาร์ดแวร์
ภาพประกอบมุมมองของ GRUB: การเลือกเคอร์เนลที่ติดตั้งไว้ก่อนหน้านี้สามารถช่วยกู้คืนเดสก์ท็อปที่ใช้งานได้ในขณะที่คุณกำลังตรวจสอบเคอร์เนลที่อัปเดตแล้ว
คุณสามารถบูตเคอร์เนลเวอร์ชันก่อนหน้าได้อย่างปลอดภัยหรือไม่?
ใช่ ถ้าหากยังติดตั้งอยู่ ให้รีสตาร์ทเครื่องแล้วเปิดเมนู GRUB ขึ้นมา ในหลายๆ ระบบ การกดปุ่ม Shift ค้างไว้ใน BIOS รุ่นเก่า หรือการกดปุ่ม Esc ใน UEFI ระหว่างการเริ่มต้นระบบ จะทำให้เมนูปรากฏขึ้นมา เลือกตัวเลือกขั้นสูงสำหรับ Ubuntuจากนั้นเลือกเคอร์เนลเวอร์ชันเก่าที่ไม่มี "โหมดกู้คืน" จังหวะการกดปุ่มและป้ายกำกับเมนูจะขึ้นอยู่กับเฟิร์มแวร์และการตั้งค่า GRUB หากเมนูถูกซ่อนอยู่ ให้ตรวจสอบพฤติกรรมการเริ่มต้นระบบของคอมพิวเตอร์แทนที่จะเปลี่ยนการตั้งค่าเฟิร์มแวร์แบบสุ่ม
เมื่อระบบเริ่มทำงานแล้ว ให้ตรวจสอบเคอร์เนลที่กำลังทำงานอยู่ด้วยคำสั่ง `npm install uname -rkernel` เคอร์เนลเวอร์ชันเก่าที่ใช้งานได้จะช่วยให้คุณมีเส้นทางการกู้คืนและเวลาในการตรวจสอบแพ็กเกจต่างๆ อย่างไรก็ตาม นี่ไม่ใช่การแก้ไขถาวร: การอัปเดตด้านความปลอดภัยยังคงมีความสำคัญ ดังนั้นให้กลับไปใช้เคอร์เนลเวอร์ชันใหม่หลังจากซ่อมแซมไดรเวอร์แล้ว หากเคอร์เนลทั้งสองไม่สามารถเริ่มต้นได้ตามปกติ ให้ใช้รายการกู้คืนของ Ubuntu หรือ USB Live เพื่อสำรองข้อมูลสำคัญก่อนทำการเปลี่ยนแปลงแพ็กเกจ
ก่อนที่จะติดตั้งอะไรใหม่ คุณควรตรวจสอบอะไรบ้าง?
เปิดเทอร์มินัล (หรือคอนโซลข้อความโดยกด Ctrl+Alt+F3 หากไม่สามารถเข้าสู่ระบบแบบกราฟิกได้) และเก็บข้อมูลพื้นฐานสั้นๆ:
uname -r
mokutil --sb-state
dkms status
nvidia-smi
journalctl -k -b | grep -Ei 'nvidia|verification|key|module'
uname -rระบุเคอร์เนลที่ใช้งานอยู่mokutil --sb-stateรายงานว่าเปิดใช้งาน Secure Boot หรือไม่dkms statusแสดงว่ามีการลงทะเบียน Dynamic Kernel Module Support สำหรับเคอร์เนลนั้นหรือไม่nvidia-smiทดสอบการสื่อสารกับไดรเวอร์ NVIDIA ที่โหลดไว้ เป็นคำสั่งวินิจฉัย ไม่ใช่คำสั่งซ่อมแซม บันทึกของเคอร์เนลอาจเปิดเผยโมดูลที่หายไป การสร้างล้มเหลว หรือการปฏิเสธลายเซ็น การไม่มีบรรทัดบันทึกที่ตรงกันไม่ได้พิสูจน์ว่าไดรเวอร์ทำงานได้ปกติ
ใช้เคอร์เนลที่ใช้งานอยู่ สถานะ DKMS และยูทิลิตี้ NVIDIA ร่วมกันเพื่อแยกแยะความแตกต่างระหว่างปัญหาการสร้างที่หายไปกับปัญหาไดรเวอร์ที่โหลดแล้ว ตัวอย่างผลลัพธ์อาจแตกต่างกันไปตามเวอร์ชัน
โมดูล NVIDIA ไม่สามารถคอมไพล์สำหรับเคอร์เนลเวอร์ชันใหม่ได้ใช่หรือไม่
หาก DKMS แสดง NVIDIA เฉพาะสำหรับเคอร์เนลเวอร์ชันเก่า หรือไม่มีโมดูล NVIDIA สำหรับuname -rให้ติดตั้งเฮดเดอร์เคอร์เนลที่ตรงกัน แล้วปล่อยให้ Ubuntu ซ่อมแซมไดรเวอร์ที่บรรจุไว้ เฮดเดอร์จะให้ไฟล์ที่จำเป็นในการสร้างโมดูลภายนอกสำหรับเคอร์เนลที่กำลังทำงานอยู่ ก่อนอื่น ตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงเครือข่ายและมีพื้นที่ดิสก์เพียงพอ จากนั้นเรียกใช้คำสั่งต่อไปนี้:
sudo apt update
sudo apt install linux-headers-$(uname -r)
sudo ubuntu-drivers install
เครื่องมือ แนะนำของ Ubuntu ubuntu-driversจะเลือกไดรเวอร์ที่เหมาะสมกับเครื่องให้ ตรวจสอบแพ็กเกจที่ APT เสนอก่อนที่จะยอมรับ หากติดตั้งไดรเวอร์แล้วและการสร้าง DKMS ดูเหมือนไม่สมบูรณ์ ให้ระบุแพ็กเกจที่ติดตั้งแล้วแทนที่จะเดาสาขา:
dpkg -l 'nvidia-dkms-*' 'nvidia-driver-*'
ubuntu-drivers list
จากนั้นให้ติดตั้งแพ็กเกจ DKMS ที่ตรงกันซึ่งแสดงอยู่ในระบบของคุณอีกครั้ง (แทนที่ด้วยชื่อแพ็กเกจที่ถูกต้อง): sudo apt install --reinstall nvidia-dkms-<branch>หลีกเลี่ยงการคัดลอกหมายเลขไดรเวอร์จาก Ubuntu รุ่นอื่น หรือการผสมแพ็กเกจ Ubuntu กับตัวติดตั้งแบบสแตนด์อโลนของ NVIDIA เนื่องจากวิธีการติดตั้งที่แตกต่างกันอาจเขียนทับไฟล์หรือทำให้ Secure Boot ซับซ้อนขึ้น หาก APT รายงานว่ามีข้อกำหนดที่ไม่ตรงกัน แพ็กเกจที่ถูกระงับ หรือการสร้าง DKMS ล้มเหลว โปรดอ่านข้อผิดพลาดทั้งหมดก่อนที่จะเรียกใช้คำสั่งเพิ่มเติม บันทึกการสร้างที่เกี่ยวข้องมักจะอยู่ใน/var/lib/dkms/; ให้ใช้เส้นทางที่ระบุในข้อผิดพลาดแทนการลบไดเร็กทอรี DKMS
ติดตั้งเฮดเดอร์สำหรับเคอร์เนลที่กำลังทำงานอยู่ จากนั้นซ่อมแซมแพ็คเกจ Ubuntu DKMS ที่เลือกไว้แล้วสำหรับระบบ ชื่อแพ็คเกจและผลลัพธ์จาก APT อาจแตกต่างกันไป
ระบบ Secure Boot กำลังบล็อกโมดูลที่สร้างขึ้นอยู่หรือไม่?
อาจเป็นไปได้ เมื่อเปิดใช้งาน Secure Boot เคอร์เนลของ Ubuntu จะตรวจสอบลายเซ็นบนโมดูลเคอร์เนลของบุคคลที่สาม กระบวนการจัดแพ็กเกจของ Ubuntu อาจสร้างคีย์ลงนาม MOK และขอให้คุณลงทะเบียน หากการติดตั้งแสดงข้อความแจ้งให้ตั้งรหัสผ่านแบบใช้ครั้งเดียว แต่การรีสตาร์ทครั้งถัดไปเข้าสู่ Ubuntu ได้โดยตรง คีย์อาจยังไม่ได้ลงทะเบียน ตรวจสอบmokutil --sb-stateบันทึกของเคอร์เนลเพื่อดูข้อความยืนยันหรือข้อความปฏิเสธคีย์
เมื่อการติดตั้งแพ็กเกจ Ubuntu เริ่มการลงทะเบียน MOK แล้ว ให้รีสตาร์ทและทำตามขั้นตอนในหน้าจอ MOK Manager สีน้ำเงิน: เลือกEnroll MOKดำเนินการต่อ ยืนยันรหัส ป้อนรหัสผ่านแบบใช้ครั้งเดียวที่คุณสร้างไว้ระหว่างการติดตั้งแพ็กเกจ และรีบูต รหัสผ่านนี้ไม่จำเป็นต้องเป็นรหัสผ่านเข้าสู่ระบบ Ubuntu ของคุณ อ่านหน้าจออย่างละเอียด ข้อความในเมนูอาจแตกต่างกันไป หากไม่มีการลงทะเบียนใด ๆ ที่ถูกจัดคิวไว้ การติดตั้งแพ็กเกจไดรเวอร์ Ubuntu ที่รองรับอีกครั้งอาจแจ้งให้ตั้งค่ารหัส อย่าลงทะเบียนไฟล์รหัสที่ไม่คุ้นเคยหรือแชร์รหัสผ่านแบบใช้ครั้งเดียว
หน้าจอการลงทะเบียน MOK Manager จะปรากฏขึ้นระหว่างการรีบูตเมื่อมีการลงทะเบียนคีย์ค้างอยู่ ให้เลือก "ลงทะเบียน MOK เฉพาะคีย์ที่คุณต้องการเชื่อถือเท่านั้น"
แล้วถ้าการสร้างล้มเหลวแม้ว่าจะติดตั้งเฮดเดอร์แล้วล่ะ?
ตรวจสอบว่าเคอร์เนลใหม่ติดตั้งเสร็จสมบูรณ์แล้วหรือไม่ และส่วนหัวตรงกันทุกประการหรือไม่: uname -rควรตรงกับแพ็กเกจส่วนหัวที่ติดตั้งไว้ จากนั้นตรวจสอบข้อผิดพลาด DKMS ของ APT และบันทึกการสร้าง เคอร์เนลใหม่สามารถทำให้เกิดความไม่เข้ากันกับไดรเวอร์ NVIDIA เวอร์ชันเก่าได้ การสร้างใหม่ไม่สามารถแก้ไขซอร์สโค้ดที่ไม่รองรับอินเทอร์เฟซเคอร์เนลนั้นได้ ใช้ตัวเลือกไดรเวอร์ของ Ubuntu เพื่อติดตั้งเวอร์ชันที่รองรับสำหรับรุ่นของคุณ จากนั้นรีบูต หากคุณติดตั้งไดรเวอร์ด้วยตัวติดตั้ง .run ของ NVIDIA ให้ทำตามคำแนะนำในการลบของ NVIDIA ก่อนที่จะเปลี่ยนกลับไปใช้แพ็กเกจ Ubuntu อย่าใช้ตัวจัดการแพ็กเกจซ้อนทับกัน
สำหรับการเข้าถึงชั่วคราว ให้บูตเคอร์เนลเวอร์ชันก่อนหน้าจาก GRUB และติดตั้งไว้จนกว่าไดรเวอร์ของเคอร์เนลเวอร์ชันใหม่จะโหลดได้อย่างถูกต้อง หากคุณใช้เคอร์เนลแบบกำหนดเอง เวอร์ชันที่ไม่เป็นมาตรฐาน หรือการตั้งค่าการประมวลผลกราฟิก/เซิร์ฟเวอร์ คำแนะนำเดสก์ท็อปอัตโนมัติของ Ubuntu อาจไม่ตรงกับการกำหนดค่าที่คุณต้องการ โปรดศึกษาเอกสารประกอบสำหรับเคอร์เนลหรือเวิร์กโหลดนั้นๆ แทนที่จะบังคับใช้แพ็กเกจทั่วไป
คุณจะตรวจสอบได้อย่างไรว่าการแก้ไขได้ผล?
หลังจากซ่อมแซมแพ็กเกจหรือลงทะเบียนคีย์แล้ว ให้รีสตาร์ทและบูตเคอร์เนลใหม่ เรียกใช้คำสั่งuname -r, dkms status, และnvidia-smiอีกครั้ง ผลลัพธ์ที่สำเร็จคือ มีรายการ DKMS สำหรับเคอร์เนลที่กำลังทำงานอยู่ ไม่มีการปฏิเสธลายเซ็นโมดูลในบันทึกเคอร์เนลของการบูตปัจจุบัน และnvidia-smiแสดงข้อมูล GPU และไดรเวอร์ นอกจากนี้ ให้ตรวจสอบว่าเซสชันเดสก์ท็อปปกติเริ่มต้นขึ้น และแอปพลิเคชันที่ต้องการการเร่งความเร็ว GPU สามารถใช้ GPU ของ NVIDIA ได้ แล็ปท็อปไฮบริดอาจใช้กราฟิกแบบรวมสำหรับเดสก์ท็อปโดยเจตนา ดังนั้น GPU ที่เงียบเพียงอย่างเดียวจึงไม่ใช่หลักฐานของความล้มเหลว
หากยังคงเกิดข้อผิดพลาดเดิม ให้บันทึกเอาต์พุตการสร้าง DKMS ทั้งหมด เวอร์ชันเคอร์เนลที่ใช้งานอยู่ รุ่น Ubuntu ( cat /etc/os-release) สถานะ Secure Boot และบรรทัดบันทึกเคอร์เนลที่เกี่ยวข้อง รายละเอียดเหล่านั้นจะช่วยระบุว่าขั้นตอนต่อไปคือสาขาไดรเวอร์ที่รองรับ ปัญหาการลงนาม หรือปัญหาความเข้ากันได้ของเคอร์เนล คำแนะนำอย่างเป็นทางการของ Ubuntu แนะนำubuntu-driversเส้นทางสำหรับระบบส่วนใหญ่ โดยเฉพาะอย่างยิ่งในกรณีที่เปิดใช้งาน Secure Boot โปรดดูUbuntu Desktop: ติดตั้งไดรเวอร์ NVIDIA , Ubuntu Server: การติดตั้งไดรเวอร์ NVIDIAและUbuntu Security: UEFI Secure Bootสำหรับรายละเอียดความเข้ากันได้ของไดรเวอร์ระดับต่ำ โปรดดูเอกสารการติดตั้งไดรเวอร์ Linux ของ NVIDIAเวอร์ชันไดรเวอร์ที่มีอยู่และคำแนะนำที่แน่นอนจะเปลี่ยนแปลงไปตามรุ่น Ubuntu และสถานะการสนับสนุน GPU