GRUB 부트로더가 포함된 USB 스틱이 있다는 것을 Linux 명령줄에서 확인하는 방법
- UEFI인가요?
- 안전한 부팅과 검증이 이루어지나요?
연구의 경우 이러한 로더를 만드는 방법에 대한 가이드가 있지만 기존 로더를 판단하는 방법을 찾을 수 없습니다.
답변1
EFI
루트 디렉터리에 또는 efi
(UEFI는 파일 이름에서 대소문자를 구분해야 함) 라는 하위 디렉터리가 포함된 USB 스틱에 파티션이 있는 경우 UEFI 부팅이 가능할 수 있습니다. 이상적으로는 파티션에 FAT32 파일 시스템이 있어야 하지만 일부 UEFI 펌웨어는 ISO9660, NTFS 또는 HFS+와 같은 다른 파일 시스템 유형도 지원합니다.
이동식 미디어에서 64비트 x86 하드웨어용 실제 UEFI 부트로더는 경로에 있는 파일이 됩니다 <partition root>/efi/boot/bootx64.efi
. 이는 실제로 이동식 미디어 부트 로더의 정규화된 경로 이름입니다. 영구 운영 체제 설치에서는 부트로더 경로 이름이 로 변경됩니다 <partition root>/efi/<OS vendor or Linux distribution name>/<something>.efi
. 운영 체제 설치 프로그램은 이 경로 이름을 UEFI NVRAM 부팅 변수에 저장합니다. 이는 BIOS 설정과 유사하지만 실제로는 운영 체제에서 런타임 시 이를 쿼리하고 조작합니다.
Linux에서 efibootmgr -v
이 명령은 UEFI NVRAM 부팅 변수를 표시하는 방법입니다. bootloader 명령은 일부 부팅 변수 정보 bootctl
도 표시합니다 .systemd-boot
이동식 미디어는 BIOS 부팅과 UEFI 부팅을 모두 지원할 수 있습니다. 이 경우에는 두 개의 부트로더가 포함됩니다. MBR에 내장된 BIOS 호환 부트로더(아마도 SYSLINUX)와 위에서 설명한 UEFI 호환 부트로더입니다.
이 file
명령을 사용하여 파일 유형을 식별 하면 .efi
다음과 같이 표시됩니다.
# file bootx64.efi
bootx64.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows
즉, UEFI 부트 로더는 Microsoft Windows와 동일한 실행 파일 형식을 사용합니다. PE32+는 64비트 실행 가능 형식입니다. 32비트 UEFI 구현을 보면 아마도 32비트 PE32 형식(unsigned +
)을 사용하고 있을 것입니다.
참고: UEFI는 여러 하드웨어 아키텍처를 지원합니다. 일부 ARM 시스템은 UEFI를 사용할 수도 있습니다.
보안 부팅은 UEFI의 하위 집합입니다. 비 UEFI 부트 로더는 보안 부팅과 호환되지 않습니다. .efi
파일에 Secure Boot 서명이 포함되어 있는지 확인하려면 를 사용할 수 있습니다 pesign -S -i filename.efi
.
# pesign -S -i bootx64.efi
---------------------------------------------
certificate address is 0x7fb0f0f8dd80
Content was not encrypted.
Content is detached; signature cannot be verified.
The signer's common name is Microsoft Windows UEFI Driver Publisher
No signer email address.
No signing time included.
There were certs or crls included.
---------------------------------------------
보안 부팅 서명이 없으면 출력은 다음과 같습니다.
# pesign -S -i ipxe.efi
No signatures found.
시중에 나와 있는 대부분의 UEFI PC에는 보안 부팅 펌웨어에 Microsoft의 서명 인증서가 포함되어 있고 Microsoft는 UEFI 부트로더 서명 서비스도 다른 사람에게 제공하므로 보안 부팅 호환 Linux 부트로더에서 가장 일반적인 서명은 Microsoft의 서명일 것입니다.
GRUB가 포함된 이동식 미디어가 보안 부팅과 호환되는 경우 실제 <partition root>/efi/boot/bootx64.efi
파일은 다음과 같을 가능성이 높습니다.스페이서 프리로더. 보안 부팅 시스템에 Linux를 영구적으로 설치하면 shim 프리로더를 찾을 수 있습니다 shimx64.efi
. 배포 관리자의 자체 서명 인증서와 선택적으로 시스템 소유자의 자체 인증서(MOK = 머신 소유자 키라고 함)에 대한 보안 부팅 지원을 추가할 수 있습니다. 불행하게도 모든 UEFI 펌웨어 구현이 펌웨어에 포함된 보안 부팅 키를 쉽게 사용자 정의할 수 있는 방법을 허용하는 것은 아니기 때문에 이는 필요합니다.
인증서를 추가한 후 shim 프리로더는 grubx64.efi
동일한 디렉터리에 이름이 지정된 실제 부트로더를 로드합니다. (기술적으로 실제로 GRUB일 필요는 없습니다. 심 프리로더에 프로그래밍된 기본 파일 이름일 뿐입니다.) 파일도 서명되어야 하지만 서명할 때 Microsoft 인증서가 아닌 배포 관리자의 자체 인증서를 사용할 가능성이 높습니다.
이것의 목적은 배포판 관리자가 필요에 따라 GRUB의 업데이트된 버전을 쉽게 패키징하고 릴리스할 수 있도록 하는 것입니다. 이제 배포판 관리자의 자체 키를 사용하여 GRUB에 서명할 수 있기 때문입니다. shim 프리로더를 업데이트해야 하는 경우 배포 유지 관리 담당자는 Microsoft에 문의하여 업데이트된 shim에 다시 서명해야 합니다.