(二十)基于Udev机制的U盘自动挂载

学习日志(二十)

基于Udev机制的U盘自动挂载

  • 学习日志(二十)
    • 简单介绍手动U盘挂载
    • 详细自动U盘挂载
      • 规则文件介绍
      • 引入查看设备规则指令和规则定义
      • 实战U盘自动挂载
        • 查看内核识别的设备

简单介绍手动U盘挂载

查看设备类型:

指令:

dmesg

能看到插入设备的内核名称为‘“sda1”

如图:

(二十)基于Udev机制的U盘自动挂载_第1张图片

并且设备文件dev下面也有:

(二十)基于Udev机制的U盘自动挂载_第2张图片

注意:有时候也会变成sdb1:

如图:

(二十)基于Udev机制的U盘自动挂载_第3张图片

同样设备文件dev下也有:

如图:

(二十)基于Udev机制的U盘自动挂载_第4张图片

可以手动挂载U盘到/mnt文件下面(当然也可以挂载到其他文件夹下面):

指令:

sudo mount /dev/sdb1 /mnt

成功:

(二十)基于Udev机制的U盘自动挂载_第5张图片

详细自动U盘挂载

规则文件介绍

规则文件是 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查看设备规则,进行修改

(二十)基于Udev机制的U盘自动挂载_第6张图片

可以改成:

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 的返回结果

实战U盘自动挂载

查看内核识别的设备

指令:

dmesg

(二十)基于Udev机制的U盘自动挂载_第7张图片

调用查看设备规则指令:

 udevadm info --attribute-walk --name=/dev/sda1

可以查看到规则:
SUBSYSTEMS==“block”
SUBSYSTEMS==“usb”

(二十)基于Udev机制的U盘自动挂载_第8张图片

(二十)基于Udev机制的U盘自动挂载_第9张图片

基于以上规则,编写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

请添加图片描述
注意有时候生成的文件是sdb1噢!!!

或者

输入指令:

cd /media
ls
tree

(二十)基于Udev机制的U盘自动挂载_第10张图片

上面用到的tree,可以用指令安装:

sudo apt-get install tree

你可能感兴趣的:(Orangepi,Zero2学习日志,linux,ubuntu,运维)