como criar uma regra do udev para usb flash com duas partições para criar um nó persistente em / dev?

4

Eu tenho uma memória flash USB, criei duas partições nela, quando está conectada, às vezes é preciso sda, sda1 e sda4 em vez de sdb, sdb1, sdb4. Para evitar essa confusão, decidi criar uma regra do udev para fazer uma ligação simbólica em / dev persistentemente.

Eu criei a regra abaixo

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb"

Quando eu reinicio, cria um symlink em /dev/myusb , mas não consigo montá-lo.

 sudo mount /dev/myusb /media/myusb

 mount: /dev/bus/usb/002/003 is not a block device

Acho que recebo esse erro porque contém duas partições. Então, o que devo fazer?

    
por kenn 07.11.2016 / 10:58

2 respostas

3

Eu acho que o problema é que você não pode montar uma unidade inteira com várias partições de uma só vez. Você tem que montar cada partição por si só. Montar significa ter acesso ao sistema de arquivos, que pode ser muito diferente em duas partições diferentes. E como você colocaria dois sistemas de arquivos em um diretório? Você precisa ter pelo menos dois subdiretórios como /media/myusb/part1 .

Dito isso, estamos de volta aos UUIDs e aos rótulos.

Você pode criar uma regra do udev acionando um script que monta as duas partições pelo seu uuid, como

#!/bin/bash

mount /dev/disk/by-uuid/xxxxx-xxxx-xxxxx-xxxxxx /media/myusb/part1
mount /dev/disk/by-uuid/yyyyy-yyyy-yyyyyy-yyyyy /media/myusb/part2

Alternativamente, você poderia colocar as partições em / etc / fstab, e deixar o udev fazer um mount -a .

Use 'blkid' para imprimir o identificador exclusivo universal de um dispositivo; isso pode ser usado com o UUID = como uma maneira mais robusta de nomear dispositivos que funcionem mesmo se os discos forem adicionados e removidos.

Talvez você possa tentar isso:

Para a partição um:

KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb1"

Para a partição dois

KERNEL=="sd?4", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb2"

Não tenho certeza se funciona, mas você pode tentar.

link link

    
por JosefScript 07.11.2016 / 20:54
1

Primeiro, quero agradecer a todos que responderam, eles me guiaram no caminho certo.

Primeiro, eu verifiquei os dispositivos para localizar o stick USB

 fdisk -l 

Disk /dev/sda: 15.5 GB, 15512174592 bytes
234 heads, 12 sectors/track, 10789 cylinders, total 30297216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00055ec3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *       16128    30297215    15140544    c  W95 FAT32 (LBA)
/dev/sda4         2142880     5194399     1525760    0  Empty

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000517fa

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb2   *        2048    40959079    20478516   83  Linux
/dev/sdb3        40959998   234436544    96738273+   5  Extended
/dev/sdb5        40960000    52956093     5998047   83  Linux
/dev/sdb6        52957184   221904895    84473856   83  Linux
/dev/sdb7       221906944   234436544     6264800+  83  Linux

Meu pendrive pegou sda sda1 e sda4 (ainda não encontrei uma maneira de atribuir o sda ao disco primário)

Então eu fiz um attribute-walk para obter parâmetros relacionados com

udevadm info -a -p $(udevadm info -q path -n /dev/sda)
udevadm info -a -p $(udevadm info -q path -n /dev/sda1)
udevadm info -a -p $(udevadm info -q path -n /dev/sda4)

Eu usei ATTRS{serial} e ATTR{partition}==1 , ATTR{partition}==2 como IDs distintos.

KERNEL=="sd*", ATTRS{serial}=="0019E06B5883CCA187BC2C59", ATTR{partition}=="1", SYMLINK+="usbdevices"

funciona para a partição 1

    
por kenn 09.11.2016 / 14:12

Tags