1

vb_ts3:~# cat /etc/udev/scripts/usb.sh
#! /bin/sh
#
# Mount Hotplug Device
#

. /etc/thinstation.env
. $TS_GLOBAL

# Run post scripts for appropriate action
run_scripts ()
{
    scriptdir=/etc/hotplug/scripts
    if [ -e $scriptdir/usb.$1 ] ; then
        (echo "`ls $scriptdir/usb.$1`") |
        while read script
        do
            $scriptdir/usb.$1/$script $devname
        done
    fi
}

devname=`basename $DEVNAME`

case $ACTION in
  add)

        if echo $devname | grep "/dev/sd$" > /dev/null ; then
            echo_log "We don't mount $devname directly"
            exit 0
        fi

#       add sync option to mount if set
        if [ "`make_caps $USB_STORAGE_SYNC`" == "OFF" ] ; then
            sync=""
        else
            sync="sync"
        fi

#       add any of the optional USB mount options if set
        options=""
        if [ -n $USB_MOUNT_OPTIONS ] ; then
            options="$USB_MOUNT_OPTIONS"
        fi

#       use a defined mount point directory
        mountdir="/mnt/usbdevice"        # default
        if [ -n "$USB_MOUNT_DIR" ] ; then
            mountdir=$USB_MOUNT_DIR
        fi
#       create the usbdevice mount point if it doen't exist
        if [ ! -e "$mountdir" ]; then
            mkdir $mountdir
        fi

#       get the volume info (including file system type and label
        blkid -o udev $DEVNAME > /tmp/volumeinfo
        . /tmp/volumeinfo
        rm /tmp/volumeinfo

#       default the label to the device name
        label=$devname
        if [ -n "$USB_MOUNT_USELABEL" ] ;then
            if [ "`make_caps $USB_MOUNT_USELABEL`" == "YES" ] ; then
#           if the user has selected to use the volume label use it (if it exists)
                if [ -n "$ID_FS_LABEL" ] ; then
                    label=$ID_FS_LABEL
                fi
#           if it has a value other than no, use it as the label if no volume label found
            elif [ "`make_caps $USB_MOUNT_USELABEL`" != "NO" ] ; then
                if [ -n "$ID_FS_LABEL" ] ; then
                    label=$ID_FS_LABEL
                else
                    label=$USB_MOUNT_USELABEL
                fi
            fi
        fi

        mountpoint=$mountdir/$label

#       cater for same labels etc., by adding a number suffix if it already exists
        let x=0
        testmountpoint=$mountpoint
        while [ -e ${testmountpoint} ]
        do
            let x=x+1
            testmountpoint=$mountpoint$x
        done
        if [ "$testmountpoint" != "$mountpoint" ] ; then
            mountpoint=$testmountpoint
        fi
        mkdir $mountpoint

#       use the found file system type for vfat & ntfs or if supermount is not loaded (supermount has issues with vfat & ntfs)
        case $ID_FS_TYPE in
        vfat|ntfs)
            mount -t $ID_FS_TYPE -o $sync,codepage=866,iocharset=utf8 $DEVNAME $mountpoint
            ;;
        *)
            if check_module supermount ; then
                mount -t supermount -o fs=auto,dev=$DEVNAME,--,$sync,codepage=866,iocharset=utf8 $mountpoint
            else
                # Without supermount we'll just see if the FSTYPE is correct
                mount -t $ID_FS_TYPE -o $sync,codepage=866,iocharset=utf8 $DEVNAME $mountpoint
            fi
            ;;
        esac
        ls -la $mountpoint

        if [ ! -e ~/.hotplug/${devname} ] ; then
            if [ ! -e ~/.hotplug ] ; then
                mkdir ~/.hotplug
            fi
            touch ~/.hotplug/${devname}
        fi
        echo "HOTPLUGMOUNTPOINT=$mountpoint" > ~/.hotplug/${devname}
        run_scripts $ACTION
  ;;
  remove)
        mountpoint="/mnt/usbdevice/${devname}"
        if [ -e ~/.hotplug/${devname} ] ; then
            . ~/.hotplug/${devname}
            mountpoint=$HOTPLUGMOUNTPOINT
        fi
        if [ -e ${mountpoint} ] ; then
            run_scripts $ACTION
            umount ${mountpoint}
            rmdir ${mountpoint}
        fi
        if [ -e ~/.hotplug/${devname} ] ; then
            rm ~/.hotplug/${devname}
        fi
  ;;
esac

exit 0

Я вместо переменной $options поставил iocharset=utf8,codepage=866. Не помогло ((
Когда скрипт отробатывает, то вот с такими параметрами

 Консоль:
/dev/sdb1 on /mnt/usbdevice/sdb1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Я если честно не знаю, может и не udev отвечает за флешку, хотя
 Консоль:
vb_ts3:~# ls -la /etc/udev/rules.d/
total 24
drwxr-xr-x    2 root     root             0 Mar 23 09:03 .
drwxr-xr-x    4 root     root             0 Mar 22 14:44 ..
-rw-rw-r--    1 1000     1000           191 Mar 22 14:37 00-vmwgfx.rules
-rw-rw-r--    1 1000     1000           392 Mar 22 14:37 50-modeset.rules
-rw-rw-r--    1 1000     1000            93 Mar 22 14:37 51-firmware.rules
-rw-r--r--    1 root     root          1060 Mar 22 14:44 60-pcmcia.rules
-rw-r--r--    1 root     root           482 Mar 23 09:03 70-persistent-net.rules
-rw-rw-r--    1 1000     1000          1218 Mar 22 14:37 99-udev.rule

 Консоль:
vb_ts3:~# cat /etc/udev/rules.d/99-udev.rules
# There are a number of modifiers that are allowed to be used in some of the
# fields.  See the udev man page for a full description of them.
#
# See the udev.rules.examples file for more examples of how to create rules
#


# Note you must use the RUN option if trying to use actual device in script

KERNEL=="fd[0-9]*",      SYMLINK=="floppy/%n",  RUN+="/etc/udev/scripts/floppy.sh"
KERNEL=="lp[0-9]*",      SYMLINK=="printers/%n"

#Usb Keys
#KERNEL=="sd*", ACTION=="add", SUBSYSTEM=="usb", RUN+="/etc/udev/scripts/usb.sh", OPTIONS="last_rule"
#KERNEL=="sd*", ACTION=="remove", RUN+="/etc/udev/scripts/usb.sh", OPTIONS="last_rule"

#Usb Cdrom
#KERNEL=="sr*", ACTION=="add", SUBSYSTEM=="usb", RUN+="/etc/udev/scripts/usbcd.sh"
#KERNEL=="sr*", ACTION=="remove", RUN+="/etc/udev/scripts/usbcd.sh"

#IDE Devices
ENV{DEVTYPE}=="partition", RUN+="/etc/udev/scripts/scsi.sh", OPTIONS="last_rule"
SUBSYSTEM=="block", ENV{ID_CDROM}=="1", ACTION=="add", RUN+="/bin/start-stop-daemon -S -x /bin/cddetect -p /var/run/cddetect -m -b &"
SUBSYSTEM=="block", ENV{ID_CDROM}=="1", ACTION=="change", RUN+="/etc/udev/scripts/scsi.sh", OPTIONS="last_rule"

SUBSYSTEM!="net", GOTO="net_end"
RUN+="/etc/udev/scripts/net.sh"
LABEL="net_end"

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

2

Меня смущает  что #Usb Keys закоментирован

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

3

--=XliN=--, чем вызвана необходимость написания собственного скрипта? Готовые решения не подходят?

Был, был и весь вышел...

4 (23.03.2012 12:35:28 отредактировано XliN)

Мне если честно, то фиалетово. Это так в системе сделано. Пытаюсь найти концы. Задача, примонтировать флешку с нужными мне параметрами. Можно обойдя средства системы. Естественно автомонтирование нужно.
Можно это как то сделать? Добавить например новый файл типа 10-usbmount.rules. Что туда написать и сработает ли он первее и не перемонтирует ли флешку система своими приблудами?
ОС грущится через PXE и основана на CRUX

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

5

Рекомендую »

Был, был и весь вышел...

6

--=XliN=-- пишет:

Добавить например новый файл типа 10-usbmount.rules. Что туда написать и сработает ли он первее и не перемонтирует ли флешку система своими приблудами?

У правил из /etc/udev/rules.d/ приоритет.

Гляньте для примера, у меня работало:
/etc/udev/rules.d/10-usb.rules

KERNEL!="sd[b-z][0-9]", GOTO="auto_mount_end"

IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -t auto -o rw,relatime,noexec,nodev,utf8 /dev/%k /media/%E{dir_name}"

ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

LABEL="auto_mount_end"
Был, был и весь вышел...

7

Добавлять программы в новый образ проблематично и муторно очень. ЧТо если я сделаю по этой хавтушке? http://ru.gentoo-wiki.com/wiki/HOWTO_Ud … 0%B5%D0%B9 Как думаете, получится?

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

8

--=XliN=--,  моё предыдущее сообщение тоже самое, только короче.  wink

Был, был и весь вышел...

9

Подскажи еще, как udev сказать чтобы он перечитал правила. Только что видел в гугле и потерял ((

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

10

--=XliN=-- пишет:

Подскажи еще, как udev сказать чтобы он перечитал правила. Только что видел в гугле и потерял ((

Так в данном случае достаточно создать новое правило и «перетыкнуть» флешку.

Был, был и весь вышел...

11

Ну дык получилось. Сейчас попробую этот файл впихнуть в образ и протестить!!! Ура товарищи. Ура!!

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

12

Есть косяк. Когда первый раз вставляю флешку - белеберда. Выдерну и повторно вставлю. Все гуд. Как можно отловить скрипт который лезет вперед?

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

13

--=XliN=--, в /etc/udev/rules.d/ «дублирующих» правил не осталось?

Был, был и весь вышел...

14

Lupo Alberto пишет:

в /etc/udev/rules.d/ «дублирующих» правил не осталось?

Остались, но на сколько я знаю udev берет первое и на нем останавливается. И дублирующее в 99

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

15

--=XliN=--, наверное, это так, если их функции идентичны.
Для «чистоты» эксперимента лучше оставить одно.
При загрузке системы флешка подключена?

Был, был и весь вышел...

16

Lupo Alberto пишет:

При загрузке системы флешка подключена?

нет. Включаю после старта. Сейчас переделал. Пробую.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

17

Впервый не верно, потом повторно

 Консоль:
/dev/sdb1 on /mnt/usbhd-sdb1 type vfat (rw,nodev,noexec,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/sdb1 on /mnt/usbdevice/sdb1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

Два раза получается

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

18 (23.03.2012 14:09:48 отредактировано XliN)

Может удалить сам скрипт /etc/udev/scripts/usb.sh

UPD:
Удалил, он и без него в автомате лепет два раза.

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

19

Запустите команду и покажите вывод

udevadm test $(udevadm info -q path -n /dev/sdc1)

заменив, разумеется, /dev/sdc1 на устройство, соответствующее вашим реалиям.

Был, был и весь вышел...

20

Вот пожалуйста

+ открыть спойлер

run_command: calling: test
adm_test: version 181
This program is for debugging only, it does not run any program,
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

builtin_kmod_init: load module index
add_matching_files: unable to open '/run/udev/rules.d': No such file or directory
parse_file: reading '/etc/udev/rules.d/00-vmwgfx.rules' as rules file
parse_file: reading '/etc/udev/rules.d/10-usb.rules' as rules file
parse_file: reading '/lib/udev/rules.d/42-qemu-usb.rules' as rules file
parse_file: reading '/etc/udev/rules.d/50-modeset.rules' as rules file
parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file
parse_file: reading '/etc/udev/rules.d/51-firmware.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file
parse_file: reading '/lib/udev/rules.d/61-accelerometer.rules' as rules file
parse_file: reading '/lib/udev/rules.d/69-xorg-vmmouse.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-probe_mtd.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules file
parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file
parse_file: reading '/etc/udev/rules.d/99-udev.rules' as rules file
udev_rules_new: rules use 19404 bytes tokens (1617 * 12 bytes), 13823 bytes buffer
udev_rules_new: temporary index used 13820 bytes (691 * 20 bytes)
udev_device_new_from_syspath: device 0x8a6cb90 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1'
udev_device_new_from_syspath: device 0x8a6cfc0 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1'
udev_device_read_db: device 0x8a6cfc0 filled with db file data
udev_rules_apply_to_event: IMPORT '/sbin/blkid -o udev -p /dev/sdb1' /etc/udev/rules.d/10-usb.rules:3
udev_event_spawn: starting '/sbin/blkid -o udev -p /dev/sdb1'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_FS_UUID=2CD9-6190'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_FS_UUID_ENC=2CD9-6190'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_FS_VERSION=FAT32'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_FS_TYPE=vfat'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_FS_USAGE=filesystem'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_PART_ENTRY_SCHEME=dos'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_PART_ENTRY_TYPE=0xb'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_PART_ENTRY_FLAGS=0x80'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_PART_ENTRY_NUMBER=1'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_PART_ENTRY_OFFSET=63'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_PART_ENTRY_SIZE=15631182'
spawn_read: '/sbin/blkid -o udev -p /dev/sdb1'(out) 'ID_PART_ENTRY_DISK=8:16'
spawn_wait: '/sbin/blkid -o udev -p /dev/sdb1' [4927] exit with return code 0
udev_rules_apply_to_event: RUN '/bin/mkdir -p /mnt/%E{dir_name}' /etc/udev/rules.d/10-usb.rules:7
udev_rules_apply_to_event: RUN '/bin/mount -t auto -o rw,relatime,noexec,nodev,utf8 /dev/%k /mnt/%E{dir_name}' /etc/udev/rules.d/10-usb.rules:7
udev_rules_apply_to_event: GROUP 105 /lib/udev/rules.d/50-udev-default.rules:67
udev_device_new_from_syspath: device 0x8a6d318 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3/target3:0:0/3:0:0:0/block/sdb'
udev_device_read_db: device 0x8a6d318 filled with db file data
udev_rules_apply_to_event: LINK 'disk/by-id/usb-_silicon-power_10120615E6AC0E001147003E-0:0-part1' /lib/udev/rules.d/60-persistent-storage.rules:45
udev_device_new_from_syspath: device 0x8a737a8 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3/target3:0:0/3:0:0:0'
udev_device_new_from_syspath: device 0x8a73c28 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3/target3:0:0'
udev_device_new_from_syspath: device 0x8a74098 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3'
udev_device_new_from_syspath: device 0x8a744f0 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0'
udev_device_new_from_syspath: device 0x8a74940 has devpath '/devices/pci0000:00/0000:00:10.4/usb3/3-6'
udev_device_new_from_syspath: device 0x8a74d80 has devpath '/devices/pci0000:00/0000:00:10.4/usb3'
udev_device_new_from_syspath: device 0x8a751b8 has devpath '/devices/pci0000:00/0000:00:10.4'
udev_device_new_from_syspath: device 0x8a755f0 has devpath '/devices/pci0000:00'
udev_rules_apply_to_event: LINK 'disk/by-path/pci-0000:00:10.4-usb-0:6:1.0-scsi-0:0:0:0-part1' /lib/udev/rules.d/60-persistent-storage.rules:63
udev_rules_apply_to_event: IMPORT builtin 'blkid' /lib/udev/rules.d/60-persistent-storage.rules:76
builtin_blkid: probe /dev/sdb1 raid offset=0
udev_builtin_add_property: ID_FS_UUID=2CD9-6190
udev_builtin_add_property: ID_FS_UUID_ENC=2CD9-6190
udev_builtin_add_property: ID_FS_VERSION=FAT32
udev_builtin_add_property: ID_FS_TYPE=vfat
udev_builtin_add_property: ID_FS_USAGE=filesystem
udev_builtin_add_property: ID_PART_ENTRY_SCHEME=dos
udev_builtin_add_property: ID_PART_ENTRY_TYPE=0xb
udev_builtin_add_property: ID_PART_ENTRY_FLAGS=0x80
udev_builtin_add_property: ID_PART_ENTRY_NUMBER=1
udev_builtin_add_property: ID_PART_ENTRY_OFFSET=63
udev_builtin_add_property: ID_PART_ENTRY_SIZE=15631182
udev_builtin_add_property: ID_PART_ENTRY_DISK=8:16
udev_rules_apply_to_event: LINK 'disk/by-uuid/2CD9-6190' /lib/udev/rules.d/60-persistent-storage.rules:82
udev_rules_apply_to_event: RUN '/etc/udev/scripts/scsi.sh' /etc/udev/rules.d/99-udev.rules:22
udev_node_add: handling device node '/dev/sdb1', devnum=b8:17, mode=0660, uid=0, gid=105
node_fixup: preserve permissions /dev/sdb1, 060660, uid=0, gid=105
node_symlink: preserve already existing symlink '/dev/block/8:17' to '../sdb1'
link_find_prioritized: found 'b8:17' claiming '/run/udev/links/disk\x2fby-id\x2fusb-_silicon-power_10120615E6AC0E001147003E-0:0-part1'
link_update: creating link '/dev/disk/by-id/usb-_silicon-power_10120615E6AC0E001147003E-0:0-part1' to '/dev/sdb1'
node_symlink: preserve already existing symlink '/dev/disk/by-id/usb-_silicon-power_10120615E6AC0E001147003E-0:0-part1' to '../../sdb1'
link_find_prioritized: found 'b8:17' claiming '/run/udev/links/disk\x2fby-path\x2fpci-0000:00:10.4-usb-0:6:1.0-scsi-0:0:0:0-part1'
link_update: creating link '/dev/disk/by-path/pci-0000:00:10.4-usb-0:6:1.0-scsi-0:0:0:0-part1' to '/dev/sdb1'
node_symlink: preserve already existing symlink '/dev/disk/by-path/pci-0000:00:10.4-usb-0:6:1.0-scsi-0:0:0:0-part1' to '../../sdb1'
link_find_prioritized: found 'b8:17' claiming '/run/udev/links/disk\x2fby-uuid\x2f2CD9-6190'
link_update: creating link '/dev/disk/by-uuid/2CD9-6190' to '/dev/sdb1'
node_symlink: preserve already existing symlink '/dev/disk/by-uuid/2CD9-6190' to '../../sdb1'
udev_device_update_db: created db file '/run/udev/data/b8:17' for '/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1'
ACTION=add
DEVLINKS=/dev/disk/by-id/usb-_silicon-power_10120615E6AC0E001147003E-0:0-part1 /dev/disk/by-path/pci-0000:00:10.4-usb-0:6:1.0-scsi-0:0:0:0-part1 /dev/disk/by-uuid/2CD9-6190
DEVNAME=/dev/sdb1
DEVPATH=/devices/pci0000:00/0000:00:10.4/usb3/3-6/3-6:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1
DEVTYPE=partition
ID_BUS=usb
ID_FS_TYPE=vfat
ID_FS_USAGE=filesystem
ID_FS_UUID=2CD9-6190
ID_FS_UUID_ENC=2CD9-6190
ID_FS_VERSION=FAT32
ID_INSTANCE=0:0
ID_MODEL=silicon-power
ID_MODEL_ENC=silicon-power\x20\x20\x20
ID_MODEL_ID=3600
ID_PART_ENTRY_DISK=8:16
ID_PART_ENTRY_FLAGS=0x80
ID_PART_ENTRY_NUMBER=1
ID_PART_ENTRY_OFFSET=63
ID_PART_ENTRY_SCHEME=dos
ID_PART_ENTRY_SIZE=15631182
ID_PART_ENTRY_TYPE=0xb
ID_PART_TABLE_TYPE=dos
ID_PATH=pci-0000:00:10.4-usb-0:6:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_10_4-usb-0_6_1_0-scsi-0_0_0_0
ID_REVISION=PMAP
ID_SERIAL=_silicon-power_10120615E6AC0E001147003E-0:0
ID_SERIAL_SHORT=10120615E6AC0E001147003E
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR_ENC=\x20\x20\x20\x20\x20\x20\x20\x20
ID_VENDOR_ID=13fe
MAJOR=8
MINOR=17
SUBSYSTEM=block
UDEV_LOG=6
USEC_INITIALIZED=322625162
dir_name=usbhd-sdb1
run: '/bin/mkdir -p /mnt/usbhd-sdb1'
run: '/bin/mount -t auto -o rw,relatime,noexec,nodev,utf8 /dev/sdb1 /mnt/usbhd-sdb1'
run: '/etc/udev/scripts/scsi.sh'
builtin_kmod_exit: unload module index

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

21

--=XliN=-- пишет:

run: '/etc/udev/scripts/scsi.sh'

Что это за скрипт и какому пакету принадлежит?

Был, был и весь вышел...

22

Получается вот тут еще лезут правила /lib/udev/rules.d/60-persistent-storage.rules

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

23

--=XliN=-- пишет:

add_matching_files: unable to open '/run/udev/rules.d': No such file or directory

Не думаю, что это принципиально, но попробуйте создать соответствующую директорию:

mkdir /run

...и перегрузиться либо перезапустить сервис udevd.

Был, был и весь вышел...

24

http://linuxforum.ru/viewtopic.php?pid=262108#p262108

Был, был и весь вышел...

25

--=XliN=-- пишет:

Получается вот тут еще лезут правила /lib/udev/rules.d/60-persistent-storage.rules

Покажите этот файл.

Был, был и весь вышел...

26

--=XliN=-- пишет:

udev_rules_apply_to_event: RUN '/etc/udev/scripts/scsi.sh' /etc/udev/rules.d/99-udev.rules:22

А если это правило убрать?

Был, был и весь вышел...

27

вот.. Две строчки я закаментил касаемые usb. Стало еще хуже, но опять же русские видны только после второго раза

+ открыть спойлер

# do not edit this file, it will be overwritten on update

# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path}
# scheme based on "Linux persistent device names", 2004, Hannes Reinecke <hare@suse.de>

# forward scsi device event to corresponding block device
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change"

ACTION=="remove", GOTO="persistent_storage_end"

# enable in-kernel media-presence polling
ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_poll_msecs}=="0", ATTR{parameters/events_dfl_poll_msecs}="2000"

SUBSYSTEM!="block", GOTO="persistent_storage_end"

# skip rules for inappropriate block devices
KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*", GOTO="persistent_storage_end"

# ignore partitions that span the entire disk
TEST=="whole_disk", GOTO="persistent_storage_end"

# for partitions import parent information
ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*"

# virtio-blk
KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}"
KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n"

# ATA devices with their own "ata" kernel subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="ata", IMPORT{program}="ata_id --export $devnode"
# ATA devices using the "scsi" subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode"
# ATA/ATAPI devices (SPC-3 or later) using the "scsi" subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $devnode"

# Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures)
#KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode"
# Otherwise fall back to using usb_id for USB devices
#KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

# scsi devices
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi"
KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="cciss"
KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"

# firewire
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"

# scsi compat links for ATA devices
KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"

KERNEL=="mmcblk[0-9]", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ATTRS{serial}=="?*", ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}"
KERNEL=="mmcblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}-part%n"
KERNEL=="mspblk[0-9]", SUBSYSTEMS=="memstick", ATTRS{name}=="?*", ATTRS{serial}=="?*", ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}"
KERNEL=="mspblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}-part%n"

# by-path (parent device path)
ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id"
ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}"
ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"

# skip unpartitioned removable media devices from drivers which do not send "change" events
ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"

# probe filesystem metadata of optical drives which have a media inserted
KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", \
  IMPORT{builtin}="blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}"
# single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET
KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \
  IMPORT{builtin}="blkid --noraid"

# probe filesystem metadata of disks
KERNEL!="sr*", IMPORT{builtin}="blkid"

# watch metadata changes by tools closing the device after writing
KERNEL!="sr*", OPTIONS+="watch"

# by-label/by-uuid links (filesystem metadata)
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"

# by-id (World Wide Name)
ENV{DEVTYPE}=="disk", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}"
ENV{DEVTYPE}=="partition", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}-part%n"

# by-partlabel/by-partuuid links (partition metadata)
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}"
ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK+="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}"

LABEL="persistent_storage_end"

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

28

Что это за файлы и откуда они — /etc/udev/scripts/scsi.sh,  /etc/udev/rules.d/99-udev.rules?

--=XliN=-- пишет:

Две строчки я закаментил касаемые usb.

Нет, не сто́ит редактировать системные файлы. Проблема в файлах из каталога /etc/udev/, IMHO.

Был, был и весь вышел...

29 (23.03.2012 15:31:00 отредактировано XliN)

vb_ts3:~# cat  /etc/udev/rules.d/99-udev.rules

# There are a number of modifiers that are allowed to be used in some of the
# fields.  See the udev man page for a full description of them.
#
# See the udev.rules.examples file for more examples of how to create rules
#


# Note you must use the RUN option if trying to use actual device in script

KERNEL=="fd[0-9]*",      SYMLINK=="floppy/%n",  RUN+="/etc/udev/scripts/floppy.sh"
KERNEL=="lp[0-9]*",      SYMLINK=="printers/%n"

#Usb Keys
#KERNEL=="sd*", ACTION=="add", SUBSYSTEM=="usb", RUN+="/etc/udev/scripts/usb.sh", OPTIONS="last_rule"
#KERNEL=="sd*", ACTION=="remove", RUN+="/etc/udev/scripts/usb.sh", OPTIONS="last_rule"

#Usb Cdrom
#KERNEL=="sr*", ACTION=="add", SUBSYSTEM=="usb", RUN+="/etc/udev/scripts/usbcd.sh"
#KERNEL=="sr*", ACTION=="remove", RUN+="/etc/udev/scripts/usbcd.sh"

#IDE Devices
ENV{DEVTYPE}=="partition", RUN+="/etc/udev/scripts/scsi.sh", OPTIONS="last_rule"
SUBSYSTEM=="block", ENV{ID_CDROM}=="1", ACTION=="add", RUN+="/bin/start-stop-daemon -S -x /bin/cddetect -p /var/run/cddetect -m -b &"
SUBSYSTEM=="block", ENV{ID_CDROM}=="1", ACTION=="change", RUN+="/etc/udev/scripts/scsi.sh", OPTIONS="last_rule"

SUBSYSTEM!="net", GOTO="net_end"
RUN+="/etc/udev/scripts/net.sh"
LABEL="net_end"

tb_ts3:~# cat /etc/udev/scripts/scsi.sh

#! /bin/sh
#
# Mount Hotplug Device
#

echo "1 $DEVPATH" >> /var/log/scsi
echo "2 $ACTION" >> /var/log/scsi
echo "3 $ID_BUS" >> /var/log/scsi
echo "4 $ID_FS_TYPE" >> /var/log/scsi
echo "4 $ID_CDROM_MEDIA" >> /var/log/scsi

devpath=`basename $DEVPATH`
name=`echo $devpath | sed -e "s/[0-9]*//g"`
node=`echo $devpath | sed -e "s/[a-z]*//g"`
TYPE=`echo $name | cut -c 1-2`

no_mount()
{
        for i in gparted parted fdisk cfdisk ; do
                if [ -n "`pidof $i`" ] ; then
                        return 0
                fi
        done
        if [ -e /tmp/nomount ] ; then
                return 0
        else
                return 1
        fi
}

mounted()
{
        if [ "`cat /proc/mounts |grep -c -e $1`" -ne "0" ]; then
                return 0
        else
                return 1
        fi
}

if [ "$ACTION" == "remove" ] || [ "$TYPE" == "sr" ] && [ "$ID_CDROM_MEDIA" != "1" ]; then
        if [ "$ID_FS_TYPE" == "swap" ]; then
                swapoff /dev/$devpath
                exit 0
        else
                while mounted /dev/$devpath ; do
                        mtpath=`cat /proc/mounts |grep -e /dev/$devpath |tail -n 1 |cut -d ' ' -f 2 |grep -e /mnt`
                        umount -n -f /dev/$devpath
                        if [ -n "$mtpath" ] ; then
                                rmdir $mtpath
                        fi
                done
                exit 0
        fi
elif no_mount ;then
        exit 0
elif [ "$ACTION" == "add" ] && [ "$ID_FS_TYPE" == "swap" ]; then
        swapon /dev/$devpath
        exit 0
fi

. /etc/thinstation.env
. $TS_GLOBAL

if ! check_module $ID_FS_TYPE ; then
        modprobe $ID_FS_TYPE
fi

do_mounts()
{
        mkdir -p $mtpath
        if [ -n "$mount_opts" ] ; then
                MT_CMD="mount -t $ID_FS_TYPE -o $mount_opts /dev/$devpath $mtpath"
        else
                MT_CMD="mount -t $ID_FS_TYPE /dev/$devpath $mtpath"
        fi
        echo "5 $MT_CMD" >> /var/log/scsi
        $MT_CMD 2>> /var/log/scsi
        index=0
        while [ -n "`eval echo '$BIND_MOUNT'$index`" ] ; do
                MOUNT=`eval echo '$BIND_MOUNT'$index`
                FS_LABEL=`echo "$MOUNT" | cut -d ":" -f1`
                MT_PATH=`echo "$MOUNT" | cut -d ":" -f2`
                if [ "$ID_FS_LABEL" == "$FS_LABEL" ]; then
                        mkdir -p $MT_PATH
                        mount --bind $mtpath $MT_PATH
                        echo "6 $mtpath $MT_PATH" >> /var/log/scsi
                fi
                let index=index+1
        done
}

if [ "$TYPE" == "sr" ] && [ "$ID_CDROM_MEDIA" == "1" ]; then
        if [ -e /proc/sys/dev/cdrom ] ; then
                echo 0 > /proc/sys/dev/cdrom/autoclose
        fi
        if is_disabled $LOCK_CDROM ; then
                echo 0 > /proc/sys/dev/cdrom/lock
        fi
        mtpath=/mnt/cdrom$node
        mount_opts="$CDROM_MOUNT_OPTIONS"
        do_mounts
elif [ "$TYPE" == "sd" ] && [ "$ACTION" == "add" ] ; then
        if [ "$ID_BUS" == "usb" ] ; then
                if is_enabled $USB_STORAGE_SYNC && [ ! -n "`echo $USB_MOUNT_OPTIONS |grep -e sync`" ]; then
                        USB_MOUNT_OPTIONS=$USB_MOUNT_OPTIONS,sync
                fi
                label=$devpath
                if [ -n "$USB_MOUNT_USELABEL" ] ;then
                        if is_enabled $USB_MOUNT_USELABEL ; then
                                if [ -n "$ID_FS_LABEL" ] ; then
                                        label=$ID_FS_LABEL
                                fi
                        elif ! is_disabled $USB_MOUNT_USELABEL ; then
                                if [ -n "$ID_FS_LABEL" ] ; then
                                        label=$ID_FS_LABEL
                                else
                                        label=$USB_MOUNT_USELABEL
                                fi
                        fi
                fi
                mtpath=$USB_MOUNT_DIR/$label
                let x=0
                testmountpoint=$mtpath
                while mounted ${testmountpoint} ] ; do
                        let x=x+1
                        testmountpoint=$mtpath$x
                done
                if [ "$testmountpoint" != "$mtpath" ] ; then
                        mtpath=$testmountpoint
                fi
                mount_opts="$USB_MOUNT_OPTIONS"
        else
                if is_enabled $DISK_STORAGE_SYNC && [ ! -n "`echo $DISK_MOUNT_OPTIONS |grep -e sync`" ]; then
                        DISK_MOUNT_OPTIONS=$DISK_MOUNT_OPTIONS,sync
                fi
                mtpath=/mnt/disc/$name/part$node
                mount_opts="$DISK_MOUNT_OPTIONS"
        fi
        do_mounts
fi

exit 0
MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

30

--=XliN=--, вы не пробовали просто удалить/переместить правило /etc/udev/rules.d/99-udev.rules?

Был, был и весь вышел...