【问题标题】:Auto mounting USB on a yocto linux embedded project with udev使用 udev 在 yocto linux 嵌入式项目上自动挂载 USB
【发布时间】:2022-01-27 15:06:37
【问题描述】:

我有一个基于 yocto 的 linux 嵌入式系统正在运行,需要让它自动挂载 USB 设备。系统使用udev,如下是/etc/udev/rules.d/99-auto-mount.rules

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

ENV{ID_PATH}!="*-usb-*", GOTO="media_by_label_auto_mount_end"

# Get a label if present, otherwise specify one
ENV{dir_name}="USB%k"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002", ENV{DISPLAY}=":0", RUN+="/usr/local/bin/announce /media/%E{dir_name} 1"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}", ENV{DISPLAY}=":0", RUN+="/usr/local/bin/announce /media/%E{dir_name} 0"

# Exit
LABEL="media_by_label_auto_mount_end"

它在某种程度上有效,但无法完成我想要它做的所有事情。当插入 USB 记忆棒(分区为 /dev/sda1)时,它会在 add 期间创建文件夹 /media/USBsda1 并删除/media/USBsda1 文件夹/media/USBsda1 期间删除 USB 记忆棒被猛拉。

但它从不安装 USB 记忆棒。

我将规则文件归结为以下基本文件,只是为了尝试让它挂载 USB 记忆棒。

插入一个 USB 记忆棒,然后它的分区位于系统中的 /dev/sda1

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/USBsda1", RUN+="/bin/mount /dev/sda1 /media/USBsda1"

# Exit
LABEL="media_by_label_auto_mount_end"

文件夹已创建,但未安装棒。

但是,在插入存储棒并创建文件夹后,我可以使用规则中的确切命令在控制台中手动安装它

$> /bin/mount /dev/sda1 /media/USBsda1

它安装得很好?

有没有人知道可能是什么问题(或更可能是缺少什么)或有任何建议进行调查?

  • Yocto 版本 = 2.1.3

  • udevadm 版本 = 229

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: linux usb yocto automount


【解决方案1】:

经过大量修改和阅读网络上的信息后,我找到了一个适用于我的系统的解决方案。

我必须在 udev 规则之后插入一个 systemd 服务,然后从该服务中调用一个 bash 脚本来完成繁重的工作。

非常感谢 Mike Blackwell 对 stackexchange 上类似问题的出色回答。 https://serverfault.com/a/767079

我用他的建议在我自己的系统上使用了几个星期,并且效果很好。

【讨论】:

    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    相关资源
    最近更新 更多