![/sys/bus/pci/devices의 내용을 편집할 수 없습니다](https://rvso.com/image/1073518/%2Fsys%2Fbus%2Fpci%2Fdevices%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%ED%8E%B8%EC%A7%91%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.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가 이미 존재하며 그 내용은 다음과 같습니다. "(없는)"
답변1
이 문제는 루트 권한으로 스크립트를 실행하지 않기 때문에 발생할 수 있습니다. Linux의 디렉터리 /sys
는 가상 파일 시스템의 일부이며 보호됩니다. 여기에서 파일을 수정하려면 루트(또는 수퍼유저) 권한이 필요한 경우가 많습니다.
driver_override
귀하의 경우에는 더 높은 권한이 필요한 파일을 수정하려고 합니다 .
다음과 같이 sudo를 사용하여 스크립트를 실행해 보세요.
sudo ./a.sh
이 명령은 루트 권한으로 스크립트를 실행하므로 더 이상 "권한 거부됨" 오류가 표시되지 않습니다.
그러나 루트 권한으로 스크립트를 실행할 때, 특히 시스템 파일을 수정할 때 실수가 잠재적으로 시스템에 해를 끼칠 수 있으므로 주의하십시오. 루트 사용자로 스크립트를 실행하기 전에 항상 스크립트가 수행하는 작업을 이해했는지 확인하십시오.
파일의 "(null)" 내용은 driver_override
현재 드라이버를 재정의하도록 지정된 드라이버가 없기 때문일 수 있습니다. 인터페이스 driver_override
를 사용하면 장치 드라이버 자동 검색이 수행될 때 장치에 바인딩할 특정 드라이버를 지정할 수 있습니다. 이는 고급 기능이므로 주의해서 사용해야 합니다.