基本上,我尝试修复 amd GPU 直通的供应商重置错误因此我为 qemu 创建一个挂钩文件并手动重置 GPU 和 HDMI 设备:
echo 'device_specific' > /sys/bus/pci/devices/0000:03:00.0/reset_method
echo 'device_specific' > /sys/bus/pci/devices/0000:03:00.1/reset_method
奇怪的是第二个回声不起作用。然后我发现 sudo/root 在 /sys/bus/pci/devices/0000:03:00.1/ 下没有创建新文件的权限。
ls -al 显示:
lrwxrwxrwx root root 0 B Sun Feb 5 22:31:46 2023 0000:03:00.0 ⇒ ../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0
lrwxrwxrwx root root 0 B Sun Feb 5 22:31:46 2023 0000:03:00.1 ⇒ ../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.1
显示root对该文件夹有rwx权限,但是为什么我可以在其中创建文件?
答案1
- 符号链接(由
l
列表第一列中的 表示)没有真正的权限,因此那里的权限没有意义。要么查看真实的文件,要么使用 的-L
选项ls
来获取真实的权限。 - /sys 文件系统是一个虚拟文件系统,没有存储支持。它是由内核和内核中的设备驱动程序动态生成的。如果文件丢失,则可能是支持该文件的硬件不存在,或者驱动程序不支持该文件所代表的功能。您需要升级内核或加载驱动程序或添加硬件来修复该问题。
- 由于 /sys 是虚拟的,即使您查看文件的实际权限,它们仍然没有太多意义,因为虚拟文件系统不必遵守它们。
- 如果您尝试以错误格式写入数据或尝试写入非法值,/sys 和 /proc 中的许多文件将忽略写入。请记住,此数据本身并不保存,而是发送到驱动程序或内核,驱动程序或内核可能会更改其内部设置,并可能以相同或不同的格式重新发布实际结果设置。
检查我自己系统中的一些随机设备,/sys/bus/pci/devices/*/
有些有reset_method,有些没有。
查看 /usr/share/doc/linux-doc/ABI/testing/sysfs-bus-pci.gz 并搜索 reset_method 找到一个条目,表明只有某些设备支持此功能,读取该文件将给出方法列表。写入文件的正确数据包括此列表中的内容、空字符串和“默认”。