จะเพิ่มรายการเมนู GRUB2 สำหรับการบู๊ต Ubuntu บนไดร์ฟ USB ได้อย่างไร?


23

ฉันไม่ได้ถามวิธีการบูต LiveCD จาก USB

ฉันมีการติดตั้ง Ubuntu 2 ตัวหนึ่งตัวในฮาร์ดไดรฟ์ภายในคอมพิวเตอร์ของฉันและอีกอันในไดรฟ์ USB

มีวิธีการเพิ่มรายการเมนู GRUB2 (ไปยัง GRUB บนฮาร์ดไดรฟ์ภายในของฉัน) เพื่อบูต Ubuntu OS ที่ฉันติดตั้งลงในแฟลชไดรฟ์ USB และมีรายการเมนูเดียวกันนี้ยังคงใช้งานได้หลังจากฉันอัพเกรดเคอร์เนล Linux เกี่ยวกับการติดตั้ง USB?

คำตอบ:


33

ทุกครั้งที่คุณอัพเกรดเคอร์เนลที่ภายนอกคุณสามารถเรียกใช้สิ่งนี้เพื่ออัปเดต boot stanza เป็น grub บนไดรฟ์ภายใน

sudo update-grub

แต่คุณสามารถเพิ่ม boot stanza ให้กับ 40_custom ของ grub2 ที่บู๊ตพาร์ทิชันไม่ใช่เคอร์เนลที่เจาะจง Ubuntu ติดตั้งลิงก์ใน / (root) เพื่อบูตการติดตั้งล่าสุด ปรับตัวอย่างด้านล่างหากจำเป็นสำหรับไดรฟ์และพาร์ติชันของคุณ บูตไดรฟ์ที่มีด้วงเป็น hd0 เสมอ แต่ไดรฟ์อื่นอยู่ใน BIOS รายงานการสั่งซื้อซึ่งอาจแตกต่างกันไป

แก้ไขด้วย:

gksudo gedit /etc/grub.d/40_custom

จากนั้นเพิ่ม:

menuentry "Install on sdb1" {
    set root=(hd1,1)
    linux /vmlinuz root=/dev/sdb1 ro quiet splash
    initrd /initrd.img
}

ในขณะที่ใช้งานได้ฉันพบว่าไดรฟ์อาจเปลี่ยนแปลงเมื่อเสียบแฟลชไดรฟ์หรืออุปกรณ์ USB อื่น ๆ ดังนั้นฉันจะเปลี่ยนไปใช้ป้ายกำกับ

menuentry "Cosmic 18.10 on sdb12 test" {
    search --set=root --label cosmic_b --hint hd2,gpt12
    configfile /boot/grub/grub.cfg 
}

1
มีวิธีใช้ UUID ของพาร์ติชันมากกว่า/dev/sdb1หรือไม่?
kiri

sudo update-grub ใช้งานได้ดีขอบคุณ!
Sergiy Migdalskiy

2
คุณควรคิดอย่างไรว่าควรจะมีอะไร (hd1,1)? คุณเอาตัวเลขเหล่านี้มาจากไหนเพื่อให้พอดี ฉันอาจต้องใช้สิ่งนี้เพื่อตั้งปัญหาที่แตกต่าง: askubuntu.com/questions/573502/…
matt

4
หมายเลขแรกคือไดรฟ์ตามที่ BIOS รายงาน แต่ไดรฟ์สำหรับบูตจะเป็น hd0 เสมอลำดับของไดรฟ์จึงสามารถเปลี่ยนแปลงได้ จากนั้นหมายเลขที่สองคือหมายเลขพาร์ติชัน โดยที่ sda3 คือ hd0,3 หากคุณบูตจากไดรฟ์ที่เป็น sda แต่ถ้าคุณบูทจาก sdb มันอาจจะเป็น hd1,3 บางครั้งคุณต้องทดลอง
oldfred

sudo update-grub ใช้ได้กับการเพิ่มรายการ windows ด้วย
superl2

9

ฉันค้นพบวิธีการใช้ UUID ของไดรฟ์ซึ่งมีประโยชน์หากคุณมีหลาย ๆ ไดรฟ์ที่ต่อเข้ากับเวลาบู๊ต เครดิต oldfred สำหรับบันทึกของเขาเกี่ยวกับ/vmlinuxและ/initrd.imgsymlinks

เพิ่มลงในไฟล์/etc/grub.d/40_customแทนที่UUID=XXXX-YYYYด้วยพาร์ติชัน UUID (รับ UUID ด้วยคำสั่งblkid)

menuentry "Boot from USB Drive" {
    set root=UUID=XXXX-YYYY
    linux /vmlinuz root=UUID=XXXX-YYYY ro quiet splash
    initrd /initrd.img
}

8
นี่ไม่ใช่คำตอบสำหรับคำถามข้างต้นอย่างแน่นอน คุณควรยอมรับคำตอบของ oldfred
Demis Palma ツ

1
@ คีรี: มันเป็นการปฏิบัติที่ไม่ดีที่จะคัดลอกคำตอบของคนอื่นและให้เครดิตกับตัวเอง ใช่แม้ว่าคุณจะเพิ่มส่วน UUID
Lennart Rolland

2

ในการบูตจากรายการเมนู Ubuntu Live USB /etc/grub.d/40_customควรมีลักษณะเช่นนั้น ( แทนที่DRIVE_UUIDด้วย uuid ของพาร์ติชันของคุณ ):

menuentry "Boot from LIVE USB Drive" {
   search --set=root --fs-uuid DRIVE_UUID
   linux ($root)/casper/vmlinuz boot=casper quiet splash --
   initrd ($root)/casper/initrd.lz
}

หากต้องการใช้การเปลี่ยนแปลงให้ดำเนินการดังนี้

sudo update-grub
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.