grub
(부트홀 보안 문제를 해결하기 위해) 다시 설치해야 합니다 . 실수하고 싶지 않았고, 익숙하지 않았기 때문에 내 컴퓨터에 현재 버전을 설치하는 명령 을 grub
찾을 수 있는 방법이 있는지 스스로에게 물었습니다 .grub-install
grub
당신의 도움을 주셔서 감사합니다.
환경: Grub 2, Manjaro(Arch Linux), EFI 부팅
답변1
루트로 실행하십시오 efibootmgr -v
. 첫 번째 줄은 BootCurrent: NNNN
4자리 16진수인 NNNN입니다.
해당 "BootNNNN" 줄을 찾으세요. 다음과 유사해 보입니다.
BootNNNN* Manjaro HD(X,GPT,11111111-2222-3333-4444-555555555555,0x800,0x82000)/File(\...\something.efi)
NNNN
는 첫 번째 행의 숫자이고,Manjaro
사람이 읽을 수 있는 실행 항목 설명 문자열입니다(무엇이든 가능).X
UEFI 펌웨어에서 감지한 디스크의 일련 번호입니다.11111111-2222-3333-4444-555555555555
부트로더가 설치된 EFI 시스템 파티션의 PARTUUID입니다.\...\something.efi
사용할 부트 로더 파일을 식별하는 EFI 시스템 파티션의 Windows 스타일 경로 이름 입니다 . GRUB + Secure Boot의 경우 일반적 으로 Secure Boot shim 부트로더를 참조하여 동일한 디렉터리에 지정된 파일을shimx64.efi
로드합니다 .shim.efi
grubx64.efi
EFI 시스템 파티션은 /boot/efi
, /boot
또는 전혀 마운트되지 않을 수 있습니다. 다른 배포판은 여기에서 다른 작업을 수행합니다. 설치된 경우 해당 파일의 길이를 다음으로 식별된 부트로더 경로의 파일 길이와 /boot/efi
실행 하고 비교합니다. 일치하는 경우 대체 부트로더도 업데이트해야 한다는 것을 알 수 있습니다. (이 점을 염두에 두십시오. 이에 대해서는 나중에 자세히 설명합니다.)ls -l /boot/efi/EFI/BOOT/BOOTX64.efi
efibootmgr -v
PARTUUID를 알고 나면 EFI 시스템 파티션(줄여서 ESP)에 해당하는 Linux 장치 이름을 사용 blkid
하거나 식별할 수 있습니다. lsblk -o +PARTUUID
이제 명령을 다시 작성하는 데 필요한 모든 부분이 준비되었습니다 grub-install
.
하지만,보안 부팅을 사용할 때 시스템의 NVRAM에 등록된 첫 번째 "부트 로더"는 실제로 GRUB가 아닌 보안 부팅 심입니다. 당신은 그 사실을 바꾸고 싶지 않습니다.
--no-nvram
따라서 NVRAM 부팅 변수 변경을 방지하기 위해 이 옵션을 사용할 수 있습니다 . 따라서 GRUB를 다시 설치하는 명령은 다음과 같아야 합니다.
grub-install --no-nvram /dev/<the disk device corresponding to your ESP partition>
GRUB가 현재 \EFI\BOOT\BOOTX64.efi
ESP의 대체 부트로더 경로 에 설치되어 있는 경우 명령 --force-extra-removable
에 이 옵션을 추가하여 grub-install
이 옵션도 업데이트해야 합니다.
Secure Boot shim 부트로더를 사용하는 경우 ESP에서 shim을 업데이트하는 것도 중요합니다. 시스템을 재부팅하기 전에 GRUB 및 ESP의 shim이 충분히 최신 타임스탬프를 가지고 있는지 확인하십시오. 2020년 7월 28일 이후에는 무엇이든 좋을 것입니다. shim 패키지가 ESP의 shim 파일을 자동으로 업데이트하지 않는 경우 패키지 설치 프로세스에서 업데이트된 shim을 찾아 ESP의 이전 shim 위에 복사할 수 있습니다.
보안 부팅 및 GRUB를 사용하면 ESP의 일반적인 레이아웃은 다음과 같습니다.
<ESP mountpoint>/EFI/<name of distro>/grubx64.efi
= 실제 GRUB<ESP mountpoint>/EFI/<name of distro>/shimx64.efi
= 안전 시동 개스킷<ESP mountpoint>/EFI/BOOT/BOOTX64.efi
= shim의 백업 부팅 복사본<ESP mountpoint>/EFI/BOOT/grubx64.efi
= GRUB의 대체 부트 복사본
구성 요소에 대한 경로는 <name of distro>
일반적으로 기본 부트 로더로 간주되지만, 모든 펌웨어 설정을 재설정하는 UEFI 펌웨어 업데이트("BIOS"라고도 함)와 같이 시스템이 어떤 이유로든 NVRAM 설정을 "잊어버린" 경우 대체 복사본이 유용할 수 있습니다. . 설정")을 선택하여 공장 기본값으로 복원합니다.
답변2
이 취약점을 해결하기 위해 GRUB를 다시 설치할 필요는 없습니다. 패키지를 업데이트하는 것만으로도 충분합니다. GRUB가 유일한 부트 로더인 경우 업데이트를 원할 수 있습니다 /boot/efi/EFI/Boot/BOOTX64.EFI
. grub-install은 이 작업을 수행하지 않습니다.
grub-install
UEFI 지원 장치에서는 실제로 더 이상 필요하지 않은 레거시 MBR 시스템에서도 작동합니다 .
더 확실하게 알아보려면 /boot/efi/EFI에서 grub 파일의 날짜를 확인하세요. 파일이 어디에 설치되어 있는지 확실하지 않으므로 이 명령을 실행하고 출력을 게시하세요.
find /boot \( -iname grubx64.efi -o -iname 'shim*.efi' \) -exec ls -l '{}' \;