Ignora uma partição de dois de um stick USB via udev

1

Eu tenho um stick USB com duas partições. Depois de ligar o stick eu uso o seguinte comando para encontrar o dispositivo.

dmesg

Exemplo de saída

[11195.236020] usb 2-2: new high-speed USB device number 9 using ehci-pci
[11195.375432] usb 2-2: New USB device found, idVendor=058f, idProduct=6387
[11195.375436] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11195.375439] usb 2-2: Product: Mass Storage
[11195.375441] usb 2-2: Manufacturer: Generic
[11195.375444] usb 2-2: SerialNumber: 605DD851
[11195.375968] usb-storage 2-2:1.0: USB Mass Storage device detected
[11195.376732] scsi host10: usb-storage 2-2:1.0
[11196.377830] scsi 10:0:0:0: Direct-Access     Generic  Flash Disk       8.07 PQ: 0 ANSI: 4
[11196.378159] sd 10:0:0:0: Attached scsi generic sg3 type 0
[11196.379647] sd 10:0:0:0: [sdc] 15769600 512-byte logical blocks: (8.07 GB/7.51 GiB)
[11196.381548] sd 10:0:0:0: [sdc] Write Protect is off
[11196.381552] sd 10:0:0:0: [sdc] Mode Sense: 23 00 00 00
[11196.383579] sd 10:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[11196.390454]  sdc: sdc1 sdc2
[11196.394696] sd 10:0:0:0: [sdc] Attached SCSI removable disk

Portanto, meu dispositivo é /sdc e minhas partições /dev/sdc1 e /dev/sdc2

Eu usei os dois comandos para obter seus UUIDs

udevadm info /dev/sdc1 | grep ID_FS_UUID=

Exemplo de saída

E: ID_FS_UUID=dbf323e9-8d63-444c-9c11-76b9b9a0fed4

e

udevadm info /dev/sdc2 | grep ID_FS_UUID=

Exemplo de saída

E: ID_FS_UUID=0eeb7004-8955-4358-a205-07d7376adb8c

Portanto, meus UUIDs são dbf323e9-8d63-444c-9c11-76b9b9a0fed4 e 0eeb7004-8955-4358-a205-07d7376adb8c

ou por partição

/dev/sdc1 > > dbf323e9-8d63-444c-9c11-76b9b9a0fed4
/dev/sdc2 > > 0eeb7004-8955-4358-a205-07d7376adb8c

Agora criei um arquivo /etc/udev/rules.d/100-myusb.rules

sudo nano /etc/udev/rules.d/100-myusb.rules

e adicionou a regra abaixo

KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", ENV{UDISKS_IGNORE}="1"

e reiniciado udev

sudo service udev restart

Mas depois de ligar o stick novamente, ambas as partições são mostradas em Arquivos também conhecidos como Nautilus

O que estou fazendo de errado?

Editar So 6. Set 21:07:50 CEST 2015

A regra

KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", RUN+="/bin/mkdir /tmp/folder1"

cria a pasta /tmp/folder1

E para @Sneetsher

KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", RUN+="/usr/bin/env > /tmp/udev-partition-env.log"

funciona, mas o arquivo de saída é env_root.output ? o_O

Editar Mo 7. Sep 20:31:06 CEST 2015

Testado e não funciona

KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", ENV{UDISKS_AUTO}="0", ENV{UDISKS_SYSTEM}="0"

e

KERNEL=="sd??", ENV{ID_FS_UUID}=="0eeb7004-8955-4358-a205-07d7376adb8c", ENV{UDISKS_AUTO}="0"
    
por A.B. 06.09.2015 / 18:24

1 resposta

2
  • Finalmente, eu configurei o mesmo ambiente Ubuntu 15.04 em uma máquina VirtualBox.

    ACTION=="add", ENV{ID_FS_UUID}=="bf50cb5d-60bf-44de-9a8f-1bf74850a5a1", ENV{UDISKS_IGNORE}="1"
    

    Funciona perfeitamente como esperado.

  • : D Eu odeio o prefixo de 3 dígitos 100- (comum / padrão é 2), por isso estou usando 99- na maior parte do tempo. Eu nunca tentei isso antes, renomeá-lo para ser semelhante ao seu:

    # mv /etc/udev/rules.d/99-sneetsher-tests.rules /etc/udev/rules.d/100-myusb-sneetsher-tests.rules
    

    Voila! Agora não funciona.

    A regra é substituída por outras regras, com certeza as do sistema de /lib/udev/rules.d/

    Você pode tentar listar todos os arquivos de regras para verificar:

    find /etc/udev/rules.d/ /lib/udev/rules.d/ -iname "*.rules" -printf "%f\n" | sort
    
    % bl0ck_qu0te%

    Origem: man udev

  • Esta pode ser a melhor maneira de verificar usando udevadm test <path> , por exemplo:

    udevadm test /sys/devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0/host9/target9:0:0/9:0:0:0/block/sdb/sdb2
    

    Teste para os dois nomes 100-myusb.rules & amp; 99-myusb.rules , você verá a ordem em que os arquivos de regras foram lidos e quais regras foram acionadas.

    Referência: Qual regra do udev foi acionada?

por user.dz 09.09.2015 / 14:06