GRUB에 의해 로드된 모든 파일을 확인하기 위해 공개 키 파일이 포함된 새 GRUB 이미지를 생성하려고 합니다. 그래서 grub-mkimage 명령을 사용하여 새로운 GRUB 코어 이미지를 수동으로 생성했습니다.
grub-mkimage --config='./grub.cfg' --compression='auto' --pubkey='./grub.key' --output='./core_custom.efi' --format='x86_64-efi' --prefix='(hd0,gpt2)/grub' --verbose ext2 fshelp part_gpt pbkdf2 crypto password_pbkdf2 pbkdf2_test
grub.cfg에는 구성 조작을 방지하기 위해 pbkdf2 비밀번호를 가진 수퍼유저(그래서 pbkdf2 모듈을 포함시켰습니다)가 포함되어 있어 비밀번호 보호가 로드되지 않습니다. 또한 변수 호출기를 1로 설정했습니다.
그러나 컴퓨터를 다시 시작하고 새로 생성된 GRUB 이미지에서 부팅한 후 GRUB 환경 변수 check_signatures가 적용되도록 설정되지 않았습니다(공식에서 언급한 대로).GRUB2 매뉴얼), GRUB 셸에서 list_trusted 명령을 입력하면 grub-mkimage 명령에 전달한 키가 나열되지 않고 마지막으로 verify_detached 명령이 공개 키를 찾을 수 없습니다.
그러나 grub-mkimage 명령의 상세 로그에는 키를 읽었음을 분명히 보여주며, GRUB 셸에서 키를 수동으로 로드하면 모든 것이 제대로 작동합니다.
내 설치에 대한 정보:
-ArchLinux
-GRUB 2.04
-EFI 플랫폼->GRUB x86_64-efi
답변1
나는 똑같은 문제를 겪었고 몇 시간의 시행착오 끝에 마침내 답을 찾았습니다. GRUB 측에서는 제대로 처리되지 않았으며 조용히 실패했습니다. 문서도 도움이 되지 않는 것 같습니다. 이 특정 오류에 대한 유용한 정보를 찾을 수 없습니다.
해결책은 매우 간단합니다. 일부 모듈이 있어야 합니다.사전 로딩. 나를 위해그럽 2.04존재하다AMD64, 사람들은:
- 검증인
- gcry_sha256
- gcry_sha512
- gcry_dsa
- gcry_rsa
내가 얻는 명령은 다음과 같습니다.
grub-mkstandalone --verbose --format=x86_64-efi --output=grubsax64.efi --pubkey=grub.pub --modules="verifiers gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa" boot/grub/grub.cfg=grub.cfg
여기서 중요한 부분은--모듈="...".
나는 또한 다음을 사용하여 똑같은 모듈을로드하려고 시도했습니다.모듈 삽입존재하다그럽 구성 파일, 하지만이건 작동하지 않아, 위에 설명된 대로 수행되어야 합니다.
생산된 결과물을 토대로 판단grub-mk 독립형, 이는 다음에도 적용되어야 합니다.그럽 미러(grub-mk 독립형어느 순간 전화해그럽 미러), 직접 테스트하지는 않았지만 다음과 같습니다.
grub-mkimage ... verifiers gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa
GRUB 이미지/바이너리를 빌드하고 재부팅한 후 명령줄을 입력하면 알 수 있습니다.신뢰할 수 있는 목록이제 출력을 생성합니다. 추가 테스트를 통해 이제 서명 확인이 예상대로 작동하는 것으로 나타났습니다.
GRUB 2.06 4/23/21에 대해 편집:
GRUB 2.06에서는검증인모듈에서 코어로 이동됨(참조:이번에 제출하세요), 즉 더 이상 별도의 모듈이 아닙니다. 따라서 위 명령도 변경해야 합니다.
grub-mkstandalone --verbose --format=x86_64-efi --output=grubsax64.efi --pubkey=grub.pub --modules="gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa" boot/grub/grub.cfg=grub.cfg
grub-mkimage ... gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa