blkid retorna mais informações que o esperado

0

Estou seguindo uma receita que criei há alguns anos, em que, em determinado momento, preciso usar blkid para obter um UUID do sistema de arquivos.

Eu tenho este comando anotado, junto com um valor de retorno de exemplo esperado:

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

No entanto, os tempos mudaram e eu não estou mais usando Debian "wheezy" mas sim "jessie". Eu vejo que nesta versão mais recente do Debian eu agora tenho um valor de retorno diferente para o mesmo comando:

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

A página man do blkid parece dizer que -s UUID deve incluir apenas valores correspondentes a essa chave, mas também há esse DEVNAME externo lá também.

Eu tenho uma solução alternativa, pois posso escrever isso em ambos os casos, mas parece estranho que a estrutura de saída tenha mudado:

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

Pacote util-linux versões são 2.20.1-5.3 e 2.25.2-6, respectivamente.

Perguntas

  1. Por que a mudança na forma do UUID é importante?
  2. Por que a mudança no formato de saída?
por roaima 21.04.2017 / 17:27

1 resposta

2

DEVNAME é o alias do dispositivo, veja Nome do dispositivo persistente usando o alias

Além disso, parece que agora é necessário que o UUID seja minúsculo para os padrões internacionais.

De Tipo de caractere gerado pelo UUID

To clarify, a UUID is actually a 128-bit value, not text or digits. You could think of them as 128-bit unsigned integers.

The latest international spec dated 2008-08 states (emphasis mine):

6.5.4 Software generating the hexadecimal representation of a UUID shall not use upper case letters. NOTE – It is recommended that the hexadecimal representation used in all human-readable formats be restricted to lower-case letters. Software processing this representation is, however, required to accept both upper and lower case letters as specified in 6.5.2.

Quanto à impressão do UUID e do alias / DEVNAME

De util-linux / blkid.c é evidente que DEVNAME é impresso porque você está usando o -o export

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

Por isso, suspeitei que sem -o export seria apenas imprimir o UUID e, de facto:

$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
    
por 21.04.2017 / 19:32