GRUB2 EFI sistem bölümünü Windows ile paylaşabilir mi?


30

Zaten bir EFI Sistem bölümüne sahip olan bir Windows 7 GPT kurulumum var.

Şimdi bir Linux'u GPT formatlı ayrı bir harddisk üzerine kurmaya çalışıyorum. EFI sistem bölümü olmadan gruba önyükleme yapmak için herhangi bir çalışma yolu bulamadım, bu yüzden sorum şu:

Grub2'nin Windows ile aynı EFI Sistem bölümünü kullanması mümkün mü? Grub2'ye kullanmasını nasıl söylerim?

Kurulumu netleştirmek için:

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'nin mevcut /dev/sda1EFI bölümünü kullanmasını istiyorum .

Not: Anakartım EFI özelliğine sahip.

Yanıtlar:


22

Bir araştırma gününden sonra artık kendi Sorularıma cevap verebilirim: evet bu mümkün ve hatta bu bölümü / boot olarak kullanabilir ve çekirdeklerinizi / initramfs / etc dosyalarınızı saklayabilirsiniz. Orada.

Gereksinimler:

  • Grub> = 2.00 (1.98 ve 1.99 çalışmıyor)
  • Grub, EFI değişkenlerini destekleyen bir Linux çekirdeğinden kurulmalıdır ( CONFIG_EFI_VARSderlenmiş ya da modül olarak efivars)
  • EFI önyükleme girişini oluşturmak için ihtiyacınız olacak efibootmgr

Kurmak:

İlk önce EFI bölümünüzü / boot'a bağlayın

mount /dev/sdX1 /boot

Eğer mount girişine bakarsanız, bunun sadece bir FAT (32) bölümü olduğunu göreceksiniz. Altında /bootbir dizin bulmalısın efi.

Grub'un çağıracağı gibi efibootmgr, evivarsçekirdeğe derlenmemişse, yüklemelisiniz :

modprobe efivars

Şimdi grub'u yükleyebilirsiniz:

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

Grub, dosyalarını her zamanki gibi yükler /boot/grub2. Her şey doğru çalıştıysa, şimdi bir klasörünüz olmalı /boot/efi/grub2ya da /boot/efi/your_distros_name. İle --bootloader-id=isert_name_heresize de klasörün kendiniz için adını belirtebilirsiniz.

Grub efibootmgrotomatik olarak çağrı yapar ve EFI önyükleme menüsünde bu adla bir önyükleme girişi oluşturur (benim durumumda, bu EFI menüsünde önyüklenebilir bir cihaz olarak göründüğü anlamına gelir, her EFI kartında böyle olup olmadığından emin değil)

Daha fazla kurulum normal grub2 kurulumundan farklı değildir, EFI'ye grub2-mkconfiguygun modülleri ekleyecektir grub.cfg.

Zincirleme Windows

Windows'lu bir çift önyükleme istediğimde, zincir yükleme için grub yapılandırmasını içereceğim:

EFI'deki bir Windows kurulumunu zincirleme yapmak, bir MBR diskteki kurulumdan biraz farklıdır. Bunun yerine ntfsya da part_mbrmodüllere ihtiyacınız olmayacak fatve part_gptihtiyaç duyulacak.

Ayrıca, kök ayarı gerekli değildir, bu bilgiler Windows'un kendi önyükleme yöneticisi tarafından saklanır. Bunun yerine searchkomutu belirtin . Bunun için gereken parametreler

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

Bu size EFI bölümünün yerini belirten arama için parametreleri verecektir, şöyle görünmelidir:

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

chainloaderOkunacak sektör sayısını söylemek yerine , EFI bölümündeki Windows EFI yükleyicisinin yolunu ayarlamanız gerekecektir. Bu, tüm Windows EFI kurulumları için aynıdır. Sonuçta ortaya çıkan giriş şöyle görünmelidir:

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
}

Kaynaklar: Bunlar, EFI'den önyükleme yapmak istiyorsanız, okumaya değer olduklarından bazı davaları kapsar:


Bana (Fedora24) ben 10 efi bölümü de pencere koymak mount /dev/sdXX /boot/efi, sonra izledi bu ve ran bcdedit /set {bootmgr} path \EFI\fedora\shim.efiönyükleme EFI pencerelerden.
jozxyqk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.