![Inhalt von /sys/bus/pci/devices kann nicht bearbeitet werden](https://rvso.com/image/1073518/Inhalt%20von%20%2Fsys%2Fbus%2Fpci%2Fdevices%20kann%20nicht%20bearbeitet%20werden.png)
beim Versuch zu rennen
#!/bin/sh
for i in /sys/bus/pci/devices/*/boot_vga; do
if [ $(cat "$i") -eq 0 ]; then
GPU="${i%/boot_vga}"
AUDIO="$(echo "$GPU" | sed -e "s/0$/1/")"
USB="$(echo "$GPU" | sed -e "s/0$/2/")"
echo "vfio-pci" > "$GPU/driver_override"
if [ -d "$AUDIO" ]; then
echo "vfio-pci" > "$AUDIO/driver_override"
fi
if [ -d "$USB" ]; then
echo "vfio-pci" > "$USB/driver_override"
fi
fi
done
modprobe -i vfio-pci
(als sh-Datei) Ich habe die Ausgabe
./a.sh: 8: cannot create /sys/bus/pci/devices/0000:17:00.0/driver_override: Permission denied
./a.sh: 10: cannot create /sys/bus/pci/devices/0000:17:00.1/driver_override: Permission denied
beim Betrachten dieser Dateispeicherorte habe ich festgestellt, dass /sys/bus/pci/devices/0000:17:00.0/driver_override und /sys/bus/pci/devices/0000:17:00.1/driver_override bereits vorhanden waren und deren Inhalt „(null)“ ist.
Antwort1
Dieses Problem liegt wahrscheinlich daran, dass Sie das Skript nicht mit Root-Berechtigungen ausführen. Das /sys
Verzeichnis in Linux ist Teil des virtuellen Dateisystems und geschützt. Das Ändern von Dateien hier erfordert häufig Root- (oder Superuser-)Berechtigungen.
In Ihrem Fall versuchen Sie, driver_override
Dateien zu ändern, die höhere Berechtigungen erfordern.
Versuchen Sie, das Skript mit sudo wie folgt auszuführen:
sudo ./a.sh
Dieser Befehl führt das Skript mit Root-Rechten aus und der Fehler „Zugriff verweigert“ sollte nicht mehr angezeigt werden.
Seien Sie jedoch vorsichtig, wenn Sie Skripte mit Root-Berechtigungen ausführen, insbesondere wenn sie Systemdateien ändern, da Fehler Ihr System möglicherweise beschädigen könnten. Stellen Sie immer sicher, dass Sie verstehen, was das Skript tut, bevor Sie es als Root-Benutzer ausführen.
Der Inhalt „(null)“ in der driver_override
Datei kann darauf zurückzuführen sein, dass kein Treiber angegeben wurde, um den aktuellen zu überschreiben. Über die driver_override
Schnittstelle können Sie einen bestimmten Treiber angeben, der an ein Gerät gebunden werden soll, wenn die automatische Gerätetreiberprüfung durchgeführt wird. Dies ist eine erweiterte Funktion und sollte mit Vorsicht verwendet werden.