(2) Linux Mint 20.1 시스템(일반 하드웨어 1개, VMware VM 1개)을 보유합니다. 둘 다 설치/구성했지만 systemd-boot
각각에 사용 가능한 설정이 다릅니다. 지금까지 지적할 수 있는 유일한 차이점은 일반 하드웨어 시스템에서 GRUB를 제거했다는 것입니다.
기존 하드웨어
System:
Firmware: n/a (n/a)
Secure Boot: disabled
Setup Mode: user
Current Boot Loader:
Product: n/a
Features: ✗ Boot counting
✗ Menu timeout control
✗ One-shot menu timeout control
✗ Default entry control
✗ One-shot entry control
✗ Support for XBOOTLDR partition
✗ Support for passing random seed to OS
✗ Boot loader sets ESP partition information
ESP: n/a
File: └─n/a
Random Seed:
Passed to OS: no
System Token: not set
Exists: yes
Available Boot Loaders on ESP:
ESP: /boot/efi (/dev/disk/by-partuuid/82492fa6-1969-4569-851b-269909138b7b)
File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 245.4-4ubuntu3.4)
File: └─/EFI/BOOT/bootx64.efi (systemd-boot 245.4-4ubuntu3.4)
Boot Loaders Listed in EFI Variables:
Title: Linux Boot Manager
ID: 0x0000
Status: active, boot-order
Partition: /dev/disk/by-partuuid/82492fa6-1969-4569-851b-269909138b7b
File: └─/EFI/systemd/systemd-bootx64.efi
Boot Loader Entries:
$BOOT: /boot/efi (/dev/disk/by-partuuid/82492fa6-1969-4569-851b-269909138b7b)
Default Boot Loader Entry:
title: Linux Mint XFCE 5.4.0-65-generic
id: linuxmint.conf
source: /boot/efi/loader/entries/linuxmint.conf
linux: /linuxmint/vmlinuz
initrd: /linuxmint/initrd.img
options: root=UUID=408c53a0-e8d0-417f-8281-eb0eea0a2318 rw rootflags=subvol=@ iommu=pt
가상 기기
System:
Firmware: UEFI 2.31 (VMware, Inc. 1.00)
Secure Boot: disabled
Setup Mode: user
Current Boot Loader:
Product: systemd-boot 245.4-4ubuntu3.4
Features: ✓ Boot counting
✓ Menu timeout control
✓ One-shot menu timeout control
✓ Default entry control
✓ One-shot entry control
✓ Support for XBOOTLDR partition
✓ Support for passing random seed to OS
✓ Boot loader sets ESP partition information
ESP: /dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6
File: └─/EFI/systemd/systemd-bootx64.efi
Random Seed:
Passed to OS: no
System Token: not set
Exists: yes
Available Boot Loaders on ESP:
ESP: /boot/efi (/dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6)
File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 245.4-4ubuntu3.4)
File: └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 245.4-4ubuntu3.4)
Boot Loaders Listed in EFI Variables:
Title: Linux Boot Manager
ID: 0x0005
Status: active, boot-order
Partition: /dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6
File: └─/EFI/systemd/systemd-bootx64.efi
Title: ubuntu
ID: 0x0004
Status: active, boot-order
Partition: /dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6
File: └─/EFI/ubuntu/shimx64.efi
Boot Loader Entries:
$BOOT: /boot/efi (/dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6)
Default Boot Loader Entry:
title: Linux Mint XFCE 5.4.0-65-generic
id: linuxmint.conf
source: /boot/efi/loader/entries/linuxmint.conf
linux: /linuxmint/vmlinuz
initrd: /linuxmint/initrd.img
options: root=UUID=c15f5a73-6120-4cfd-81ef-c5891e4dbdf6 rw rootflags=subvol=@
삭제해서는 안되는 항목을 삭제한 것 같지만 GRUB를 다시 사용하고 싶지는 않습니다(패키지가 업그레이드된 후 이전에 한 번 이 작업을 수행한 적이 있습니다).
업데이트 #1: 가상 머신에서 GRUB 패키지를 제거하고 해당 패키지의 /boot/efi가 기본 시스템과 동일한(바이너리) 파일을 가지고 있는지 확인했습니다. 여전히 위의 오류가 발생합니다.
업데이트: 2: 결과 sudo efibootmgr -v
:
No BootOrder is set; firmware will attempt recovery
업데이트 3: 결과 efivar -l
:
7b59104a-c00d-4158-87ff-f04d6396a915-SecureBootSetup
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_EntRevokeSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_ATPSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_WinSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_SkuSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_RvkSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_SiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-CurrentPolicy
8be4df61-93ca-11d2-aa0d-00e098032b8c-ConIn
8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut
97e8965f-c761-4f48-b6e4-9ffa9cb2a2d6-DeploymentModeNv
4599d26f-1a11-49b8-b91f-858745cff824-StdDefaults
답변1
bootctl
"일반 하드웨어" 시스템의 명령으로는 시스템이 사용 중인지 확인할 수 없는 것 같습니다 systemd-boot
. 이는 시스템의 UEFI 펌웨어에 버그나 문제가 있거나 시스템이 아직 실제로 부팅되지 않았기 때문일 수 있습니다 systemd-boot
.
"일반 하드웨어" 시스템에서 실행 efibootmgr -v
하고 원본 게시물에 출력을 추가하세요. 그러면 UEFI 부팅 변수의 실제 내용이 표시됩니다. 단순히 분석하는 것보다 원시 데이터를 살펴보면 bootctl
무슨 일이 일어나고 있는지에 대한 더 많은 단서를 제공할 수 있습니다.
라는 변수가 없는 것 같습니다 8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot*
. 모든 UEFI 부팅 변수가 지워진 것과 같습니다. 이것은 현재 부트로더가 불확실해 보이는 이유를 확실히 설명합니다 . 펌웨어가 현재 시스템을 부팅하는 방법을 기록하는 부팅 변수를 bootctl status
찾지 못합니다 .8be4df61-93ca-11d2-aa0d-00e098032b8c-BootCurrent
GRUB를 제거하면 모든 부팅 변수가 삭제되는 경우 이는 버그일 수 있습니다. 이는 다른 부트 로더에 대한 불필요하게 반사회적인 동작입니다. 아니면 UEFI 펌웨어 버그일 수도 있습니다. 일부 공급업체의 UEFI 펌웨어 구현에서는 더 이상 존재하지 않는 디스크나 파티션을 참조하는 모든 부팅 변수를 자동으로 지웁니다. 하지만 이 문제는 정리에 약간 지나치게 열성적인 것일 수도 있습니다. (시스템 펌웨어 업데이트로 이 문제가 해결될 수도 있습니다.)
UEFI 부팅 변수가 없기 때문에 펌웨어는 펌웨어 프로그래머에게만 알려진 순서대로 찾을 수 있는 모든 디스크에서 ESP 파티션을 찾으려고 시도합니다. 이를 찾으면 /EFI/BOOT/BOOTX64.EFI
(ESP 파티션의 루트에 상대적, Mint에서는 전체 경로 /boot/efi/EFI/BOOT/BOOTX64.EFI
) 이를 사용하여 시스템을 부팅합니다. 이동식 미디어에서는 펌웨어가 인식하는 파일 시스템이 있으면 /EFI/BOOT/BOOTX64.EFI
해당 미디어에서 부팅하기에 충분할 수 있습니다.
/boot/efi
ESP 파티션(예: 파일 시스템)이 포함된 디스크가 /dev/sda
다음 명령을 실행해야 할 수도 있습니다.
sudo efibootmgr -b 0000 -c -d /dev/sda -l \\EFI\\systemd\\systemd-bootx64.efi -L "Linux Mint"
그러면 8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0000
부팅 변수가 생성되고 systemd-bootx64.efi
부트로더를 올바르게 가리켜야 합니다. 또한 부팅 옵션에 사람이 읽을 수 있는 "Linux Mint"라는 이름을 부여합니다. 펌웨어 부팅 설정에서 볼 수 있습니다("BIOS 설정"으로 알 수 있음).
또한 자동으로 8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder
변수를 생성하고 부팅 옵션 0000(위에서 생성한 변수)을 현재 첫 번째이자 유일한 활성 부팅 옵션으로 만들어야 합니다.
add 를 사용할 때 부팅 변수가 "고정"되지 않는 것 같으면 efibootmgr
시스템에 이상한 UEFI 펌웨어가 있어야 합니다. 각 공급업체의 첫 번째 UEFI 구현에는 나중에 수정되는 버그가 있는 경우가 많습니다. "일반 하드웨어" 시스템이 새 것이 아닌 경우 이전 UEFI 구현 중 하나가 여전히 있을 수 있습니다. 펌웨어 설정 메뉴에서 UEFI 부트로더 경로를 추가할 수 있는지 확인해볼 수 있습니다. 그렇게 하면 펌웨어가 에서 생성한 모든 부팅 변수를 거부하게 만드는 알 수 없는 조건이 충족될 수 있습니다 efibootmgr
.
이 경우 다음을 읽어볼 수도 있습니다.Roderick W. Smith의 "부팅 해킹" 페이지- 주로 rEFInd 부트로더를 염두에 두고 작성되었지만 다양한 UEFI 펌웨어 문제와 사용 가능한 해결 방법을 잘 설명하고 있습니다.