我几乎经常使用来自Ubuntu 内核 PPA的内核,或者我自己编译的内核,使用 Ubuntu 内核配置。
问题是当我使用股票内核时,它似乎默认使用可预测的网络接口名称(即“p4p1”),但当我使用任何备用内核时,它似乎默认使用旧方法(即“eth0”)。
虽然与这个问题并不真正相关,但我的测试计算机出现硬盘故障,并且正在重新安装 Ubuntu Server 14.04.2。
我一直无法确定内核之间有什么区别。我怀疑是内核配置参数,但一直无法确定是哪个。
我的问题:如何使可预测的网络接口名称在所有内核中一致地工作?
附加说明:我在某处看到禁用可预测的网络接口名称以将其添加到 grub:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
Run Code Online (Sandbox Code Playgroud)
所以,我认为相反的可能会有所帮助:
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
Run Code Online (Sandbox Code Playgroud)
但它没有任何区别。实际上,无论设置如何,我都无法让非库存内核使用 biosdevname。而且我永远无法让库存内核生成/etc/udev/rules.d/70-persistent-net.rules文件(即使这不是我想要的),无论net.ifnames. 如果我有net.ifnames=1,那么至少非库存内核不会生成不正确的/etc/udev/rules.d/70-persistent-net.rules文件。
摘自/var/log/udev:
股票内核:
KERNEL[9.216730] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
IFINDEX=2
INTERFACE=p4p1
SEQNUM=1945
SUBSYSTEM=net
...
UDEV [9.241073] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
ID_BUS=pci
ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
ID_MODEL_ID=0x8168
ID_NET_NAME_MAC=enxf46d04652d8e
ID_NET_NAME_PATH=enp3s0
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
ID_PCI_CLASS_FROM_DATABASE=Network controller
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=p4p1
Run Code Online (Sandbox Code Playgroud)
从 Ubuntu …
我想使用我的 Yubikey Neo 登录 Ubuntu 14.04。此外,如果每次拔下 Yubikey 时都自动锁定屏幕,那将很方便。
我有一台带 HDMI 端口的笔记本电脑。当我们无家可归并与朋友住在一起时,我一直在用 HDMI 电缆将其插入他们的环绕声接收器。为了让声音正常工作,我必须打开声音设置作业并将硬件配置文件从“模拟立体声输出”切换到“数字立体声(HDMI)输出”,以使声音来自环绕声而不是笔记本电脑的扬声器。
当我拔下插头时,我必须反过来做才能让声音从扬声器中传出。
我对这样做有点厌烦了。我想编写这个脚本。我已经看过这个问题及其答案,但是pacmd list-sinks当声音配置文件下拉列表显示多个选项时,只显示一个接收器。
是否有一个 udev 事件我可以将其挂钩,以便它可以在 HDMI 状态发生变化时运行脚本?
一些系统使用 udev / pmount 来自动挂载拇指驱动器。这是如何在 Ubuntu(特别是 Ubuntu 12.04)中解决的?显然,pmount 包和相应的 udev 规则都不存在,但 Ubuntu 会自动挂载插入的 USB 驱动器。怎么会这样?
请注意帖子末尾的三个更新。
我使用该forcepae选项在较旧的 Acer Travelmate 4500 上安装了 Lubuntu 14.04.1,并根据https://askubuntu.com/a/515909/288322调整 upowerd.py 。运行更新管理器直到系统被称为是最新的,我有两个问题:我无法访问 USB 记忆棒和笔记本电脑在关机期间挂起。
问题可能以某种方式与更新包“common library libudev”和“/dev/ and hotplug background process”有关:我一次选择一个更新;when selecting "common library libudev" as the second last (I wanted to select "/dev/ and hotplug background process" as the last one), the update hung at that moment the status bar showed Setting up udev (204-5ubuntu20.5). 在此之前的一些行中,它说Adding diversion of /bin/udevadm to /bin/udevadm.upgrade by fake-udev';这可能也很有趣。除此之外就是通常的准备解包、解包、处理和设置“libudev1:i386 (204-5ubuntu20.5)”。我不得不杀死更新管理器并重新启动笔记本电脑。
现在,即重新开机后,我可以访问USB记忆棒和系统关机工作优秀(显示All processes …
usr/local/bin/当我将外部显示器连接到我的笔记本电脑时,我正在尝试运行位于 中的脚本。我试图添加一条新udev规则,但没有奏效。我在/etc/udev/rules.d名为vga-monitor-connect.rules. 该文件的内容是
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/panel-fix"
Run Code Online (Sandbox Code Playgroud)
我从这个答案中得到了这条线
在网上搜索后,我也尝试了以下规则
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/rumesh/.Xauthority", RUN+="/usr/local/bin/panel-fix"
Run Code Online (Sandbox Code Playgroud)
然而这也不起作用。
我已经手动运行了脚本,我可以确认它可以工作,所以我的脚本没有问题。
我也想说清楚,我知道的不多,udev所以我使用的规则可能是错误的。如果有人知道我的问题的正确规则,请留下答案。
我的显卡是Intel GM965集成芯片组
用户在未卸载的情况下拔下 U 盘后,反复抱怨 U 盘上的数据丢失。我们在我们的机器上运行 Ubuntu 14.04 LTS。已启用自动安装。
因为我厌倦了在拔出之前记住它们要安全移除,所以我想让 Ubuntu 在拔出安装的 USB 驱动器时显示警报。
我想添加一个udev规则,该规则notify-send在驱动器仍然安装的情况下在移除时运行。如何确定 USB 驱动器在移除时是否已安装?
如果我修改/etc/pulse/default.pa并更改此行:
load-module module-udev-detect
Run Code Online (Sandbox Code Playgroud)
到:
load-module module-udev-detect tsched=0
Run Code Online (Sandbox Code Playgroud)
我显然禁用了 tsched。同样,如果我将行更改为,
load-module module-udev-detect tsched=yes
Run Code Online (Sandbox Code Playgroud)
我正在启用 tsched。这两个都可以通过运行来验证,
pactl list | grep tsched
Run Code Online (Sandbox Code Playgroud)
并查看文档,
tsched从 0.9.11 开始。使用基于系统定时器的模型(又名无故障)。默认为 1(启用)。如果您的硬件没有返回准确的计时信息(例如 Creative 声卡),您可以尝试设置 tsched=0 以启用在 0.9.10 及之前使用的基于中断的计时。
但是我有两台机器(不同的硬件),一台返回tsched=yes,一台不返回。
默认值真的是 1(启用/是)吗?如果它没有出现在 pactl 中,有没有办法验证它是否真的被启用?什么(在硬件中)决定它是否真的启用?
在我们的云中,我们生成带有2c:c2:60实例前缀的 MAC 。当我们重用或复制一个实例时,新副本会获得另一个 MAC 地址。当新副本启动时,由于新的 MAC,NIC 获得名称 eth1。
我看到在 中/lib/udev/rules.d/75-persistent-net-generator.rules,有一些已知前缀的规则,例如52:54:00 (KVM)and VMWare (00:0c:29)。但是这个文件应该没有在第一行规定进行编辑。我们想使用我们自己注册的 MAC 前缀,而不是其他人的。
如何完全禁用网络规则生成?
我的 Ubuntu 服务器 14.04 上有三个网络摄像头。lsusb 的输出:
Bus 006 Device 002: ID 0bda:8153 Realtek Semiconductor Corp.
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 2537:1066
Bus 004 Device 002: ID 05e3:0616 Genesys Logic, Inc.
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 1871:0101 Aveo Technology Corp. UVC camera (Bresser microscope)
Bus 003 Device 004: …Run Code Online (Sandbox Code Playgroud) udev ×10
14.04 ×3
12.04 ×2
kernel ×2
pulseaudio ×2
usb ×2
10.04 ×1
automount ×1
events ×1
hdmi ×1
lightdm ×1
lock-screen ×1
lubuntu ×1
networking ×1
notify-send ×1
scripts ×1
sound ×1
unmount ×1
webcam ×1
xrandr ×1