我正在尝试调试一个问题,从挂起恢复使用NVIDIA显卡。这个帖子让我相信,这是一个问题的音频设备从卡的HDMI出来。我想禁用设备,但udev规则和内核参数没有任何影响。我如何才能排除这些方法不能工作,或者使用其他方式禁用设备,以便我可以绝对排除它引起我的问题的可能性?
有关设备的sudo lspci -vv
输出(删除了无关字段):
58:00.1 Audio device: NVIDIA Corporation Device 10fa (rev a1)
Subsystem: Micro-Star International Co., Ltd. [MSI] Device 3800
Control: (...)
Status: (...)
Latency: 0
Interrupt: pin B routed to IRQ 18
IOMMU group: 19
Region 0: Memory at 61080000 (32-bit, non-prefetchable) [size=16K]
Capabilities: (...)
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
lspci -nns 58:00.1
:
58:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10fa] (rev a1)
我试过的是:
cat /etc/udev/rules.d/10-remove-nvidia-audio.rules
ACTION==“add”, KERNEL=="0000:58:00.1", SUBSYSTEM=="pci", RUN="/bin/sh -c ‘echo 1 > /sys/bus/pci/devices/0000:58:00.1/remove’"
手动运行RUN命令确实会断开设备的连接,但挂起问题仍然存在,而且我无法确定设备是否在简历上重新连接(journalctl
只记录到挂起操作,不记录任何有关简历的信息,假设这是因为我不得不强制关闭电源才能再次使用我的计算机)。为了让udev规则生效,我还需要做些什么吗?
pcistub=pci-stub.ids=10de:10fa
我不能使用我所看到的答案中概述的另一种方法,因为snd_hda_intel
也用于实际的音频输出。
如有任何建议,敬请见谅。谢谢!
发布于 2022-12-08 07:43:51
我是通过创建systemd服务来完成这个任务的,该服务在启动时删除了设备。
该服务的主体如下所示:
# systemctl cat remove-nvidia
# /etc/systemd/system/remove-nvidia.service
[Unit]
Description=removes pci nvidia upon boot
[Service]
Type=oneshot
User=root
RemainAfterExit=true
ExecStart=/usr/bin/bash -c "echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove"
[Install]
WantedBy=multi-user.target
您需要重新加载守护进程:
# systemctl daemon-reload
并启用服务
# systemctl enabled remove-nvidia
结果将是单独的服务,删除pci (在我的例子中)。
用lspci -vv
可以找到pci设备的id。
祝好运
发布于 2022-11-29 12:54:12
几乎都是正确的。只是不要把最后一个'
放在一条直线上,它必须在那里:
/etc/udev/rules.d/99-zz.rules
(以确保它作为最后一条规则执行)。0000:58:00.1/remove'"
-不起作用。0000:58:00.1/remove"
-这没问题https://unix.stackexchange.com/questions/702774
复制相似问题