FreeBSDでeGPUを使う
posted by jun-g at Sun, 28 May 2023 10:30 JST
先日購入したIntel NUC13 Pro のセットアップ続き、その2。
NUC13はThunderbolt4をサポートしていて、かつFreeBSDもThunderboltをサポートしていて、そして手元に都合良くNVIDIA RTX3060の入ったeGPUがあります。ということで内蔵GPUがサポートされるまでこれを使います。
まずは準備。ドライバーをインストールして起動時にカーネルモジュールを読み込む用にセット。
$ su - Password: # pkg install nvidia-driver ... # sysrc kld_list=nvidia-modeset
再起動した後のdmesg。
# dmesg|grep nvidia nvidia1: <NVIDIA GeForce RTX 3060> on vgapci1 vgapci1: child nvidia1 requested pci_enable_io vgapci1: child nvidia1 requested pci_enable_io nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 515.86.01 Wed Oct 26 08:52:34 UTC 2022
eGPUは無事に認識されました。が、コンソールは引き続きNUC13本体から接続したモニター上に表示されてます。
次にXの設定。先日作ったscfbを使う設定ファイルを退避して起動してみます。
# cd /usr/local/etc/X11/xorg.conf.d # mv driver-scfb.conf driver-scfb.conf.bak # startx
が、起動しません…。 Handbookのビデオカードの設定ページ を読むと:
1つ以上のビデオカードが存在する場合には、 BusID 行のコメントを外し、 希望するカードを選択するように設定できます。 ビデオカードバス ID は、 pciconf -lv | grep -B3 display で表示できます。
と書いてありましたので、その通りにします。
# pciconf -lv | grep -B3 display vgapci0@pci0:0:2:0: class=0x030000 rev=0x04 hdr=0x00 vendor=0x8086 device=0xa7a0 subvendor=0x8086 subdevice=0x3037 vendor = 'Intel Corporation' device = 'Raptor Lake-P [Iris Xe Graphics]' class = display -- vgapci1@pci0:4:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de device=0x2504 subvendor=0x10de subdevice=0x2504 vendor = 'NVIDIA Corporation' device = 'GA106 [GeForce RTX 3060 Lite Hash Rate]' class = display
この情報を使ってX用の以下のファイルを作成。
# cat /usr/local/etc/X11/xorg.conf.d/driver-nvidia.conf Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA COrporation" BoardName "NVIDIA GeForce RTX 3060" BusId "PCI:4:0:0" EndSection
でstartxすると、無事にXが起動し、eGPUに接続したモニター上に表示されました!
続く…。