ฉันจะเปิดเมนูด้วงจาก grub CLI ได้อย่างไร


1

ฉันใช้ Ubuntu 16.04.2 ใหม่บนเครื่องใหม่ (อายุ 2 สัปดาห์) แต่เมื่อ 2 คืนก่อน (2-3 พฤษภาคม) การอัพเดตเคอร์เนลทำให้ระบบของฉันพังอย่างสมบูรณ์ ฉันมีเหตุผลที่เชื่อได้ว่าฉันสามารถแก้ไขได้ถ้าฉันบอกด้วงให้เลือกเคอร์เนลรุ่นเก่าตอนเริ่มต้น

ปัญหานี่คือการติดตั้งแบบครั้งเดียวดังนั้นเมนูของด้วงจะถูกปิดการใช้งานตามค่าเริ่มต้นและฉันไม่สามารถแสดงมันได้โดยการกด Shift ซ้ำ ๆ หรือไม่ (หรือกดปุ่ม Space Bar หรืออะไรก็ตาม) จนถึงตอนนี้ อินเตอร์เฟสบรรทัดคำสั่งของ grub เพื่อแสดงโดยกด Esc นั่นคือทั้งหมดที่ฉันมีในขณะที่ฉันไม่สามารถแม้แต่เปิดเซสชันเทอร์มินัลน้อยดังนั้นฉันจึงไม่สามารถแก้ไขไฟล์กำหนดค่าของ grub หรืออะไรก็ได้

ฉันพยายามทำ

grub> configfile /boot/grub/grub.cfg

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

ผมเคยได้ยินมันเป็นไปได้ที่จะเปิดตัวเมนูอินเตอร์เฟซด้วงจาก CLI แต่มันก็ไม่ได้อธิบายวิธีการหนึ่งที่ควรจะทำว่าในคู่มือ ในขณะนี้ดูเหมือนว่าเป็นตัวเลือกเดียวของฉัน ไอเดีย?

แก้ไข: เนื่องจากฉันไม่สามารถแก้ไขไฟล์กำหนดค่าหรือใช้ Shift เพื่อเปิดเมนูด้วงนี่ไม่ซ้ำกับคำถามอื่นนี้


นั่นไม่ใช่วิธีที่คุณสามารถบูตเคอร์เนลเก่าได้ง่ายที่สุด กดปุ่ม Shift ค้างไว้ที่askubuntu.com/questions/82140/… . หากคุณใช้บรรทัดคำสั่ง grub ให้ใช้ความสมบูรณ์ของแท็บ
Panther

@ bodhi.zazen: ตามที่ฉันเขียนไว้ข้างต้นถือคีย์ shift ไม่ได้ทำอะไรเลยในกรณีของฉัน วิธีแก้ปัญหาของ TopHat นั้นไม่ใช่คำตอบที่ฉันต้องการ แต่ก็แก้ปัญหาของฉันได้แล้ว (ขอบคุณอีกครั้ง!)
Jaumito

การลงคะแนนเพื่อเปิดอีกครั้ง - สิ่งที่ซ้ำกันไม่ได้ระบุข้อเท็จจริงที่ว่าShift Keyไม่แสดงgrubเมนูเพื่อเลือกรุ่นเคอร์เนลที่เก่ากว่า มีคำตอบด้านล่างที่กล่าวถึงข้อเท็จจริงนี้
WinEunuuchs2Unix

คำตอบ:


2

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

grub> set root=(hd<disk with kernel and initrd>,msdos<partition with kernel and initrd>)
grub> linux /boot/vmlinuz-<kernel version you want to boot from> root=/dev/<root device>
grub> initrd /boot/initrd-<same version as chosen kernel>
grub> boot

ขึ้นอยู่กับว่า / boot เป็นพาร์ติชั่นแยกจากกัน, ข้างบนอาจแตกต่างกันเล็กน้อย คุณจะตั้งค่าเริ่มต้น root = เป็น / boot disk และ partition จากนั้นเมื่อ delcaring linuxและbootคุณจะไม่รวมboot/เนื่องจากมันจะเริ่มในไดเรกทอรีนั้น root=ในสายลินุกซ์จะยังคงชี้ไปที่รากดิสก์ / พาร์ทิชันแม้ว่า

--- แก้ไขเพื่อรวมข้อมูลจากความคิดเห็น ---

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

grub> set root=(hd1,gpt2)
grub> linux /boot/vmlinuz-<version you want to boot from> root=/dev/sdb2
grub> initrd /boot/initrd-<same version as chosen kernel>
grub> boot

ฉันคิดว่าจริงและจะลองเป็นทางเลือกสุดท้าย เนื่องจากมีรายการพารามิเตอร์ (เช่น root = UUID = ฉันไม่มีความคิดว่าควรจะไปที่นี่) ที่ค่อนข้างจะข่มขู่ฉัน
Jaumito

@ Jaumito เข้าใจได้ หากคุณคิดว่าคุณสามารถให้รายละเอียดเพิ่มเติมแก่ฉันได้ฉันอาจขอให้คุณใช้ชุดคำสั่งที่เฉพาะเจาะจงมากขึ้นในการทำงานเพื่อช่วยเหลือคุณ สถานการณ์กรณีที่แย่ที่สุดมันล้มเหลวในการบูตและเราลองอีกครั้ง ¯ \ _ (ツ) _ / ¯
TopHat

ขอบคุณมาก. ดีแค่บอกสิ่งที่คุณต้องการและฉันจะพยายามให้ (ถ้าช่วยเมื่อฉันติดตั้ง 16.04.2 ฉันบอกให้เขียนทับระบบก่อนหน้านี้และฉันไม่คิดว่าฉันทำอะไรตลกดังนั้น (hd0) ฯลฯ ควรมีค่าเริ่มต้นแม้ว่าฉันจะไม่ทราบว่าพวกเขาหมายถึงอะไรจริง ๆ ถ้าฉันสามารถได้รับสิ่งที่มีประโยชน์จากด้วง CLI เพียงแค่ถาม
Jaumito

1
@Jaumito เอาต์พุตที่มีประโยชน์ที่สุดจะเป็นสิ่งที่แสดงเมื่อคุณพยายามที่จะแท็บทำตามคำสั่งเหล่านี้ให้สมบูรณ์ ตัวอย่างเช่นพิมพ์set root=(hdและกดแท็บสองครั้งเพื่อดูว่ามันเติมใน 0 ให้คุณหรือให้ตัวเลือกแก่คุณ จากนั้นทำset root=(hd0,msdosและกดแท็บสองครั้งอีกครั้ง นอกจากนี้สำหรับคำสั่ง linux ให้ทำlinux แล้วกดแท็บสองครั้งและควรแสดงระบบไฟล์ หากคุณเห็น/bootไดเรกทอรีให้ทำlinux /boot/และกดแท็บสองครั้งอีกครั้ง ที่ควรให้ฉันพอที่จะเริ่มต้นด้วย วางผลลัพธ์ลงในลิงก์ pastebin.com เนื่องจากมีแนวโน้มว่าจะเป็นผลลัพธ์จำนวนมาก
TopHat

set root = (hd <tab> ให้ hd0 hd1 ตามด้วยข้อความผิดพลาดอึลืมว่าไม่สามารถแก้ไขได้จะให้บทสรุปที่ดีกว่าในไม่กี่นาที
Jaumito
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.