Portál AbcLinuxu, 10. května 2025 09:18

Dotaz: Udev pravidla

28.11.2011 20:41 Patrik Uhrak | skóre: 31 | blog: pato
Udev pravidla
Přečteno: 298×
Odpovědět | Admin

Zdravim,

som sa rozhodol, ze si trocha rozsirim obzory a jednak si myslim, ze je to najjednoduchsie riesenie a zaroven neinstalovat ine aplikacie, ktore ich ucelom je pripajanie zariadeni ako usb disky, karty a tak podobne. Takze prisiel rad na udev a jeho moznosti. Nasledovne pravidlo som si napisal, ale zial nefunguje. Pokial je tam iba jeden RUN, tak to ide, ale v pripade, ze su dva, tak uz nie a pritom som videl, ze ani viackrat pouzity RUN nerobi problem. Alebo je to problem ?

ACTION=="add", SUBSYSTEMS=="mmc", ATTRS{manfid}="0x000074", ATTRS{oemid}=="0x4a45", ATTRS{serial}="0x000001c1", ATTRS{type}="SD", RUN+="/bin/mkdir -p /media/sdcard_camcorder", RUN+="/bin/mount -t vfat %k /media/sdcard_camcorder -o defaults,users,noexec,noatime,iocharset=iso8859-1"

Pre ACTION="remove" mam nastavene odpojenie a nasledne vymazanie adresaru. Tu sa vsak natyka dalsia otazka a to, ako sa mysli to odstranenie (remove), pretoze ma napada, ze pokial by vsetky udaje neboli este zapisane, tak pri najlepsom scenare budu niektore data necitatelne. Mozno sa hlupo pytam, ale napr. pmount neodpoji disk pokial prebieha zapis, aj napriek tomu, ze cp, mv atd uz svoj beh ukoncil uspesne, no pokial ja kartu vysuniem, tak je to len otazka casu, kedy sa nieco take stane.

Este pridavam vypis z udevinfo:

 
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:b368/block/mmcblk0/mmcblk0p1':
KERNEL=="mmcblk0p1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{partition}=="1"
ATTR{start}=="8192"
ATTR{size}=="63395840"
ATTR{ro}=="0"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="0"
ATTR{stat}=="      80       15      760       96        0        0        0        0        0       96       96"
ATTR{inflight}=="       0        0"

looking at parent device '/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:b368/block/mmcblk0':
KERNELS=="mmcblk0"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="8"
ATTRS{ext_range}=="8"
ATTRS{removable}=="0"
ATTRS{ro}=="0"
ATTRS{size}=="63404032"
ATTRS{alignment_offset}=="0"
ATTRS{discard_alignment}=="0"
ATTRS{capability}=="10"
ATTRS{stat}=="     160       15     1400      164        0        0        0        0        0      164      164"
ATTRS{inflight}=="       0        0"

looking at parent device '/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:b368':
KERNELS=="mmc0:b368"
SUBSYSTEMS=="mmc"
DRIVERS=="mmcblk"
ATTRS{cid}=="744a45534443202010000001c100b900"
ATTRS{csd}=="400e00325b590000f1dd7f800a400000"
ATTRS{scr}=="0235800000000000"
ATTRS{date}=="09/2011"
ATTRS{erase_size}=="512"
ATTRS{preferred_erase_size}=="4194304"
ATTRS{fwrev}=="0x0"
ATTRS{hwrev}=="0x1"
ATTRS{manfid}=="0x000074"
ATTRS{name}=="SDC  "
ATTRS{oemid}=="0x4a45"
ATTRS{serial}=="0x000001c1"
ATTRS{type}=="SD"

looking at parent device '/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0':
KERNELS=="mmc0"
SUBSYSTEMS=="mmc_host"
DRIVERS==""

looking at parent device '/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0':
KERNELS=="0000:0d:00.0"
SUBSYSTEMS=="pci"
DRIVERS=="sdhci-pci"
ATTRS{vendor}=="0x1180"
ATTRS{device}=="0xe822"
ATTRS{subsystem_vendor}=="0x17aa"
ATTRS{subsystem_device}=="0x2133"
ATTRS{class}=="0x080500"
ATTRS{irq}=="16"
ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f"
ATTRS{local_cpulist}=="0-3"
ATTRS{numa_node}=="-1"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{enable}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""

looking at parent device '/devices/pci0000:00/0000:00:1c.4':
KERNELS=="0000:00:1c.4"
SUBSYSTEMS=="pci"
DRIVERS=="pcieport"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x3b4a"
ATTRS{subsystem_vendor}=="0x17aa"
ATTRS{subsystem_device}=="0x2164"
ATTRS{class}=="0x060400"
ATTRS{irq}=="20"
ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f"
ATTRS{local_cpulist}=="0-3"
ATTRS{numa_node}=="-1"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{enable}=="2"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}=="1"

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""

Dakujem za akukolvek pomoc.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.11.2011 21:31 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Udev pravidla
Odpovědět | | Sbalit | Link | Blokovat | Admin

Takze, to pravidlo je v poriadku v tomto tvare:

ACTION=="add", SUBSYSTEMS=="mmc", ATTRS{manfid}=="0x000074", ATTRS{oemid}=="0x4a45", ATTRS{serial}=="0x000001c1", ATTRS{type}=="SD", RUN+="/bin/mount -t vfat /dev/%k /media/sdcard_camcorder -o defaults,users,noexec,noatime,iocharset=iso8859-1"

Dve chyby tam boli:

1. Pre porovnanie hodnot sa pouziva == a nie =, co som pouzil ( najdene v logoch, konkretne /var/log/daemon)

2. %k je sice spravne, ale pre celu cestu treba /dev/%k (udevadm test /cesta/zariadeniu)

 

Tak este ak by bol niekto schopny alebo skor ochotny zodpovedat otazku pri akcii odstranit. Dakujem.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.