não é possível editar o conteúdo de /sys/bus/pci/devices

não é possível editar o conteúdo de /sys/bus/pci/devices

ao tentar executar

#!/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

(como um arquivo sh) obtive a saída

./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

ao examinar esses locais de arquivos, descobri que /sys/bus/pci/devices/0000:17:00.0/driver_override e /sys/bus/pci/devices/0000:17:00.1/driver_override já existiam, cujo conteúdo é "(nulo)"

Responder1

Esse problema provavelmente ocorre porque você não está executando o script com permissões de root. O /sysdiretório no Linux faz parte do sistema de arquivos virtual e é protegido. A modificação de arquivos aqui geralmente requer permissões de root (ou superusuário).

No seu caso, você está tentando modificar driver_overridearquivos, que precisam de privilégios mais elevados.

Tente executar o script com sudo, assim:

sudo ./a.sh

Este comando executará o script com privilégios de root e você não deverá mais ver o erro “Permissão negada”.

No entanto, tenha cuidado ao executar scripts com permissões de root, especialmente quando eles modificam arquivos do sistema, pois erros podem danificar seu sistema. Sempre certifique-se de entender o que o script está fazendo antes de executá-lo como usuário root.

O conteúdo "(nulo)" no driver_overridearquivo pode ser porque nenhum driver foi especificado para substituir o atual. A driver_overrideinterface permite que você especifique um driver específico para vincular a um dispositivo quando a verificação automática do driver do dispositivo for executada. É um recurso avançado e deve ser usado com cuidado.

informação relacionada