lsblk 명령이 /boot 파티션을 표시하지 않는 이유는 무엇입니까?

lsblk 명령이 /boot 파티션을 표시하지 않는 이유는 무엇입니까?

시스템에서 부팅 파티션을 찾고 lsblk 명령을 실행해 보았습니다.

sda              8:0    0 930.4G  0 disk
├─sda1           8:1    0     1G  0 part
├─sda2           8:2    0    40G  0 part
├─sda3           8:3    0 763.6G  0 part
└─sda4           8:4    0 125.8G  0 part
sde              8:64   0   100G  0 disk
├─sde1           8:65   0     2G  0 part
└─sde2           8:66   0    98G  0 part
 ├─sles-root0 254:0    0  27.9G  0 lvm  /
 └─sles-root  254:1    0    70G  0 lvm

하지만 df -h /boot를 수행하면 이것이 표시됩니다.

Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/sles-root0   28G  3.8G   23G  15% /

이는 무엇을 의미하며 시스템에 부팅 파티션이 있는지 어떻게 확인합니까?

답변1

시스템 펌웨어에 디스크의 전체 크기에 액세스할 수 없는 몇 가지 제한 사항이 있는 경우 부팅 파티션이 필요합니다. 디스크 시작 부분에 별도의 파티션을 생성하면 /boot부트로더가 액세스해야 하는 항목(펌웨어에 내장된 드라이버 사용)이 항상 디스크의 펌웨어 액세스 가능 영역 내에 있도록 보장됩니다.

부트로더가 커널 및 initramfs 파일을 성공적으로 로드하면 커널이 자체 드라이버를 사용하여 부팅되고 시작됩니다. 이는 시스템 펌웨어보다 업데이트하기 쉽고 디스크 크기 제한이 덜 적용됩니다.

시스템 펌웨어에 그러한 제한이 없으면 /boot루트 파일 시스템에 일반 디렉터리를 만드는 것을 막을 수 있는 방법이 없습니다. 부트로더가 파일 시스템 유형을 읽을 수 있는 한(파일 시스템이 부트로더가 읽고 있는 디스크에 완전히 포함되어 있는 한) 제대로 작동합니다.

부팅 파티션이 있는 또 다른 이유는 암호화된 루트 파일 시스템이 있고 부트로더가 암호화를 지원하지 않는 경우입니다. 이 경우 부트로더가 작업을 수행하는 유일한 방법은 커널 및 initramfs 파일을 암호화되지 않은 파티션에 배치하는 것입니다. 이러한 설정에서는 사용자로부터 필요한 비밀번호나 키를 얻고 암호화를 잠금 해제하는 데 필요한 도구와 구성이 initramfs에 포함되어야 합니다.

파티션이 있더라도 /boot계속해서 마운트할 필요는 없습니다. a) 커널 업데이트를 설치하거나, ​​b) initramfs 파일을 업데이트하거나, c) 부트로더 또는 해당 구성을 업데이트하는 경우에만 설치하면 됩니다. 일부 배포판은 일반적인 사용 중에 파티션을 마운트 해제된 상태로 두고, 해당 커널/initramfs/bootloader 업데이트 도구에는 /boot필요에 따라 마운트 및 마운트 해제하는 기능이 포함되어 있습니다./boot

귀하의 df -h /boot출력과 관련하여 :

Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/sles-root0   28G  3.8G   23G  15% /

/boot이를 명령에 대한 인수로 지정하기 때문에 df명령은 지정된 파일이나 디렉터리를 포함하는 파일 시스템만 표시합니다. Mounted on열에 나와 있듯이 /이는 루트 파일 시스템입니다.

다음 단계는 다음을 실행하는 것입니다 . 해당 디렉터리에 저장됩니다파일이ls -l /boot커널 .vmlinuz-<kernel version number>System.map-<kernel version number>/boot/boot

그러나 ls -l /boot표시된 디렉토리가 완전히 비어 있으면 실제 /boot파일 시스템이 현재 마운트 해제되어 있으며 빈 디렉토리는 단순히 (현재 사용되지 않는) 마운트 지점임을 의미합니다.


최신 UEFI 시스템이 있고 레거시 BIOS 호환성으로 부팅하지 않는 경우 현재 구성을 확인하는 것은 매우 쉽습니다. 먼저 efibootmgr -v루트로 실행: 현재 펌웨어 부팅 설정이 표시됩니다. UEFI 부팅 항목에는 다양한 형식을 취할 수 있는 부팅 경로 문자열이 포함되지만 Linux 부팅의 가장 일반적인 형식은 다음과 같습니다.

HD(1,GPT,<PARTUUID string for ESP containing the bootloader file>,0x800,0x82000)/File(<bootloader pathname within the ESP partition>)

lsblk -o +PARTUUID를 사용하면 시스템의 각 파티션의 파티션 식별자를 볼 수 있으므로 부트로더가 포함될 ESP(EFI 시스템 파티션)를 찾을 수 있습니다.일반 파일로. ESP는 일반적으로 FAT32 파티션입니다. UEFI 사양의 모든 버전에서는 항상 모든 UEFI 펌웨어 구현이 FAT32를 이해하도록 요구했지만 펌웨어 개발자는 다른 파일 시스템에 대한 지원도 추가할 수 있습니다.

부트로더 경로 이름은 일반적으로 백슬래시를 디렉터리 구분 기호로 사용하여 Windows 경로 이름 규칙을 사용하여 작성됩니다. 따라서 표시된 부트로더 경로가 efibootmgr -v예를 들어 \EFI\SLES\GRUBX64.EFI에 ESP를 마운트하는 경우 에서 /boot/efi부트로더를 찾아야 합니다 /boot/efi/EFI/SLES/grubx64.efi(FAT32는 대소문자를 구분하지 않으며 UEFI 펌웨어도 마찬가지입니다... 그러나 일부 UEFI 구현에는 오류가 있을 수 있습니다).

또한 현재 실행 중인 시스템을 부팅하는 데 사용되는 부팅 항목을 식별하는 4자리 줄 도 efibootmgr -v포함되어 있습니다 .BootCurrent:

답변2

부팅 파티션은 필요하지 않습니다. 모든 시스템에 이 기능이 있는 것은 아니며 명령의 출력은 시스템에 없다는 것을 의미합니다.

관련 정보