Охуенно, теперь я все понял, и да, это не проблема с чтением файла
Охуенно, теперь я все понял, и да, это не проблема с чтением файла
это та самая мега-фича удава по однозначному именованию сетевых интерфейсов?
P: /devices/pci0000:00/0000:00:04.0/0000:02:00.0/net/eth0
E: DEVPATH=/devices/pci0000:00/0000:00:04.0/0000:02:00.0/net/eth0
E: ID_BUS=pci
E: ID_MODEL_ID=0x8168
E: ID_NET_NAME_MAC=enxc86000d9d470
E: ID_NET_NAME_PATH=enp2s0
E: ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_PRODUCT_FROM_DATABASE=P8P67 and other motherboards
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_VENDOR_ID=0x10ec
E: IFINDEX=2
E: INTERFACE=eth0
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eth0
E: TAGS=:systemd:
E: USEC_INITIALIZED=163650
#!/bin/sh
export DISPLAY=:0
su l29ah ~l29ah/bin/keyboard-setup
EOF
l29ah-l300 ~ ∞ chmod +x /usr/local/sbin/hotplug
l29ah-l300 ~ ∞ echo /usr/local/sbin/hotplug > /proc/sys/kernel/hotplug
-создает директорию для точки монтирования в /mnt;
-монтирует туда usb-накопитель, проверяется на всякий случай vfat или ntfs, остальные варианты оставил на автоопределение;
-создает симлинк в /media;
-после отсоединения накопителя симлинк в /media и директория в /mnt удаляются;
Вот сам скрипт, что бы не забыть, ну и может кому-то поможет.
#make dir 4 mount point
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", ENV{mount_point}="/mnt/%k", RUN+="/bin/mkdir -p %E{mount_point}"
#determine mount options
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", ENV{mount_options}="noatime,noauto,users,gid=100,umask=002,utf8"
#look for fs and mount it
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE dev%k", RESULT=="vfat", RUN+="/bin/mount -o %E{mount_options} -t vfat dev%k mnt%k"
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE dev%k", RESULT=="ntfs", RUN+="/bin/mount -o %E{mount_options} -t fuseblk dev%k mnt%k"
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE dev%k", RESULT!="vfat|ntfs", RUN+="/bin/mount -o %E{mount_options} -t auto dev%k mnt%k"
#get label of device and make symbolic link in /media
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", PROGRAM=="/sbin/blkid -o value -s LABEL dev%k", ENV{dir_name}="%c"
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", PROGRAM=="/usr/bin/basename '%E{dir_name}'", RESULT!="?*", ENV{dir_name}="usb-%k"
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", RUN+="/bin/ln -s mnt%k media%E{dir_name}"
#umount when device was removed
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="remove", RUN+="/bin/umount -l mnt%k", RUN+="/bin/rm media%E{dir_name}", RUN+="/bin/rmdir mnt%k"
sudo nano /etc/udev/rules.d/40-irda-utils.rules:
SUBSYSTEM=="net", SUBSYSTEMS=="usb", ACTION=="add", ATTR{type}=="783", RUN+="/sbin/start-stop-daemon --start --quiet --pidfile /var/run/irattach.pid --startas /usr/sbin/irattach — $env{INTERFACE} -s"
SUBSYSTEM=="net", SUBSYSTEMS=="usb", ACTION=="remove", KERNEL=="irda*", RUN+="/sbin/start-stop-daemon --stop --quiet --oknodo --name irattach --pidfile /var/run/irattach.pid"
1) узнаём необходимый путь устройства порта по имени устройства диска,
например подключённый диск на нужном SATA порту виден как /dev/sdd:
#> udevadm info --query=path --name=sdd
ответ увидим следующий: /devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdd
2) прописываем новое udev правило /etc/udev.d/rules/80-removable-sata-ports.rules:
DEVPATH=="/devices/pci0000:00/0000:00:11.0/host3/*" ENV{UDISKS_SYSTEM_INTERNAL}="0"
которое утстанавливает переменную UDISKS_SYSTEM_INTERNAL=0 для всех устройств на этом порту
3) перечитываем правила:
#> udevadm control --reload-rules
Готово. Теперь возможно автомонтирование для всех дисков на 3м SATA порту.
Аналогичным образом можно разрешить автомонтирование только определённых дисков
на всех портах, главное указать для нужного устройства переменную
UDISKS_SYSTEM_INTERNAL=0
KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="video%n", GROUP="video"Но /dev/video0 не появляется.
В логах есть
creating symlink '/dev/video0' to 'v4l/video0'Если поменять в конфиге на video1%n, то всё работает, /dev/video10 появляется.
removed kernel created node '/dev/video0'
Как его отучить удалять свой же симлинк?
#
# rules for eZ430-Chronos wireless dongle & debugger
#
# dongle
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a6", MODE="0660", GROUP="plugdev"
SUBSYSTEM=="tty", ACTION == "add", ENV{ID_VENDOR}=="Texas_Instruments", ENV{ID_MODEL}=="CC1111_USB_CDC", SYMLINK += "ez430chronos"
# debugger
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0660", GROUP="plugdev"
Это я просто забыл перегрузиться, 37-е ядро и 164-й udev. Флешечки монтируются.
$ dmesg | tail
usb 1-2: new high speed USB device using ehci_hcd and address 3
usb 1-2: USB disconnect, address 3
usb 1-2: new high speed USB device using ehci_hcd and address 4
usb 1-2: USB disconnect, address 4
usb 1-2: new high speed USB device using ehci_hcd and address 5
usb 1-2: USB disconnect, address 5
usb 1-2: new high speed USB device using ehci_hcd and address 6
usb 1-2: USB disconnect, address 6
usb 1-2: new high speed USB device using ehci_hcd and address 7
usb 1-3: new high speed USB device using ehci_hcd and address 8
Ну, там вклоючал,выключал фотик, флешечку воткнул. Все есть, вродѣ правильно же?
$ udevadm monitor
monitor will print the received events for:
UDEV — the event which udev sends out after rule processing
KERNEL — the kernel uevent
KERNEL[1294567938.420351] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
KERNEL[1294567938.420430] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
UDEV [1294567938.421495] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
UDEV [1294567938.431959] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
KERNEL[1294567948.229960] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
KERNEL[1294567948.230241] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
UDEV [1294567948.250372] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
UDEV [1294567948.279921] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
KERNEL[1294568073.547831] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3 (usb)
KERNEL[1294568073.548202] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0 (usb)
UDEV [1294568073.568298] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3 (usb)
UDEV [1294568073.598658] add /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0 (usb)
Почему же /dev/sd* не появляются?
а еще говорят, что арчик не глюкодром.
=udev-150CONFIG_SYSFS_DEPRECATED_V2 не нужен
General setup -> [ ] enable deprecated sysfs features to support old userspace tools
udev-160 не монтирует при старте ничего, кроме / для системы нет винтов в принципе.
udev-146 не дружит с xorg-1.9.2, в иксах не работают ни клава ни мышь.
по мотивам #1023574 и совместного мозгового штурма c камрадом @muhas
результат: hatred.homelinux.net и более детальный поcт: groups.google.com
А файл /root/usb не создается при втыкании мопеда. ЧЯДНТ?
Хотел монтирование флешек Udev'ом прикрутить.