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

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

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

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

grub2는 Windows와 동일한 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가 기존 EFI 파티션을 사용하기를 원합니다 /dev/sda1.

추신: 내 마더보드는 EFI를 지원합니다.

답변1

하루 종일 조사한 후에 이제 내 자신의 질문에 답할 수 있습니다. 예, 가능합니다. 해당 파티션을 /boot로 사용하고 커널 /initramfs/etc를 저장할 수도 있습니다. 거기.

필요하다:

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

설정:

먼저 EFI 파티션을 /boot에 마운트합니다.

mount /dev/sdX1 /boot

마운트 항목을 보면 단지 FAT(32) 파티션이라는 것을 알 수 있습니다. 아래에서 /boot목차를 확인하세요 efi.

grub이 호출될 때 커널에 컴파일되지 않은 경우 다음 efibootmgr을 로드해야 합니다.evivars

modprobe efivars

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

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

Grub은 평소대로 파일을 설치합니다 /boot/grub2. 모든 것이 잘 되었다면 이제 폴더 /boot/efi/grub2또는 폴더 이름을 직접 지정할 수도 있습니다 /boot/efi/<name_of_your_distro>.--bootloader-id=insert_name_here

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

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

체인 로딩 창:

Windows에서 이중 부팅을 요청할 때 체인 로딩을 위한 grub 구성을 포함합니다.

EFI에 Windows 설치를 체인로드하는 것은 MBR 디스크에 Windows를 설치하는 것과 약간 다릅니다. 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에서 부팅하려는 경우 읽어볼 가치가 있습니다.

관련 정보