Macbook Pro(Arch Linuxを実行)で動作するようにnvidia GPUドライバを入手しようとしています。指示に従ってここ、一部のPCIレジスタを設定する必要があります。今後モジュールがnvidia
ロードされました。それ以外の場合は動作しません。この段落では、「udevフック」を使用してこれを行うことができると述べていますが、udevルールがロードされるnvidia
前に確実に実行される方法でこれを行う方法がわかりません。
次の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
、同じスクリプトからモジュールを手動でロードし、最後に(モジュールが自動的にロードされる場合のオプション)