secureboot uefi에 대한 grub 서명: Secureboot는 모듈(memdisk)/boot/grub/x86_64-efi/normal.mod 로드를 금지합니다.

secureboot uefi에 대한 grub 서명: Secureboot는 모듈(memdisk)/boot/grub/x86_64-efi/normal.mod 로드를 금지합니다.

사용자 정의 Debian 기반 시스템에서 보안 부팅을 설정하려고 할 때 SB가 켜져 있으면 grub이 로드되지 않습니다. 나는 첫 번째 단계 부트로더로 shim(MS에서 서명함)을 사용하고 있습니다. 이제 MOK를 사용하여 grub2와 커널에 서명할 계획입니다. 따라서 단계는 다음과 같습니다.

  1. 개인 및 공개 키를 만듭니다. 공개 키는 .der 및 .pem 형식으로 사용할 수 있습니다.

  2. 2.a.grub-mkstandalone --format x86_64-efi /boot/grub/grub.efi -o grub.efi.unsigned

    2.b sbsign --key ~/my.priv --cert ~/my.pem grub.efi.unsigned --output grub.efi

    2.cp grub.efi /boot/efi/EFI/mylinux/grubx64.efi

  3. mokutil --import my.der

  4. MOK 관리 키를 다시 시작하고 등록하세요.

  5. UEFI 설정에서 보안 부팅을 활성화하고 부팅합니다.

그래서 shim이 로드되었지만 grub이 시작되면 Normal.mod 모듈 로드를 거부하고 오류가 발생합니다 Secureboot forbids to load module (memdisk)/boot/grub/x86_64-efi/normal.mod. 그것은 grub 구조 쉘에 떨어질 것입니다.

제 질문은 이 문제가 MOK 키가 올바르게 로드되지 않는 것과 관련이 있다는 것입니다. 그래서 나는 shim이 신뢰하는 키로 서명된 데비안 서명 grub으로 테스트했습니다. 그런 다음 grub은 정상적으로 시작되지만 ofc는 중지되고 구성 파일을 찾을 수 없습니다. 수동으로 추가하고 시작할 수 있습니다. Grub 설정에서는 서명 확인이 시행되지 않습니다. 따라서 Debian 키가 제대로 로드됩니다.

다음 질문은 grub을 생성하는 과정에 문제가 있다는 것입니다. SE, 데비안, 아치 위키 등에 대한 정보를 읽었지만 가능한 해결책을 찾을 수 없었습니다.

어떤 통찰력이라도 깊이 감사드립니다.

답변1

grub-mkstandalone명령을 사용할 때는 으로 모듈을 미리 로드해야 합니다 --modules=module_list. secureboot목록에 있는 모듈만 사용할 수 있습니다.

예:

MODULES="all_video archelp boot bufio configfile crypto echo efi_gop efi_uga ext2 extcmd  \
fat font fshelp gcry_dsa gcry_rsa gcry_sha1 gcry_sha512 gettext gfxterm linux linuxefi ls \
memdisk minicmd mmap mpi normal part_gpt part_msdos password_pbkdf2 pbkdf2 reboot relocator \
search search_fs_file search_fs_uuid search_label sleep tar terminal verify video_fb"

grub-mkstandalone -d /usr/lib/grub/x86_64-efi -O x86_64-efi --modules "$MODULES" --pubkey gpg.key --output grubx64.efi  boot/grub/grub.cfg=grub.init.cfg boot/grub/grub.cfg.sig=grub.init.cfg.sig -v

관련 정보