1. mount手动挂载

在linux下,插入u盘,使用 dmesg -T 命令显示内核缓冲区中的系统启动信息和内核运行时的通知。它可以帮助用户查看系统启动时的硬件信息、设备驱动加载信息、内核模块加载信息等。-T可显示时间戳
在这里插入图片描述
使用上述命令可以看到最新的设备信息是一个可移动磁盘,
通常使用方法是使用mount 挂载并查看,因为这里使用的U盘中下载了linux镜像系统,所以sda2其为linux启动盘的根文件分区
在这里插入图片描述

2.udev挂载

通过dmesg -T 命令 分析设备信息,并通过udevadm info --attribute-walk --name=/dev/设备名字 分析相关信息,可以看到是usb 块设备。
在这里插入图片描述
在这里插入图片描述
使用udev规则:
编写udev规则文件,放到 /etc/udev/rule.d/ 下。所有的规则文件必须以 “.rules” 为后缀名

udev 规则的匹配键:


ACTION:事件(uevent)的行为,例如“add”(添加设备)或“remove”(删除设备)。这个键用于指定当设备被添加或删除时应该执行的操作。

KERNEL:内核中看到的设备名称,例如“sda”表示任意SCSI磁盘设备。这个键用于根据内核识别的设备名称来匹配设备。

DEVPATH:设备的devpath路径,例如“/devices/*,这个键用于根据设备在内核设备树中的位置来匹配设备。*/

SUBSYSTEM:设备的子系统名称,例如块设备(block)或USB设备(usb)。这个键用于根据设备所属的子系统来匹配设备。

BUS:总线的名称,比如IDE、USB等。这个键用于根据设备所连接的总线类型来匹配设备。

DRIVER:设备驱动的名称,例如“ide-cdrom”。这个键用于根据设备使用的驱动程序来匹配设备。

SYSFS{value}:sysfs属性的值,它可以表示任意属性。这个键用于根据sysfs文件系统中的设备属性来匹配设备。

ENV{key}:环境变量的值,它可以表示任意信息。这个键允许你根据环境变量来匹配设备。

PROGRAM:可执行的外部程序。如果程序返回0值,该键则认为为真(true)。这个键允许你根据外部程序的输出或状态来匹配设备。

RESULT:上一个PROGRAM调用返回的标准输出。这个键通常与PROGRAM一起使用,用于基于外部程序的输出来进一步定制udev规则。

在/etc/udev/rule.d/ 下创建mymount.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"
ACTION=="add":
这个键表示这个规则只适用于当设备被添加到系统时。当内核检测到新设备并发出添加事件时,udev会查找匹配这个ACTION值的规则。

SUBSYSTEMS=="usb":
这个键表示这个规则只适用于那些属于usb子系统的设备。SUBSYSTEMS是一个复数形式,它允许你指定设备可能属于的多个子系统。在这个例子中,它只指定了一个子系统,即usb。

SUBSYSTEM=="block":
这个键与SUBSYSTEMS类似,但是它指的是单一子系统,而不是多个子系统。这里,它指定规则只适用于属于block子系统的设备,即块设备,如硬盘分区、USB闪存盘等。

RUN{program}+="/bin/mkdir /media/%k":
当规则匹配到设备时,udev会执行这个RUN键指定的程序。+操作符表示将新的命令添加到现有的RUN列表中(如果有的话)。这里,它创建了一个新的目录在/media/下,目录的名称由%k表示,这是设备的内核名称(通常是一个独特的字符串)。

**RUN{program}+="/usr/bin/systemd-mount --no-block --collect devnode/media/这条命令使用‘systemd−mount‘工具来挂载设备。‘−−no−block‘选项表示挂载操作不会阻塞udev事件的处理,即挂载是异步的。‘−−collect‘选项用于收集与设备相关的所有挂载点,并将它们作为一个单元进行管理。‘devnode是一个udev变量,它表示设备的设备节点路径(例如/dev/sda1)。/media/%k`是挂载点,与上一条RUN命令中创建的目录相同。

综上所述,这个udev规则的作用是:当一个新的USB块设备被添加到系统时,它会在/media/下创建一个以设备内核名称命名的目录,并尝试使用systemd-mount异步地挂载该设备到这个新创建的目录下。

重启udev服务,插入u盘, 挂载成功
注: udev 一条规则写在一行, 尽量不换行,换行会出现挂载不成功的情况
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐