/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가 이미 존재하며 그 내용은 다음과 같습니다. "(없는)"

답변1

이 문제는 루트 권한으로 스크립트를 실행하지 않기 때문에 발생할 수 있습니다. Linux의 디렉터리 /sys는 가상 파일 시스템의 일부이며 보호됩니다. 여기에서 파일을 수정하려면 루트(또는 수퍼유저) 권한이 필요한 경우가 많습니다.

driver_override귀하의 경우에는 더 높은 권한이 필요한 파일을 수정하려고 합니다 .

다음과 같이 sudo를 사용하여 스크립트를 실행해 보세요.

sudo ./a.sh

이 명령은 루트 권한으로 스크립트를 실행하므로 더 이상 "권한 거부됨" 오류가 표시되지 않습니다.

그러나 루트 권한으로 스크립트를 실행할 때, 특히 시스템 파일을 수정할 때 실수가 잠재적으로 시스템에 해를 끼칠 수 있으므로 주의하십시오. 루트 사용자로 스크립트를 실행하기 전에 항상 스크립트가 수행하는 작업을 이해했는지 확인하십시오.

파일의 "(null)" 내용은 driver_override현재 드라이버를 재정의하도록 지정된 드라이버가 없기 때문일 수 있습니다. 인터페이스 driver_override를 사용하면 장치 드라이버 자동 검색이 수행될 때 장치에 바인딩할 특정 드라이버를 지정할 수 있습니다. 이는 고급 기능이므로 주의해서 사용해야 합니다.

관련 정보