2022/3/8

GT 740M, ubuntu 20.04, nvidia driver and cuda

driver 用 nvidia download and install 的話,他會叫你用 distribution 提供的。
因為這個 card 太舊了。
如果一樣安裝得話,會抱怨 kernel 用的 gcc 版本和driver 不一樣,
加入 ignore_cc_mismatch 後,build fail,一堆 function reference error

證明這個 driver source 沒有隨著 kernel 更新...

最後只好用 local script 安裝。結果都還是 fail。
fail log: /var/log/cuda-install.log,只有說 driver install failed

網路上說,/var/log/nvidia-install.log 有 driver install fail 的 log,
果然...
說是 /usr/lib/nvidia 下有 alternate-install-availeble,所以 abort

把 /usr/lib/nvidia rename 後,一樣 fail,/var/log/nvidia-install.log 說 因為有用 Nouveau driver。
所以他寫了 nvidia-install-disable,讓 nouveau 部會load。

reboot 後再 run, 一樣 fail, nvidia-installer.log 說..
NVRM: API mismatch: the client has the version 510.47.03, but this kernel module has version 470.57.02.
Please make sure that this kernel module and all NVIDIA driver compoments have the same version
所以 apt purge libnvidia-**

看到有一些 510 utility remove,結果一樣..

結論:

nvidia 的 script/deb 都沒有依照險卡決定安裝版本的功能,一律安裝最新版。
但是在nvidia 的網站,可以看到,每個險卡最新的 driver 不一樣。
以 GT 740M 來說,只有到 470,但是現在最新的 driver version 是 510 了。

而 cuda 版本右跟 driver 版本相關。
最新的 cuda 11.6 需要 driver 版本 510。

所以 GT 740M 就不能用 cuda 11,.6 了,因為 driver 版本不支援。
所以只能選(test install)到 cuda 11.4.1

--- 結果做完 apt upgrade 又 fail 了,好像 tool 去用到 510 的版本。



因為 510 (cuda_11.6 安裝) 的 tool, library 一直留在系統,移除不完整。
只好重新安裝系統,之後:
  • 開啟 softare and updater 中 "Additional",nvidia 用 propritry 的 driver 版本 470
  • 執行 cuda 11.4 local shell script,但是不安裝 driver
完成。
這樣 nvidia driver 會放到 dkms 管理,升級 kernel 時也會自動重 build initramfs,不會發生上面 update kernel 後,nvidia driver 沒有 load 的情況。


20.04 超容易 boot fail..
dev/sda1: clean, 552599/6111232 files, 7119295/24414464 blocks
follow 這一頁 的說明。
開機按下shift,啟動 grub menu,進入recovery mode。
然後
apt-get purgr nvidia*
如果是不小心把X 杉了,也會是這樣的 error,就要 apt reinstall ubuntu-desktop
這樣開進desktop gui 後,network-manager 會要修改,把 ethernet 加回去。ref:networkmanager not show
lanaguage input method 也要再 install, reboot

這樣開進desktop gui 後,bluetooth 連不上 Airpod pro,這一篇 說,要開啟 br/edr mode。
照著修改 /etc/bluetooth/main.conf:
ControllerMode = bredr
or 
ControllerMode = dual
之後,就可以連上了。

沒有留言:

張貼留言