невозможно редактировать содержимое /sys/bus/pci/devices

невозможно редактировать содержимое /sys/bus/pci/devices

при попытке бежать

#!/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позволяет указать конкретный драйвер для привязки к устройству при выполнении автоматического зондирования драйвера устройства. Это расширенная функция, и ее следует использовать осторожно.

Связанный контент