วิธีใช้ GRUB Rescue เพื่อแก้ไข Linux

เผยแพร่แล้ว: 2023-05-14
หน้าจอเริ่มต้น Ubuntu Linux บนแล็ปท็อป
Jordan Gloor / How-To Geek
ถ้าเชลล์ GRUB ของคุณแสดงพรอมต์ "grub>" คุณสามารถใช้คำสั่ง ls , set , linux และ initrd เพื่อแก้ไขระบบ Linux ของคุณได้ หากคุณเห็นข้อความแจ้ง "grub Rescue>" ให้ใช้คำสั่ง set , insmod , linux และ initrd เพื่อบู๊ตพีซีของคุณ

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

สารบัญ

เมื่อ Bootloader ของคุณไม่บูต
การใช้ GRUB Shell
การใช้ GRUB Rescue Shell
วิธีแก้ไขที่เป็นไปได้อื่น ๆ

เมื่อ Bootloader ของคุณไม่บูต

มีปัญหาคอมพิวเตอร์น้อยมากที่ทำให้หัวใจของคุณจมลึกและรวดเร็วพอ ๆ กับความล้มเหลวในการบู๊ต หากไม่มีระบบปฏิบัติการ คอมพิวเตอร์ของคุณก็ไม่ใช่คอมพิวเตอร์จริงๆ

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

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

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

วิธีเขียนไฟล์ ISO ลงในไดรฟ์ USB ใน Linux
ที่เกี่ยวข้อง วิธีเขียนไฟล์ ISO ไปยังไดรฟ์ USB ใน Linux

โปรดทราบว่าสิ่งที่เราเรียกว่า GRUB จริงๆ แล้วคือ GRUB 2 นี่เป็นเวอร์ชันขั้นสูงของ GRUB ที่เปิดตัวในปี 2012 ท่ามกลางการเปลี่ยนแปลงอื่นๆ มันเปลี่ยนวิธีสร้างไฟล์ "grub.cfg" และช่วยให้คุณ บูตจากสื่อแบบถอดได้

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

มี GRUB shell ที่แตกต่างกันสองแบบ ขึ้นอยู่กับสาเหตุของปัญหา คุณอาจพบว่าตัวเองได้รับพร้อมท์เชลล์ GRUB:

 ด้วง>

หรือที่พรอมต์ ช่วยเหลือ ของ GRUB:

 ด้วงกู้ภัย>

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

การใช้ GRUB Shell

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

พรอมต์ของเชลล์ GRUB

คำสั่งที่คุณสามารถเข้าถึงได้ไม่เหมือนกับเวอร์ชัน Linux ทั่วไป ตัวอย่างเช่น คำสั่ง ls ของเชลล์ GRUB ไม่ใช่คำสั่ง Bash ls มันมีอะไรเหมือนกันน้อยมาก เราสามารถดูสิ่งนี้ได้โดยใช้ตัวเลือก --help

 ls -- ช่วยด้วย 

การใช้ตัวเลือก --help กับ ls เวอร์ชันเชลล์ของ GRUB

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

ที่พรอมต์ ให้พิมพ์ ls แล้วกด “Enter”

เอาต์พุตจาก ls เวอร์ชันเชลล์ของ GRUB แสดงไดรฟ์และพาร์ติชัน

ในคอมพิวเตอร์เครื่องนี้ จะแสดงรายการสามรายการ

  • (hd0) เป็นฮาร์ดไดรฟ์ตัวแรก
  • (hd0,gpt1) เป็นพาร์ติชันแรกในฮาร์ดไดรฟ์ตัวแรก
  • (hd0,gpt2) เป็นพาร์ติชันที่สองในฮาร์ดไดรฟ์ตัวแรก

ป้ายกำกับ "gpt" หมายถึงตารางพาร์ติชัน GUID เราจำเป็นต้องใส่วงเล็บ " () " เมื่อเราอ้างอิงพาร์ติชัน แต่เราสามารถละป้ายกำกับได้

ในการดูพาร์ติชันในทางกลับกัน เราจะใช้ ls

 ls (hd0,1)
 ls (hd0,2) 

ใช้ ls เวอร์ชันเชลล์ของ GRUB เพื่อระบุพาร์ติชัน Linux

เราพบว่าพาร์ติชันที่สองมีระบบไฟล์ Linux อยู่ เราจะตรวจสอบเพิ่มเติมอีกเล็กน้อยโดยดูที่ไดเร็กทอรีรากของพาร์ติชันนั้น

 ls (hd0,2)/ 

ใช้ ls เวอร์ชันเชลล์ของ GRUB เพื่อตรวจสอบพาร์ติชันเฉพาะ

เห็นได้ชัดว่านี่คือพาร์ติชัน Linux ซึ่งมีไดเร็กทอรีสำหรับบูตอยู่ นี่คือที่เก็บไฟล์ GRUB, อิมเมจสำหรับบูต Linux และไฟล์สำหรับบูตอื่นๆ

ในคอมพิวเตอร์เครื่องนี้ เราจะต้องอ้างอิงพาร์ติชัน (hd0,2) เมื่อเราออกคำสั่ง ในคอมพิวเตอร์ของคุณ คุณจะใช้พาร์ติชันใดก็ได้ที่คุณพบการติดตั้ง Linux

เราสามารถใช้คำสั่ง cat เพื่อดูไฟล์ข้อความโดยเพิ่มพาธไดเร็กทอรีและชื่อไฟล์ต่อท้ายชื่อพาร์ติชัน ดังนี้

 cat (hd0,2)/อื่นๆ/ปัญหา 

ดูเวอร์ชันของ Linux โดยใช้คำสั่ง cat ในเชลล์ GRUB

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

ในที่นี้ เราใช้คำสั่ง ls กับตัวเลือก -l (long) และ -h (ขนาดที่มนุษย์อ่านได้) เพื่อแสดงรายการไฟล์ในไดเร็กทอรี “/boot”

 ls -lh (hd0,2)/บูต 

แสดงรายการไฟล์ในไดเร็กทอรี /boot โดยใช้ ls เวอร์ชัน GURB

ในการทำให้คอมพิวเตอร์เครื่องนี้บูตได้ เราต้องบอก GRUB ว่าพาร์ติชัน Linux ที่เพิ่งค้นพบของเราเก็บไฟล์สำหรับบูตไว้

 ตั้งค่ารูท = (hd0,2)

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

 linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2

ในคอมพิวเตอร์ตัวอย่างของเรา เราใช้ (hd0) ซึ่งเป็นฮาร์ดไดรฟ์ตัวแรก สิ่งนี้เรียกว่า sda ในระบบการตั้งชื่อ Linux ตามปกติ เราพบว่าพาร์ติชันที่สองคือพาร์ติชัน Linux ดังนั้นเราต้องระบุ sda2

เครื่องของคุณอาจแตกต่างออกไป ตัวอย่างเช่น หากพาร์ติชั่น Linux ของคุณถูกรายงานเป็น (hd2,1) นั่นหมายถึงพาร์ติชั่นหนึ่งในฮาร์ดไดรฟ์ตัวที่สาม หรือ sdc1

เราต้องระบุอิมเมจระบบไฟล์ที่ใช้ RAM ที่จะใช้เมื่อคอมพิวเตอร์บูท ต้องใช้องค์ประกอบตัวเลขเดียวกันกับเคอร์เนล Linux ที่เรากำลังใช้

 initrd /boot/initrd.img-6.2.0-20-generic 

การตั้งค่าพารามิเตอร์การบู๊ตในเชลล์ GRUB

ตอนนี้เพื่อบู๊ตระบบของเรา พิมพ์ "boot" แล้วกด "Enter"

สิ่งนี้ควรบู๊ตคอมพิวเตอร์ของคุณเป็น Linux นั่นทำให้เรากลับมาทำงานได้อีกครั้ง แต่เรายังจำเป็นต้องแก้ไข GRUB ดังนั้นเราจึงไม่จำเป็นต้องทำสิ่งนี้ทุกครั้งที่เปิดคอมพิวเตอร์

เราจะเรียกใช้ update-grub สิ่งนี้จะสแกนระบบของเรา ระบุระบบปฏิบัติการ และสร้างการกำหนดค่า GRUB ใหม่ เราจำเป็นต้องเรียกใช้สิ่งนี้ในฐานะผู้ใช้รูท

 sudo ปรับปรุงด้วง 

ใช้ update-grub เพื่อสร้างไฟล์ grub.cfg ใหม่

ไม่บ่อยนัก คุณอาจต้องติดตั้ง bootloader ของ GRUB ใหม่ด้วย โดยใช้ grub-install

 sudo ด้วงติดตั้ง /dev/sda

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

หลักฐานของพุดดิ้งมาพร้อมกับการรีบูตครั้งต่อไป คอมพิวเตอร์ของคุณควรรีบูตตามปกติ

ที่เกี่ยวข้อง: วิธีกำหนดการตั้งค่าของ Boot Loader ของ GRUB2

การใช้ GRUB Rescue Shell

คุณอาจไม่หลุดเข้าไปในเชลล์ GRUB ทั้งนี้ขึ้นอยู่กับลักษณะของปัญหาการบู๊ต คุณอาจอยู่ในโหมด ช่วยเหลือ ด้วง หากเป็นเช่นนั้น พรอมต์ของคุณจะมีลักษณะดังนี้:

 ด้วงกู้ภัย>

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

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

 ตั้งคำนำหน้า=(hd0,2)/boot/grub
 ตั้งค่ารูท = (hd0,2)
 เข้าโหมดปกติ
 insmod ลินุกซ์
 linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2
 initrd /boot/initrd.img-6.2.0-20-generic 

การตั้งค่าพารามิเตอร์การบู๊ตในเชลล์ช่วยเหลือ GRUB

จากนั้นคุณสามารถพิมพ์ "boot" และกด "Enter" เพื่อรีบูตเครื่องคอมพิวเตอร์ของคุณ เมื่อรีบูตและคุณเข้าสู่ระบบแล้ว ให้อัปเดต GRUB ด้วยคำสั่ง update-grub

วิธีแก้ไขที่เป็นไปได้อื่น ๆ

หากปัญหากลายเป็นว่าไม่มีไฟล์บูต เช่น ไฟล์ "vmlinuz" และ "initrd.img" คุณสามารถบูตคอมพิวเตอร์จาก Live DVD หรือแฟลชไดรฟ์ Linux USB ที่สามารถบู๊ตได้ และคัดลอกไฟล์ที่ขาดหายไปเข้าที่

โปรดทราบว่าไฟล์ “vmlinuz” และ “initrd.img” ต้อง มีหมายเลขเวอร์ชันเดียวกัน เนื่องจากทำงานเป็นคู่ที่ตรงกัน

ที่เกี่ยวข้อง: วิธีสร้าง Linux Live USB ที่บูตได้บน Mac ของคุณ