วิธีแก้ไข Linux Boots เป็นข้อผิดพลาดของ BIOS

เผยแพร่แล้ว: 2022-09-28
แล็ปท็อปบนพื้นหลังสีน้ำเงินแสดงพรอมต์คำสั่ง Linux
fatmawati achmad zaenuri/Shutterstock.com

เป็นที่ทราบกันดีว่าการอัปเดต GRUB ส่งผลให้คอมพิวเตอร์ Linux บูตเข้าสู่การตั้งค่า BIOS หรือ UEFI การแก้ไขนี้ใช้ประโยชน์จากเคล็ดลับการกู้คืนระบบที่มีประโยชน์ซึ่งคุณควรทราบจริงๆ

กรณีศึกษา: ด้วง 2:2.06.r322

การอัปเดตระบบสำหรับการกระจาย Linux บน Arch และ Arch ในฤดูร้อนปี 2022 รวม GRUB เวอร์ชันใหม่ GRUB ย่อมาจาก gr และ u nified b ootloader

bootloader เป็นแอปพลิเคชั่นที่เริ่มต้นกระบวนการบูทเครื่องเมื่อเปิดคอมพิวเตอร์ของคุณ จำเป็นต้องเปิดเครื่องมือซอฟต์แวร์และยูทิลิตี้หลายอย่าง—จากพาร์ติชั่นที่ถูกต้องและในลำดับที่ถูกต้อง—เพื่อผลลัพธ์ในระบบปฏิบัติการที่ใช้งานได้และเข้าถึงได้ในที่สุด GRUB เริ่มต้นเหตุการณ์ที่เกิดขึ้น

หากคุณมีระบบปฏิบัติการมากกว่าหนึ่งระบบติดตั้งอยู่ในคอมพิวเตอร์ของคุณ GRUB จะมีเมนูให้คุณเลือกได้ว่าจะใช้ระบบปฏิบัติการใด หนึ่งในรหัสเปลี่ยนเป็น GRUB 2:2.06.r322 เพิ่มการรองรับตัวเลือก GRUB ใหม่ --is-supported ตัวเลือกนี้ใช้เพื่อระบุว่ามีความสามารถในการบู๊ตเป็นเฟิร์มแวร์หรือไม่ หากใช่ GRUB จะเพิ่มรายการลงในเมนูการบูตเพื่อให้คุณบูตเข้าสู่การตั้งค่า EUFI

มีการอ้างอิงตัวเลือกใหม่นี้ในสคริปต์ชื่อ “30_uefi-firmware.in” ส่วนต่างสำหรับไฟล์นี้แสดงว่าคำสั่ง if ถูกลบออก และมีการเพิ่มสองบรรทัด

หนึ่งในบรรทัดใหม่คือการแทนที่คำสั่ง if บรรทัดใหม่อื่นมี fwsetup --is-supported “fw” ใน “fwsetup” หมายถึงเฟิร์มแวร์ แต่เนื่องจากบรรทัดนั้นอยู่ เหนือ คำสั่ง if ใหม่ มันจึงจะทำงานเสมอ ถ้ามันอยู่ภายในเนื้อความของคำสั่ง if มันจะรันก็ต่อเมื่อการทดสอบในคำสั่ง if ได้รับการแก้ไขเป็นจริง

UEFI คืออะไรและแตกต่างจาก BIOS อย่างไร
ที่เกี่ยวข้อง UEFI คืออะไรและแตกต่างจาก BIOS อย่างไร

สิ่งนี้ทำให้เกิดปัญหากับคอมพิวเตอร์ UEFI จำนวนมาก แต่ไม่ใช่ทั้งหมด ขึ้นอยู่กับว่าเวอร์ชันของ GRUB ที่คุณติดตั้งไว้รองรับคำสั่งนี้หรือไม่ เครื่องจักรที่ได้รับผลกระทบจะทำสิ่งใดสิ่งหนึ่งจากสองสิ่ง พวกเขาจะเข้าสู่ลูปการบูตที่กระบวนการบูตไม่เสร็จสมบูรณ์แต่มีการรีสตาร์ทอย่างต่อเนื่อง หรือคอมพิวเตอร์จะบูตเข้าสู่การตั้งค่าเฟิร์มแวร์ UEFI โดยตรง ไม่ว่าจะด้วยวิธีใด ไม่มีทางบังคับให้คอมพิวเตอร์ของคุณบูตเข้าสู่ Linux

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

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

เทคนิคที่เราจะใช้

ในการใช้เทคนิคนี้ คุณต้องมี USB หรือ CD/DVD ที่สามารถบู๊ตได้โดยมีลีนุกซ์แจกจ่ายอยู่ ซึ่งบู๊ตในอินสแตนซ์ Linux แบบสด โดยทั่วไปเรียกว่า Live USB หรือ Live CD/DVD การแจกแจงหลักทั้งหมดรองรับฟังก์ชันนี้

วิธีสร้างไดรฟ์ USB Ubuntu แบบสดพร้อมที่เก็บข้อมูลถาวร
ที่เกี่ยวข้อง วิธีสร้างไดรฟ์ USB Ubuntu แบบสดพร้อมที่เก็บข้อมูลถาวร

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

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

วิธีใช้คำสั่ง chroot บน Linux
วิธีใช้คำสั่ง chroot บน Linux

รูทของระบบไฟล์ไฮบริดนี้คือรูทของระบบไฟล์สื่อสด ไม่ใช่รูทของระบบไฟล์ที่คุณติดตั้ง ในการทำให้เส้นทางของไฟล์ที่กำหนดค่าไว้ในระบบ Linux ของคุณอ้างอิงตำแหน่งเป้าหมายที่ถูกต้อง — ที่ใดที่หนึ่งภายในระบบไฟล์ของคุณ และไม่สัมพันธ์กับรูทของ Linux ที่ใช้งานจริง— เราจำเป็นต้องใช้ chroot เพื่อตั้งค่ารูทใหม่ที่ชี้ไปที่รูทของ ระบบไฟล์ที่ ติดตั้ง ของคุณ กล่าวอีกนัยหนึ่ง เส้นทางที่ขึ้นต้นด้วย “/” จะใช้รูทของระบบไฟล์ของคุณเป็นจุดเริ่มต้น

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

นำไปปฏิบัติ

เราสร้างไดรฟ์ USB ที่สามารถบู๊ตได้และบูตคอมพิวเตอร์ที่มีปัญหาจากมัน การกระจายที่เราใช้คือ EndeavourOS สื่อสดของ EndeavourOS เริ่มทำงานในสภาพแวดล้อมเดสก์ท็อป XFCE 4

สื่อสดของ EndeavourOS ถูกบูตเข้าสู่สภาพแวดล้อมเดสก์ท็อป XFCE

ในการระบุว่าพาร์ติชั่นใดที่มีรูทของระบบไฟล์ของคุณ และพาร์ติชั่นใดเป็นพาร์ติชั่นสำหรับเริ่มระบบ ให้เปิดหน้าต่างเทอร์มินัลแล้วใช้คำสั่ง fdisk เรากำลังใช้ตัวเลือก -l (รายการพาร์ติชัน) คุณจะต้องใช้ sudo เช่นกัน

 sudo fdisk -l 

การใช้คำสั่ง sudo fdisk -l เพื่อแสดงรายการพาร์ติชั่นและอุปกรณ์

เลื่อนดูผลลัพธ์จนกว่าคุณจะเห็นรายการที่ระบุว่า "EFI System" และ "Linux filesystem"

เอาต์พุตจากคำสั่ง sudo fdisk -l โดยไฮไลต์พาร์ติชันสำหรับบูตและรูทไว้

ในคอมพิวเตอร์เครื่องนี้ ทั้งคู่อยู่บนฮาร์ดไดรฟ์ sda พวกมันอยู่ในพาร์ติชั่นที่หนึ่งและสอง ตามที่ระบุโดยพาร์ติชั่นเลเบล /dev/sda1 และ /dev/sda2

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

เราจำเป็นต้องเมาต์ระบบไฟล์บนพาร์ติชั่นเหล่านี้โดยแนบเข้ากับระบบไฟล์สด คำสั่ง mount จะทำเพื่อเรา โปรดจำไว้ว่า ป้ายกำกับพาร์ติชั่นของคุณมีแนวโน้มที่จะแตกต่างกัน ดังนั้นตรวจสอบให้แน่ใจว่าคุณใช้ป้ายกำกับจากผลลัพธ์ของคำสั่ง fdisk ของคุณ

 sudo mount /dev/sda2 /mnt
 sudo mount /dev/sda1 /mnt/boot/efi 

การติดตั้งระบบไฟล์รูทและระบบไฟล์รูท

ในการทำให้รูทที่มีประสิทธิภาพของระบบไฟล์เริ่มต้นที่รูทของระบบไฟล์ที่ติดตั้งจริงของคุณ เราจะใช้ chroot เพื่อตั้งค่ารูทให้เป็นจุดเชื่อมต่อ “/mnt” นี่คือตำแหน่งที่รูทของระบบไฟล์ที่ติดตั้งของคุณถูกต่อกิ่งเข้ากับระบบไฟล์สด

 sudo chroot /mnt 

การใช้คำสั่ง chroot เพื่อสร้างรูทใหม่ที่มีประสิทธิภาพ

โปรดทราบว่าพรอมต์คำสั่งจะเปลี่ยนเพื่อแสดงว่าคุณเข้าสู่ระบบในฐานะรูทอย่างมีประสิทธิภาพ และคุณอยู่ที่ไดเร็กทอรีราก “/” ของระบบไฟล์ในคอมพิวเตอร์ของคุณ

เราสามารถทดสอบสิ่งนี้ได้อย่างง่ายดายโดยเปลี่ยนเป็นไดเร็กทอรี "/home" และตรวจสอบว่ามีไดเร็กทอรีใดอยู่ภายใน

 cd /home
 ลส 

ใช้ ls เพื่อแสดงรายการบัญชีผู้ใช้

คุณควรเห็นไดเร็กทอรีสำหรับผู้ใช้แต่ละรายที่กำหนดค่าไว้ในคอมพิวเตอร์ของคุณ รวมทั้งไดเร็กทอรีสำหรับบัญชีผู้ใช้ของคุณเอง คอมพิวเตอร์เครื่องนี้มีผู้ใช้คนเดียวที่เรียกว่า “เดฟ” หากเราใช้ cd /home ก่อนที่เราจะใช้คำสั่ง chroot เราจะเข้าสู่ไดเร็กทอรี "/home" ของระบบไฟล์แบบสด

เพื่อความชัดเจน ขณะนี้คุณกำลังเข้าถึง ระบบไฟล์จริงของคุณ ในฐานะผู้ใช้ รู ท ดังนั้นโปรดใช้ความระมัดระวัง

ในการแก้ไขปัญหา GRUB 2:2.06.r322 สิ่งที่เราต้องทำคือเรียกใช้คำสั่ง grub-install

 ด้วงติดตั้ง 

รันคำสั่ง grub-install เพื่อแก้ไขข้อผิดพลาด GRUB boot to BIOS

ปกติไม่แนะนำให้รัน grub-install สุ่มสี่สุ่มห้าแบบนี้ ในกรณีนี้เป็นสิ่งที่จำเป็น

ซ่อมหรือเปลี่ยน

หากคุณกำลังพยายามแก้ไขปัญหาอื่น คุณจะต้องตรวจสอบฟอรัมสำหรับการแจกจ่ายของคุณเพื่อหาวิธีแก้ปัญหาที่เหมาะสมสำหรับปัญหาของคุณ หากเป็นการร้องเรียนในวงกว้าง คุณจะพบวิธีแก้ไขในไม่ช้า

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

ที่เกี่ยวข้อง: วิธีคัดลอกไฟล์โดยใช้คำสั่ง "ติดตั้ง" บน Linux