최근에 다중 부팅 시스템으로 몇 가지 작업을 수행한 후 다음을 사용하여 NixOS를 부팅하면 systemd-boot
부팅 메뉴가 더 이상 표시되지 않습니다 /loader/loader.conf
.
# /loader/loader.conf on the ESP
timeout 2
default nixos-generation-380
이 내 꺼야 /etc/nixos/configuration.nix
:
{ # ...
boot.loader = {
efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
timeout = 2;
};
}
부팅 메뉴를 보려면 마치 시간 제한이 2초가 아닌 0초로 설정된 것처럼 부팅 중에 키를 눌러야 한다는 사실이 밝혀졌습니다.
systemd-bootx64.efi
USB 플래시 드라이브를 사용하여 ESP에서 nixos-install
NixOS를 제거하고 다시 설치해 보았습니다 . 복원되었지만 systemd-bootx64.efi
부팅 메뉴는 복원되지 않았습니다.
이 문제는 전혀 드문 일이 아닌 것 같습니다.
두 문제 모두 해결된 것으로 알려졌습니다. 그러나 첫 번째 해결책을 이해하지 못합니다.
편집 3: 해결되었습니다! UEFI를 다시 설치하기만 하면 됩니다.
"UEFI 재설치"는 무엇을 의미합니까?
두 번째는 부팅 메뉴에서 t및 Shift+ 키 t(부팅 중에 키를 누르면 표시됨)를 사용하여 다른 시간 초과를 설정하는 것을 제안하지만 다른 시간 초과만 원하지는 않습니다. systemd-boot
존중 하고 싶습니다. /loader/loader.conf
의 설정
제 질문은 이렇습니다. systemd-boot
설정을 다시 어떻게 사용 합니까 /loader/loader.conf
?
해결책을 찾은 후 이 질문을 편집하고 이제 답변을 게시하겠습니다.
답변1
읽고 나서댓글 #6존재하다"systemd-boot, 시간 초과 없음, 선택 메뉴 없음 - LoaderEntryDefault"그리고 보았다"systemd-boot는 /boot/loader/loader.conf의 기본값을 재정의하는 efivar LoaderEntryDefault를 설정합니다." nixpkgs
GitHub의 문제, 어떻게든 설정되고 재정의된 EFI 변수로 인해 문제가 발생할 수 있음을 발견했습니다 /loader/loader.conf
.
실제로 다음 두 가지 변수 설정으로 인해 문제가 발생합니다.
§ cat /sys/firmware/efi/efivars/LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
0
그리고
§ cat /sys/firmware/efi/efivars/LoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
nixos-generation-374
(여기서 " " 값을 만들어냈습니다 374
. 중요한 것은 /loader/loader.conf
제가 확인했을 때와 다르다는 것입니다.)
사용된 EFI 변수 목록은 systemd-boot
끝부분에서 확인할 수 있습니다."systemd-boot UEFI 부팅 관리자"페이지에서무료 데스크탑 위키:
LoaderEntryDefault entry identifier to select as default at bootup non-volatile
LoaderConfigTimeout timeout in seconds to show the menu non-volatile
LoaderEntryOneShot entry identifier to select at the next and only the next bootup non-volatile
LoaderDeviceIdentifier list of identifiers of the volume the loader was started from volatile
LoaderDevicePartUUID partition GPT UUID of the ESP systemd-boot was executed from volatile
변수를 삭제하려면 LoaderEntryDefault-[...]
부팅 메뉴에서 키를 두 번 누르기만 하면 됩니다 d. 즉, 새 값을 설정하거나 설정 해제하면 됩니다.
변수를 삭제하려면 시간 초과를 으로 설정할 만큼 +를 여러 번 누르고 한 번 더 누르는 것으로 LoaderConfigTimeout-[...]
충분합니다 .Shiftt0
이것은 내 문제를 해결했습니다. 여기에 관련이 있습니다질문EFI 변수를 안전하게 수정하는 방법에 대해 Superuser.SE에 일반적인 질문을 했습니다.