首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在启动时禁用PCIe设备?

如何在启动时禁用PCIe设备?
EN

Unix & Linux用户
提问于 2022-05-16 15:40:17
回答 2查看 1.4K关注 0票数 1

我正在尝试调试一个问题,从挂起恢复使用NVIDIA显卡。这个帖子让我相信,这是一个问题的音频设备从卡的HDMI出来。我想禁用设备,但udev规则和内核参数没有任何影响。我如何才能排除这些方法不能工作,或者使用其他方式禁用设备,以便我可以绝对排除它引起我的问题的可能性?

有关设备的sudo lspci -vv输出(删除了无关字段):

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
58:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10fa] (rev a1)

我试过的是:

  • udev规则:
代码语言:javascript
运行
复制
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规则生效,我还需要做些什么吗?

代码语言:javascript
运行
复制
pcistub=pci-stub.ids=10de:10fa

我不能使用我所看到的答案中概述的另一种方法,因为snd_hda_intel也用于实际的音频输出。

如有任何建议,敬请见谅。谢谢!

EN

回答 2

Unix & Linux用户

发布于 2022-12-08 07:43:51

我是通过创建systemd服务来完成这个任务的,该服务在启动时删除了设备。

该服务的主体如下所示:

代码语言:javascript
运行
复制
# 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

您需要重新加载守护进程:

代码语言:javascript
运行
复制
 # systemctl daemon-reload

并启用服务

代码语言:javascript
运行
复制
# systemctl enabled remove-nvidia

结果将是单独的服务,删除pci (在我的例子中)。

lspci -vv可以找到pci设备的id。

祝好运

票数 1
EN

Unix & Linux用户

发布于 2022-11-29 12:54:12

几乎都是正确的。只是不要把最后一个'放在一条直线上,它必须在那里:

  • 创建文件/etc/udev/rules.d/99-zz.rules (以确保它作为最后一条规则执行)。
  • 然后添加:ACTION==“添加”,KERNEL==0000:58:00.1“,SUBSYSTEM=="pci",RUN="/bin/sh -c‘echo 1>/sys/bus/pci/设备/0000:58:00.1/删除”“
    • 0000:58:00.1/remove'" -不起作用。
    • 0000:58:00.1/remove" -这没问题
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/702774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档