ルートは/sys/bus/pci/devices/0000:03:00.1の下に新しいファイルを作成できません。

ルートは/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

奇妙なことは、2番目のエコーが機能しないことです。その後、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

ルートにフォルダに対する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を検索して、特定のデバイスのみがこの機能をサポートしていることを見つけます。ファイルを読み取ると、メソッドのリストが表示されます。 。ファイルに書き込まれた正しいデータには、このリストの内容、空の文字列、および「デフォルト」が含まれます。

おすすめ記事