Secureboot
Archlinux에서 secure boot를 적용하는 가장 간단한 방법은 sbctl을 사용하는 것이다.
필요
보안 문제도 있겠지만, 하나의 host에서 MS Windows와 함께 사용하는 경우 다음 문제들이 있었다.
- 일부 장치가 윈도에서 secureboot 하에서만 정상 동작
- 리눅스와 함께 사용 시 해당 장치를 사용 못하는 것은 차치하더라도 매번 바이오스에서 secureboot를 껐다 켰다 해야 하는 번거로움
순서
- UEIF firmware 설정에서 secure boot를 켜고, 키를 모두 리셋한다.
- 키가 없으므로 일단 부팅은 secure boot가 꺼진 상태로 진행된다.
bootctl status
와sbctl status
로 현태 부트로더 상태 확인sbctl create-keys
로 키 생성sbctl enroll-keys -m
으로 Microsoft의 키를 UEFI Firmware에 등록sbctl verify
로 필요 파일들 확인sbctl sign -s <파일 이름>
으로 필요한 파일 하나씩 사인 및 등록sbctl verify
로 사인 상태 확인- 재부팅 후
sbctl status
,bootctl status
를 이용해 secure boot 상태 확인
위 순서대로 진행하면 secureboot를 사용할 수 있다.
GRUB을 사용하는 경우
systemd-boot를 사용하는 경우에는 위 순서만 따르면 문제가 없지만, grub을 사용할 때는 부팅이 되지 않았다. TPM이 문제인 것으로 보이며, TPM을 포함해 grub을 EFI 파티션에 재설치 해 주고 sbctl로 다시 사인해두면 grub으로 secureboot 사용이 가능하다.
- 인스톨 시 옵션 예제
grub-install -target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch --modules="normal test efi_gop efi_uga search echo linux all_video gfxmenu gfxterm_background gfxterm_menu gfxterm loadenv configfile tpm" --disable-shim-lock grub-mkconfig -o /boot/grub/grub.cfg
관리
업데이트 등의 이유로 기존 사인된 EFI 부트로더 이미지가 변경되는 경우, 재 사인을 해주면 된다.
sbctl sign-all
sbctl verify
단, systemd-boot를 사용하는 경우 EFI 사이닝을 /usr/lib/systemd/boot/
디렉토리 내에서 직접 해주면 위 방법으로 바로 반영이 되나, 아니면 두 번의 재부팅이 필요해 업데이트 마다 secure boot를 꺼주어야 하는 문제가…