외부 미디어 없이 부트로더(systemd-boot 또는 GRUB)를 다시 설치하시겠습니까?

외부 미디어 없이 부트로더(systemd-boot 또는 GRUB)를 다시 설치하시겠습니까?

최근에 Lenovo Miix-700의 BIOS를 업데이트했는데 즉시 후회했습니다. Windows 업데이트 후에 웹캠 문제가 해결되기를 바랐지만 예상대로 BIOS 업데이트가 EFI 파티션을 덮어쓰고 웹캠이 수정되지 않았습니다. 루트를 변경하고 다시 설치할 수 있도록 새로운 Arch 부팅 가능 USB를 만들어 보았지만 업데이트로 인해 단일 USB 포트도 손상되었습니다(허브 오류?). 이제 내 디지털 라이프 전체가 내가 액세스할 수 없는 파티션에 있습니다*. Arch 포럼에 질문하고 싶었지만 등록 질문에서는 Arch에서 한 줄의 코드를 실행할 수 있어야 하므로 여기까지입니다. 어떤 제안이 있으십니까?

*기술적으로는 Windows의 프로그램을 사용하여 이러한 파일에 액세스할 수 있지만, 이러한 파일을 사용하는 데 필요한 다양한 프로그램에는 액세스할 수 없습니다.

편집: TelcoM에서 제안한 대로입니다. 아치와 관련된 것은 없습니다.

C:\WINDOWS\system32>bcdedit /enum firmware

Firmware Boot Manager
---------------------
identifier              {fwbootmgr}
displayorder            {bootmgr}
                        {d7ec5199-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519a-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519b-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519c-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519d-eb30-11e9-bd4c-806e6f6e6963}
timeout                 0

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {86dba24d-a094-11e9-9adb-bd1dd03f5338}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5196-eb30-11e9-bd4c-806e6f6e6963}
description             Setup

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5197-eb30-11e9-bd4c-806e6f6e6963}
description             Boot Menu

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5198-eb30-11e9-bd4c-806e6f6e6963}
description             Diagnostic Splash

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5199-eb30-11e9-bd4c-806e6f6e6963}
description             ATA HDD: RTHMB128VBM4EWDL

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519a-eb30-11e9-bd4c-806e6f6e6963}
description             USB FDD:

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519b-eb30-11e9-bd4c-806e6f6e6963}
description             USB CD:

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519c-eb30-11e9-bd4c-806e6f6e6963}
description             USB HDD:

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519d-eb30-11e9-bd4c-806e6f6e6963}
description             PCI LAN:

답변1

BIOS 업데이트로 인해 기존 EFI NVRAM 부팅 변수가 지워진 것 같습니다. Windows는 내장 펌웨어 지원 또는 "자가 복구"를 통해 복구했습니다. Windows는 또한 UEFI 부트로더를 \EFI\BOOT\BOOTx64.efiESP 파티션에 배치합니다. 이는 부트로딩 프로그램용 디스크를 명확하게 식별하는 NVRAM 부팅 변수가 없는 경우 대체 UEFI 부트로더입니다. . 이를 통해 Windows는 NVRAM 부팅 변수가 누락된 것으로 발견된 경우 로드한 다음 자동으로 복구할 수 있습니다.

원래 UEFI NVRAM 콘텐츠는 BIOS 업데이트에서 손실되므로 시스템의 보안 부팅 키를 사용자 정의한 경우 이러한 설정도 공장 기본값으로 복원되었을 수 있습니다. Arch에 다시 액세스하고 원래 Secure Boot 키 사용자 정의 프로세스를 다시 수행하여 이러한 사용자 정의를 복원할 수 있을 때까지 보안 부팅을 일시적으로 비활성화해야 할 수도 있습니다.

Arch의 경우 Arch UEFI 부팅을 여러 방법으로 설정할 수 있으므로 NVRAM 부팅 변수 복구가 복잡합니다. EFISTUB, GRUB 또는 rEFInd를 사용할 수 있습니다. 따라서 첫 번째 단계는 EFI 시스템 파티션에 액세스하여 실제로 그 안에 무엇이 있는지 알아내는 것입니다.


Windows에서는 명령 프롬프트를 실행하여 EFI 시스템 파티션에 액세스할 수 있습니다.관리자로서를 클릭한 후 다음 명령을 실행합니다.

mountvol X: /S
X:
dir

이제 EFI 시스템 파티션의 루트 디렉터리 목록이 표시됩니다. GUI 액세스를 원할 경우 start explorer표준 파일 탐색기 창을 관리자로 실행할 수 있습니다. 이 특정 창을 사용할 때 표준 UAC 프롬프트로 보호되지 않으므로 이 창을 사용할 때는 매우 주의하십시오.

EFISTUB를 사용하여 Arch를 부팅하는 경우 EFI 시스템 파티션의 루트 디렉터리에 vmlinuz.efi또는 및 initramfs 파일이 있을 수 있습니다 . 정확한 경로 이름을 기록해 두십시오. 원래 따랐던 설치 지침의 버전에 따라 하위 디렉터리에 있을 수도 있습니다 .vmlinuz-linuzinitramfs-linux.img\EFI\Arch

GRUB 또는 rEFInd와 같은 부트 로더를 사용하는 경우 이 디렉토리의 하위 디렉토리에 위치합니다 \EFI. 거기로 가서 디렉토리 목록을 보십시오(파일 탐색기 창을 사용하거나 다시 사용 cd EFI) dir. Microsoft라는 이름의 디렉터리가 두 개 이상 표시되어야 합니다 boot. 이 Microsoft디렉터리에는 Windows UEFI 부팅 로더가 포함되어 있으며, bootNVRAM 부팅 변수가 손실된 경우 부팅하는 데 필요한 부분만 포함되어 있습니다.

\EFI\ArchArch 설치 (GRUB를 사용하는 경우) 또는 (rEFInd를 사용하는 경우) 하위 디렉터리가 있을 수 있습니다 \EFI\refind. 해당 디렉토리로 이동하여 실제 부트로더 파일의 이름을 확인하세요. \EFI\Arch\grubx64.efi또는 \EFI\refind\refind_x64.efi.

ESP에서 Arch 부트로더의 경로 이름을 알고 나면 이에 대한 NVRAM 부팅 변수를 만들 수 있습니다. Windows에서는 다음 명령을 사용하여 이 작업을 수행할 수 있습니다 bcdedit.

bcdedit /create /d "Arch Linux" {fwbootmgr}

이 명령은 후속 명령에 필요한 GUID 문자열을 출력합니다 bcdedit. {GUID}간략하게 설명하겠습니다.

bcdedit /set {GUID} device partition=X:
bcdedit /set {GUID} path <your bootloader pathname here>
bcdedit /set {fwbootmgr} default {GUID}

Windows 버전에 따라 이 마지막 명령은 오류를 반환할 수 있습니다. 이 경우 대체 형식을 사용하십시오.

bcdedit /set {fwbootmgr} displayorder {GUID} /addfirst

마지막으로 ESP에 대한 액세스 연결을 끊습니다. 관리자로 실행되는 파일 탐색기 창을 시작한 경우 창을 닫고 명령 프롬프트에서 다음 명령을 실행하십시오.

c:
mountvol X: /D

시스템을 일종의 Linux(커널이 UEFI 런타임 서비스를 사용할 수 있도록 기본 UEFI 버전)로 부팅할 수 있는 경우 이 efibootmgr명령을 사용하여 매우 간단한 명령으로 NVRAM 변수를 다시 만들 수 있습니다.

efibootmgr --create --disk /dev/sda --loader <your bootloader pathname here> --label "Arch Linux Bootloader" --verbose

--disk필요한 경우 ESP 파티션이 포함된 실제 디스크와 일치하도록 이 옵션의 값을 조정합니다 .

노트:Linux 셸은 백슬래시를 특수 이스케이프 문자로 사용하므로 부트로더 경로 이름의 Windows 스타일 백슬래시를 Linux 스타일 슬래시로 변환하거나 부트로더 경로 이름을 입력할 때 백슬래시를 바꿔서 efibootmgr부트로더 경로 이름이 보이도록 해야 합니다 . efibootmgr명령줄 에서 다음과 같이 합니다 .

efibootmgr [...] --loader \\EFI\\Arch\\grubx64.efi [...]

EFISTUB를 사용하는 경우 efibootmgr명령에는 initramfs 파일 이름을 포함하여 Linux 커널 부팅 매개변수를 지정하기 위한 추가 매개변수가 필요합니다.

efibootmgr --disk /dev/sdX --part Y --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw initrd=\initramfs-linux.img' --verbose

Windows bcdedit명령을 사용하여 이러한 추가 매개변수를 지정하는 것이 가능할 수도 있고 불가능할 수도 있습니다. 불행히도 지금은 이에 대한 Windows 구문을 찾을 수 없습니다.

관련 정보