udev 热插拔及自定义挂载目录 您所在的位置:网站首页 tf卡如何插拔 udev 热插拔及自定义挂载目录

udev 热插拔及自定义挂载目录

2024-06-04 10:25| 来源: 网络整理| 查看: 265

本文介绍如何关闭pcmanfm的移动设备自动挂载,并实现udev自动挂载U盘的示例,适用于所有RK系列Debian系统。。

前言

        Rockchip linaro Debian 系统使用 pcmanfm 作为文件管理器,并实现了U盘、TF卡等存储设备的自动挂载。软件使用设备分区的Label或UUID为名称,在 /media/linaro/ 目录创建挂载目录,当插入的U盘Label不一致时其挂载路径也会随之改变。本文介绍如何关闭pcmanfm的移动设备自动挂载,并实现udev自动挂载U盘的示例。

关闭pcmanfm可移动设备自动挂载 1. 创建 /home/linaro/.config/pcmanfm/LXDE/pcmanfm.conf 文件 touch /home/linaro/.config/pcmanfm/LXDE/pcmanfm.conf 2. 在 pcmanfm.conf 配置文件中添加以下内容 [volume] mount_on_startup=0 mount_removable=0

设置 mount_on_startup 的值为 0,禁止开机启动时设备自动挂载;设置 mount_removable 的值为 0,禁止可移动设备拔插时自动挂载。

3. 设置配置文件权限 chmod 644 /home/linaro/.config/pcmanfm/LXDE/pcmanfm.conf

重启系统,配置文件生效后,执行 mount -l 可发现U盘等设备已经没有自动挂载。

添加 udev 自动挂载规则 1. 添加U盘自动挂载规则文件

udev 规则位于 /lib/udev/rules.d/ 目录,在该目录下创建规则文件 99-udisk-hotplug.rules,文件内容如下

#限制设备名称 KERNEL!="sd[a-z][0-9]", GOTO="udisk_hotplug_end" #判断是否为块设备 SUBSYSTEM!="block",GOTO="udisk_hotplug_end" #获取快设备信息 IMPORT{program}="/sbin/blkid -o udev -p %N" #仅文件系统类型是非空时执行 ENV{ID_FS_TYPE}=="", GOTO="udisk_hotplug_end" #当块设备Label非空时将label赋值给label_uuid_name,否则用uuid赋值 ENV{ID_FS_LABEL}!="", ENV{label_uuid_name}="%E{ID_FS_LABEL}" ENV{ID_FS_LABEL}=="", ENV{label_uuid_name}="%E{ID_FS_UUID}" #检测到插入/移除设备时,执行脚本文件,并传递设备名称和label_uuid_name ACTION=="add", RUN+="/etc/udisk-hotplug.sh %k %E{label_uuid_name}" ACTION=="remove",RUN+="/etc/udisk-hotplug.sh %k %E{label_uuid_name}" LABEL="udisk_hotplug_end" 2. 添加执行脚本

创建 /etc/udisk-hotplug.sh 文件,文件内容如下:

#!/bin/bash if [ $# -ne 2 ]; then exit 1 fi #获取设备名称 DEV_NAME=$1 #挂载主目录设置为/udisk MAJOR_PATH=/udisk #设置二级目录为获取到的label或uuid名称 MINOR_PATH=$2 if [ $ACTION == "add" ]; then mkdir -p $MAJOR_PATH/$MINOR_PATH /usr/bin/systemd-mount -o relatime,sync --no-block --collect /dev/$DEV_NAME $MAJOR_PATH/$MINOR_PATH if [[ $? -ne 0 ]]; then rmdir $MAJOR_PATH/$MINOR_PATH fi elif [ $ACTION == "remove" ];then if [[ -e $MAJOR_PATH/$MINOR_PATH ]]; then /usr/bin/systemd-mount --umount $MAJOR_PATH/$MINOR_PATH rmdir $MAJOR_PATH/$MINOR_PATH fi fi

可将 MAJOR_PATH 和 MINOR_PATH 修改为自定义挂载路径。

3. udevadm 使用

在不重启系统的情况下,让规则生效

udevadm control --reload

在不热插拔硬件的情况下使用 udevadm test 模拟设备的插入事件

udevadm test --action='add' /sys/class/block/sda1/ U盘挂载验证

当插入U盘时,U盘设备分区/dev/sda1 将自动挂载至 /udisk/KINGSTON 目录。移除U盘时,自动卸载并删除挂载目录。

# mount -l | grep /dev/sda1 /dev/sda1 on /udisk/KINGSTON type vfat (rw,relatime,sync,fmask=0022,dmask=0022,codepage=936,iocharset=utf8,shortname=mixed,errors=remount-ro) [KINGSTON]



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有