Como obter o udev para identificar um dispositivo USB, independentemente da porta USB em que ele está conectado?

1

Gostaria de escrever um script que faça backup de dados em um dispositivo USB sempre que o último estiver sendo conectado a um slot USB aleatório. Agora eu sei sobre o identificador KERNEL=sdX , mas o problema é que, dependendo do slot e se outros dispositivos já estão conectados, o sdX será alterado. Qual seria a melhor maneira de identificar meu dispositivo USB no udev? Estive pensando em usar o partuuid , mas não sei como e não sei onde o partuuid está armazenado, nem como ele é trabalhado.

    
por ChiseledAbs 31.07.2016 / 11:10

2 respostas

2

Se você particionar seu dispositivo usando gdisk em oposição a fdisk , você criará uma tabela de partições no estilo GPT que, para cada partição, pode conter um PARTUID e um PARTLABEL. O comando c em gdisk permite que você defina o nome da partição, ou seja, o PARTLABEL.

Esses IDs de partição não são alterados quando você reformata a partição, criando um novo sistema de arquivos nela.

A maioria dos sistemas de arquivos permite obter ou definir um UUID e um LABEL no sistema de arquivos. O meio de fazer isso depende do tipo de sistema de arquivos, por exemplo, para ext3 / 4 é tune2fs com -U e -L . Eles aparecem como UUID e LABEL no Linux.

Não confunda esses dois conjuntos de IDs. blkid mostrará todos eles:

/dev/sdb1: LABEL="MYLABEL" UUID="A369-D716" TYPE="vfat" PARTLABEL="My new partition" \
  PARTUUID="f0817245-d3ce-408b-9457-e33dfc04aebe"

Você pode ver os atributos do udev com

$ udevadm info -p $(udevadm info -q path -n /dev/sdb1)
...
E: ID_FS_LABEL=MYLABEL
E: ID_FS_LABEL_ENC=MYLABEL
E: ID_FS_UUID=A369-D716
E: ID_FS_UUID_ENC=A369-D716
E: ID_PART_ENTRY_UUID=f0817245-d3ce-408b-9457-e33dfc04aebe
E: ID_PART_TABLE_UUID=7301d696-b66d-4f85-8272-7dd5e29175ae
E: ID_PART_ENTRY_NAME=My\x20new\x20partition
    
por 31.07.2016 / 14:32
0

Eu fiz algo semelhante, usando o UUID (biblioteca de identificadores universalmente exclusivos) do dispositivo USB.

Você pode ver os UUIDs com o comando blkid:

# blkid

Você pode encontrar mais informações sobre o blkid, pesquisando na página do manual dele

# man blkid
    
por 31.07.2016 / 11:27

Tags