![невозможно редактировать содержимое /sys/bus/pci/devices](https://rvso.com/image/1073518/%D0%BD%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D0%BE%D0%B5%20%2Fsys%2Fbus%2Fpci%2Fdevices.png)
при попытке бежать
#!/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
(как sh-файл) Я получил вывод
./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
при просмотре местоположений этих файлов я обнаружил, что /sys/bus/pci/devices/0000:17:00.0/driver_override и /sys/bus/pci/devices/0000:17:00.1/driver_override уже существуют, а их содержимое равно "(null)"
решение1
Эта проблема, скорее всего, связана с тем, что вы не запускаете скрипт с правами root. Каталог /sys
в Linux является частью виртуальной файловой системы и защищен. Изменение файлов здесь часто требует прав root (или суперпользователя).
В вашем случае вы пытаетесь изменить driver_override
файлы, для чего требуются более высокие привилегии.
Попробуйте запустить скрипт с помощью sudo, например так:
sudo ./a.sh
Эта команда выполнит скрипт с привилегиями root, и вы больше не увидите ошибку «Отказано в доступе».
Однако будьте осторожны при запуске скриптов с правами root, особенно когда они изменяют системные файлы, поскольку ошибки могут потенциально нанести вред вашей системе. Всегда убеждайтесь, что вы понимаете, что делает скрипт, прежде чем запускать его как root-пользователь.
Содержимое "(null)" в driver_override
файле может быть связано с тем, что не указан драйвер для переопределения текущего. Интерфейс driver_override
позволяет указать конкретный драйвер для привязки к устройству при выполнении автоматического зондирования драйвера устройства. Это расширенная функция, и ее следует использовать осторожно.