GRUB2 สามารถแบ่งพาร์ติชันระบบ EFI กับ Windows ได้หรือไม่


30

ฉันมีการติดตั้ง Windows 7 GPT ที่มีอยู่แล้วซึ่งมีพาร์ติชันระบบ EFI อยู่แล้ว

ตอนนี้ฉันกำลังพยายามติดตั้ง Linux บนฮาร์ดดิสก์แยกต่างหากซึ่งเป็นรูปแบบ GPT ฉันไม่พบวิธีการทำงานใด ๆ ในการบูตด้วงโดยไม่มีพาร์ติชันระบบ EFI ดังนั้นคำถามของฉันคือ:

เป็นไปได้หรือไม่ที่ grub2 จะใช้พาร์ติชัน EFI System เดียวกันกับ windows? ฉันจะบอก grub2 ให้ใช้งานได้อย่างไร

หากต้องการชี้แจงการตั้งค่าของฉัน:

gpt /dev/sda:
    1 EFI System partition created by windows (100MB)
    2 "Microsoft reserved partition" (200MB)
    3 Windows root (rest of disk)

gpt /dev/sdb:
    # After answering my own question: this partition is not needed
    1 boot partition containing grub, kernels etc.(32MB)
    2 crypto LVM partition (rest of disk)

ฉันต้องการ grub2 เพื่อใช้/dev/sda1พาร์ติชัน EFI ที่มีอยู่

PS: เมนบอร์ดของฉันสามารถใช้ EFI ได้

คำตอบ:


22

หลังจากวันที่ทำการวิจัยตอนนี้ฉันสามารถตอบคำถามของฉันเอง: ใช่มันเป็นไปได้และคุณสามารถใช้พาร์ติชันนั้นเป็น / boot และเก็บเมล็ด / initramfs / etc ของคุณ ที่นั่น

ที่ต้องการ:

  • ด้วง> = 2.00 (1.98 และ 1.99 ไม่ทำงาน)
  • Grub ต้องถูกติดตั้งจากเคอร์เนล Linux ที่รองรับตัวแปร EFI ( CONFIG_EFI_VARSเรียบเรียงเป็นโมดูลefivars)
  • สำหรับการสร้างรายการบูต EFI คุณจะต้อง efibootmgr

ติดตั้ง:

ก่อนอื่นให้เมาท์พาร์ติชัน EFI ของคุณเพื่อ / boot

mount /dev/sdX1 /boot

ถ้าคุณดูรายการ mount คุณจะเห็นว่าเป็นเพียงพาร์ติชัน FAT (32) ภายใต้คุณควรจะหาไดเรกทอรี/bootefi

ในฐานะที่เป็นด้วงจะเรียกefibootmgrคุณควรโหลดevivarsถ้ามันไม่ได้รวบรวมลงในเคอร์เนล:

modprobe efivars

ตอนนี้คุณสามารถติดตั้งด้วง:

# Replace x86_64 by i386 for 32 bit installations
grub2-install --target=x86_64-efi

/boot/grub2ด้วงติดตั้งแฟ้มที่เป็นไปตามปกติ หากทุกอย่างทำงานได้อย่างถูกต้องคุณควรตอนนี้ยังมีโฟลเดอร์หรือ/boot/efi/grub2 /boot/efi/your_distros_nameด้วย--bootloader-id=isert_name_hereคุณยังสามารถระบุชื่อสำหรับโฟลเดอร์ด้วยตัวคุณเอง

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

การติดตั้งเพิ่มเติมไม่แตกต่างจากการตั้งค่า grub2 ปกติgrub2-mkconfigจะเพิ่มโมดูลที่เหมาะสมสำหรับ EFI grub.cfgที่คุณ

หน้าต่าง Chainloading:

เมื่อฉันถามถึงการบูทสองครั้งกับ Windows ฉันจะรวมการตั้งค่าด้วงสำหรับการสับมัน:

การทำการติดตั้ง Windows บน EFI นั้นแตกต่างจากการติดตั้งบนดิสก์ MBR เล็กน้อย คุณไม่ต้องการntfsหรือpart_mbrโมดูลแทนfatและpart_gptมีความจำเป็น

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

grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

นี่จะให้พารามิเตอร์สำหรับการค้นหาที่ระบุตำแหน่งที่ตั้งของพาร์ติชัน EFI มันควรมีลักษณะดังนี้:

--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28

แทนที่จะบอกchainloaderจำนวนส่วนให้อ่านคุณจะต้องตั้งค่าพา ธ ไปที่ตัวโหลด EFI ของ Windows ในพาร์ติชัน EFI นี่เป็นสิ่งเดียวกันสำหรับการติดตั้ง Windows EFI ทั้งหมด รายการผลลัพธ์ควรมีลักษณะเช่นนี้:

menuentry "Microsoft Windows x86_64 UEFI-GPT" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --no-floppy --set=root <insert ouput from grub-probe here>
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}

แหล่งที่มา: สิ่งเหล่านี้ครอบคลุมบางกรณีหากคุณต้องการบูตจาก EFI สิ่งเหล่านี้ควรค่าแก่การอ่าน:


สำหรับฉัน (Fedora24) ฉันใส่พาร์ติชัน windows 10 efi ที่mount /dev/sdXX /boot/efiแล้วทำตามนี้และวิ่งbcdedit /set {bootmgr} path \EFI\fedora\shim.efiจาก windows ไปยัง bootstrap EFI
jozxyqk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.