GRUB2가 EFI 시스템 파티션을 Windows와 공유 할 수 있습니까?


30

이미 EFI 시스템 파티션이있는 기존 Windows 7 GPT 설치가 있습니다.

이제 GPT 형식의 별도의 하드 디스크에 Linux를 설치하려고합니다. EFI 시스템 파티션없이 grub 부팅을 수행하는 효과적인 방법을 찾지 못했기 때문에 내 질문은 다음과 같습니다.

grub2가 윈도우와 동일한 EFI 시스템 파티션을 사용할 수 있습니까? 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/sda1EFI 파티션 을 사용하고 싶습니다 .

PS : 메인 보드는 EFI 가능합니다.

답변:


22

하루의 연구 끝에 이제 내 자신의 질문에 대답 할 수 있습니다. 그렇습니다. 가능하며 해당 파티션을 / boot로 사용하고 커널 / initramfs / etc를 저장할 수도 있습니다. 그곳에.

요구 사항 :

  • Grub> = 2.00 (1.98 및 1.99가 작동하지 않음)
  • Grub은 EFI 변수를 지원하는 Linux 커널에서 설치해야합니다 ( CONFIG_EFI_VARS컴파일 또는 모듈로 컴파일 됨 efivars).
  • EFI 부팅 항목을 만들려면 다음이 필요합니다. efibootmgr

설정:

먼저 EFI 파티션을 / boot에 마운트하십시오.

mount /dev/sdX1 /boot

마운트 항목을 보면 단순히 FAT (32) 파티션이라는 것을 알 수 있습니다. 아래 /boot에 디렉토리가 efi있습니다.

grub이 호출 efibootmgrevivars때 커널에 컴파일되지 않은 경우 load를 실행해야 합니다.

modprobe efivars

이제 grub을 설치할 수 있습니다 :

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

Grub은 평소와 같이 파일을 설치합니다 /boot/grub2. 모든 것이 제대로 작동하면 이제 폴더를해야 /boot/efi/grub2하거나 /boot/efi/your_distros_name. 으로 --bootloader-id=isert_name_here당신 또한 폴더에 자신의 이름을 지정할 수 있습니다.

Grub은 efibootmgr자동으로 호출 하고 EFI 부팅 메뉴에서 해당 이름으로 부팅 항목을 만듭니다 (제 경우에는 EFI 메뉴에서 부팅 가능한 장치로 표시됩니다. 모든 EFI 보드에 해당되는지 확실하지 않습니다).

추가 설정은 일반적인 grub2 설정과 다르지 않으며 grub2-mkconfigEFI에 적합한 모듈을에 추가합니다 grub.cfg.

체인 로딩 윈도우 :

Windows에서 이중 부팅을 요청하면서 체인로드를위한 grub 구성을 포함시킬 것입니다.

EFI에서 Windows 설치를 체인로드하는 것은 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.efiWindows에서 EFI 부트 스트랩으로 실행 했습니다.
jozxyqk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.