สร้าง USB ที่บูตได้ (UEFI GRUB) สำหรับ Ubuntu และ Windows 7 ติดตั้ง


12

ฉันต้องการสร้างบูต EFI USB เพื่อติดตั้ง Ubuntu และ Windows 7 (อาจมีโปรแกรมอรรถประโยชน์เช่นPartedMagic ) ฉันเคยใช้MultiSystem มาก่อน อย่างไรก็ตามฉันกำลังใช้ GPT และการติดตั้ง Windows จำเป็นต้องเปิดตัวในโหมด EFI เพื่อติดตั้งบนระบบ GPT ฉันคิดว่าฉันต้องใช้ GRUB EFI แทนหรือไม่ หากไม่มีแอพอย่าง MultiSystem ที่สร้าง GRUB EFI Bootable USB ฉันจะสร้างด้วยตัวเองได้อย่างไร

ฉันคิดว่าฉันจะฟอร์แมต USB เป็น GPT และติดตั้ง GRUB EFI ลงไป (อย่างไร) ถ้าอย่างนั้นฉันต้องกำหนดค่า GRUB EFI เพื่อโหลด Ubuntu และ Windows 7 ติดตั้งใน EFI หรือไม่ ฉันจะทำสิ่งเหล่านี้ได้อย่างไร

UPDATE

นี่คือสิ่งที่ฉันพยายาม

  • สร้างพาร์ติชัน 2 บน USB ของฉัน (GPT, 100 + MB FAT32 (/ dev / sdc1, ตั้งค่าสถานะการบูต), ส่วนที่เหลือ FAT32, / dev / sdc2, สำหรับการติดตั้ง)
  • แยก Windows 7 และ Ubuntu 11.10 iso ลงในพาร์ติชั่น Installer, 2 โฟลเดอร์ที่แตกต่างกัน
  • พยายามใช้sudo elilo -b /dev/sdc1--autoconf --efiboot -v`

jiewmeng@JM:~$ sudo elilo -b /dev/sdc1 --autoconf --efiboot -v
elilo: backing up existing /etc/elilo.conf as /etc/elilo.conf-
Loaded efivars kernel module to enable use of efibootmgr
elilo: Checking filesystem on /dev/sdc1...
elilo: Mounting /dev/sdc1...
e    lilo: 44298KB needed, 78781KB free, 42192KB to reuse
elilo: Installing primary bootstrap /usr/lib/elilo/elilo.efi onto /dev/sdc1...
elilo: Installing /tmp/elilo.k8NWXX on /dev/sdc1...
elilo: Installing /vmlinuz on /dev/sdc1...
elilo: Installing /vmlinuz.old on /dev/sdc1...
elilo: Installing /initrd.img on /dev/sdc1...
elilo: Installing /initrd.img.old on /dev/sdc1...
elilo: Updating EFI boot-device variable...
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: An error occured while updating boot menu, we'll ignore it
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: Installation complete.

ไม่sudo modprobe efivarsได้รับผลลัพธ์ แต่มีข้อผิดพลาดเดียวกันฉันคิดว่าเพราะฉันไม่ได้บูทใน EFI Ubuntu?

ต่อไปฉันจะลองใช้ USB Startup Disk Creator เพื่อบูตเข้าสู่ระบบจริงในโหมด EFI เพื่อลองอีกครั้ง

UPDATE

ฉันหลงทาง Windows ติดตั้งเป็นที่ 1 หรือเปล่า ฉันฟอร์แมตและสร้าง USB ที่สามารถบูตได้สำหรับ Ubuntu สำรองด้วย UNetBootIn และมันก็ล้มเหลวด้วยข้อผิดพลาดเดียวกันของเคอร์เนลที่ไม่มีอยู่ ถ้าฉันสร้าง Ubuntu Desktop ฉันจะไม่สามารถกำหนดค่า apt ที่มาได้

syslog สำหรับติดตั้งบนเดสก์ท็อปอูบุนตูhttp://pastebin.com/CdbUPXax

ฉันรู้สึกว่าฉันไม่ต้องเสียเวลาและกลับไปใช้ MBR เร็ว ๆ นี้ ... นั่นจะหมายความว่าฉันต้องสำรองข้อมูลทั้งหมดของฉันไว้ที่ 1 ... ซึ่งเป็นสาเหตุที่ฉันล่าช้าไปที่แหล่งข้อมูลสุดท้าย ... ความคิดใด ๆ

UPDATE

ฉันพยายามบูท Ubuntu 11.10 สำรองในโหมด BIOS (ไม่ใช่ EFI) ติดตั้งได้ดียกเว้นฉันไม่สามารถติดตั้งบูตโหลดเดอร์ได้ มันบอกว่าผิดพลาดร้ายแรง ฉันติดตั้ง GRUB โดยการบู๊ต USB ในโหมดการกู้คืน ใช้งานได้ แต่ไม่สามารถบู๊ตได้ ให้หน้าจอว่างเปล่าขณะบู๊ต หากฉันพยายามเข้าสู่โหมดการกู้คืน (บน HDD ที่ติดตั้งอูบุนตู) ดูเหมือนว่าแป้นพิมพ์จะล้มเหลว แต่เมาส์ก็มีน้ำหนักเบา


คุณเคยดูเรื่องนี้บ้างไหม? unetbootin.sourceforge.net
Dustin L.

Easy2Boot อาจเป็นสิ่งที่คุณต้องการ
SteveSi

รู้รอบเป็นสิ่งที่ดีที่สุดเมื่อมันเป็นมากกว่าแค่การเชื่อมโยงหรืออ้างอิงถึงวิธีแก้ปัญหาที่อาจเกิดขึ้น คำตอบที่แสดงวิธีการทำบางสิ่งบางอย่างหรืออย่างน้อยที่สุดก็อธิบายถึงวิธีการทั่วไปคือสิ่งที่เราทำหลังจากที่นี่
slm

คำตอบ:


8

ฉันกำลังปรับปรุงคำถาม / คำตอบนี้
สิ่งนี้ไม่ทำงานโดยไม่มีข้อผิดพลาด แต่เมื่อฉันทำงานกับ @jiewmeng ฉันได้เปิดเผยว่าเป้าหมายคือการใช้ USB เพื่อติดตั้งทั้ง Windows และ Ubuntu ลงบนฮาร์ดไดรฟ์หนึ่ง UEFI
ใช้เวลาสักครู่และฉันพบวิธีแก้ปัญหาแล้ว แต่เราต้องทำความสะอาดคำถามและคำตอบ
อาจจะตอบคำถามเดิมได้เช่นกัน แต่เนื่องจากเป้าหมายมีมากกว่าในด้านการติดตั้ง UEFI USB สำหรับบู๊ตเดี่ยวก็ดูเหมือนจะมีความสำคัญน้อยกว่า
ปัจจุบันฉันใช้ USB สองแท่งสำหรับ Windows หนึ่งอันสำหรับ Ubuntu
นี่คือ WIP ที่จะอัปเดตโดยเร็ว

ฉันได้ทำงานกับมันมาสองสามวันว่างชั่วโมงที่นี่และสุดท้ายและมี USB ตัวเดียวที่จะทำการบูทและติดตั้ง windows 7 และ Ubuntu
config ของฉันเฉพาะ 64 บิตคุณสามารถลองและเปลี่ยนให้รองรับ 32 บิตได้ แต่มีชื่อไฟล์ที่แตกต่างกันมากมาย โปรดติดตามหากคุณต้องการ 32 บิต ที่กล่าวว่า ...

คุณไม่สามารถติดตั้ง Windows 7 จาก USB ที่ฟอร์แมต GPT
คุณสามารถใช้ gdisk หรือแยกส่วนแล้วสร้าง GPT USB ซึ่งจะบู๊ตผ่าน UEFI
คุณจะสามารถกำหนดค่าตัวจัดการการบูต UEFI ให้โหลดตัวติดตั้ง Windows จาก USB ได้ แต่ตัวติดตั้งจะค้นหาไฟล์และข้อมูลที่จำเป็นสำหรับการติดตั้งและจะไม่รู้จัก GPT USB ในขณะที่จะพบ MBR USB .

อย่างไรก็ตามนี่เป็นผลเพียงเล็กน้อยเนื่องจาก UEFI ดู MBR / GPT และพาร์ติชัน EFI ดูรายการ Wikipedia บน UEFI Booting

แม้จะใช้ std MBR สำหรับ USB ใครสามารถติดตั้งผ่าน UEFI ไปยังดิสก์ GPT

การทำงานต่อไปนี้ใช้การติดตั้ง 64 บิตบน UEFI Asus Sabertooth 64 บิต
เฟิร์มแวร์ในเมนบอร์ดแต่ละตัวนั้นมีความเฉพาะเจาะจงมากและแต่ละเมนบอร์ด UEFI นั้นจะทำการค้นหาบูท UEFI ที่แตกต่างกัน คุณอาจมีปัญหากับแผงวงจรหลักของคุณในการค้นหาข้อมูลการบูต แต่การทำงานต่อไปนี้บน ASUS ของฉัน

นี่คือวิธีที่ฉันสร้าง USB ที่สามารถบู๊ตได้พร้อมกับสำเนา Windows 7 64 บิตที่ติดตั้งได้ดีวีดีและ Ubuntu ISO (ในตัวอย่างนี้เดสก์ท็อป ISO 11.10 64 บิต)

ใช้ 16G USB ซึ่งเป็นสิ่งที่ฉันมีในมือ ...
USB ของฉันติดตั้งเป็น / dev / sdc เปลี่ยนการอ้างอิงที่เกี่ยวข้องไปยังอุปกรณ์ที่เหมาะสมสำหรับ USB ของคุณ
ตรวจสอบให้แน่ใจว่าคุณติดตั้ง 7zip แล้ว

fdisk /dev/sdc
create new MBR, 'o' command
create new partition, part 1, size 8G, type ef, set bootable, write
mkfs.vfat -F32 /dev/sdc1
mkdir /mnt/USB
mount /dev/sdc1 /mnt/USB
insert Windows 7 x64 DVD, again, mine appeared as /media/UDF\ Volume, you need to change references below
# Extract/Copy the entire Windows DVD to the USB
cp -r /media/UDF\ Volume/* /mnt/USB
# I don't know what effect the following rename has, I copied blindly from another webpage.
mv /mnt/USB/sources/ei.cfg /mnt/USB/sources/ei.cfg_
cd /mnt/USB/efi/microsoft/boot/
7z e /mnt/USB/sources/install.wim 1/Windows/Boot/EFI/bootmgfw.efi
cp -r /mnt/USB/efi/microsoft/boot /mnt/USB/efi/
mv /mnt/USB/efi/boot/bootmgfw.efi /mnt/USB/efi/boot/bootx64.efi
# At this point I booted the USB, and installed Windows 7 to a GPT SSD
# Upon reboot I noticed the Windows Boot loader in my UEFI boot list (actually it made itself 1st).
# so, here we have a standalone Windows7 UEFI installer that will function correctly (64bit ASUS, at least).
# Now, on to adding Ubuntu
cd /mnt/USB
7z x /path2iso/ubuntu-11.10-desktop-amd64.iso
# If 7z finds prexisting files with the same name, just allow always overwrite
# (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? A

# At this point I booted the USB, and installed Ubuntu x64 to a GPT SSD
# we have a standalone Ubuntu 64bit installer that install Ubuntu 64

# Now, on to add a boot manager that will allow us to select between Windows 7 and Ubuntu

# Get the target UUID of the USB partition, using either blkid or the following command
grub-probe --target=fs_uuid /mnt/USB/efi/Microsoft/Boot/bootmgfw.efi  
will print YOUR_UUID # Substitute into the following references to YOUR_UUID

# Append the following menuentry to /mnt/USB/boot/grub/x86_64-efi/grub.cfg

menuentry "Microsoft Windows x86_64 UEFI-GPT Setup" {
    insmod usbms  
    insmod part_gpt  
    insmod part_msdos  
    insmod fat  
    insmod search_fs_uuid  
    insmod chain  
    search --fs-uuid --no-floppy --set=root YOUR_UUID # <- CHANGE THIS TO YOUR UUID
    chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi  
}

และ voila! แท่ง USB ที่ใช้งานได้ซึ่งใช้ด้วงเป็นตัวจัดการการบูตช่วยให้สามารถติดตั้งดิสก์ GPT ด้วยการติดตั้ง UEFI

หากคุณมีข้อผิดพลาดอย่าลังเลที่จะ msg ฉันและฉันจะตรวจสอบมัน


ฉันประสบความสำเร็จในการบูทเข้าสู่ตัวติดตั้ง windows ณ จุด " ในตอนนี้ฉันบูท USB และติดตั้ง Windows 7 " อย่างไรก็ตามเมื่อพยายามgrub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi 4983-DA78ฉันจะได้รับ "อาร์กิวเมนต์พิเศษที่ไม่รู้จัก` 4983-DA78 '"
Jiew Meng

การรัน grub-probe จัดเตรียม uuid ที่จะใช้ มันจะถูกแทนที่ในข้อความต่อไปนี้
bsd

คำสั่งเป็นเพียงgrub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi ไม่มี args ค่า '4983-DA78' คือ UUID ของคุณที่ถูกส่งกลับโดย grub-probe เพื่อให้คุณใช้ในข้อความต่อไปนี้เป็น YOUR_UUID
bsd

ติดตั้ง windows ได้ดี แต่เมื่อฉันลอง Ubuntu มันบอกว่าไม่มีเคอร์เนลความคิดใด ๆ
Jiew Meng

คุณติดตั้ง Ubuntu ลงบนเครื่องที่ติดตั้ง Windows 7 ไว้แล้วผ่าน UEFI USB หรือไม่
bsd

3

ฉันจะพยายามอย่างดีที่สุดเพื่อตอบคำถามหวังว่าฉันจะพาคุณไปในทิศทางที่ถูกต้อง

อย่างที่ทราบอยู่แล้วว่าการติดตั้ง Win7 x64 จาก GPT นั้นเป็นไปได้จาก EFI เท่านั้น ยิ่งแย่ไปกว่าการที่คุณป้องกันไม่ให้ใช้ไฮบริดใด ๆ ในขณะที่ Win7 x64 ถือว่าดิสก์ไฮบริดเป็น MBR รุ่นเก่า ดังนั้นคุณต้องติดตั้งใหม่ / แบ่งพาร์ติชัน USB เป็น GPT การตั้งค่าประเภทนี้ไม่เหมาะสำหรับ USB เนื่องจากข้อกังวลเกี่ยวกับการพกพา ฉันไม่ได้บอกว่าอย่าสร้างมันขึ้นมาฉันแค่คิดว่าจะไม่มีเครื่องมืออัตโนมัติอยู่ ฉันเชื่อว่าคุณอาจใช้ระบบหลายระบบหลังจากคุณฟอร์แมตไดรฟ์ หาก Grub2 ที่ติดตั้งอัตโนมัติขาดการสนับสนุน EFI / GPT ให้เขียนทับมันด้วย Grub2 รุ่นที่ถูกต้อง

ดังนั้นฉันจะสมมติว่าคุณอาจต้องทำการติดตั้งบางส่วนด้วยตนเองซึ่งทั้งหมดนั้นอยู่นอกเหนือขอบเขตของคำตอบนี้ แม้ว่าฉันจะสามารถเริ่มต้นให้คุณได้ ....

การใช้รีลีสปัจจุบันpartedติดตั้งไดรฟ์ของคุณใหม่ด้วย GPT สมมติว่าดิสก์อยู่ที่ / dev / sdc

 parted -s /dev/sdc mklabel gpt

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

parted -s /dev/sdc mkpart primary fat32 0 -1

parted mkpartไม่สร้าง FS เช่นmkpartfsหากว่า partedDOC แนะนำให้ใช้ที่เหมาะสมmkfsเมื่อเทียบกับparted's สร้างขึ้นในการสนับสนุน

mkfs.vfat /dev/sdc1

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

เมื่อคุณทำทุกอย่างเรียบร้อยแล้ว ... เราจำเป็นต้องติดตั้ง Grub2 แน่นอนเราตั้งใจจะตั้งค่าคอนฟิก Multisystem อาจมีความสามารถในการบูตจาก EFI แต่คุณจะต้องยุ่งกับการกำหนดค่าโมดูลโดยไม่คำนึงถึง

การกำหนดค่า Grub2 boot/grub/grub.cfgตั้งอยู่ที่, คุณควรเห็นบางโมดูลแสดงความคิดเห็น ฉันเคยเห็นหนึ่งเกี่ยวกับ GPT แต่ไม่แน่ใจเกี่ยวกับ EFI ฉันจะดูและทำการทดสอบลองพิจารณาอ่านเอกสารของ Grub2

หากคุณยังคงมีปัญหาใด ๆ ให้แสดงความคิดเห็นกลับมาพร้อมคำถามติดตามผล


2

เริ่มด้วยคำตอบของ bdowning ด้านบนจากนั้นดำเนินการต่อที่นี่เพื่อเพิ่ม Magic Parted

มีสองวิธีที่จะดำเนินการเกี่ยวกับเรื่องนี้ แต่วิธีที่ง่ายที่สุดคือการคัดลอกไดเรกทอรี pmagic จาก Parted Magic ISO ไปยังรากของดิสก์ usb ของคุณแล้วเพิ่มรายการเมนูสำหรับมัน:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
  linux /pmagic/bzImage
  initrd /pmagic/initrd.img
}

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

ข้อเสียของที่นี่คือคุณกำลังผสมไฟล์สำหรับ Windows, Ubuntu และตอนนี้แยกส่วน Magic เป็นระบบไฟล์เดียว ที่แย่กว่านั้นคือเราได้ใส่มันลงในพาร์ติชั่นระบบ EFI โดยตรง มันใช้งานได้ แต่แน่นอนว่ามันอาจจะไม่สามารถใช้ได้กับทุกระบบปฏิบัติการดังนั้นสิ่งที่เราควรทำก็คือสร้างพาร์ติชันแยกต่างหากบนไดรฟ์สำหรับแต่ละระบบปฏิบัติการ การทำเช่นนั้นต้องบอกให้ด้วงค้นหาระบบไฟล์ที่ถูกต้องซึ่งสามารถทำได้โดย guid ระบบไฟล์ทุกระบบจะมี guid ที่ไม่ซ้ำกันเมื่อมันถูกสร้างขึ้นดังนั้นคุณจะต้องใช้เครื่องมือตรวจสอบด้วง (หรือเครื่องมือที่คล้ายกัน) เพื่อค้นหา guid นั้น จากนั้นคุณติดมันลงในคำสั่งค้นหาในการกำหนดค่าด้วงของคุณ:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
    search --no-floppy --fs-uuid --set 8d2acb74-5216-4696-90a8-c76f92d5e4ee
    linux /pmagic/bzImage
    initrd /pmagic/initrd.img
}

หวังว่านี่จะช่วยได้


multiboot จะทำงานได้ แต่ในคำตอบของ bdowning เมื่อฉันลองติดตั้ง Ubuntu ฉันจะได้รับเคอร์เนลไม่พร้อมใช้งาน (ทางเลือก) หรือไม่สามารถกำหนดค่าข้อผิดพลาด apt (เดสก์ท็อป) (ดูโพสต์และความคิดเห็นของ bdowning) นอกจากนี้เรายังแชท @ chat.stackexchange.com/rooms/info/2240/…
Jiew Meng

2

ในเครื่องที่ไม่ใช่ UEFI เราสามารถใช้ GRUB2 เพื่อให้ USB stick สามารถบูตได้ จากนั้นเราสามารถใช้คำสั่ง 'ntldr' ใน GRUB2 เพื่อบูต Windows จาก USB

menuentry 'Install Windows 8' {
 ntldr /bootmgr
}

ดูคำตอบทั้งหมดในบล็อกของฉันการสร้าง USB ที่สามารถบูตได้ Windows จาก Linux


1
แม้ว่าลิงก์นี้อาจตอบคำถาม แต่ก็ควรรวมคำอธิบายโดยละเอียดเพิ่มเติมของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงก์อย่างเดียวอาจไร้ประโยชน์ได้หากลิงก์ของคุณลดลง
G-Man กล่าวว่า 'Reinstate Monica'

1

ทำไมต้องกังวลกับ GRUB2 มันเป็นเพียงแค่สิ่งที่ซับซ้อน เพียงใช้วิธีการ EFI STUB ในการบูทเคอร์เนล Linux จาก ESP โดยเพิ่ม UEFI Shell ลงใน ESP


ดีที่รู้. ในกรณีเฉพาะของฉัน (macbook pro เก่า) มันใช้งานไม่ได้เพราะ Apple เปลี่ยนชื่ออึนี้เป็น "EFI" และบอกว่า bootloader ของเขาคือ EFI แต่ในความเป็นจริงมันเป็น bootloader ที่ไม่มีเอกสารที่กำหนดเองซึ่งสามารถบูตได้เฉพาะ osx และ windows ดังนั้นฉันติดตั้ง LILO ลงในพาร์ติชั่นตัวหนึ่งและไปที่ bootloader ตัวนี้ว่าเป็น windows ดังนั้นมันใช้งานได้ ดังนั้น "EFI" บูท LILO ในโหมดการจำลอง BIOS และ LILO บูทเคอร์เนล
peterh - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.