1、 什么是udev
- Linux的动态设备管理器,负责在
/dev
目录下创建设备节点 - 监听内核的uevent事件,处理设备插拔动作
- 配置文件位于
/etc/udev/rules.d/
2、安装文件系统依赖
安装以下包以支持ntfs和exfat文件系统
apt install ntfs-3g exfat-fuse exfat-utils
3、实现步骤
创建规则文件
nano /etc/udev/rules.d/99-usb-automount.rules
写入以下内容
# add USB
ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", SUBSYSTEMS=="usb", \
ENV{MOUNT_PATH}="/media/$env{ID_FS_LABEL_ENC}-$env{ID_PART_TABLE_UUID}", \
RUN+="/bin/mkdir -p '$env{MOUNT_PATH}'", \
RUN+="/bin/systemd-mount -o relatime,sync,umask=022 --no-block --collect $env{DEVNAME} '$env{MOUNT_PATH}'"
# add SD
ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ATTRS{type}=="SD", \
ENV{MOUNT_PATH}="/media/$env{ID_FS_LABEL_ENC}-$env{ID_PART_TABLE_UUID}", \
RUN+="/bin/mkdir -p '$env{MOUNT_PATH}'", \
RUN+="/bin/systemd-mount -o relatime,sync,umask=022 --no-block --collect $env{DEVNAME} '$env{MOUNT_PATH}'"
# remove
ACTION=="remove", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", \
ENV{MOUNT_PATH}="/media/$env{ID_FS_LABEL_ENC}-$env{ID_PART_TABLE_UUID}", \
RUN+="/bin/systemd-mount --umount '$env{MOUNT_PATH}'", \
RUN+="/bin/rmdir $env{MOUNT_PATH}"
重新加载udev规则
udevadm control --reload-rules
4、配置说明
可以使用udevadm monitor --property
来查看U盘插入的日志,日志中的属性可以作为配置的变量。
5、检查挂载状态
# 查看块设备
lsblk
# 查看已挂载文件系统
df -h
# 显示所有挂载点
mount
# 实时显示udev的日志
journalctl -u systemd-udevd -f