8.【Orangepi Zero2】UDEV的配置文件,自动挂载U盘

本文详细解释了UDEV配置文件中的规则,特别是如何使用KERNEL、ACTION和SUBSYSTEM匹配键来自动挂载USB设备。通过udevadm和systemd-mount,实现USB设备的自动创建挂载点并挂载。
摘要由CSDN通过智能技术生成

UDEV的配置文件

参考文章:Linux 基础 – udev 和 rules 使用规则5

规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rule.d/ 下。
所有的规则文件必须以 “.rules” 为后缀名。

下面是一个简单的规则:

KERNEL=="sda", NAME="my_root_disk", MODE="0660"
KERNEL 是匹配键,NAME 和 MODE 是赋值键。

KERNEL 是匹配键,NAME 和 MODE 是赋值键。这条规则的意思是:如果有一个设备的内核名称为 sda,则该条件生效,执行后面的赋值:在 /dev 下产生一个名为my_root_disk 的设备文件,并把设备文件的权限设为 0660。

ls /dev/bus/usb/001/001
udevadm info --attribute-walk --name=/dev/设备名字

在这里插入图片描述

SUBSYSTEM=="usb", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0002", MODE="0666"

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盘

手动挂载U盘

sudo mount /dev/sda1 /mnt/
cd /mnt/

在这里插入图片描述

自动挂载

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

在这里插入图片描述

usbpan.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规则,通常用于在插入USB存储设备时自动创建挂载点并挂载设备。这个规则的含义如下:

ACTION=="add": 规则只在添加设备时触发。
SUBSYSTEMS=="usb": 设备必须属于USB子系统。
SUBSYSTEM=="block": 设备必须是块设备。
RUN{program}+="/bin/mkdir /media/%k": 当设备满足规则条件时,运行命令创建 /media/ 目录下以设备名称(%k)命名的目录。
RUN{program}+="/usr/bin/systemd-mount --no-block --collect $devnode /media/%k": 运行 systemd-mount 命令,将设备挂载到之前创建的目录。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_62140641/article/details/134329980

这个规则的效果是,当插入一个USB块设备时,udev将创建一个以设备名称为名字的目录(例如,如果设备名称是sdb1,那么将创建 /media/sdb1 目录),然后使用 systemd-mount 挂载设备。

请注意,使用 systemd-mount 需要系统使用systemd init 系统。此外,一般情况下,挂载点应该在 /mnt/ 目录下而不是 /media/ ,因为 /media/ 通常是由文件管理器等工具使用的默认挂载点。

cd /etc/udev/rules.d/
sudo vi usbpan.rules
sudo service udev restart

在这里插入图片描述

在这里插入图片描述

自动挂载成功

cd /media

在这里插入图片描述

tree命令

sudo apt-get install tree
tree /media/

在这里插入图片描述

`rc.local`文件通常是在Linux系统中执行最后一次初始化脚本的地方,但它并非专门用于iscsi自动挂载。为了在开机时自动挂载iSCSI存储,你需要创建一个`initramfs`脚本或者修改`/etc/fstab`并配合`udev`规则或者`autofs`。 以下是一个基本的步骤: 1. **添加到fstab**: 将iSCSI设备添加到`/etc/fstab`,例如: ``` <target_ip>:<volume_name> <mount_point> <file_system_type> defaults,nofail,iocharset=utf8,tcp 0 0 ``` 其中 `<target_ip>` 是iSCSI服务器地址,`<volume_name>` 是你想挂载的目标,`<mount_point>` 是你要挂载的位置,`<file_system_type>` 通常是ext4或者其他你系统支持的类型。 2. **使用udev规则**: 编辑`/etc/udev/rules.d/99-iscsi.rules`,添加一个条目来识别新连接的iSCSI设备,并调用相应的脚本挂载: ```bash ACTION=="add", SUBSYSTEM=="scsi", KERNEL=="sd*", ATTR{model}=="QEMU HARDDISK*", RUN+="/sbin/mount -t <file_system_type> -o <options> <mount_point> $(basename $DEVNAME)" ``` 3. **创建挂载脚本**: 创建一个shell脚本如`/etc/init.d/iscsi_mount`,内容大致如下: ```bash #!/bin/sh if [ ! -e /mnt/your_mount_point ]; then mkdir /mnt/your_mount_point fi mount -a || echo "Error mounting iSCSI storage." ``` 4. **设置开机自启动**: 使用`update-rc.d`将你的脚本添加到系统启动进程列表,使其在下次启动时运行: ```bash sudo update-rc.d iscsi_mount defaults ``` 5. **测试挂载**: 关机重启系统后检查iSCSI设备是否能自动挂载。 请注意,以上步骤适用于大多数基于sysv-initscript的Linux发行版。对于systemd系统,`udev`规则处理可能会有所不同,需要查阅最新的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值