Ubuntu 19 64비트와 Windows 10 64비트를 설치했는데 서로 다른 위치에 3개의 서로 다른 EFI 파일이 있음을 발견했습니다.
- EFI\boot\bootx64.efi
- EFI\ubuntu\grubx64.efi
- /boot/grub/x86_64-efi/grub.efi
이 세 파일의 차이점은 무엇입니까?
답변1
EFI\boot\bootx64.efi
: 대체 부트로더 경로
이는 기존 NVRAM 부팅 설정 없이 64비트 X86 시스템의 UEFI 펌웨어가 찾는 유일한 부트로더 경로 이름이므로 이동식 미디어에서 사용하려는 경로 이름입니다.
Windows는 자동으로 이 경로에 부트 로더 사본을 설치합니다. GRUB를 설치할 때 grub-install
(또는 grub2-install
Linux 배포판에 따라) 해당 부트 로더 사본이 아직 존재하지 않는 경우 명령이 여기에 배치될 수도 있습니다. 원하는 경우 grub-install --removable
대체 부팅 경로에 설치하도록 지시하거나 grub-install --force-extra-removable
대체 경로의 기존 부트 로더를 덮어쓰고 GRUB으로 교체할 수 있습니다.
UEFI용 보안 부팅 호환 USB 스틱을 생성하려면 shim의 복사본 과 shim 부트로더가 찾을 EFI\boot\bootx64.efi
GRUB의 복사본을 넣어야 합니다.EFI\boot\grubx64.efi
grubx64.efi
shim 부트로더와 동일한 디렉토리에 있습니다.
영구적으로 설치된 운영 체제의 부트로더 경로
운영 체제가 UEFI 시스템에 영구적으로 설치되면 클래식 BIOS에는 전혀 존재하지 않는 새로운 단계가 발생합니다. 부트로더가 설치되면 펌웨어 설정을 보유하는 NVRAM 메모리에 네 가지 항목이 기록됩니다.
- 부트로더가 저장된 ESP(EFI 시스템 파티션)의 부트로더 경로 이름
- ESP 파티션의 GUID
- 이 특정 부트로더 인스턴스를 설명하는(사람에게 친숙한) 이름
- 선택적으로 부트로더에 대한 일부 데이터
Windows의 경우 Windows 부팅 프로세스의 표준 UEFI 경로 이름은 \EFI\Microsoft\Boot\bootmgfw.efi
설명이 포함된 이름 "Windows 부팅 관리자"입니다. 선택적 데이터에는 Windows 부트 로더의 BCD 구성 파일에 있는 항목에 대한 GUID 참조가 포함되어 있는 것으로 보입니다.
\EFI\Ubuntu\grubx64.efi
Ubuntu의 경우 보안 부팅 지원이 필요하지 않거나 \EFI\Ubuntu\shimx64.efi
보안 부팅 shim을 사용하는 경우 경로 이름은 . 설명적인 이름은 "ubuntu"일 뿐이며 선택적 데이터는 사용되지 않습니다.
sudo efibootmgr -v
Ubuntu 에서는 Windows의 명령을 사용하여 이러한 UEFI NVRAM 부팅 설정을 볼 수 있으며 명령 프롬프트를 시작할 수 있습니다.관리자로서그런 다음 bcdedit /enum firmware
명령을 사용하여 설정을 확인합니다.
UEFI 사양에는 각 공급업체가 \EFI\<vendor name>
ESP의 경로 내에 영구적으로 설치된 운영 체제의 부트로더를 배치해야 한다는 표준 규칙이 있으므로 여러 UEFI 부트로더가 실제로 동일한 ESP에서 공존하도록 지원되며 클래식 BIOS를 사용하는 것보다 마스터가 더 쉽습니다. 각 디스크의 부트 레코드.
/boot/grub/x86_64-efi/grub.efi
:임시 파일grub-install
를 사용하면 유틸리티를 grub-install
먼저 사용하여grub-mkimage
GRUB 코어 이미지: UEFI 시스템에서 이 파일은 /boot/grub/x86_64-efi/grub.efi
EFI 시스템 파티션에 복사되고 UEFI NVRAM 부팅 설정에 추가되기 전에 저장됩니다. 이 복사본은 시작 중에는 전혀 사용되지 않지만 어떤 이유로든 ESP가 손상된 경우 유용할 수 있습니다..../core.efi
grub-install
/boot/grub/x86_64-efi/*.efi
노트:Debian/Ubuntu에서 생성된 GRUB 코어 이미지에는 해당 디렉토리가 포함된 파일 시스템에 대한 내장 UUID 참조가 포함되므로 /boot
ESP에서 복사하거나 이동식 미디어 /boot/grub/x86_64-efi/grub.efi
로 포팅 할 수 없습니다 grubx64.efi
. /boot
파일 시스템 고유한 UUID가 발견되지 않으면 복구 모드로 들어갑니다. 내 기억이 맞다면 RedHat/CentOS/Fedora의 GRUB는 이동식 미디어로 포팅하는 데 더 적합해야 합니다.
보안 부팅: shimx64.efi
그리고 그 이유
Secure Boot를 사용하려면 시스템의 Secure Boot NVRAM 변수에 포함된 인증서로 부트 로더에 서명해야 합니다 db
. 또는 부트 로더의 SHA256 해시가 동일한 NVRAM 변수에 화이트리스트에 등록되어 있어야 합니다. SHA256 해시는 특정 부트로더의 특정 버전과만 일치하므로 펌웨어 변수도 업데이트하지 않으면 업데이트할 수 없습니다. 따라서 인증서는 탈출구입니다.
불행하게도 많은 시스템 공급업체는 자사 제품에 몇 가지 보안 부팅 인증서만 포함합니다. 일반적으로 공급업체 자체 인증서(펌웨어 업데이트 및 하드웨어 디버깅/OEM 구성 도구용)와 Microsoft의 보안 부팅 인증서만 포함합니다. 일부 시스템에서는 펌웨어 설정(="BIOS 설정")을 통해 보안 부팅 인증서 목록을 편집할 수 있지만 다른 시스템에서는 그렇지 않습니다. 따라서 독립형 솔루션이 필요합니다.
Microsoft는 누구에게나 UEFI 부트 로더 서명 서비스를 제공하지만 최소한 초기 서명에 소요되는 시간이 상당히 길기 때문에 각 GRUB 버전에 직접 서명해야 하는 요구 사항으로 인해 부트 로더 업데이트가 허용할 수 없을 정도로 지연될 수 있습니다. 이 문제를 해결하기 위해 shim 부트로더가 개발되었습니다. 이는 기본적으로 보안 부팅 승인 목록에 하나 이상의 인증서를 추가하는 가장 간단하고 합리적인 UEFI 프로그램입니다. 이러한 단순성 덕분에 shim 자체를 업데이트할 필요성이 줄어들 것으로 기대됩니다. 따라서 오픈 소스 운영 체제 배포판(Linux 및 기타)은 Microsoft가 서명한 shim 버전을 한 번만 얻은 다음 자체 인증서를 사용하여 모든 버전의 shim에 서명하면 됩니다. shim에 공개 부분이 포함된 GRUB을 사용하고 보안 부팅이 GRUB의 릴리스 버전을 허용하도록 허용합니다.