虽然听起来很奇怪,但我受到udev规则的启发,有一个shell脚本,可以将附加的USB设备装载到系统文件树中。 规则似乎没有问题,因为该脚本在USB设备连接到系统时运行。 我在syslog上监视脚本的进度,也很好。 即使mount命令返回零,它也会说:
根[ 1023 ] 3360 mount :/dev/sda1mounted on/media/partition label。
但是,没有安装最后的设备。 未在/etc/mtab/proc/mountsfind mntmount中列出。 如果在设备上运行umount,也可能表示没有安装该设备。
但是,如果以root身份手动从终端运行脚本,则可以正常运行并装载设备,但不是在udev上运行
脚本开始时添加了8秒的休眠时间,以确保不是时间问题。 此外,从规则文件名中删除数字,udevd确认新规则位于规则队列的底部,脚本遵守其他系统规则,但未成功。
系统日志:
(装置添加后)
kernel : USB1- 1.2:新高- speedusbdevicenumber 12 using DWC _ otg
kernel : USB1- 1.2: newusbdevicefound,idVendor=058f,idProduct=6387
kernel : USB1- 1.2: newusbdevicestrings : MFR=1,Product=2,串行编号=3
kernel : USB1- 1.2:产品:质量存储
kernel : USB1- 1.2:制造器:通用
kernel : USB1- 1.2: serial number :24 DCF 568
kernel : USB-storage1-1. 2:1.0: usbmassstoragedevicedetected
kernel : SCSI host 63360 USB-storage1- 1.2:1.0
kernel : SCSI 633600336003360033600336003360 direct-accessgenericflashdisk 8.07 pq : ansi :
kernel : SD 633600336003360033600336003360 [ sda ] 1968128512-bytelogicalblocks : (1.00 GB/961 MIB ) ) )。
kernel : SD 6:033600336003360033600336003360 [ sda ] writeprotectisoff
kernel : SD 63360033600336003360033600336003360 [ sda ] mode sense 3360230000
kernel : SD 63360033600336003360033600336003360 [ sda ] write cache : disabled,read cache: enabled,doesn ' t suport dpor or
kernel: sda: sda1
kernel : sda : P1 size 1968126扩展sbeyondeod,enabling native capacity
kernel: sda: sda1
kernel : sda : P1 size 1968126扩展sbeyondeod,中继
kernel : SD 6:033600336003360033600336003360 [ sda ] attachedscsiremovabledisk
root[1004]: /usr/local/s曾经的荷花/udev-auto-mount.sh-status 3360 startedtoautomountsda 1
root[1019]: /usr/local/s曾经的荷花/udev-auto-mount.sh-status 3360 devicelabelispartitionlabelandfilesystemimint
root[1021]: /usr/local/s曾经的哈士奇/udev-auto-mount.sh-status 3360 mountingthedevicesda1byfilesystemvfatto/s
根[ 1023 ] 3360 mount :/dev/sda1mounted on/media/partition label。
root[1024]: /usr/local/s曾经的荷花/udev-auto-mount.sh status 3360 mountcommandproceedforvfat,retval is 0
root[1025]: /usr/local/s曾经的荷花/udev-auto-mount.sh-status 3360 succeed!
CONFIGS :
/etc/udev/rules.d/local-rules :
在udev中定义的规则如下:
# /etc/udev/rules.d/local-rules
ENV{ID_BUS}=='usb ',ACTION=='add ',ENV{DEVTYPE}=='partition ',
RUN='/usr/local/s曾经的哈士奇/udev-automounter.sh % k $ env { id _ fs _ label _ enc } '
udev-auto-mount.sh
脚本由udev规则中定义的另一个脚本启动。
以这种方式,您可以直接使用挂载点目录及其文件系统类型和一些常见选项在挂载点上安装USB设备。 将“-v”选项添加到mount命令中,使其更详细,并将所有输出重定向到syslog。 因此,我知道它是如何工作的,但不太多。
#! /曾经的荷花/sh
## /usr/local/s曾经的哈士奇/udec-auto-mount.sh
##
logger-s ' $0- status 3360 startedtoautomount $ {1} '
设备=$ 1
sleep 8
# .
# .
# Checking inputs,gettingfilesystemtype (id _ fs _ type ),分区标签
#(id_fs_label ) and .
mkdir '/media/${ID_FS_LABEL} '
logger-s ' $0- status 3360 mountingthedevice $ { device } by file system $ { id _ fs _ type } to/media/$ { id _ fs _ }
case $ID_FS_TYPE in
vat ) mount -v -t vfat -o sync,noatime,nosuid,nodev/dev/$ { device } '/media/$ { id _ fs _ label } ' 21|lo vvice
let retVal=$?
logger-s ' $0status 3360 mountcommandproceedforvfat,retval is ${retVal} '
;
mount-v-t自动同步,noatime/dev/$ { device } '/media/$ { id _ fs _ label } '
;
欧洲联盟
if [ ${retVal} -eq 0 ]; 陈真
logger -s '$0 - status: succeed!'
exit 0
else
logger-s ' $0error 3360 unabletomountthedevice $ { device },retval is ${retVal} '
rmdir '/media/${ID_FS_LABEL} '
fi
exit 0
可能会有帮助:
在脚本无法安装USB设备后,如果断开设备的连接,系统日志可能会出现以下错误:
kernel : USB1- 1.2: USB disconnect,设备编号11
系统更新[ 143 ] :错误:/dev/sda : nosuchfileordirectory
系统更新[ 977 ] : inotify _ add _ watch (7,/dev/sda,10 ) failed : nosuchfileordirectory
编辑:
这是“mount”版本:
$mount -V:
mount fromutil-Linux2. 27.1 (lib mount2. 27.0:资产,调试) )。