为什么我的正则表达式捕获在 mdev.conf 中不起作用?

Why aren't my regex captures working in mdev.conf?

我正在使用带有 busybox 的 buildroot 构建的 Linux 映像,以及用于管理 USB 设备插入和移除的 mdev。

作为测试,我尝试将以下行添加到我的 /etc/mdev.conf 文件中:

sd([a-z])([0-9]+)   root:root 660  =drive%1%2

据我了解,%1%2 应该捕获与正则表达式匹配的带括号的标记并将其替换。然而,事实并非如此。

但是,当我插入 USB 存储设备时,我的设备中出现了一个 字面意思 的文件 /dev/drive%1%2,而不是 /dev/drivea1.

我做错了什么,这可能与 Buildroot 如何配置 busybox 有关吗?

您需要在 busybox 配置中启用 CONFIG_FEATURE_MDEV_RENAME_REGEXP,在 default busybox configuration bundled with Buildroot 中禁用。

要启用它,启动 make busybox-menuconfig 并转到 Linux System Utilities -> mdev -> Support /etc/mdev.conf -> Support subdirs/symlinks -> Support regular expressions substitutions when renaming device.