บางครั้ง เมื่อ มีการติดตั้ง เคอร์เนลใหม่ ลง ในคอมพิวเตอร์ของเราพร้อมกับการอัปเดตที่เกี่ยวข้องกับระบบปฏิบัติการ อุปกรณ์ฮาร์ดแวร์บางอย่างอาจหยุดทำงานหรือทำงานผิดปกติ เหตุใดจึงเป็นเช่นนั้น? คำตอบง่ายๆ คือ ไดรเวอร์ฮาร์ดแวร์ถูกเปลี่ยนแปลงโดยการอัปเดตเคอร์เนล เคอร์เนลทั่วไปที่ระบบปฏิบัติการมักติดตั้งนั้นถูกกำหนดค่าให้ทำงานได้กับคอมพิวเตอร์ส่วนใหญ่ แต่ไม่ได้ถูกปรับแต่งให้เหมาะสมที่สุด
บางครั้ง หากคุณมีไดรเวอร์เฉพาะสำหรับอุปกรณ์ใดอุปกรณ์หนึ่ง ไดรเวอร์นั้นอาจเปลี่ยนแปลงไปตามเวอร์ชันเคอร์เนลใหม่ และคุณอาจพบว่าเว็บแคม การ์ดเครือข่าย การ์ดเสียง หรืออุปกรณ์อื่นๆ ของคุณหยุดทำงานกะทันหัน ทั้งๆ ที่ก่อนหน้านี้ใช้งานได้ปกติ สาเหตุส่วนใหญ่เกิดจากโมดูลที่เกี่ยวข้องกับไดรเวอร์ของอุปกรณ์นั้นถูกยกเลิกไปแล้ว เนื่องจากถือว่าล้าสมัย หรือด้วยเหตุผลอื่นๆ อาจเป็นเพราะเป็นอุปกรณ์ที่ไม่ค่อยพบเห็น และเคอร์เนลทั่วไปไม่ได้ถูกกำหนดค่าให้โหลดอุปกรณ์นั้น
ไม่ต้องกังวลไป หากอุปกรณ์ของคุณใช้งานได้กับเวอร์ชันเคอร์เนลก่อนหน้าก็แก้ไขได้ง่ายๆ ตัวอย่างเช่น สมมติว่าการ์ดเครือข่าย การ์ดเสียง เว็บแคม หรืออุปกรณ์อื่นๆ ของคุณหยุดทำงานกะทันหัน หากเกิดเหตุการณ์นี้หลังจากอัปเดตเคอร์เนล คุณอาจพบว่าโมดูลนั้นไม่มีอยู่ในเวอร์ชันใหม่แล้ว คุณสามารถตรวจสอบได้ด้วยคำสั่ง (ตัวอย่างเช่น สมมติว่าปัญหาอยู่ที่การ์ดเครือข่ายที่มีไดรเวอร์เป็น ath5k):
sudo modprobe ath5k && dmseg | grep ath
หากคุณพบว่าโมดูลนั้นไม่มีอยู่แสดงว่าโมดูลนั้นไม่มีอยู่ในเคอร์เนลของคุณ จากนั้นตรวจสอบว่าเคอร์เนลตรวจพบอุปกรณ์ของคุณหรือไม่ เพราะอาจเป็นเพราะอุปกรณ์ทำงานผิดปกติ และนั่นอาจเป็นสาเหตุของปัญหา ตัวอย่างเช่น:
lsmod
จากนั้นให้ดูในรายการเพื่อหาอุปกรณ์ที่คุณต้องการ ตัวอย่างเช่น ถ้าเป็นการ์ดเครือข่าย ให้มองหาสิ่งที่คล้ายกับ Ethernet, WiFi, Wireless หรือในกรณีของเราคือ Atheros… ถ้าพบในรายการ แสดงว่าตรวจพบแล้ว ดังนั้นเราจะดำเนินการดังต่อไปนี้ คือลบหรือถอนการติดตั้งเคอร์เนลเวอร์ชันล่าสุดและไฟล์เฮดเดอร์ของมัน
dpkg --get-selections | grep linux-image
นี่คือรายการเคอร์เนลที่เราติดตั้งไว้ สมมติว่าเวอร์ชันที่มีปัญหาคือ 4.10.0-28 ซึ่งปรากฏอยู่ในรายการนั้น แต่ไดรเวอร์ทำงานได้ปกติกับเวอร์ชันก่อนหน้าคือ 4.10.0-2-generic ดังนั้นเรามาลบ เวอร์ชันนี้ออกไปกัน เถอะ
sudo apt-get remove --purge linux-image-4.10.0-28-generic linux-image-extra-4.10.0-28-generic
จากนั้นเราก็ทำเช่นเดียวกันกับไฟล์เฮดเดอร์ของเคอร์เนลโดยค้นหาและลบไฟล์เฮดเดอร์ที่เกี่ยวข้องกับเคอร์เนลที่มีปัญหาออกจากรายการ วิธีการทำเช่นนี้คือ:
dpkg --get-selections | grep linux-headers sudo apt-get remove --purge linux-headers-4.10.0-28 linux-headers-4.10.0-28-generic sudo update-grub2
สุดท้ายนี้ให้บอก GRUB ให้บูตระบบโดยใช้เวอร์ชันเคอร์เนลก่อนหน้าที่ไม่มีปัญหา:
sudo nano /etc/default/grup
ในไฟล์นั้น ให้เปลี่ยนบรรทัด GRUB_DEFAULT=0 เป็นGRUB_DEFAULT=savedจากนั้นไปที่ท้ายไฟล์และเพิ่มบรรทัดใหม่ที่มีข้อความGRUB_SAVEDEFAULT=trueบันทึกการเปลี่ยนแปลงและออกจากไฟล์ ตอนนี้อัปเดตอีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล:
sudo update-grub2
รีบูตเครื่องแล้วก็เสร็จเรียบร้อย ... ทุกอย่างน่าจะใช้งานได้แล้ว แน่นอนว่าวิธีนี้ใช้ได้เฉพาะกับระบบปฏิบัติการที่มีเคอร์เนลหลายตัวให้เลือกใช้ หากคุณมีเพียงเคอร์เนลเดียว คุณจะไม่สามารถทำแบบนี้ได้ ซึ่งก็สมเหตุสมผล นั่นเป็นเหตุผลว่าทำไมจึงควรเก็บเคอร์เนลเก่าๆ ไว้หลังจากอัปเดต เพราะมันสามารถใช้เป็นข้อมูลสำรองได้เมื่อจำเป็น
ซึ่งจะช่วยให้คุณไม่ต้องดาวน์โหลดกำหนดค่าและรวบรวมเคอร์เนลใหม่ด้วยมือเพื่อติดตั้งบน distro ของคุณ อย่าลืมแสดงความคิดเห็นของคุณด้วยข้อสงสัยหรือบางกรณีที่คุณมีปัญหาหลังจากอัปเดตเป็นเคอร์เนลใหม่ ...