วิธีสร้างสื่อสด USB ที่สามารถบูตได้ UEFI เท่านั้น


107

การมีสื่อสดที่สามารถบู๊ตได้ทั้งสองวิธีอาจเป็นปัญหาเมื่อติดตั้ง Ubuntu ลงในคอมพิวเตอร์ Windows 8 ที่มีอยู่ในปัจจุบัน

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

เนื่องจาก Valve ได้ทำการติดตั้ง USB UEFI อย่างเดียวแล้วโดยใช้ระบบปฏิบัติการบนเดเบียนบน Steam และ UNetbootin ซึ่งเป็นตัวเลือกอันดับต้น ๆ ของผู้สร้าง Startup Disk Creator ของ Ubuntu ไม่เข้ากันกับ UEFI ดังนั้นฉันจึงคิดว่าเราควรมีหัวข้อแยกต่างหากสำหรับ การสร้างสื่อสด USB ที่สามารถบูตได้ UEFI เท่านั้น

คำตอบ:


133

ภาพรวม

การสร้าง UEFI สำหรับการบู๊ตผ่านสื่อสดแบบ USB เท่านั้นนั้นเป็นสิ่งที่ตรงไปตรงมา เพียงคัดลอกไฟล์ไปยังไดรฟ์ USB ที่จัดรูปแบบ FAT32ของคุณ แค่นั้นแหละ!

จำไว้ว่าสำหรับการติดตั้งหรือการบูตสื่อ:

สารบัญ

  • คัดลอกไฟล์จากวิธีการ ISO
    1. ตัวอย่างผ่านเทอร์มินัล
    2. ตัวอย่างผ่าน GUI
    3. ตัวอย่างบน Windows
  • วิธีการวนกลับ ISO (ขั้นสูง)
    1. สร้างไบนารี
    2. การสร้างไฟล์กำหนดค่า
    3. เพิ่มความคงทน
    4. ตรวจสอบความสมบูรณ์
    5. Boot ปลอดภัย UEFI

1. คัดลอกไฟล์จากวิธี ISO

วิธีนี้ยังใช้ได้กับสื่อบันทึกการติดตั้งอื่น ๆ ที่มี EFI loader เช่น Windows เป็นต้น

1.1 ตัวอย่างผ่านเทอร์มินัล

คุณสามารถทำสิ่งต่อไปนี้ถ้า604A-00EAไดรฟ์ USB ของคุณและคุณได้p7zipติดตั้งแล้ว:

$ 7z x ubuntu-12.04-desktop-amd64.iso -o/media/$USER/604A-00EA/

คุณกำลังทำถ้าคุณมีเพียงหนึ่งพาร์ติชันบนไดรฟ์ USB นี้มิฉะนั้นคุณจะต้องธงพาร์ทิชันที่สามารถบูตเป็นเช่นผ่านparted:

# parted /dev/sdX set 1 boot on

ไหน/dev/sdXจะเป็นไดรฟ์ USB ของคุณและ1จำนวนพาร์ทิชันที่ควรจะใช้ในการบูต

1.2 ตัวอย่างผ่าน GUI

  1. เมาท์ไฟล์. iso และคัดลอกเนื้อหาไปยังไดรฟ์ USB ของคุณ กดCtrl+ Hใน Nautilus เพื่อแสดงและคัดลอกไฟล์ที่ซ่อนอยู่เช่นกัน

    หอยโข่งแสดง Disk Image Mounter ในเมนูบริบทเมื่อเลือกไฟล์. iso

  2. เพิ่มธงบูตผ่านGParted

    GParted แสดงวิธีจัดการแฟล็กพาร์ติชัน

1.3 ตัวอย่างบน Windows

  1. เหมือนกับข้างบนเพียงแค่คัดลอกไฟล์
  2. กดWindows/Super+ Xไปที่การจัดการดิสก์และตรวจสอบว่ามีการทำเครื่องหมายพาร์ติชันว่าทำงานหรือไม่ ใน Windows เวอร์ชันก่อนหน้า Windows 8 คุณกดWindows/Super+ Rเพื่อเปิดเมนูรันและเปิดdiskmgmt.mscซึ่งจะเปิดการจัดการดิสก์

2. วิธีการวนกลับ ISO (ขั้นสูง)

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

หากคุณต้องการที่จะบูตของ Windows เกินไปคุณอาจต้องการที่จะดูที่SARDU ฉันจำได้ว่าใช้กับ Windows PE ประมาณปี 2005 และดูเหมือนว่าได้รับการอัปเดตเพื่อรองรับไดรฟ์ USB และ UEFI แต่โปรดจำไว้ว่าเครื่องมือนี้รองรับการบูทแบบดั้งเดิมด้วย

เราต้องการอะไร

  • มีความรู้พื้นฐานเกี่ยวกับไฟล์คอนฟิกูเรชันของ GRUB
  • ความรู้พื้นฐานมากเกี่ยวกับการบูท UEFI และ GRUB ในขณะที่เรากำลังจะสร้างอิมเมจ bootloader GRUB ของเราเองพร้อมโมดูลมากมาย
  • อิมเมจ ISO ที่สามารถบูตได้ UEFI, ไดรฟ์ USB ที่จัดรูปแบบ FAT และเครื่องที่ใช้ Linux
    • ไม่เราไม่ต้องการการติดตั้ง UEFI ของ Linux (ซึ่งอาจเป็นสถานการณ์ที่เกี่ยวกับไก่และไข่) Linux VM แบบดั้งเดิมใน VirtualBox นั้นใช้ได้

2.1 สร้างไบนารี

บนเครื่อง Ubuntu หรือ VM ของคุณตรวจสอบให้แน่ใจว่าได้ติดตั้งแพ็คเกจgrub-efi-amd64-bin (grub-efi-ia32-bin พร้อมใช้งานสำหรับสถาปัตยกรรม Intel รุ่น 32 บิตในรุ่นใหม่กว่า) แพคเกจอาจมีชื่อที่แตกต่างกันในการกระจายอื่นคุณสามารถเปรียบเทียบรายชื่อไฟล์ของแพคเกจเพื่อค้นหาแพคเกจที่เหมาะสมในการกระจายของคุณ

คำสั่งต่อไปนี้จะสร้างอิมเมจ GRUB ในกรณีนี้ไบนารี EFI ที่คอมพิวเตอร์ทุกเครื่องที่มีเฟิร์มแวร์ UEFI ควรจะสามารถทำงานได้:

grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \
 fat iso9660 part_gpt part_msdos \
 normal boot linux configfile loopback chain \
 efifwsetup efi_gop efi_uga \
 ls search search_label search_fs_uuid search_fs_file \
 gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
 exfat ext2 ntfs btrfs hfsplus udf

เฟิร์มแวร์ UEFI มาตรฐานทุกตัวควรตรวจสอบหา\EFI\BOOT\ชื่อไฟล์boot{arch}.efiดังนั้นสร้างโฟลเดอร์ในไดรฟ์ USB และคัดลอกภาพที่เราเพิ่งสร้างไปยังตำแหน่งนี้ สถาปัตยกรรมอื่น ๆ แทน x64 นั้นเป็นไปได้ แต่ให้ง่ายด้วย x64 / amd64

2.2 การสร้างไฟล์กำหนดค่า

ตัวอย่างพื้นฐานมากสำหรับgrub.cfgไฟล์กำหนดค่าที่ควรอยู่ในไดเรกทอรีเดียวกับที่bootx64.efiมีลักษณะดังนี้:

set timeout=3
set color_highlight=black/light-magenta

menuentry 'Boot Ubuntu 14.04.2 LTS from ISO' {
        set isofile="/efi/boot/ubuntu-14.04.2-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash persistent --
        initrd (loop)/casper/initrd.lz
}
submenu 'Useful snippets' {
    menuentry 'Ubuntu' {
            chainloader /efi/ubuntu/grubx64.efi
    }
    menuentry 'Windows' {
            chainloader /efi/Microsoft/Boot/bootmgfw.efi
    }
    menuentry 'Firmware Setup' {
            fwsetup
    }
}

Boot Ubuntu 14.04.2 LTS from ISOสิ่งที่สำคัญคือการกำหนดค่าบล็อกที่มีชื่อ คุณสามารถเปลี่ยนสีและหมดเวลาตามที่คุณต้องการ ฉันเลือกblack/light-magentaเนื่องจากยังคงดู Ubuntu-ish เล็กน้อย แต่สามารถแยกแยะได้ง่ายเมื่อทำการกำหนดค่าอื่น ๆ คุณสามารถหาตัวอย่างเพิ่มเติมสำหรับดิสทริบิวชันอื่น ๆ ในArch Wikiและการอ่านคู่มือ GRUBนั้นคุ้มค่ากับเวลาของคุณหากคุณต้องการที่จะไปให้ไกลกว่านั้น

กลับไปที่บล็อกการกำหนดค่าควรเห็นได้ชัดว่ามีการอ้างอิง ISO ว่าเป็น/efi/boot/ubuntu-14.04.2-desktop-amd64.isoดังนั้นคัดลอก ISO ของคุณไป\EFI\BOOT\และแทนที่ubuntu-14.04.2-desktop-amd64.isoในการกำหนดค่าด้วยชื่อไฟล์จริงของ ISO ของคุณ

loopback loop $isofileคือบรรทัดที่จะโหลดไฟล์ ISO ของเราไปยังอุปกรณ์ลูปแบ็คซึ่งเราสามารถบูตเคอร์เนล Linux ได้โดยตรง สิ่งนี้เป็นไปได้เนื่องจากภาพ EFI GRUB ของเรามีโมดูลลูปแบ็ค (การทดลองและข้อผิดพลาดเล็กน้อยเกี่ยวข้องกับการหาว่าโมดูลใดที่เหมาะสมที่จะรวมคุณไม่ควรเห็นข้อความแสดงข้อผิดพลาดใด ๆ แต่ก็ยังไม่สมบูรณ์แบบ) การพูดถึงเคอร์เนลที่คุณสามารถเพิ่มพารามิเตอร์เคอร์เนลเช่นtoramพารามิเตอร์สำหรับภาษาต่างๆ (ตัวอย่างlocale=de_DE bootkbd=de) และในตัวอย่าง:persistent

2.3 เพิ่มความคงทน

คุณสามารถเพิ่มพาร์ติชันได้ตามที่อธิบายไว้ใน: ฉันจะรับ live-USB เพื่อใช้งานพาร์ติชันเพื่อคงอยู่ได้อย่างไร หรือคุณสามารถสร้างcasper-rwไฟล์และวางไว้ที่รูทของไดรฟ์ USB

dd if=/dev/zero of=casper-rw bs=1M count=4094
mkfs.ext4 -m 0 casper-rw

ฉันยังไม่ได้ทดสอบว่าค่าสูงสุดสัมบูรณ์คืออะไรควรอยู่ระหว่าง 4094 ถึง 4096 MB ใช้พาร์ติชันถ้าคุณตั้งใจจะใช้พื้นที่เพิ่ม โปรดทราบว่าการเปลี่ยนแปลงทุกอย่างใน (root) เป็นการแก้ไขระบบไฟล์ภาพซ้อนทับแม้กระทั่งการลบไฟล์

2.4 ตรวจสอบความสมบูรณ์

คุณควรดูคำตอบของคำถามต่อไปนี้เพื่อตรวจสอบว่าเนื้อหา Live ISO บนไดรฟ์ USB อยู่ในสภาพสมบูรณ์:

2.5 Boot ปลอดภัย UEFI

Secure Boot จะบังคับใช้กับเครื่อง Windows 10 ผมขอแนะนำให้คุณดู PreLoader ของ Linux Foundation เพื่อเพิ่มฟังก์ชั่น Secure Boot ในการตั้งค่านี้ นี่คือศิลปะ ASCIIบางอย่างที่แสดงเมนูของ HashTool ที่มาพร้อมกัน


ขอแสดงความยินดีฉันขอบอกว่าตอนนี้คุณเข้าใจการบูทของ UEFI แล้วและไม่ควรกลัวอีกต่อไป


1
ให้ฉันชี้ให้เห็น (a) ที่พีซีทั้งหมดจัดส่งในช่วง 5 ปีที่ผ่านมาหรือมีความสามารถนี้ (b) ที่รูตของ. iso installer จากนั้นสามารถใช้ยูเอสบีแบบเต็มเป็นที่จัดเก็บข้อมูลถาวรแบบธรรมดา (ใช้ตัวเลือก ro mount เพื่อปกป้องจากการลบโดยไม่ตั้งใจ) สำหรับพีซีที่ทันสมัยและรูปแบบการใช้งานทั่วไปดูเหมือนว่าจะเป็นทางออกที่ดีกว่าโซลูชันเริ่มต้นของ live-usb-creator
user1539216

3
ขณะใช้วิธี GUI ฉันพบข้อผิดพลาดในการเชื่อมโยงสัญลักษณ์ สิ่งนี้เกี่ยวข้องหรือไม่ คุณช่วยอธิบายรายละเอียดได้ไหม?
VRR

1
สวัสดี LiveWireBT! ขอบคุณสำหรับคำตอบที่น่าสนใจ !! ฉันติดตาม 2. วิธีการวนกลับ ISO (ขั้นสูง) และจัดการเพื่อบูต UEFI จาก usb flash drive แต่ในตอนท้ายของการบูทฉันได้รับข้อความแสดงข้อผิดพลาด: ไม่สามารถเมานต์ / dev / loop2 บน / วัวและหลังจากกด Enter ฉันเห็นพรอมต์ (initramfs) คุณช่วยฉันด้วยได้ไหม
zuba

ฉันต้องการขอบคุณสำหรับคำแนะนำที่ดีมันชัดเจนและรัดกุม ฉันไม่เคยคิดที่จะแบ่งพาร์ทิชันไดรฟ์หัวแม่มือและมีหลายระบบปฏิบัติการของมัน ขอบคุณอีกครั้ง!
Hatem Jaber

2
ใน 16.04 เป็นอย่างน้อย "การคัดลอกไฟล์ทั้งหมด" ไม่สามารถบูตได้เนื่องจากอาร์กิวเมนต์บรรทัดเคอร์เนล grub.cfg "file = / cdrom / preseed / ubuntu.seed" ไม่มีไฟล์ดังกล่าวอาจเกี่ยวข้องกับลิงก์สัญลักษณ์ที่ขาดหายไป (อูบุนตูถึง) แก้ไข grub.cfg เพื่อลบไฟล์ = ... และแทนที่ด้วย "live-media-path = / casper / ign_uuid"
ubfan1

3

แยกจากไฟล์ ISO เป็น FAT32

การแยกเนื้อหาของไฟล์ ISO บนเดสก์ท็อป Ubuntu แบบ 64 บิตไปยังพาร์ติชันด้วยระบบไฟล์ FAT32 และแฟล็กสำหรับบูตจะทำงาน: เพื่อสร้างไดรฟ์สดซึ่งจะบู๊ตในโหมด UEFI เท่านั้น มันเรียกว่า 'คัดลอกไฟล์จากวิธี ISO' ที่นี่ (ในคำตอบที่ยอมรับ)

ทดสอบว่าทำงานในโหมด UEFI หรือ BIOS

แต่มันเป็นเรื่องง่ายที่จะทดสอบในระบบ Ubuntu ที่ใช้งานอยู่ (พร้อมติดตั้ง) ถ้ามันถูกบูทในโหมด UEFI หรือ BIOS เรียกใช้บรรทัดคำสั่งนี้

test -d /sys/firmware/efi && echo efi || echo bios

สิ่งนี้ทำให้ง่ายต่อการใช้ระบบที่ใช้งานจริงซึ่งสามารถใช้ได้ทั้งในโหมดการบูตซึ่งอาจเป็นประโยชน์เช่นกัน

ดูลิงก์ต่อไปนี้สำหรับคำอธิบายโดยละเอียดเพิ่มเติมและคำอธิบายของวิธีการ

help.ubuntu.com/community/Installation/iso2usb

help.ubuntu.com/community/Installation/iso2usb/diy


2

การใช้ddงานได้สำหรับฉันด้วยเหตุผลบางอย่างเวอร์ชัน GUI ไม่ทำงาน ดังนั้นแรกคุณอาจต้องการที่จะตรวจสอบ progess ของ DDตัวเลือกอื่นโดยใช้ตัวเลือก SIGUSR1 จะเรียกddเพื่อรายงานความคืบหน้าเป็นระยะ ๆ pvแต่มีความซับซ้อนมากกว่า

แล้ว:

sudo dd if=path/to/image/file | pv | sudo dd of=/dev/device_you_want_to_use

( /dev/device_you_want_to_useโดยทั่วไปจะเป็น/dev/sdbแต่ตรวจสอบด้วยdf!)


8
การสร้างสื่อด้วยวิธีนี้ไม่ได้ส่งผลให้ UEFI- สื่อที่สามารถบูตได้เท่านั้น การเน้นอยู่ที่ย่อหน้าสุดท้ายของคำถาม: "นอกจากนี้ยังมีข้อดีอย่างหนึ่งในการสร้าง UEFI สำหรับการเริ่มระบบ USB live media เท่านั้น: คุณรู้ว่ามันทำการ booted ผ่าน UEFI อย่างแน่นอน" การมีสื่อที่สามารถบู๊ตได้ทั้งสองวิธีเป็นปัญหาเมื่อพยายามทำความเข้าใจและตั้งค่าการติดตั้ง Ubuntu ที่สามารถบูตได้ UEFI
LiveWireBT

1
ฉันเห็น. สิ่งที่แปลกก็คือด้วยวิธีนี้ฉันสามารถสร้างภาพที่บูตในโหมด UEFI (ฉันรู้ว่าเนื่องจากแล็ปท็อปถูกตั้งค่าให้อนุญาตเฉพาะ uefi boot และยังเป็นเพราะหน้าจอเริ่มต้น) คำตอบที่ preffered ไม่ทำงานสำหรับฉันคอมพิวเตอร์จะไม่บูตด้วยภาพที่สร้างขึ้นโดยเพียงแค่คัดลอกไฟล์
sup

5
@sup วิธีนี้สร้างสื่อที่สามารถบูต UEFI ได้ ปัญหาคือไม่เพียง แต่ UEFI ที่สามารถบู๊ตได้ตามที่ร้องขอในคำถาม: มันสามารถบู๊ตได้ในโหมด BIOS
Darael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.