EFI 변수 값을 안전하게 설정, 변경, 제거하는 방법

EFI 변수 값을 안전하게 설정, 변경, 제거하는 방법

systemd-boot부팅 메뉴를 건너뛰고 일반적으로 구성 파일(EFI 파티션에 있음)을 무시하는 문제를 디버깅하는 데 몇 시간을 보낸 후에 /loader/loader.conf시작할 때 일부 키를 눌러 부팅 메뉴를 호출할 수 있다는 사실을 발견했습니다. 문제는 제가 실수로 생성한 특정 EFI 변수로 인해 발생합니다. (어떻게 된 것인지는 모르겠지만, 한 파티션에 Ubuntu 18.04.1을 다시 설치한 직후에 문제가 나타났습니다.)

특히 에 정의된 시간 초과를 무시하는 변수가 어떻게든 LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f설정 되어 있고 에 설정된 기본 메뉴 항목을 무시하는 변수도 정의되어 있다는 것을 발견했습니다 .0/loader/loader.confLoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/loader/loader.conf

하단을 참조하세요"systemd-boot UEFI 부팅 관리자"에서 사용하는 EFI 변수 목록은 freedesktop.org 페이지를 참조하세요 systemd-boot. 해당 값은 예를 들어 검사할 수 있습니다.

cat /sys/firmware/efi/efivars/LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

일부 키를 눌러 부팅 메뉴를 표시한 다음 d두 번 눌러 새 기본 항목을 설정 및 설정 해제하면 LoaderEntryDefault-...변수가 제거되었습니다. 그러나 나는 여전히 LoaderConfigTimeout-.... 메뉴에서 t T( ) 키를 사용하여 시간 제한을 변경할 수 있다는 것을 알고 있지만 이를 완전히 제거하여 의 구성을 다시 사용할 수 있도록 하고 싶습니다 .Shift-tLoaderConfigTimeout-.../loader/loader.conf

다음과 같은 EFI 변수를 수정하고 설정 해제하는 정확하고 안전한 방법은 무엇입니까 LoaderConfigTimeout-...?

답변1

systemd-boot에서 설정이 0에 도달할 때까지 ShiftT또는 Num -키를 충분히 누르고 변수를 완전히 제거하려면 한 번 더 설정을 해제하세요.

Linux에서는 먼저 chattr -i/sys/… 파일을 사용하여 커널 적용 보호를 제거한 다음 rm변수를 완전히 삭제하는 데 사용합니다.

UEFI 셸에서 dmpstore -d <name>(선택 사항 포함 -guid <guid>)을 사용하여 변수를 삭제합니다(문서 참조).UEFI 셸 사양 2.0, 113페이지).

관련 정보