Questions tagged «udev»

Udev是一个Linux进程,用于管理/ dev下的设备文件条目

5
Udev:重命名我的网络接口
我刚刚在Dell 1950服务器上安装了RHEL 6.3。该服务器作为两个GBit端口Gb0和Gb1。 由于某些模糊的原因,udev选择命名为Gb0 eth1和Gb1 eth0。这对我来说绝对不是一个好发现,只会让人感到困惑。 所以我修改了配置/etc/udev/rules.d/70-persistent-net.rules: # PCI device 0x14e4:0x164c (bnx2) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ ATTR{address}=="00:20:19:52:d3:c0", \ ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" # PCI device 0x14e4:0x164c (bnx2) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ ATTR{address}=="00:20:19:52:d3:be", \ ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 我只是更改了文件上的“名称”字段,以反映我想要的内容。我重新启动了服务器,但它没有工作。 在dmesg日志中,我可以阅读以下内容: udev: renamed network interface eth1 to rename5 udev: renamed network interface eth0 to …
20 linux  rhel  udev 

1
/ dev和/ sys之间的区别
到底devfs和sysfs有什么区别?两者似乎都维护着与系统相连的硬件列表。那为什么还要两个独立的fs呢?据我所知,/ sys维护一些“原始”设备列表(例如“ ser0”)。Udev在这些设备上起作用,获取各种信息并应用各种规则将它们显示为可识别的名称,然后将其映射到/ dev(例如“ camera”)。这是唯一原因吗?然后,我们从/ dev fs 挂载相应的设备(不能从/ sys fs 挂载到/ media fs。 我已经阅读了/ dev和/ sys / class之间的区别的答案?。但是我无法得到sys fs部分,它指出 Sysf包含连接到计算机的设备的层次结构 / sys中的文件不是设备节点文件吗?那它们是什么类型的文件?
19 linux  mount  devices  udev  sysfs 


6
dd if = / dev / zero of = / dev / sda有什么作用
编辑:除非您要销毁数据,否则请不要运行它来对其进行测试。 有人可以帮助我了解我得到了什么吗? dd if=/dev/zero of=/dev/sda bs=4096 count=4096 问:为什么要专门为4096 count? dd if=/dev/zero of=/dev/sda bs=512 count=4096 seek=$(expr blockdev --getsz /dev/sda - 4096) 问:这到底是做什么的?
19 udev  dd  disk 

3
由udev调用时不执行mount
我试图创建一些udev规则来挂载和卸载USB闪存驱动器;目前的规则非常简单: ACTION=="add",KERNEL=="sd[b-z]",RUN+="/root/scripts/plug_flash_drive.sh %k" ACTION=="remove",KERNEL=="sd[b-z]",RUN+="/root/scripts/unplug_flash_drive.sh %k" plug_flash_drive.sh也非常简单: device_name=$1 mount_options="umask=000,utf8" if [ ! -e "/media/$device_name" ]; then mkdir "/media/$device_name" fi sleep 1 /usr/bin/mount "/dev/$device_name" "/media/$device_name" -o "$mount_options" unplug_flash_drive.sh: device_name=$1 umount "/dev/$device_name" rmdir "/media/$device_name" 我已经做了一些测试,所以我可以确定: 插入后,将检测到我的闪存驱动器;在/ dev中创建一个文件 通过udev调用plug_flash_drive.sh 脚本的mkdir部分起作用 但是,脚本的“挂载”部分似乎未执行,因此未挂载我的驱动器 当我在命令行上调用脚本时,它们可以正常工作 有人知道udev调用时为什么不执行mount吗? 编辑28/08/14:我在脚本的末尾添加了“ grep -q / proc / mounts &&回声成功||回声失败”,以在调试日志中检查调试脚本是否在脚本结束之前实际挂载了设备。即使在udev调用脚本的情况下,设备似乎已安装在该位置。因此,真正的问题是“通过udev调用安装脚本后,我的块设备似乎已卸载”:s
17 mount  udev  usb-drive 

4
是否有使用`udev`的替代方法?
虽然我了解udev的强大之处并赞赏开发人员的努力,但我只是想知道是否有替代方案。 例如,我可能想象应该有一种方法来创建启动脚本,以创建大多数设备节点,这些设备节点在我的系统(无需更改硬件)上几乎是相同的。 我想跳过的好处或原因与跳过udev相同dbus,即降低复杂性,并通过增加更改来更安全地设置系统。
16 linux  devices  udev 

4
如何调试udev规则(在/etc/udev/rules.d/…中)
我正在创建新的基本规则 /etc/udev/rules.d/10-myrule.rules 包含: KERNEL!="sdb*", GOTO="auto_mount_end" ACTION=="add", RUN+="/usr/bin/mount /dev/sdb1 /media" LABEL="auto_mount_end" 我保存,重新启动并插入了SD卡(由识别/dev/sdb1,我看到有dmesg),但没有任何反应。当我手动执行时mount /dev/sdb1 /media,它可以工作。 如何解决/调试此类udev规则? 注意:我使用的是ArchLinux,但在任何发行版中都应该相同吗?
15 arch-linux  mount  udev 

3
如何在不重新启动的情况下重新生成70-persistent-net.rules?
该文件/etc/udev/rules.d/70-persistent-net.rules在重新引导期间在具有udev的Linux系统上自动生成(如果不存在)。但是我想知道如何在不重新引导服务器的情况下(使用命令)创建此规则文件。 我闲逛了一段时间,发现这个脚本生成了rules文件: /lib/udev/write_net_rules 但是,不可能从命令行运行此脚本,因为(我假设)它想由udev启动,并且正确设置了一些环境变量。手动启动它会显示错误消息“缺少$ INTERFACE”。即使我在脚本开始之前设置了环境变量INTERFACE = eth0,它仍然会打印错误“缺少有效的匹配”。更不用说我有两个接口(eth0和eth1),并且我希望为这两个接口生成规则文件。 我也在考虑触发这样的udev事件,希望它会从udev本身启动脚本,但是没有任何变化: udevadm trigger --type=devices --action=change 因此,有人知道如何在/etc/udev/rules.d/70-persistent-net.rules不重新启动的情况下重新生成文件中的持久性网络规则吗?
14 linux  udev 

1
有没有办法在/ dev目录中更改设备名称?
我出于测试目的编写了此规则: SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Kingston", ATTRS{serial}=="001CC0EC34A2BB318709004B", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1642", SYMLINK+="pen", NAME="pendrak" 根据以下信息: # udevadm info --name=/dev/sdb --attribute-walk Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule …
13 devices  udev 

3
从udev规则呼叫通知发送
我使用Linux Mint 13 MATE,并且尝试在插入/拔出设备时设置通知。 首先,我找到了udev-notify软件包,但不幸的是,它几乎对我不起作用:它只用了很少的时间(1-2分钟),然后,如果我连接/断开任何设备,它就会崩溃: Traceback (most recent call last): File "./udev-notify.py", line 319, in <module> notification.show() glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.1061 was not provided by any .service files 我没有找到任何解决方案,因此我不得不将其删除。(日提交错误报告也) 令人惊讶的是,到目前为止我还没有找到类似的实用程序。然后,我尝试编写应与所有设备匹配的udev规则。我添加了新文件/etc/udev/rules.d/notify.rules: ACTION=="add", RUN+="/bin/bash /home/dimon/tmp/device_plug.sh" ACTION=="remove", RUN+="/bin/bash /home/dimon/tmp/device_unplug.sh" 还有两个脚本: device_plug.sh: #!/bin/bash export DISPLAY=":0" notify-send "device plugged" /usr/bin/play -q /path/to/plug_sound.wav & device_unplug.sh: …

4
如何启用“可预测的网络接口名称”?
我决定检查一下我的以太网设备的名称,但是与其他发行版相反,Debian似乎并未激活此更改(或正在阻止它进行更改), 现在保留旧的持久性网络接口命名方案,并在内核命令行上通过net.ifnames = 1进行新的选择加入。 问题是我必须编辑grub内核行,对于通过修改file可以禁用的某些操作来说似乎有些过头了。还有另一种方法吗?
12 debian  systemd  udev 

6
通过主/副数字对获取设备节点
下面的每个设备节点/dev都有其自己的主/副号码对。我知道我们可以通过的方式从设备节点检索这对数字stat,如下所示: stat -c 'major: %t minor: %T' <file> 或者,ls -l也显示这些数字。 但是,如何通过给定的主号和副号获得设备节点?我知道的唯一方法是某种ls -l+ awk技巧,但我真的希望有更好的解决方案。
12 udev 

2
为什么该udev规则在移除设备后不触发?
我有两只鼠标,其中一只鼠标中键和button6被同时触发。因此,我将我配置~/.Xmodmap为禁用此按钮。但是,与此同时,我希望其他鼠标仍然可以使用此按钮。因此,我写了一条udev规则,要求xmodmap根据所连接的鼠标来更改按钮的布局。 设定 这是我当前的设置: /etc/udev/rules.d/logitech-g7.rules: # deactivate MB 6 when mouse 1 is connected ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 1", OWNER="user" # restore defaults when mouse 1 is disconnected ACTION=="remove", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 0", OWNER="user" /home/user/.scripts/疑难解答/修正/ mouseswitcher_wrapper: #!/bin/bash /home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher "$1"& /home/user/.scripts/问题排查/错误修复/ mouseswitcher #!/bin/bash sleep 1 DISPLAY=":0.0" HOME=/home/user/ XAUTHORITY=$HOME/.Xauthority export DISPLAY …
12 usb  mouse  udev  xmodmap 

1
编写udev规则以停止systemd下的服务的正确方法是什么
我正在运行Arch Linux,并且具有udev规则,该规则可在插入设备时启动服务。在这种情况下,当插入3G调制解调器时,它将拨打连接。 KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="netcfg@wvdial.service" 但是,如果卸下了该设备,systemd将不会停止该服务,因此,当再次插入该设备时,由于它已经在运行,因此它不会启动该服务。 我需要的是一条匹配的udev规则,该规则将在卸下设备以停止服务时运行。 更新资料 使用下面的答案,我现在拥有的是以下udev规则 KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service" 带有以下服务文件(基本上是从netcfg服务文件复制并粘贴的): [Unit] Description=Netcfg networking service for Vodafone Dongle Before=network.target Wants=network.target BindsTo=dev-gsmmodem.device After=dev-gsmmodem.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/netcfg check-iface wvdial ExecStop=-/usr/bin/netcfg down wvdial KillMode=none [Install] WantedBy=multi-user.target 我正在使用netcfg-wvdialAUR进行拨号。
12 linux  udev  systemd 

3
BunsenLabs(Debian衍生产品)不会关闭(无法启动poweroff.target:交易具有破坏性)
我偶然发现了本生实验室GNU / Linux(基于Debian)的怪异行为。 有时我无法关闭操作系统。不管我使用sudo poweroff还是GUI方法都没关系。 这是我运行后得到的sudo poweroff: Failed to start poweroff.target: Transaction is destructive 有解决方法吗?为什么会这样呢? 这是我的内容/lib/udev/rules.d/70-power-switch.rules: ACTION=="remove", GOTO="power_switch_end" SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch" SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch" LABEL="power_switch_end"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.