initramfs/initrd 없이 UUID로 루트 파티션을 식별하는 방법

initramfs/initrd 없이 UUID로 루트 파티션을 식별하는 방법

initramfs/initrd 지원이 없으면 다음 커널 명령줄이 작동하지 않습니다.

linux   /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e ro

initramfs/initrd 없이 루트 파티션을 UUID로 식별하려면 어떻게 해야 합니까?

/dev/sda1파티션이 USB 스틱에 있고 다른 컴퓨터에서 작동해야 하기 때문에 유사한 장치 이름을 사용할 수 없습니다 .

답변1

묻혀있는 답을 찾았어요다른 스레드:

UUID는 파일 시스템을 식별하고, PARTUUID는 파티션을 식별합니다(즉, 다시 포맷한 후에도 변경되지 않은 상태로 유지됨).initramfs/initrd가 없으면 커널은 PARTUUID만 지원합니다.

컴퓨터에 있는 블록 장치의 PARTUUID를 찾으려면 다음을 사용하세요.

sudo blkid

예를 들어 다음과 같이 인쇄됩니다.

/dev/sda1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext2" PARTUUID="f3f4g3f4-02"

이제 다음과 같이 Linux 명령줄을 수정할 수 있습니다.

linux   /bzImage root=PARTUUID=f3f4g3f4-02 ro

이 경우 PARTUUID f3f4g3f4-02가 있는 파티션에서 부팅됩니다 /dev/sda1.

답변2

lsblk사용 중인 디스크/파티션/uuid를 표시하는 다양한 옵션이 있습니다.

예를 들어

% sudo lsblk -o UUID,PARTUUID,NAME,MOUNTPOINT 
UUID                                   PARTUUID           NAME                MOUNTPOINT
                                                          sda                 
d634adc8-69de-edd8-d491-a79e69aeff78   0008500a-01        |-sda1
195237da-8825-45fb-abf7-a62895bd0967                      | `-md0             /boot
d2cf1bcc-d51d-bf37-9723-3b505172fe5f   0008500a-02        `-sda2              
24bvXN-PVU1-kubI-Zgj5-W82i-3Z07-v80lME                      `-md1             
67fe5039-de46-4629-bd03-ee65a5dd0132                          |-godzilla-root /
ba70f1d1-89f0-4dd9-83a4-8bc9a74a6548                          `-godzilla-swap [SWAP]

그러면 UUID가 파티션 UUID d634adc8-69de-edd8-d491-a79e69aeff78에 해당함 을 알 수 있습니다./dev/sda30008500a-01

설정에 따라 다음을 수행할 수 있습니다.

root=/dev/sda1

또는

root=PARTUUID=0008600a-01

(저의 경우 rootLVM의 일부이므로 이 방법으로 설치할 수는 없지만 개념은 적용됩니다)

답변3

UUID=그것은 유효하지 않습니다. 그대로 받아들이십시오 LABEL=. 둘 다 파일 시스템이 있는 파티션이 아닌 파일 시스템을 식별합니다.

원천:커널 name_to_dev_t()do_mount.c

UUID에 대한 유일한 유효한 커널 명령줄 항목은 입니다 PARTUUID=. 이 UUID는 파티션에 포함된 파일 시스템이 아닌 파티션 자체에 적용됩니다. ( blkid출력 참조)

GPT 파티션을 사용하는 경우 PARTLABEL=보다 사용자 친화적인 버전을 사용해 보세요 :)

관련 정보