我使用setpci
grub 命令来设置设备功能,并且该命令的 grub 和 pciutils 版本在查询以验证其设置是否正确时返回不同的结果。我的问题是:
- 我是否误解了输出?
- 如果是这样,解释输出的正确方法是什么?
- 如果不是,实际值是多少?如何将其设置为我想要的值?我可以恢复我正在遵循的说明吗?
编辑:所以这个问题很大程度上是学术性的,因为在按照说明的最后一步重新安装驱动程序后,音频现在通过 HDMI 工作,但我仍然很好奇知道不同值发生了什么。我原来的问题的其余部分如下。
有几个问题与此类似,但我似乎遇到了其他人没有遇到的新问题,尽管我真诚地希望 PEBKAC!我运行的是 Mint 19.3,所以我不确定这是否算作 Ubuntu 问题,所以我在这里发帖。
最终目标是让 nvidia-340 驱动程序正常工作,这样我就可以通过我拥有的迷你 DP 转 HDMI 电缆获得声音。有关我迄今为止所做的详细信息,请查看这个线程在 Linux Mint 论坛上。
我按照这里的说明进行操作询问Ubuntu答案,但是登录后从 bash 查询桥的 PCI 函数会不断返回原始值。我又发现了一个询问Ubuntu答案这似乎是同样的问题,但没有帮助。我发现grub-efi-amd64-bin
已经安装了。更重要的是,在添加insmod setpci
到 grub 脚本后登录后,我仍然没有看到正确的值查询。但是,如果我setpci -s "00:01.0" 3eb
在启动前从 grub 命令行运行,我得到的输出就是我所期望的:
Register 3e of 0:01.0 is 8
如果我在启动完成并登录后运行该命令,则得到的输出为0a
.我知道这两个setpci
命令实际上是不同的,但我查看了源代码(见下文),它们都输出十六进制。并不0a
等于8
。
$sudo setpci -v -s "00:01.0" 3e.b
0000:00:01.0 @3e = 0a
我确信 的内容/etc/grub.d/01_enable_vga.conf
正在制作中grub.cfg
。我什至之前添加了一些回显语句,它们在启动前回显。
$ tail -n +105 /boot/grub/grub.cfg | head -n 5
### BEGIN /etc/grub.d/01_enable_vga.conf ###
insmod setpci
setpci -s "00:01.0" 3e.b=8
setpci -s "01:00.0" 04.b=7
### END /etc/grub.d/01_enable_vga.conf ###
$ cat -n /boot//grub/grub.cfg | grep setpci
106 insmod setpci
107 setpci -s "00:01.0" 3e.b=8
108 setpci -s "01:00.0" 04.b=7
有什么想法吗?
我已经很长时间没有进行过任何认真的 C 编程了,而且我已经超出了我的深度,但是 setpci grub 模块的源代码位于setpci.c:128似乎正在输出十六进制。 setpci 与 pciutils 版本 3.5.2 的源代码读起来有点晦涩,但也设置 PCI:160似乎也在输出十六进制。当然,只有一种解释方式0a
,一种是 for 8
,而且它们无论如何都不一样!正确的?