セキュアブートを有効にしてブートするようにDebianを設定したかったのですが、設定されていません。
オペレーティングシステム固有のブートローダは、インストールされているESP
パーティションに保存されます。/boot/efi
Debian システムには独自のサブディレクトリがあります。debian
そのフォルダの内容は次のとおりです。
sudo ls /boot/efi/EFI/debian
コマンドの出力は次のとおりです。
BOOTX64.CSV fbx64.efi grub.cfg grubx64.efi mmx64.efi shimx64.efi
私が理解したのは、Debianがセキュアブートを有効にした状態で起動するにはEFIを実行する必要があり、shimx64.efi
その結果が実行されますgrubx64.efi
(現在のブートローダの実行中)。
そうですか?そうでない場合は訂正してください。
次のコマンドを実行して、Debian がセキュアブートを使用しない理由を調査しました。
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
実行は1つだけです。GRUB
grubx64.efi
これはEFIがgrubx64.efi
実行するのではなく直接実行されていることを明らかにしますshimx64.efi
。これが、セキュアブートが私のDebianシステムで機能しない理由です。
私の質問は、この起動項目を編集してshimx64.efi
システムを起動できないようにしなくても、セキュアブートが有効になっている間にDebianが機能できるかどうかです。
デフォルトでは、セキュアブートを有効にするのではなく、設定されていないshimx64.efi
理由をさらに教えてもらえますか?NVRAM
grubx64.efi
多くの人がセキュリティブートがデフォルトで機能していると報告しているので、これは奇妙です。
詳細については、セキュアブートを妨げるカスタムドライバーまたは排他ドライバーなしで新しくインストールしたDebian 12を使用しています。
編集する:
新しいエントリを追加するために、次のコマンドを実行しました。
sudo efibootmgr -c -d /dev/sdb -p 1 -L DebianShim -l \\EFI\\debian\\shimx64.efi
これで2つの項目が作成されます。
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에 액세스하므로 제조업체에 관계없이 작동합니다. 운영 체제가 필요하지 않습니다.
속도:
- USB 스틱(최소 8GB 크기)을 FAT32로 포맷하세요.
- Roderick Smith의 Great EFI Bootloader에서 ISO 이미지/CD-R 이미지를 다운로드합니다.REFInd 받기. 부트로더를 탐색하려는 경우를 대비해 다운로드 페이지에 링크했습니다(이 이유는 닭고기와 달걀 문제를 방지하기 위한 것입니다. 셸에 액세스하려면 최소한 하나의 셸이 있어야 합니다. 이 디스크 이미지에는 이미 다음이 포함되어 있습니다. 원시 EFI 쉘).
- 부팅 가능한 셸만 원하는 경우 이 Github 저장소에서 업데이트된 사전 컴파일된 바이너리를 다운로드할 수 있습니다.UEFI 셸
- Rufus 또는 다른 이미지 생성 도구(예:
dd
USB에 CD-R 이미지 쓰기)를 사용하세요.- 셸만 다운로드한 경우 다음을 따르세요.UEFI-Shell 부팅 장치를 만드는 방법, 위의 2단계에서 이미 바이너리를 다운로드했으므로 3단계를 건너뛰세요.
- 새로 생성된 USB 장치를 사용하여 컴퓨터를 다시 시작합니다.
- CD-R 방법을 선택한 경우 화살표 키를 사용하고 UEFI 셸이 강조 표시될 때까지 오른쪽 화살표를 누른 다음 키를 누릅니다.
Enter
- 셸 방법만 선택하면 시스템이 즉시 부팅되고 셸로 직접 이동해야 합니다.
- CD-R 방법을 선택한 경우 화살표 키를 사용하고 UEFI 셸이 강조 표시될 때까지 오른쪽 화살표를 누른 다음 키를 누릅니다.
다음 단계
이제 UEFI 셸에 있으며 변수와 값을 직접 수정할 수 있습니다. 다음을 수행하십시오.
- 기존 콘텐츠 보기:
bcfg boot dump
- 업데이트해야 하는 EFI 파티션의 위치를 결정합니다.
dir fsX:
여기서 X는 0부터 시작하고 디스크 수에서 1을 뺀 값으로 끝나는 디스크 번호입니다. 우리는 디렉토리가 있는 디스크를 찾고 있습니다EFI
.fs0:\EFI
- 추가하려는 Shim.efi 파일의 위치를 찾을 때까지 EFI 내의 중첩 디렉터리를 계속 나열합니다. 나는 귀하의 경우가 다음과 같을 것이라고 믿습니다:
fsX:\EFI\debian\shimx64.efi
- 3단계의 결과를 얻고 다음 명령을 실행하십시오.
cfg boot add 0 <location from step 3> DebianShim
DebianShim은 실제로 무엇이든 될 수 있습니다. 부트로더가 항목을 표시하는 데 사용하는 텍스트이기 때문입니다. 0은 0에서 9 사이의 숫자일 수 있다고 생각합니다. 이것이 부팅 순서이므로 0이 맨 위에 올 것입니다.
사이드 노트: 이 변경을 수행하려면 Windows 버전이 UEFI 모드로 설치되었다고 가정하고 LiveUpdate 설정 유틸리티를 시작하고 CSM을 꺼야 한다고 생각합니다.
원천
rEFInd 및 Rufus를 사용하여 EFI NVRAM 부팅 항목 복원- 이 문제를 처음 해결하기 위해 사용한 링크입니다. 댓글 무시 답장: efibootmanager
당신이 사용한 것과 같은 재난입니다.