물리적 모니터에 액세스하지 않고 내 컴퓨터가 grub 또는 systemd-boot로 부팅되었는지 어떻게 알 수 있나요?
제목에 쓴 것처럼 폴더 /boot/grub/
가 있습니다 /boot/efi/EFI/systemd/
.
반면에 dd if=/dev/sda bs=512 count=1 2>/dev/null | strings
다음을 반환합니다.
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
하지만 반면에 cat /boot/efi/EFI/BOOT/BOOTX64.EFI | strings |grep systemd
반환#### LoaderInfo: systemd-boot 247.3-7+deb11u1 ####
수...무슨 일이야? grub 또는 systemd-boot를 사용하는 컴퓨터입니까?
편집: efibootmgr -v
출력:
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004,0002,0005,0006,0007,0008,0000,0003,0001
Boot0000* Windows Boot Manager VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...a...............
Boot0001* Linux Boot Manager VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)
Boot0002* Linux Boot Manager HD(2,GPT,1eded8dc-d1ab-4723-b499-b718400c1898,0x800,0x100000)/File(\EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI)
Boot0003* Linux Boot Manager VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)
Boot0004* Linux Boot Manager HD(2,GPT,ed10b328-3615-45c0-bf5b-b117031e4c22,0x800,0x100000)/File(\EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI)
Boot0005* UEFI OS HD(2,GPT,26b839e2-9a19-4e21-ad28-dbd1c15d598d,0x800,0x100000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0006* Hard Drive BBS(HD,,0x0)..GO..NO........o.S.a.m.s.u.n.g. .S.S.D. .8.7.0. .Q.V.O. .1.T.B...................A..........................>..Gd-.;.A..MQ..L.5.S.R.R.F.N.R.0.3.B.0.5.8.4. .Y. . . . .......BO..NO........o.S.T.1.2.0.0.0.N.M.0.0.1.G.-.2.M.V.1.0.3...................A..........................>..Gd-.;.A..MQ..L. . . . . . . . . . . . .T.Z.0.N.9.0.G.2.......BO..NO........o.S.T.1.2.0.0.0.N.M.0.0.1.G.-.2.M.V.1.0.3...................A..........................>..Gd-.;.A..MQ..L. . . . . . . . . . . . .T.Z.0.N.2.1.T.1.......BO..NO........o.S.T.1.2.0.0.0.N.M.0.0.1.G.-.2.M.V.1.0.3...................A..........................>..Gd-.;.A..MQ..L. . . . . . . . . . . . .T.Z.0.N.8.0.J.C.......BO..NO........o.S.a.m.s.u.n.g. .S.S.D. .8.7.0. .Q.V.O. .1.T.B...................A..........................>..Gd-.;.A..MQ..L.5.S.R.R.F.N.R.0.3.B.0.5.9.7. .P. . . . .......BO..NO........o.S.a.m.s.u.n.g. .S.S.D. .8.7.0. .E.V.O. .1.T.B...................A..........................>..Gd-.;.A..MQ..L.6.S.U.P.M.N.T.0.3.5.7.8.4.2. .L. . . . .......BO
Boot0007* UEFI OS HD(2,GPT,1eded8dc-d1ab-4723-b499-b718400c1898,0x800,0x100000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0008* UEFI OS HD(2,GPT,ed10b328-3615-45c0-bf5b-b117031e4c22,0x800,0x100000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
답변1
작동하는 것은 efibootmgr -v
시스템이 UEFI 모드에서 부팅할 때만 발생하는 UEFI 런타임 서비스가 활성화되어 있다는 사실입니다.
(Marcus Müller가 의견에서 말했듯이 반대 추론은 불가능합니다. UEFI 런타임 서비스를 활성화하지 않고도 UEFI 모드에서 부팅할 수 있습니다. 펌웨어가 이를 제공하지 않기로 선택했거나 커널에 이를 사용할 도구가 부족하기 때문입니다. 필수 빌드 시간 옵션 최신 커널에서는 특정 UEFI 펌웨어 구현의 버그를 해결하기 위해 부팅 옵션을 통해 UEFI 런타임 서비스를 비활성화할 수도 있습니다.
BootCurrent: 0004
[...]
Boot0004* Linux Boot Manager HD(2,GPT,ed10b328-3615-45c0-bf5b-b117031e4c22,0x800,0x100000)/File(\EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI)
Boot0004
시스템이 부팅되면 PARTUUID가 있는 파티션에서 사용되는 부팅 옵션을 사용합니다 . 따라서 현재 를 사용하고 있습니다. 으로 PARTUUID를 볼 수 있습니다.systemd-bootx64.efi
ed10b328-3615-45c0-bf5b-b117031e4c22
systemd-boot
lsblk -o +partuuid
결과 dd if=/dev/sda bs=512 count=1 2>/dev/null
에 따르면 GRUB의 BIOS 호환 i386-pc
버전이 특정 시점에 해당 디스크에 설치되었지만 시스템이 CSM(BIOS 호환성 모듈)을 활성화하도록 구성되지 않은 한 UEFI 펌웨어에는 전혀 의미가 없습니다. Boot0006
부팅 옵션을 사용하면 가능합니다(확실하지는 않지만).할 수 있다BIOS 호환 모드에서 이 디스크에서 부팅됨을 나타냅니다.
GRUB 버전 은 i386-pc
마스터 부트 레코드 블록에 완전히 포함되어 있지 않습니다. GRUB 코어 이미지의 나머지 부분도 디스크의 고정 위치에 포함되어야 합니다. MBR 파티션 디스크에서 MBR과 첫 번째 파티션의 시작 사이의 사용되지 않은 공간은 일반적으로 GPT 파티션 디스크에서 이 목적으로 사용됩니다. 이 공간은 GPT 파티션 테이블 구조에서 차지하므로 전용 "biosboot" 파티션이 필요합니다. . BIOS 스타일 GRUB를 사용하여 GPT 파티션 디스크에서 부팅합니다.
그러나 Microsoft는 Windows 운영 체제에서 부팅 방법과 파티션 구성표를 결합하기로 결정했기 때문에 MBR 파티션 디스크에 설치된 Windows는 BIOS 모드로만 부팅할 수 있고, GPT 파티션 디스크에 설치된 Windows는 BIOS 모드에서만 부팅할 수 있습니다. UEFI 스타일로 부팅하는 데 사용됩니다. 부팅 관리자는 일반적으로 부팅 방법을 전환할 수 없으므로 여러 운영 체제가 설치되어 있는 경우 모든 운영 체제에 동일한 부팅 방법(BIOS 또는 UEFI)을 사용하는 것이 가장 편리합니다.
Windows Boot Manager
출력에 나타나는 텍스트는 efibootmgr -v
UEFI 모드에서 부팅하는 Windows 운영 체제가 있을 가능성이 있음을 나타냅니다. 따라서 GRUB를 사용하려면 BIOS 버전 x86_64-efi
이 아닌 UEFI 네이티브 버전의 GRUB를 사용해야 합니다.i386-pc
답변2
https://itsfoss.com/check-uefi-or-bios/
Windows 및 Linux에 대한 답변
Linux에서는 SSH를 사용하면 UEFI 또는 BIOS를 실행 중인지 확인하는 가장 쉬운 방법은 폴더를 찾는 것입니다 /sys/firmware/efi
. 시스템에서 BIOS를 사용하는 경우 이 폴더가 없습니다.