최근에 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.efi
ESP 파티션에 배치합니다. 이는 부트로딩 프로그램용 디스크를 명확하게 식별하는 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-linuz
initramfs-linux.img
\EFI\Arch
GRUB 또는 rEFInd와 같은 부트 로더를 사용하는 경우 이 디렉토리의 하위 디렉토리에 위치합니다 \EFI
. 거기로 가서 디렉토리 목록을 보십시오(파일 탐색기 창을 사용하거나 다시 사용 cd EFI
) dir
. Microsoft
라는 이름의 디렉터리가 두 개 이상 표시되어야 합니다 boot
. 이 Microsoft
디렉터리에는 Windows UEFI 부팅 로더가 포함되어 있으며, boot
NVRAM 부팅 변수가 손실된 경우 부팅하는 데 필요한 부분만 포함되어 있습니다.
\EFI\Arch
Arch 설치 (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 구문을 찾을 수 없습니다.