LinuxForum.Fans
Тема

Помогите подправить скрипт для авто монтирования флешек

Автор: XliN 31 сообщений 7580 просмотров
#239927
--=XliN=-- написал:
run: '/etc/udev/scripts/scsi.sh'

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

#239928

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

#239929
--=XliN=-- написал:
add_matching_files: unable to open '/run/udev/rules.d': No such file or directory

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

text

mkdir /run

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

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

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

#239935
--=XliN=-- написал:
udev_rules_apply_to_event: RUN '/etc/udev/scripts/scsi.sh' /etc/udev/rules.d/99-udev.rules:22

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

#239936

вот.. Две строчки я закаментил касаемые 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"
#239938

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

--=XliN=-- написал:
Две строчки я закаментил касаемые usb.

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

#239939

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

text

# 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

text

#! /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

#239943

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

#239978

Lupo Alberto, еще нет пока. Рабочий день кончился :) все в понидельник. Так хочется чтобы ралотало, а то некоторые врачи работать не могут.

Войдите или зарегистрируйтесь, чтобы ответить.