มีข้อผิดพลาดในด้วง 2.04ดังนั้นให้แน่ใจว่าคุณมีรุ่นก่อนหน้าหรือในภายหลัง
พื้นฐานสำหรับการเพิ่มไฟล์ ISO ไปยังด้วงนั้นเหมือนกันสำหรับ UEFI สำหรับเครื่อง BIOS: แก้ไข/etc/grub.d/40_custom
และเพิ่มmenuentry
รายการ (ใช้ GParted ในตัวอย่างนี้) ที่ด้านล่างของไฟล์:
menuentry "GParted Live ISO" {
}
ตอนนี้เรากำลังจะเพิ่มตัวแปรที่มีไดเรกทอรีซึ่งเราเก็บไว้ ISO (จนถึงดีมาก: ไม่มีความแตกต่างกับเครื่อง BIOS):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}
ฉันใช้/opt
เพื่อจัดเก็บสิ่งเหล่านี้เนื่องจากฉันไม่ชอบการสร้างไดเรกทอรีในรากของเครื่องของฉันและตามลำดับชั้นของระบบไฟล์ลินุกซ์ซึ่งเป็นที่ที่ซอฟต์แวร์ตัวเลือกควรจะอยู่ต่อไป
ก่อนที่เราจะเพิ่มloopback
ตัวแปรเราต้องไปหาที่ฮาร์ดดิสก์ไฟล์จะถูกเก็บไว้เพื่อให้เราทำ: และผลผลิตในเครื่องของฉันคือ df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
/dev/sdb2
อย่างไรก็ตามด้วงใช้hdX,Y
สัญกรณ์( ) และนี่คือที่ซึ่งความแตกต่างระหว่าง UEFI และเครื่อง BIOS มา! ดังนั้นตอนนี้รีบูตเครื่องของคุณไปลงในเมนูด้วงและกดCนี้จะนำคุณไปยังคำสั่งด้วงพรอมต์ที่มีคำสั่งที่แตกต่างกว่าที่คุณเคยใช้ls
แต่เพียงคนเดียวที่คุณต้องการคือ
บนเครื่องของฉันผลลัพธ์คือ:
(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...
ฮะ? 4 ไดรฟ์ ฉันมีแค่ 3! และมันไม่ได้(hd1,4)
อยู่ใน BIOS แต่เป็น(hd1,gpt3)
UEFI และ(hd0)
ไม่มีพาร์ติชั่นเลย!
เห็นได้ชัดว่าเมื่อส่วนหนึ่งของ NVRAM ถูกใช้เป็นที่จัดเก็บข้อมูลและแสดงขึ้นมาตามที่(hd0)
คุณต้องการเริ่มนับหมายเลขไดรฟ์ที่ 1! ในขณะที่ข้อมูลทั้งหมดที่คุณพบในการบู๊ตไฟล์ ISO บอกว่าคุณต้องเริ่มต้นหมายเลขจาก 0 (บนเครื่องไบออสซึ่งเป็นจริงเสมอนี่ไม่จำเป็นต้องเป็นกรณีของเครื่อง UEFI !)
ดังนั้นค่าของไฟล์loopback
จะกลาย(hd2,gpt2)$GPartedISOFile
เป็นไฟล์ ISO บนเครื่องของฉัน/dev/sdb2
(ไดรฟ์hd2
ที่สอง, พาร์ติชั่นที่สองgpt2
):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
}
ความแตกต่างก็คือว่าlinux
และinitrd
ในเครื่อง BIOS จะเรียกว่าlinuxefi
และlinuxefi
ในเครื่อง UEFI ซึ่งจะช่วยให้เราผลสุดท้ายของเรา:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$GPartedISOFile ip=frommedia toram=filesystem.squashfs union=overlay username=user
initrdefi (loop)/live/initrd.img
}
ดังนั้นตอนนี้ให้บันทึกไฟล์นั้นและอัพเดตด้วงด้วย:
update-grub
หลังจากทั้งหมดข้างต้นรีบูตไปที่เมนูด้วงเลือกGParted Live ISO
และตอนนี้คุณสามารถบูท ISO ของคุณได้อย่างง่ายดายโดยไม่ต้องไปหาแท่ง USB อีกต่อไป!
:-)
ตัวอย่าง CloneZilla Live (สำหรับคำถามนี้ )
menuentry "CloneZilla ISO" {
set ISOFile="/opt/Live-ISOs/clonezilla-live-20170905-zesty-amd64.iso"
loopback loop (hd2,gpt2)$ISOFile
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$ISOFile ip=frommedia toram=filesystem.squashfs union=overlay
initrdefi (loop)/live/initrd.img
}