查看设备类型:
指令:
dmesg
能看到插入设备的内核名称为‘“sda1”
如图:
并且设备文件dev下面也有:
注意:有时候也会变成sdb1:
如图:
同样设备文件dev下也有:
如图:
可以手动挂载U盘到/mnt文件下面(当然也可以挂载到其他文件夹下面):
指令:
sudo mount /dev/sdb1 /mnt
成功:
规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rule.d/ 下。所有的规则文件必须以".rules" 为后缀名
如图:
下面是一个简单的规则:
KERNEL==“sda1”, NAME=“my_root_disk”, MODE=“0660”
KERNEL 是匹配键,NAME 和 MODE 是赋值键。这条规则的意思是:如果有一个设备的内核名称为sda1,则该条件生效,执行后面的赋值:在 /dev 下产生一个名为my_root_disk 的设备文件,并把设备文件的权限设为 0660。
如何修改规则:
比如之前写的手机规则:
SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",MODE="0666"
借助dmesg查看设备规则,进行修改
可以改成:
SUBSYSTEM=="usb",ATTRS{idVendor}=="339b", ATTRS{idProduct}=="107d",MODE="0666"
查看设备规则指令:
udevadm info --attribute-walk --name=/dev/设备名字
Udev 规则的匹配键
ACTION:事件(uevent)的行为,例如:add(添加设备)、remove(删除设备);
KERNEL:内核设备名称,例如:sda,cdrom;
DEVPATH:设备的 devpath 路径;
SUBSYSTEM:设备的子系统名称,例如:sda 的系统为 block;
BUS:设备在 devpath 里的总线名称,例如:usb;
DRIVER:设备在 devpath 的设备驱动名称,例如:ide-cdrom;
ID:设备在 devpath 里的识别号;
SYSFS{filename}:设备的 devpath 路径下,设备的属性文件 “filename” 里的内容;
ENV{key}:环境变量。在一条规则中,可以设定最多五条环境变量的 匹配键;
PROGRAM:调用外部命令;
RESULT:外部命令 PROGRAM 的返回结果
指令:
dmesg
调用查看设备规则指令:
udevadm info --attribute-walk --name=/dev/sda1
可以查看到规则:
SUBSYSTEMS==“block”
SUBSYSTEMS==“usb”
基于以上规则,编写U盘自动挂载的Udev规则文件:
先打开在rules.d下面建立upan.rules文件:
指令:
sudo vi /etc/udev/rules.d/upan.rules
写入:
注意写入规则的格式(尤其空格)
ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", RUN{program}+="/bin/mkdir/media/%k" ,RUN{program}+="/usr/bin/systemd-mount --no-block --collect $devnode /media/%k"
重启Udev服务
指令:
sudo service udev restart
拔插U盘
输入指令:
ls /media/sda1
或者
输入指令:
cd /media
ls
tree
上面用到的tree,可以用指令安装:
sudo apt-get install tree