Por que os UUIDs do Linux / etc / fstab fazem distinção entre maiúsculas e minúsculas?

4

Eu adicionei recentemente uma linha para um memory stick USB em /etc/fstab , para poder montá-lo automaticamente, usando o UUID para identificar o dispositivo.

Antes eu já tenho várias unidades externas ext4 que têm seus UUIDs escritos em caracteres hexadecimais em minúscula [0-9a-f] assim:

UUID=3eeaaa43-dead-beef-cafe-243bcaaad475 /media/external_2TB ext4 rw,user,noexec,nosuid,nodev,noatime 0 2

Eu verifiquei o UUID do meu pendrive com blkid , obtive um UUID hexadecimal maiúsculo e digitei em /etc/fstab da mesma forma que as linhas ext4, em hexadecimal minúsculo, como este:

UUID=125c-a3eb  /media/usb_8GB vfat defaults,users,umask=0  0 0

mount: special device UUID=125c-a3eb does not exist

Então eu tive uma idéia para tentar em maiúsculas ( gU3w no Vim) e funcionou sem problemas. Para confirmar isso, eu desmontei e mudei o UUID de volta para minúsculas, a montagem falhou, e de volta para maiúsculas, e montado com sucesso.

Tanto quanto eu entendi, o UUID é um número hexadecimal, não uma string, então o caso das letras deve ser irrelevante. Mas claramente não é. O RFC4122 define o UUID como "insensível a maiúsculas e minúsculas na entrada". Existe algo que eu perdi ou esse comportamento de mount / umount é um bug?

Estou usando o Debian GNU / Linux 7.0 Wheezy com um kernel personalizado versão 3.6.8, se isso importa.

    
por nrz 07.01.2013 / 15:18

2 respostas

6

OBSERVAÇÃO: Isso é especulação, com base em como os dispositivos são normalmente acessados no Unix / Linux e no fato de que os nomes de arquivos fazem distinção entre maiúsculas e minúsculas.

O Linux usa os UUIDs para criar objetos em /dev/disk/by-uuid . Como qualquer "arquivo" no Linux, o nome faz distinção entre maiúsculas e minúsculas. Portanto, ao se referir a discos pelo UUID, a comparação é feita como uma comparação de nome de arquivo nas cadeias hexadecimais, em vez de uma comparação binária nos dados representados pelas cadeias de caracteres.

    
por 23.10.2013 / 20:47
1

no caso do vfat, efetivamente não vemos um UUID completo. É um ID de volume (número de série). Estes, claro, não estão sujeitos ao RFC mencionado acima.

    
por 07.01.2013 / 16:13