![어떤 파티션에서 부팅하는지 어떻게 알 수 있나요?](https://linux55.com/image/205504/%EC%96%B4%EB%96%A4%20%ED%8C%8C%ED%8B%B0%EC%85%98%EC%97%90%EC%84%9C%20%EB%B6%80%ED%8C%85%ED%95%98%EB%8A%94%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%95%8C%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
실제로 어떤 파티션에서 부팅하는지 알 수 있는 방법이 있나요?
fdisk -l
내 NVME에는 확실히 존재하지 않는 "부팅" 열이 표시됩니다. 이것은 단지 레거시 정보입니까?
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1126399 1124352 549M b W95 FAT32
/dev/sda2 1126400 975688107 974561708 464.7G 7 HPFS/NTFS/exFAT
/dev/sda3 975689728 976769023 1079296 527M 27 Hidden NTFS WinRE
...
Device Start End Sectors Size Type
/dev/nvme0n1p1 616448 2458216447 2457600000 1.1T Linux filesystem
/dev/nvme0n1p2 2458216448 3907024031 1448807584 690.8G Linux filesystem
/dev/nvme0n1p3 2048 616447 614400 300M EFI System
Partition table entries are not in disk order.
/boot/efi가 마운트된 것을 고려하면 내 nvme 드라이브를 사용하고 있다고 90% 확신합니다. 아무런 표시가 lsblk
없더라도 이것이 사실인지 확인하고 싶습니다.boot
fdisk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 549M 0 part
├─sda2 8:2 0 464.7G 0 part
└─sda3 8:3 0 527M 0 part
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 99M 0 part
├─sdb2 8:18 0 16M 0 part
└─sdb3 8:19 0 1.8T 0 part
nvme0n1 259:0 0 1.8T 0 disk
├─nvme0n1p1 259:1 0 1.1T 0 part
├─nvme0n1p2 259:2 0 690.8G 0 part /
└─nvme0n1p3 259:3 0 300M 0 part /boot/efi
나는 또한 Disklabel type
/dev/sda가 dos이고 /dev/nvme0n1이 gpt라는 것을 알았습니다(고려한다면).
답변1
시스템이 분명히 UEFI 스타일로 부팅되므로 제목 질문에 대한 대답은 다음과 같습니다.
루트로 실행하여 efibootmgr -v
해당 줄(일반적으로 출력의 첫 번째 줄)에서 4자리 ID를 확인한 BootCurrent:
다음 해당 BootNNNN
줄에서 부팅할 파티션의 PARTUUID를 찾습니다.사용된 실제 부팅 관리자/로더의 파일 이름을 포함합니다..
그런 다음 실행하여 lsblk -o +PARTUUID
GPT 파티션 테이블에 포함된 파티션의 고유 UUID를 확인합니다. BootNNNN
출력 줄에 표시된 UUID를 찾으면 efibootmgr -v
파티션을 알 수 있습니다.
(MBR 파티션 디스크에는 실제 파티션 UUID가 없으므로 파티션 조합이 더 짧습니다.디스크 서명실제 파티션 UUID 대신 파티션 번호와 파티션 ID를 표시합니다. )
이는 Disklabel type
확실히 중요한 요소입니다. 이는 GPT 파티셔닝 및 UEFI 스타일 부팅을 사용 sda
하는 동시에 클래식 MBR 파티셔닝 및 부팅 순서를 사용하고 있음 을 나타냅니다.nvme0n1
그리고 GPT 파티션 테이블할 수 있는MBR 파티션된 디스크 출력의 플래그 필드와 기본적으로 동일한 부팅 플래그를 저장하는 Boot
GPT 파티션된 디스크에서 MBR 스타일 부팅은 드문 경우이므로 포함되지 않습니다. 기본 UEFI 스타일 접근 방식은 이러한 플래그를 사용하지 않습니다. 이제 이해하는 것이 시스템 펌웨어의 작업이기 때문입니다.fdisk -l
fdisk -l
부트로더 파일의 이름그리고PARTUUID에서 파티션을 로드합니다..
그러나 이러한 레거시 플래그가 GPT 파티션에서 활성화된 경우 i
최신 Linux를 사용하는 명령(= 파티션에 대한 정보 인쇄)은 출력 행의 키워드를 통해 이를 표시 fdisk
합니다 .LegacyBIOSBootable
Attrs:
이러한 플래그를 실제로 토글하려면 GPT 지원 Linux에 대한 전문가별 추가 명령을 사용해야 합니다 fdisk
. 먼저 x
플래그 A
를 토글합니다.
UEFI 파티션 플래그가 포함된 파티션 테이블만 나열하려는 경우 fdisk -x /dev/nvme0n1
출력이 기존 출력보다 훨씬 넓습니다 fdisk -l
.
고전적인 MBR/BIOS 스타일을 사용하여 부팅하는 경우 제목 질문에 대한 대답은 "정말 그렇지 않습니다"입니다.BIOS 스타일 펌웨어에는 시스템을 부팅하는 데 실제로 사용할 장치를 운영 체제에 알려주는 유비쿼터스 표준 방법이 없습니다.이는 기존 BIOS 스타일 부팅을 사용하는 시스템의 모든 운영 체제 및 운영 체제 설치 프로그램에서 오랫동안 지속되어 온 문제입니다.
만약에디렉토리 /sys/firmware/edd
가 존재합니다.가능한BIOS에서 디스크가 표시되는 순서를 식별하여 부팅 디스크를 식별할 수 있는 정보가 포함되어 있습니다. 관례적으로 현재 부팅 디스크는 BIOS 디스크 목록의 첫 번째 하드 디스크 위치("디스크 0x80"이라고도 함)로 이동되며 대부분의 BIOS 기반 부팅 로더는 이 사실에 의존합니다.
따라서 /sys/firmware/edd/int13_dev80
부트로더가 있고 부트로더가 아직 디스크의 BIOS int13 ID를 전환하지 않은 경우(디스크 ID 교환이 필요한 사용자 정의 이중/멀티부트 구성이 있는 경우 GRUB가 이 작업을 수행할 수 있음) 그 안에 있는 정보는 실제 BIOS int13 ID를 식별하는 데 유용할 수 있습니다. BIOS int13 펌웨어에서 사용하는 ID입니다.
불행하게도 이 정보를 제공하는 데 필요한 BIOS 확장은 필요한 만큼 널리 사용 가능하지 않으며, 존재하더라도 항상 완벽하게 올바르게 구현되지는 않습니다. 사용 가능한 EDD 정보가 없는 많은 시스템, 일부 EDD 정보가 불완전한 시스템, EDD 정보 쿼리로 인해 부팅이 중단되는 시스템도 보았습니다.
(분명히 EDD 정보 인터페이스는 Dell에서 설계한 것이므로 Dell 시스템을 주로 사용하는 경우에는 나보다 운이 좋을 수도 있습니다.)
답변2
Linux(grub/systemd)는 부팅 파티션에 대한 정보를 유지하지 않습니다.
시스템이 EFI 모드로 부팅되면 sda가 MBR 파티션 디스크처럼 보이기 때문에 /dev/nvme0n1p3
다른 모드를 사용합니다 ./dev/sda1