보안 부팅을 위해 Debian 시스템에서 grubx64.efi 대신 shimx64.efi를 실행하도록 NVRAM을 업데이트하세요.

보안 부팅을 위해 Debian 시스템에서 grubx64.efi 대신 shimx64.efi를 실행하도록 NVRAM을 업데이트하세요.

보안 부팅이 활성화된 상태로 부팅하도록 데비안을 구성하고 싶었지만 구성되지 않았는데 그 이유는 다음과 같습니다...


운영 체제별 부트 로더는 ESP설치된 파티션에 저장됩니다./boot/efi

데비안 시스템에는 자체 하위 디렉터리가 있습니다. debian해당 폴더의 내용은 다음과 같습니다.

sudo ls /boot/efi/EFI/debian

명령의 출력은 다음과 같습니다.

BOOTX64.CSV  fbx64.efi  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi

제가 이해한 바로는 데비안이 보안 부팅이 활성화된 상태로 부팅하려면 EFI가 실행되어야 하고, shimx64.efi그 결과가 실행됩니다 grubx64.efi(현재 부트 로더 실행 중).

그렇죠? 그렇지 않은 경우 정정해 주십시오.

다음 명령을 실행하여 데비안이 보안 부팅을 사용하지 않는 이유를 조사했습니다:

efibootmgr -v

위 명령의 결과입니다(오른쪽으로 스크롤하세요).

BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001
Boot0001* debian        HD(1,GPT,4cc75323-a915-4249-9c01-e553cf705ad4,0x800,0x100000)/File(\EFI\debian\grubx64.efi)..BO

이 출력은 ( 에 저장된) 부팅 항목을 나타내며 현재 boot Manager 라는 NVRAM실행은 하나만 있습니다 .GRUBgrubx64.efi

이를 통해 EFI가 를 grubx64.efi실행하는 대신 직접 실행되고 있다는 것이 분명합니다 shimx64.efi. 이것이 바로 보안 부팅이 내 Debian 시스템에서 작동하지 않는 이유입니다.

내 질문은 이 시작 항목을 어떻게 편집하여 shimx64.efi시스템을 부팅할 수 없게 만들지 않고도 보안 부팅이 활성화된 상태에서 데비안이 작동할 수 있느냐는 것입니다.

기본적으로 보안 부팅을 활성화하는 대신 shimx64.efi설정 되지 않은 이유를 추가로 알려주실 수 있나요 ?NVRAMgrubx64.efi

많은 사람들이 보안 부팅이 기본적으로 작동한다고 보고하기 때문에 이는 이상합니다.


자세한 내용을 알아보려면 보안 부팅을 방해하는 사용자 정의 또는 독점 드라이버 없이 새로 설치한 Debian 12를 사용하고 있습니다.

편집하다:

새 항목을 추가하기 위해 다음 명령을 실행했습니다.

sudo efibootmgr -c -d /dev/sdb -p 1 -L DebianShim -l \\EFI\\debian\\shimx64.efi

이제 두 개의 항목이 생성됩니다.

sudo efibootmgr -v

산출:

BootCurrent: 0001
Timeout: 5 seconds
BootOrder: 0000,0001
Boot0000* DebianShim    HD(1,GPT,4cc75323-a915-4249-9c01-e553cf705ad4,0x800,0x100000)/File(\EFI\debian\shimx64.efi)
Boot0001* debian        HD(1,GPT,4cc75323-a915-4249-9c01-e553cf705ad4,0x800,0x100000)/File(\EFI\debian\grubx64.efi)..BO

물론 순서를 변경하여 새 항목을 활성화했습니다.

sudo efibootmgr -b 0001 -o 0000

어쨌든 문제는 다시 시작한 후 새 항목이 유지되지 않고 사라진다는 것입니다.
동일한 문제가 있는 관련 질문은 다음과 같습니다.
https://superuser.com/questions/1166398/efi-settings-set-via-efibootmgr-are-ignored-after-reboot

또한 원래 부팅 항목을 삭제하고 새 항목을 추가하려고 시도했지만 이전 항목으로 되돌아갑니다.grubx64.efi

Google의 추가 연구에 따르면 이는 MSI마더보드, 즉 펌웨어의 버그일 수 있습니다.

그러나 시간 초과와 같은 다른 옵션을 설정하는 것도 잘 작동한다는 점은 주목할 가치가 있습니다.

답변1

질문

제가 착각한 것이 아니라면 EFI 부팅 관리자가 NVRAM의 변수를 업데이트하지 않는 것 같습니다. 나는 같은 문제가 있었고 "수정"하는 데 시간이 걸렸기 때문에 이것을 설명하려고 노력할 것입니다. 문제는 UEFI 펌웨어에 직접 액세스하지 않으면 EFI 변수가 읽기 전용 권한으로 로드된다는 것입니다.

해결책

말씀하신 대로 LiveUpdate 펌웨어 버전이 설치된 MSI 브랜드 마더보드가 있다고 가정합니다(제가 가지고 있는 마더보드와 브랜드는 동일하지만 UEFI 펌웨어도 잘못됨). 그렇지 않은 경우 이 프로세스는 UEFI 쉘을 통해 NVRAM에 액세스하므로 제조업체에 관계없이 작동합니다. 운영 체제가 필요하지 않습니다.

속도:

  1. USB 스틱(최소 8GB 크기)을 FAT32로 포맷하세요.
  2. Roderick Smith의 Great EFI Bootloader에서 ISO 이미지/CD-R 이미지를 다운로드합니다.REFInd 받기. 부트로더를 탐색하려는 경우를 대비해 다운로드 페이지에 링크했습니다(이 이유는 닭고기와 달걀 문제를 방지하기 위한 것입니다. 셸에 액세스하려면 최소한 하나의 셸이 있어야 합니다. 이 디스크 이미지에는 이미 다음이 포함되어 있습니다. 원시 EFI 쉘).
    • 부팅 가능한 셸만 원하는 경우 이 Github 저장소에서 업데이트된 사전 컴파일된 바이너리를 다운로드할 수 있습니다.UEFI 셸
  3. Rufus 또는 다른 이미지 생성 도구(예: ddUSB에 CD-R 이미지 쓰기)를 사용하세요.
  4. 새로 생성된 USB 장치를 사용하여 컴퓨터를 다시 시작합니다.
    • CD-R 방법을 선택한 경우 화살표 키를 사용하고 UEFI 셸이 강조 표시될 때까지 오른쪽 화살표를 누른 다음 키를 누릅니다.Enter
    • 셸 방법만 선택하면 시스템이 즉시 부팅되고 셸로 직접 이동해야 합니다.

다음 단계

이제 UEFI 셸에 있으며 변수와 값을 직접 수정할 수 있습니다. 다음을 수행하십시오.

  1. 기존 콘텐츠 보기:bcfg boot dump
  2. 업데이트해야 하는 EFI 파티션의 위치를 ​​결정합니다. dir fsX:여기서 X는 0부터 시작하고 디스크 수에서 1을 뺀 값으로 끝나는 디스크 번호입니다. 우리는 디렉토리가 있는 디스크를 찾고 있습니다 EFI.fs0:\EFI
  3. 추가하려는 Shim.efi 파일의 위치를 ​​찾을 때까지 EFI 내의 중첩 디렉터리를 계속 나열합니다. 나는 귀하의 경우가 다음과 같을 것이라고 믿습니다:fsX:\EFI\debian\shimx64.efi
  4. 3단계의 결과를 얻고 다음 명령을 실행하십시오.cfg boot add 0 <location from step 3> DebianShim

DebianShim은 실제로 무엇이든 될 수 있습니다. 부트로더가 항목을 표시하는 데 사용하는 텍스트이기 때문입니다. 0은 0에서 9 사이의 숫자일 수 있다고 생각합니다. 이것이 부팅 순서이므로 0이 맨 위에 올 것입니다.

사이드 노트: 이 변경을 수행하려면 Windows 버전이 UEFI 모드로 설치되었다고 가정하고 LiveUpdate 설정 유틸리티를 시작하고 CSM을 꺼야 한다고 생각합니다.


원천

rEFInd 및 Rufus를 사용하여 EFI NVRAM 부팅 항목 복원- 이 문제를 처음 해결하기 위해 사용한 링크입니다. 댓글 무시 답장: efibootmanager당신이 사용한 것과 같은 재난입니다.

관련 정보