快轉到主要內容

FreeBSD安裝Nvidia專有驅動與CUDA,透過GPU加速程式執行

分類   資訊科技 電腦軟體分享
標籤   FreeBSD Nvidia
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

測試環境:

  • FreeBSD 14 Release
  • Nvidia專有驅動版本:550.54.14

介紹如何在FreeBSD系統設定Nvidia顯示卡的驅動。

由於 xf86-video-nouveau已經很久沒人維護了,FreeBSD沒有開源版的Nvidia驅動「nouveau」可用,所以不裝Nividia專有驅動就是沒法顯示X視窗系統的畫面。

除驅動之外,Nvidia推出的專有技術,例如CUDA,壓根沒有官方FreeBSD版。不過可以用Linuxulator技術跑Linux版的CUDA,這樣部份Python函式庫依賴CUDA的問題也能得到解決。

裝CUDA的用途為何?這不是必要元件,只是有些程式會用到,比如我參考的教學文章的作者是為了在FreeBSD跑Stable Diffusion WebUI才研究怎麼裝CUDA的~!Man of culture的力量好偉大。

但是這樣也代表依賴CUDA的程式得用Linux模擬方式跑啊。比如FreeBSD套件庫的Blender得用特殊指令才能存取CUDA。

1. 安裝Nvidia專有驅動
#

Nvidia官網只有原始碼,沒有提供FreeBSD專門的套件庫,所以我們直接從FreeBSD套件庫裝驅動就可以了。

  1. Nvidia的驅動是專有軟體,需要看FreeBSD手冊的顯示卡代數表格選擇適合的驅動。像我的顯示卡為Nvidia GTX 1050Ti,可以直接裝最新版驅動:
sudo pkg install nvidia-driver nvidia-settings
  1. 如果需要跑Wayland桌面,還得安裝DRM驅動
sudo pkg install nvidia-drm-kmod
  1. 之後,把Nvidia核心模組加入開機自動啟動選項:
sudo sysrc kld_list+=nvidia-modeset
sudo sysrc kld_list+=nvidia-drm
  1. 如果重開機後無法啟動顯示管理器,就強迫Nvidia產生/etc/X11/xorg.conf
sudo nvidia-xconfig
  1. 最後用nvidia-smi確認Nvidia驅動版本:

2. 安裝CUDA
#

  1. 需要給 FreeBSD啟用Linuxulator支援,但不需要安裝Jail

  2. 安裝以下套件,libc6-shim可讓FreeBSD跑Linux的glibc

sudo pkg install libc6-shim linux-nvidia-libs
  1. 預設情況跑nvidia-smi是不會印出相容的CUDA版本的,故改用nvidia-slurp執行
nv-sglrun nvidia-smi
  1. 這樣會看到該Nvidia GPU相容的CUDA版本:CUDA Version: 12.0

  2. 安裝Linux的編譯器

pkg install linux-c7-devtools
  1. 使用Linux的cc編譯 uvm_ioctl_override.c.
fetch https://gist.githubusercontent.com/shkhln/40ef290463e78fb2b0000c60f4ad797e/raw/f640983249607e38af405c95c457ce4afc85c608/uvm_ioctl_override.c

/compat/linux/bin/cc --sysroot=/compat/linux -m64 -std=c99 -Wall -ldl -fPIC -shared -o dummy-uvm.so uvm_ioctl_override.c
  1. 然後安裝linux-c7-libglvnd以取得libGL.so.1
sudo pkg install linux-c7-libglvnd

3. 執行需要CUDA的程式
#

以Blender為例,從FreeBSD套件庫安裝

sudo pkg install blender

然後用nvidia-slurp執行,Blender的選單就認得到CUDA裝置了

nvidia-slurp blender

ffmpeg、OBS Studio的NVENC加速比照辦理。

註:FreeBSD論壇的用戶ziomario使用FreeBSD 13成功執行CUDA加上Blender,但是FreeBSD 14會出現錯誤exec: No such file or directory,似乎是bug?

根據用戶julien40的回報,將Nvidia驅動降版可以解決該問題。

參考資料
#

相關文章

FreeBSD安裝Steam + Steam Proton遊戲相容層教學
分類   資訊科技 電腦軟體分享
標籤   Wine FreeBSD Steam
FreeBSD跑Linux程式的方法:Linuxulator + Ubuntu Jail
分類   資訊科技 虛擬機與容器技術
標籤   FreeBSD Linux Debootstrap Chroot Ubuntu
安裝FreeBSD QEMU/KVM虛擬機 + KDE桌面 + Fcitx5中文輸入法紀錄
分類   資訊科技 作業系統安裝教學
標籤   Libvirt FreeBSD

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。