最简单的方法

最简单的方法

我有一台正在运行的服务器,我希望能够通过连接到 VGA 的屏幕访问它(这种情况很少见,大多数情况下是通过 SSH 访问的)。因此,我插入了 PCI-e 显卡并拔下了 VGA 电缆。显卡是被动冷却的,如果我打开机箱并触摸凉爽的机身,我会感觉到明显的温暖,并得出结论,它正在消耗能量(它附近没有任何可以以任何方式传输热能的消费者)。

如果我拔掉卡(如建议的我应该禁用未使用的显卡吗?) 每次我想连接屏幕时,都必须内置它。我想避免这种情况以及能源消耗。

取消激活和重新激活需要在操作系统级别进行(例如通过 SSH),因为否则我需要一个屏幕来配置 UEFI(或者盲目地进行配置,这是没有选择),并遇到先有鸡还是先有蛋的问题。

我使用的是 Ubuntu 15.04 和 Linux 4.0.2。显卡标为 XFX HD 5450 850M,有 VGA、HDMI 和 D-SUB 接口。主板是 ASRock X99-Extreme,没有集成显卡。

编辑:将使用的模块列入黑名单后sudo lspci -v(按照@WhimsicalWombat 下面的有希望的回答)(在我的情况下,我必须使用modprobe.blacklist=module_to_blacklist内核参数 - 请参阅https://askubuntu.com/questions/110341/how-to-blacklist-kernel-modules更多详细信息 - 对于radeonsnd_hda_intel),PCIe 显卡仍然会发热 (被动冷却器温度超过 60 度,附近没有热源),并且lspci -v设备中没有列出模块。 设备的输出lspci -v不是

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series] (prog-if 00 [VGA controll
er])
        Subsystem: XFX Pine Group Inc. Device 303e
        Physical Slot: 4
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at e0000000 (64-bit, prefetchable) [size=256M]
        Memory at fbe20000 (64-bit, non-prefetchable) [size=128K]
        I/O ports at e000 [size=256]
        Expansion ROM at fbe00000 [disabled] [size=128K]
        Capabilities: [50] Power Management version 3
        Capabilities: [58] Express Legacy Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Capabilities: [150] Advanced Error Reporting

01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cedar HDMI Audio [Radeon HD 5400/6300 Series]
        Subsystem: XFX Pine Group Inc. Device aa68
        Physical Slot: 4
        Flags: bus master, fast devsel, latency 0, IRQ 10
        Memory at fbe40000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [50] Power Management version 3
        Capabilities: [58] Express Legacy Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Capabilities: [150] Advanced Error Reporting

编辑2:https://askubuntu.com/a/138953/173287建议这样做echo 0 > /sys/bus/pci/slots/$N/power,并且我有一个列出的插槽号/sys/bus/pci/slots/$N,但没有文件。$Nlspci -vpower

编辑 3:将的模态别名添加/sys/bus/pci/devices/[device]/modaliasmodprobe.blacklist=内核参数对 Ubuntu 主线内核没有影响http://kernel.ubuntu.com/~kernel-ppa/mainline/并且自定义的 4.0.5 版本make localmodconfig以及所有 PCI 选项的激活会导致“正在加载 initramfs [版本]”屏幕在显卡仍在升温时一直可见。

答案1

最简单的方法

最简单的方法是将其内核模块列入黑名单并卸载。您可以通过以下方式首先检查总线号来查看其当前模块:

sudo lspci | egrep -i "(vga|video)"

注意第一个带有数字的字段,例如01:00.0。然后显示正在使用的模块:

sudo lspci -vs 01:00 | grep modules

对于支持 HDMI 的设备,通常有一个子设备,如 01:00.1,它是 HDMI 音频设备。也​​将其列入黑名单。

添加这两个 /etc/modprobe.d/blacklist 或 blacklist.conf,并在 blacklist 命令之前添加。例如“blacklist radeon”和“blacklist "snd-hda-intel" 等。

如果您想使用该设备,只需sudo modprobe [module name]启用它即可。

定制方式

如果这还不够,或者您实际使用的 GPU(集成或第二个适配器)使用相同的模块,请将要禁用的模块绑定到pci-stub驱动程序。最好的方法是在启动时从内核命令行执行此操作。只需添加

pcistub="pci-stub.ids=<vendorID:deviceID>"

vendorID:deviceID用你可以找到的代码替换

lspci -nns <your bus number from above e.g. 01:00>
pcistub="pci-stub.ids=1002:6718,1002:aa80"

如果您想在将其绑定到 pcistub 后使用它,您可以通过 sysfs 取消绑定并将其重新绑定到您选择的驱动程序,或者(更简单)在没有命令行的情况下重新启动和启动。

如果可用的话,我会首先尝试仅禁用模块自动加载是否足够。

编辑:

如果您将某个驱动程序列入黑名单,内核可能会尝试下一个可用的驱动程序。如果是这样,您也可以将其列入黑名单,除非您需要它。它很快就会用完兼容的驱动程序,导致设备没有驱动程序,并且应该关闭(或至少低功率)。

如果即使没有使用内核驱动程序,系统也会发热,请更新帖子。我很想知道这个消息。

相关内容