Root 无法在 /sys/bus/pci/devices/0000:03:00.1 下创建新文件

Root 无法在 /sys/bus/pci/devices/0000:03:00.1 下创建新文件

基本上,我尝试修复 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 找到一个条目,表明只有某些设备支持此功能,读取该文件将给出方法列表。写入文件的正确数据包括此列表中的内容、空字符串和“默认”。

相关内容