blkid retorna mais informações do que o esperado

blkid retorna mais informações do que o esperado

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

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 não estou mais usando o Debian "wheezy", mas sim "jessie". Vejo que nesta versão mais recente do Debian 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 de manual do blkid parece dizer que -s UUIDdeve incluir apenas valores que correspondam a essa chave, mas também há algo estranho DEVNAMElá.

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

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

As versões do pacote util-linuxsão 2.20.1-5.3 e 2.25.2-6, respectivamente.

Questões

  1. Por que a mudança no formato do UUID e isso importa?
  2. Por que a mudança no formato de saída?

Responder1

DEVNAME é o alias do dispositivo, consulteNome de dispositivo persistente usando alias

Além disso, parece que agora o UUID deve estar em letras minúsculas pelos padrões internacionais.

DeTipo de caractere gerado pelo UUID

Para esclarecer, um UUID é na verdade um valor de 128 bits, não texto ou dígitos. Você poderia pensar neles como inteiros não assinados de 128 bits.

As últimas especificações internacionais datadas de 2008-08 afirmam (ênfase minha):

6.5.4 O software que gera a representação hexadecimal de um UUID não deve usar letras maiúsculas. NOTA – Recomenda-se que a representação hexadecimal utilizada em todos os formatos legíveis por humanos seja restrita a letras minúsculas. O software que processa esta representação é, no entanto, obrigado a aceitar letras maiúsculas e minúsculas, conforme especificado em 6.5.2.

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

Em 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); 

Então eu suspeitei que sem -o exportele só imprimiria o UUID, e de fato:

$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

informação relacionada