我在笔记本电脑上运行 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 …
我使用的是 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) 我有一个不是安卓/移动设备的特定设备的问题。
这是一个带有内部硬盘驱动器的媒体播放器,我试图将其连接为大容量存储设备,以便我也可以从中复制电影/连续剧。
当我将它连接到我的系统时,我看到以下内容
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) 当我将 USB 驱动器连接到 Ununtu Hardy 和 Jaunty 系统时,系统会挂载在驱动器上找到的分区,并为每个挂载的分区打开一个 Nautilus 窗口。在 Nautilus 中,我可以卸载分区。
我需要的是强制系统重新扫描可用驱动器和分区的命令或操作,并自动挂载每个未挂载的分区,包括我从 Nautilus 手动卸载的分区。sudo /etc/init.d/udev restart或者...reload不这样做。
到目前为止,我只是拔下 USB 驱动器,然后再次连接它,这将强制在该驱动器上进行扫描和安装。但我想在不拔掉任何东西的情况下强制重新扫描和重新安装,最好是在用户不知道设备或驱动器名称的情况下。
我的 /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 世界标准时间
在磁盘上创建新分区后如何更新 /dev 目录?我已经安装了 udev,除此之外它工作得很好。新设备仅在重新启动时出现。
在启动过程中,我看到机器执行这件事大约 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) 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: …
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