blkid는 예상보다 더 많은 정보를 반환합니다.

blkid는 예상보다 더 많은 정보를 반환합니다.

나는 몇 년 전에 만든 레시피를 따르고 있는데, 어느 시점에서는 blkid파일 시스템 UUID를 얻는 데 사용해야 합니다.

예상되는 예제 반환 값과 함께 다음 명령을 기록해 두었습니다.

blkid -o export -s UUID /dev/mapper/thathost_crypt_md3
UUID=JNbF5T-vhSD-3aVv-intG-1Tk2-IEOZ-ABWXYZ

그러나 시간이 흘러 저는 더 이상 데비안 "wheezy"를 사용하지 않고 대신 "jessie"를 사용하고 있습니다. 최신 버전의 Debian에서는 이제 동일한 명령에 대해 다른 반환 값이 있음을 확인했습니다.

blkid -o export -s UUID /dev/mapper/thishost_crypt_sdb
DEVNAME=/dev/mapper/thishost_crypt_sdb
UUID=bddac63e-3510-4d24-a6fb-4d0a89abcdef

blkid의 매뉴얼 페이지에는 해당 키와 일치하는 값만 포함해야 한다고 나와 있지만 거기에도 -s UUID관련 없는 내용이 있습니다 .DEVNAME

두 경우 모두에서 이를 작성할 수 있는 해결 방법이 있지만 출력 구조가 변경되어야 하는 것이 이상해 보입니다.

echo "UUID=$(blkid -o value -s UUID /path/to/device)"
UUID=bddac63e-3510-4d24-a6fb-4d0a89abcdef

패키지 util-linux버전은 각각 2.20.1-5.3 및 2.25.2-6입니다.

질문

  1. UUID 모양이 변경되는 이유와 그것이 중요한가요?
  2. 출력 형식이 변경된 이유는 무엇입니까?

답변1

DEVNAME은 장치의 별칭입니다.별칭을 사용한 영구 장치 이름

게다가 이제 국제 표준에 따라 UUID는 소문자로 표시되어야 하는 것 같습니다.

에서UUID에 의해 생성된 문자 유형

명확히 말하면 UUID는 실제로 텍스트나 숫자가 아닌 128비트 값입니다. 이를 128비트 부호 없는 정수로 생각할 수 있습니다.

2008-08년 최신 국제 사양에 따르면(강조):

6.5.4 UUID의 16진수 표현을 생성하는 소프트웨어는 대문자를 사용해서는 안 됩니다. 참고 – 사람이 읽을 수 있는 모든 형식에 사용되는 16진수 표현은 소문자로 제한하는 것이 좋습니다. 그러나 이 표현을 처리하는 소프트웨어는 6.5.2에 지정된 대로 대문자와 소문자를 모두 허용해야 합니다.

UUID 및 별칭/DEVNAME 인쇄에 관해서

util-linux/blkid.c에서 다음을 사용하고 있기 때문에 DEVNAME이 인쇄되는 것이 분명합니다.-o export

} else if (ctl->output & OUTPUT_EXPORT_LIST) {
        if (num == 1 && devname)
            printf("DEVNAME=%s\n", devname); 

그래서 나는 -o export그것이 없으면 UUID만 인쇄할 것이라고 의심했고 실제로는 다음과 같습니다.

$blkid -s UUID /dev/sda2
/dev/sda2: UUID="67169dd7-f319-4402-a9b2-cebcf2f3657a"
$ blkid -o export -s UUID /dev/sda2
DEVNAME=/dev/sda2
UUID=67169dd7-f319-4402-a9b2-cebcf2f3657a

관련 정보