Macbook Pro(Arch Linux 실행)에서 작동하도록 nvidia GPU 드라이버를 얻으려고 합니다. 지시에 따라여기, 일부 PCI 레지스터를 설정해야 합니다.앞으로모듈이 nvidia
로드되었습니다. 그렇지 않으면 작동하지 않습니다. 이 단락에서는 "udev 후크"를 사용하여 이 작업을 수행할 수 있다고 언급하지만 nvidia
udev 규칙이 로드되기 전에 확실히 실행되는 방식으로 이를 수행하는 방법을 잘 모르겠습니다 .
다음 udev 규칙( 67-Nvidia-320M.rules
)을 만들었습니다.
# Udev rule to set correct PCI register values for NVidia 320M GPU
# this is required for proprietary NVidia driver to work properly
KERNEL=="card[0-9]*", SUBSYSTEM=="drm", SUBSYSTEMS=="pci", ATTRS{vendor}=="0x10de", \
ATTRS{device}=="0x08a0", RUN+="/root/Scripts/set_pci_registers.sh"
/dev/dri/card0
그래픽 카드가 감지되면 다음 스크립트를 실행하십시오.
#!/bin/bash
# Script to set correct PCI registers on boot for NVidia 320M GPU
# First, check to see if the driver has already loaded:
lsmod | grep nvid >> /root/pci_check.log
# Set pci registers:
echo "Registers before:" >> /root/pci_check.log
setpci -s "00:17.0" 3e.b >> /root/pci_check.log
setpci -s "04:00.0" 04.b >> /root/pci_check.log
setpci -s "00:17.0" 3e.b=8
setpci -s "04:00.0" 04.b=7
# Check registers are set correctly and output to a file:
echo "Registers after:" >> /root/pci_check.log
setpci -s "00:17.0" 3e.b >> /root/pci_check.log
setpci -s "04:00.0" 04.b >> /root/pci_check.log
스크립트를 실행하고 로그 파일에 기록합니다. 그러나 nvidia
로드 후에 스크립트가 실행되고 있음이 출력에서 분명하게 나타납니다 . 모듈을 로드하기 전에 실행되는 규칙을 어떻게 만들 수 있나요?
답변1
나는 일을 조금 다르게 할 것입니다.차단하다모듈이 필요할 때까지:
- 시스템이
nvidia
모듈을 로드하지 못하도록 방지블랙리스트에 등록됨그것 - 스크립트가 PCI 레지스터 작업을 수행하도록 하세요.
- 이제
nvidia
동일한 스크립트에서 모듈을 수동으로 로드하고 마지막으로 (모듈이 자동으로 로드되는 경우 선택사항)