标签: udev

udev 规则中的脚本不运行

我在笔记本电脑上运行 Ubuntu 9.10(Karmic Koala),并希望 NumLock 自动切换,具体取决于我的 USB 键盘是插入(numlock on)还是拔下(numlock off)。

为此,我首先安装了“numlockx”包。numlockx on并且numlockx off工作正常。

为了连接到设备系统,我想我会使用 udev。我已阅读“编写 udev 规则”,但无法使 udev 规则生效。

首先,这是一个dmesg输出示例:

[20906.985102] USB 3-2:使用 uhci_hcd 和地址 6 的新低速 USB 设备
[20907.166403] USB 3-2:从 1 个选项中选择的配置 #1
[20907.192904] 输入:Microsoft Natural® Ergonomic Keyboard 4000 as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/input/input20
[20907.193100] microsoft 0003:045E:00DB.000B: input,hidraw1: USB HID v1.11 键盘 [Microsoft Natural® Ergonomic Keyboard 4000] on usb-0000:00:1a.0-2/input0
[20907.217810] 输入:Microsoft Natural® Ergonomic Keyboard 4000 as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.1/input/input21
[20907.217979] microsoft 0003:045E:00DB.000C: input,hidraw2: USB HID …

linux usb udev

8
推荐指数
1
解决办法
1万
查看次数

udev 规则 ignore_device

我使用的是 Fedora 18。在 中/etc/udev/rules.d,我添加70-stm32.rules了以下内容的新规则 ( ):

SUBSYSTEM=="block", ENV{ID_MODEL}=="STM32_STLink", OPTIONS=="ignore_device"
Run Code Online (Sandbox Code Playgroud)

然后重启udev:

systemctl restart systemd-udevd.service
Run Code Online (Sandbox Code Playgroud)

但是设备似乎仍然被识别并安装为 USB 驱动器。

我的错误在哪里?

我想忽略以下设备

udevadm info /dev/sdb
P: /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/host8/target8:0:0/8:0:0:0/block/sdb
N: sdb
S: disk/by-id/usb-STM32_STM32_STLink-0:0
S: disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
S: disk/by-uuid/A8D9-2F05
E: DEVLINKS=/dev/disk/by-id/usb-STM32_STM32_STLink-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0 /dev/disk/by-uuid/A8D9-2F05
E: DEVNAME=/dev/sdb
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/host8/target8:0:0/8:0:0:0/block/sdb
E: DEVTYPE=disk
E: ID_BUS=usb
E: ID_FS_TYPE=vfat
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=A8D9-2F05
E: ID_FS_UUID_ENC=A8D9-2F05
E: ID_FS_VERSION=FAT16
E: ID_INSTANCE=0:0
E: ID_MODEL=STM32_STLink
E: ID_MODEL_ENC=STM32\x20STLink
E: ID_MODEL_ID=3744
E: ID_PATH=pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0
E: ID_REVISION=0100
E: ID_SERIAL=STM32_STM32_STLink-0:0
E: ID_TYPE=disk
E: ID_USB_DRIVER=usb-storage
E: ID_USB_INTERFACES=:080650:
E: …
Run Code Online (Sandbox Code Playgroud)

linux fedora udev

8
推荐指数
2
解决办法
9884
查看次数

禁用特定设备的 MTP udev 规则,以便它可以作为 USB 大容量存储设备安装

我有一个不是安卓/移动设备的特定设备的问题。
这是一个带有内部硬盘驱动器的媒体播放器,我试图将其连接为大容量存储设备,以便我也可以从中复制电影/连续剧。

当我将它连接到我的系统时,我看到以下内容

kernel: usb 1-4: new high-speed USB device number 7 using xhci_hcd
systemd[1]: Starting Cleanup of Temporary Directories...
systemd[1]: Started Cleanup of Temporary Directories.
mtp-probe[4978]: checking bus 1, device 7: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4"
kernel: usb 1-4: can't set config #1, error -110
mtp-probe[4978]: bus: 1, device: 7 was not an MTP device
kernel: usb 1-4: USB disconnect, device number 7
Run Code Online (Sandbox Code Playgroud)

lsusb 显示我

Bus 001 Device 008: ID 174c:5106 ASMedia Technology Inc. ASM1051 SATA 3Gb/s bridge
Couldn't open device, some information …
Run Code Online (Sandbox Code Playgroud)

linux usb mtp udev usb-storage

8
推荐指数
2
解决办法
3万
查看次数

如何在 Ubuntu Hardy 或 Jaunty 上重新扫描和重新安装驱动器?

当我将 USB 驱动器连接到 Ununtu Hardy 和 Jaunty 系统时,系统会挂载在驱动器上找到的分区,并为每个挂载的分区打开一个 Nautilus 窗口。在 Nautilus 中,我可以卸载分区。

我需要的是强制系统重新扫描可用驱动器和分区的命令或操作,并自动挂载每个未挂载的分区,包括我从 Nautilus 手动卸载的分区。sudo /etc/init.d/udev restart或者...reload不这样做。

到目前为止,我只是拔下 USB 驱动器,然后再次连接它,这将强制在该驱动器上进行扫描和安装。但我想在不拔掉任何东西的情况下强制重新扫描和重新安装,最好是在用户不知道设备或驱动器名称的情况下。

storage mount partitioning udev ubuntu

7
推荐指数
1
解决办法
2万
查看次数

减少“A start job is running for dev-disk-by”linux 的超时值

我的 /etc/fstab故意有相当多的条目指向(标记的)分区和文件系统,这些分区和文件系统在启动时可能不存在(想想:可热插拔的 SATA 备份磁盘)。

这些条目会在启动过程中造成麻烦,因为当某些启动进程等待这些磁盘或分区出现时,我会被困 1 分 30 秒(90 秒)。等待过程中会伴随着众所周知的消息“A start job is running for dev-disk-by”以及长达 1 分 30 秒的计时。

问题:我想将超时值从 90 秒更改为 10 秒,以便启动和关闭速度更快。我怎么做?

状态:我四处寻找合适的参数来设置。我尝试的一件事是将一些内核参数值添加到相应的 grub.cfg 行,如下所示,但没有效果。

udev.event-timeout=10 rd.udev.event-timeout=10 udev.exec-delay=10 rd.udev.exec-delay=10

这是在

Fedora 版本 23(二十三)Linux 版本 4.5.5-201.fc23.x86_64 (mockbuild@bkernel01.phx2.fedoraproject.org) (gcc 版本 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)) # 1 SMP 2016 年 5 月 21 日星期六 15:29:49 世界标准时间

linux timeout fstab udev

6
推荐指数
1
解决办法
1万
查看次数

在 fdisk 运行后更新 udev

在磁盘上创建新分区后如何更新 /dev 目录?我已经安装了 udev,除此之外它工作得很好。新设备仅在重新启动时出现。

linux gentoo fdisk udev

5
推荐指数
1
解决办法
2728
查看次数

udev:等待在我的 Gentoo 上处理 uevents

在启动过程中,我看到机器执行这件事大约 30 秒:

udev: waiting for uevents to be processed
Run Code Online (Sandbox Code Playgroud)

然后我收到一条快速消息,内容如下:

devfs: timeout (50 seconds)
Run Code Online (Sandbox Code Playgroud)

我看不到整件事,因为在该系统启动之后,包括 Xfce 在内的速度非常快。

我需要提供哪些日志和配置以进行进一步调查?

$uname -a

Linux genta 3.6.6-gentoo #1 SMP Sun Nov 11 11:02:23 NOVT 2012 i686 Genuine Intel(R) CPU T2300 @ 1.66GHz GenuineIntel GNU/Linux
Run Code Online (Sandbox Code Playgroud)

谢谢!

UPD:rc 状态

genta / # rc-status sysinit
Runlevel: sysinit
 dmesg                                                             [  started  ]
 udev                                                              [  started  ]
 devfs                                                             [  started  ]
genta / # rc-status boot
Runlevel: boot
 hwclock                                                           [  started  ]
 modules                                                           [  started  ]
 fsck                                                              [ …
Run Code Online (Sandbox Code Playgroud)

linux boot gentoo udev

5
推荐指数
1
解决办法
5644
查看次数

如何在 udev 中忽略 USB 设备

我想将USB设备(准确地说:智能卡读卡器)传递给KVM虚拟机,因此必须禁止主机上的任何驱动程序声明它。

我试图在这个网站的帮助下为其编写一个 udev 规则,但显然 udev 选项“ignore_device”已在几年前被删除,没有替代。因此,读取器驱动程序安装的 udev 规则被处理,并且我的主机声明了它。

当前 udev 版本中是否有某种形式的“ignore_device”替代品?

linux usb udev linux-kvm

5
推荐指数
1
解决办法
1万
查看次数

Mac OS X 相当于“udevadm info -a -n /dev/ttyACM0”

Mac OS X 中与 Linux 命令等效的命令是什么udevadm info /dev/ttyACM0

/dev/tty.whatever我正在尝试在脚本中获取有关 TTY 设备 ( ) 的 USB 信息。

更新:我正在寻找有关 TTY/串行端口设备(不是磁盘)的信息。这是我正在寻找的输出类型(关键字段已突出显示):

[rhwood@localhost ~]$ udevadm 信息 /dev/ttyACM3
P: /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.2/2-2.2:1.0/tty/ttyACM3
N: ttyACM3
S:digitrax-pr3-3
E:DEVLINKS=/dev/digitrax-pr3-3
E: DEVNAME=/dev/ttyACM3
E: DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.2/2-2.2:1.0/tty/ttyACM3
E:ID_BUS=USB
E: ID_FOR_SEAT=tty-pci-0000_02_00_0-usb-0_2_2_1_0
E: ID_MM_CANDIDATE=1
E: ID_MODEL=VC0M_端口
E: ID_MODEL_ENC=VC0M\x20端口
E: ID_MODEL_ID=ff7e
E: ID_PATH=pci-0000:02:00.0-usb-0:2.2:1.0
E:ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_2_1_0
E: ID_REVISION=0001
E: ID_SERIAL=Digitrax_Inc._VC0M_端口
E: ID_TYPE=通用
E: ID_USB_CLASS_FROM_DATABASE=通信
E: ID_USB_DRIVER=cdc_acm
E: ID_USB_INTERFACES=:020201:0a0000:
E: ID_USB_INTERFACE_NUM=00
E:ID_VENDOR=Digitrax_Inc。
E: ID_VENDOR_ENC=Digitrax\x20Inc.
E: ID_VENDOR_FROM_DATABASE=Microchip Technology, Inc.
E: ID_VENDOR_ID=04d8
E:主要=166
E:次要=3
E: 子系统=tty
E: …

usb udev macos

5
推荐指数
1
解决办法
7678
查看次数

如何在 udev 规则中使用 ENV{SYSTEMD_USER_WANTS}= ?

docked.target我想在我的用户级别设置一个systemd。这个想法是运行一些服务来配置我的外部显示器。

我目前的规则是:

SUBSYSTEM=="usb", ACTION=="add", ENV{ID_VENDOR}=="17ef", ENV{ID_MODEL}=="100a", SYMLINK+="tp_mini_dock", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}="docked.target"
Run Code Online (Sandbox Code Playgroud)

该规则很好地被检测到(我可以dev-tp_mini_dock.device在停靠时看到)。

然后我把这个放进去~/.config/systemd/user/docked.target(也尝试过/etc/systemd/user但没有运气):

[Unit]
Description=Docked to ThinkPad Mini Dock
BindTo=dev-tp_mini_dock.device
Run Code Online (Sandbox Code Playgroud)

但这不会在我停靠时启动。但是,如果我docked.target在对接时手动启动,则当我断开对接时它会按预期停止。

但是,如果我使用ENV{SYSTEMD_WANTS}="docked.target"文件并将其放入 中/etc/systemd/system/docked.target,目标会在我停靠时按预期启动。那么问题是我的用户级实例不知道系统级服务/目标。

有什么想法吗?我在网上看到了一些其他问题,其中一个几乎与我的完全一样:https://bbs.archlinux.org/viewtopic.php ?pid=1600019

linux udev systemd

5
推荐指数
1
解决办法
9600
查看次数

标签 统计

udev ×10

linux ×8

usb ×4

gentoo ×2

boot ×1

fdisk ×1

fedora ×1

fstab ×1

linux-kvm ×1

macos ×1

mount ×1

mtp ×1

partitioning ×1

storage ×1

systemd ×1

timeout ×1

ubuntu ×1

usb-storage ×1