[Решено] udev + USB Flash - как поменять имя sda (udev не работает)

Автор Boris888, 08 октября 2016, 20:56:26

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Boris888

есть флешка sda, как поменять её имя в системе, например на sdd, т.к. после подключения USB модема имя само меняется на sdb

ls /dev | grep sd
sda

lsusb -v | grep -A 5 Vendor
ответ
idVendor           0x0951 Kingston Technology
  idProduct          0x1666
  bcdDevice            1.00
  iManufacturer           1 Kingston
  iProduct                2 DataTraveler 3.0
  iSerial                 3 F46D04613D14BEB199310423

в каталоге
/etc/udev/rules.d
создал правило с названием
8-usbstick.rules
Содержимое файла
KERNEL=="sd*", ATTRS{idVendor}=="0x0951", ATTRS{idProduct}=="0x1666" SYMLINK+="/dev/sdd%n"

Пробовал пыполнить
udevadm control --reload-rules
потом перезагружался
ничего не помогает

ls /dev | grep sd
ответ снова
sda

vadd

Скорее всего надо задавать через uuid
Вот как здесь например
http://forum.runtu.org/index.php?topic=1431.0

Boris888

#2
это не подходит для Debian. мне нужен именно для udev !
я пробовал переименовать СОМ-порт ttyUSB0

SUBSYSTEMS=="usb", ATTRS{ID_SERIAL}=="1a86_USB2.0-Serial", KERNEL=="ttyUSB*", SYMLINK+="pilot"
тоже не работает.
получается что не работает ни одно правило UDEV
сам UDEV запущен !
root@raspberrypi:~# /etc/init.d/udev status
[ ok ] udevd is running.

qupl

Boris888, жестких дисков в системе нет ? почему флешка первая?
при подключенной флешке
udevadm info -a -n /dev/sda
и последить через udevadm monitor  какие события происходят при ее подключении.

арч-вики

vadd

#4
Цитата: Boris888 от 09 октября 2016, 19:34:51это не подходит для Debian.

UUID в дебиане никто не отменял:

https://wiki.debian.org/ru/Part-UUID
http://unixforum.org/index.php?showtopic=116279

PS. У вас распберри?  там вроде достаточно старенькое ядро и могут быть свои нюансы

Boris888

#5
жестких дисков в системе нет, это Raspberry там загрузка идет с SD флешки
Вот то что вы просили

udevadm info -a -n /dev/sda

Открыть содержимое (спойлер)
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/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host1/target1:0:0/1:0:0:0/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="30728832"
    ATTR{stat}=="       1        0        8       30        0        0        0        0        0       30       30"
    ATTR{range}=="16"
    ATTR{discard_alignment}=="0"
    ATTR{ext_range}=="256"
    ATTR{alignment_offset}=="0"
    ATTR{inflight}=="       0        0"
    ATTR{removable}=="1"
    ATTR{capability}=="51"

  looking at parent device '/devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host1/target1:0:0/1:0:0:0':
    KERNELS=="1:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{rev}=="PMAP"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="7"
    ATTRS{model}=="DataTraveler 3.0"
    ATTRS{state}=="running"
    ATTRS{queue_type}=="none"
    ATTRS{iodone_cnt}=="0x12"
    ATTRS{iorequest_cnt}=="0x12"
    ATTRS{device_busy}=="0"
    ATTRS{evt_capacity_change_reported}=="0"
    ATTRS{timeout}=="30"
    ATTRS{evt_media_change}=="0"
    ATTRS{max_sectors}=="240"
    ATTRS{ioerr_cnt}=="0x2"
    ATTRS{queue_depth}=="1"
    ATTRS{vendor}=="Kingston"
    ATTRS{evt_soft_threshold_reached}=="0"
    ATTRS{device_blocked}=="0"
    ATTRS{evt_mode_parameter_change_reported}=="0"
    ATTRS{evt_lun_change_reported}=="0"
    ATTRS{evt_inquiry_change_reported}=="0"
    ATTRS{iocounterbits}=="32"
    ATTRS{eh_timeout}=="10"

  looking at parent device '/devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host1/target1:0:0':
    KERNELS=="target1:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host1':
    KERNELS=="host1"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0':
    KERNELS=="1-1.4:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb-storage"
    ATTRS{bInterfaceClass}=="08"
    ATTRS{bInterfaceSubClass}=="06"
    ATTRS{bInterfaceProtocol}=="50"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="00"

  looking at parent device '/devices/platform/soc/20980000.usb/usb1/1-1/1-1.4':
    KERNELS=="1-1.4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.4"
    ATTRS{idVendor}=="0951"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="13"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="300mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0100"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="F46D04613D14BEB199310423"
    ATTRS{version}==" 2.10"
    ATTRS{urbnum}=="158"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Kingston"
    ATTRS{removable}=="removable"
    ATTRS{idProduct}=="1666"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="DataTraveler 3.0"

  looking at parent device '/devices/platform/soc/20980000.usb/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="02"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="0424"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="2mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="5"
    ATTRS{bcdDevice}=="0200"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="237"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="9514"
    ATTRS{bDeviceClass}=="09"

  looking at parent device '/devices/platform/soc/20980000.usb/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="1"
    ATTRS{bcdDevice}=="0401"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="20980000.usb"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="25"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 4.1.7+ dwc_otg_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0002"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="DWC OTG Controller"

  looking at parent device '/devices/platform/soc/20980000.usb':
    KERNELS=="20980000.usb"
    SUBSYSTEMS=="platform"
    DRIVERS=="dwc_otg"
    ATTRS{hnp}=="HstNegScs = 0x0"
    ATTRS{srp}=="SesReqScs = 0x1"
    ATTRS{regvalue}=="invalid offset"
    ATTRS{hsic_connect}=="HSIC Connect = 0x1"
    ATTRS{guid}=="GUID = 0x2708a000"
    ATTRS{mode}=="Mode = 0x1"
    ATTRS{srpcapable}=="SRPCapable = 0x1"
    ATTRS{regdump}=="Register Dump"
    ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
    ATTRS{ggpio}=="GGPIO = 0x00000000"
    ATTRS{hprt0}=="HPRT0 = 0x00001005"
    ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 1470 msecs (147 jiffies)"
    ATTRS{driver_override}=="(null)"
    ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
    ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
    ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
    ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
    ATTRS{busconnected}=="Bus Connected = 0x1"
    ATTRS{hcddump}=="HCD Dump"
    ATTRS{gotgctl}=="GOTGCTL = 0x001c0001"
    ATTRS{spramdump}=="SPRAM Dump"
    ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306"
    ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a"
    ATTRS{gusbcfg}=="GUSBCFG = 0x20001700"
    ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406"
    ATTRS{devspeed}=="Device Speed = 0x0"
    ATTRS{fr_interval}=="Frame Interval = 0x1d4c"
    ATTRS{rem_wakeup_pwrdn}==""
    ATTRS{bussuspend}=="Bus Suspend = 0x0"
    ATTRS{buspower}=="Bus Power = 0x1"
    ATTRS{hnpcapable}=="HNPCapable = 0x1"
    ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 3100 msecs (310 jiffies)"
    ATTRS{enumspeed}=="Device Enumeration Speed = 0x1"
    ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0"
    ATTRS{regoffset}=="0xffffffff"

  looking at parent device '/devices/platform/soc':
    KERNELS=="soc"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
[свернуть]
вынул флешку, набрал комманду
root@raspberrypi:~# udevadm monitor
вставил флешку
Открыть содержимое (спойлер)
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[54833.161002] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
KERNEL[54833.170618] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
KERNEL[54833.182326] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2 (scsi)
KERNEL[54833.182575] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/scsi_host/host2 (scsi_host)
UDEV  [54833.248231] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
UDEV  [54833.300757] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
UDEV  [54833.304547] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2 (scsi)
UDEV  [54833.323380] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/scsi_host/host2 (scsi_host)
KERNEL[54834.270827] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0 (scsi)
KERNEL[54834.271062] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0 (scsi)
KERNEL[54834.271232] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/scsi_disk/2:0:0:0 (                  scsi_disk)
UDEV  [54834.273772] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0 (scsi)
KERNEL[54834.276110] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/scsi_device/2:0:0:0                   (scsi_device)
KERNEL[54834.276983] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/scsi_generic/sg0 (s                  csi_generic)
KERNEL[54834.283935] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/bsg/2:0:0:0 (bsg)
UDEV  [54834.329940] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0 (scsi)
UDEV  [54834.342052] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/scsi_device/2:0:0:0                   (scsi_device)
UDEV  [54834.345221] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/scsi_disk/2:0:0:0 (                  scsi_disk)
UDEV  [54834.369865] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/bsg/2:0:0:0 (bsg)
UDEV  [54834.401699] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/scsi_generic/sg0 (s                  csi_generic)
KERNEL[54835.355646] add      /devices/virtual/bdi/8:0 (bdi)
UDEV  [54835.358911] add      /devices/virtual/bdi/8:0 (bdi)
KERNEL[54835.392382] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/block/sda (block)
UDEV  [54835.644870] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/host2/target2:0:0/2:0:0:0/block/sda (block)
[свернуть]

Cообщение объединено 10 Октябрь 2016, 11:46:37

Цитата: vadd от 10 октября 2016, 09:30:24UUID в дебиане никто не отменял:

я согласен что надо использовать UUID а как покажите !
я же выставил свой файл правил udev - который не работает

переименовать ttyUSB0 - я тоже не могу, потому и написал что не работает udev
вот такое правило тоже не работает
SUBSYSTEM==«tty», ATTRS{idVendor}==«1a86», ATTRS{idProduct}==«7523», SYMLINK+=«USB_A»,

qupl

KERNEL=="sd*", ATTRS{idVendor}=="0x0951", ATTRS{idProduct}=="0x1666" SYMLINK+="/dev/sdd%n"

выделенная часть id лишняя  и эти атрибуты видно только для подсистемы usb   (могу ошибаться)


Boris888

я пробовал без 0х
тоже самое получается
даже вот так не будет работать: (т.е. любая sd* должна превратиться в sdd1 )
KERNEL=="sd*", SYMLINK+="/dev/sdd%n"

vadd

#9
Вы непременно хотите работать с системными именами? Это тоже вроде как не совсем корректно.  Монтируйте модем и флэшку по uuid в fstab и работайте с точками монтирования.

Еще вариант - запретить модему монтироваться как флешка, чтобы работал в режиме "только модем"

Boris888

я зацепился за UDEV потому что, у меня подключено несколько Arduino (ttyUSBx) к моей Raspberry, они у меня путаются при случайном перезапуске (бывает редко - не чаще раз в месяц, из-за отключения электричества на даче) а моя программа по Крону открывает не тот COM-порт, в итоге при всех исправных устройствах, система управления светом и водой в целом не работает !
на сайте debian.org очень красиво все описано про UDEV с примерами, мне очень понравилось - но только ничего не работает.

а флешка меня добила написать "эту тему" потому что путается с USB-модемом и фото-архив перестает записываться.
c fstab  я не пробовал работать, щас попробую. но кажется там только диски можно поменять.

mrgoodvin

#11
Цитата: Boris888 от 10 октября 2016, 15:40:47
я пробовал без 0х
тоже самое получается
даже вот так не будет работать: (т.е. любая sd* должна превратиться в sdd1 )
KERNEL=="sd*", SYMLINK+="/dev/sdd%n"
Все верно, 0х не надо. И SYMLINK+="sdd%n", или относительные пути. Устройства и так появляются в /dev, иначе это уже не правильно.
KERNEL=="sd*", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1666", SYMLINK+="sdd%n"
Обычно достаточно набрать lsusb: как пример - Bus 007 Device 001: ID 1d6b:0002. Зеленым idVendor, синим - idProduct.

Boris888

#12
Спасибо. все получилось.
решение поставил SYMLINK+="sdd"
(вместо неработающего SYMLINK+="/dev/sdd%n")
полный вариант
KERNEL=="sd*", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1666", SYMLINK+="sdd"

только по команде
ls /dev | grep sd
ответ
sda
sdd
т.е. и старое осталось sda и новое sdd, но мне это не мешает монтирую я по новому имени sdd и все работает.
при вставлении модема: sda превращается в sdb - но мне это больше не мешает, т.к. sdd - осталось. и примонтирована флешка по sdd

и с COM-портом тоже работает ! вот так
KERNEL=="tty*", ACTION=="add", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="USB_CH340"
пробовал даже открывать этот новый COM-порт USB_CH340 в программе minicom
minicom -b 9600 -o -D /dev/USB_CH340

все работает. я за COM-порт обрадовался больше чем за флешку, теперь моя Raspberry не будет путать разные Arduino.