AMD顯卡,新版Kernel 5.11衝突無法安裝原廠驅動程式,降版本解法(UBUNTU Linux)

由於撿到一個便宜的風扇故障顯卡RX560 4GB,想說裝到一台老桌機使用當備援。
結果除了DEBIAN系統一直安裝不成功顯卡驅動,即使乾脆改成UBUNTU系統,發現連現行版ubuntu-20.04.3-desktop-amd64.iso LTS,也是沒辦法成功裝載原廠的驅動程式。
重灌好幾次之後(USB1.0 live CD傳輸速度搞死人,順便升級SATA硬碟才解決主機板IO速度瓶頸)…。
這時候注意到他在安裝amdgpu驅動時,看起來都會在編譯Kernel出現錯誤,說什麼drms無法成功掛載驅動模組。
GOOGLE好一陣子,似乎也發現有人發類似的求救文章。
好心的經驗者,告知建議應該可以嘗試降級KERNEL的版本,就能使驅動程式正常掛載。
UBUNTU 20.04.3 LTS LiveCD的版本,內建KERNEL 5.11.0-27,所以會無法用LIVE CD偷吃步RAM DISK方式直接裝驅動使用。
而安裝到硬碟後,自動更新APT的過程,KERNEL會升級到5.11.0-37這版,更不用說了,這一版依然會衝突無法安裝AMDGPU的驅動程式。
看網友的說明,建議降版本改到KERNEL 5.4.0-58,就能成功安裝驅動程式和執行OpenCL的計算功能。
所以趁記憶猶新,趕快給自己成功摸索後做個紀錄。

首先,
安裝aptitude套件,和抓Kernel 5.4.0-58的generic版本。
我的主機板關係,要多抓延伸模組,才能把內建的網路卡成功使用(因為這樣重灌好幾次系統才知道…)。
sudo apt install aptitude
sudo apt install linux-image-5.4.0-58-generic linux-headers-5.4.0-58-generic linux-modules-extra-5.4.0-58-generic linux-modules-5.4.0-58-generic

接著,
要先改GRUB的菜單選項,先手動轉舊版KERNEL,確定無什麼異常或當機。
sudo nano /etc/default/grub
把STYLE改成菜單顯示,多一行CONSOLE模式,倒數計時我是改成5秒鐘。

GRUB_DEFAULT=0
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT_STYLE=menu
GRUB_TERMINAL=console
#GRUB_TIMEOUT=0
GRUB_TIMEOUT=5

執行更新GRUB
sudo update grub

sudo grub-mkconfig -o /boot/grub/grub.cfg

讓系統跑新的設定後,接著重開機。
手動選舊版的KERNEL,看開機後,有無其他本來正常的功能變成不正常。再自行除錯看看。
像我一開始沒有安裝linux-modules-extra套件,造成網路卡驅動辨識不到,無法使用聯網。

第三部分,
當確認舊版的KERNEL能成功進到X桌面後,我們緊接著就可以去抓AMD原廠的驅動程式了。
注意自己UBUNTU的版本,選對連結抓取。
https://www.amd.com/zh-hant/support/kb/release-notes/rn-amdgpu-unified-linux-20-20
我抓這個:Radeon™ Software for Linux® version 20.20 for Ubuntu 20.04
然後,把驅動程式的tar.xz檔案解壓縮。
tar Jxvf ./amdgpu-pro-20.20-1098277-ubuntu-20.04.tar.xz
cd ./amdgpu-pro-20.20-1098277-ubuntu-20.04
接著下安裝驅動的指令。
sudo amdgpu-install –opencl=legacy,pal –headless –pro
然後,就等執行程式自己抓檔案和更新驅動,重編核心模組。
如果成功安裝,就會結束,如果失敗就要看訊息再來看怎解。
不過我個人降版本後,就沒有再出現那個drms的失敗訊息了。

第四部份,
重開機,確認系統有無辨識到新的顯卡和openCL能正常輸出。
可以用clinfo這個套件來確認有無辨識到顯卡和正確的安裝驅動程式。
sudo apt install clinfo
指令:
clinfo
如果沒有錯誤訊息,還能列出一堆文字說他找到AMD顯卡硬體的部分就是成功了。

第五部分(可有可無),
BENCHMARK軟體,如果說微軟WINDOWS的是用甜甜圈FurMark燒機程式
那Linux的替代軟體版本就是UNIGINE Benchmarks,也是個免費軟體。
官方網站:https://benchmark.unigine.com/
他的執行程式是.RUN檔案,記得用chmod改755執行權限。
然後就可以用X視窗滑鼠點選執行程式,測試燒機了。

第六部分,
既然顯卡成功辨識,但是要把舊版的KERNEL改成預設啟動。
目前我的作法是強制自己選要開機的內容。
可以用指令看進階選單是第幾個選項以外:
grep “menuentry ‘Ubuntu” /boot/grub/grub.cfg
也可以重開機看自己選什麼選項去使用,例如我是進階選單後第五個是舊版的KERNEL。
所以我們要去修改預設值。
sudo nano /etc/default/grub
選單第二個、進階選單第五個(0 1 2 3 4),所以是1和4,然後1>和4之間要有空格。

#GRUB_DEFAULT=0
GRUB_DEFAULT="1> 4"
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT_STYLE=menu
GRUB_TERMINAL=console
#GRUB_TIMEOUT=0
GRUB_TIMEOUT=5

修改好以後要更新GRUB設定列表。
sudo update grub

sudo grub-mkconfig -o /boot/grub/grub.cfg
完成以後,就嘗試重開機,讓系統自己選要開機的系統核心,看有無正確。
我是完成開機後,用uname -a確定版本有無顯示正確的舊版。

後記,留下問題,未來更新:
(A)怎麼把舊版本的KERNEL,鎖住不要被APT修改,這個再研究看看。
解答:
執行以下指令,先把這舊版的KERNEL先設hold旗標。
sudo apt-mark hold linux-image-5.4.0-58-generic linux-headers-5.4.0-58-generic linux-modules-extra-5.4.0-58-generic

(B)怎麼把AMD超頻核心、記憶體和電壓值的設定修改,這個要再找適合的軟體和研究看看。
https://github.com/Arman92/OhGodATool/releases/download/1.0.0/ohgodatool
https://github.com/Eliovp/amdmemorytweak/releases/download/0.1.9.1/amdmemtweak

(C)怎麼看核心溫度監控,這個也要再找軟體研究看看(風扇我現在是掛9CM強制送12V電全速吹~XD)
可以用兩種套件看狀態。
C-1. 基本版:
sudo apt lm-sensors
sensors

C-2. 超頻設定版:
安裝OhGodATool套件(https://github.com/OhGodACompany/OhGodATool)
原始開發者不知道什麼原因把他帳號關了。
有好心人士作分流:https://github.com/Arman92/OhGodATool
wget https://github.com/Arman92/OhGodATool/releases/download/1.0.0/ohgodatool
chmod 755 ohgodatool
sudo ./ohgodatool -i 0 –show-temp

C-3. 進階記憶體超頻工具 之一:
安裝上述的OhGodATool套件後,除了可以看風扇速度和核心溫度以外。
這個軟體最大的功能就是可以設定核心時脈、記憶體時脈和核心電壓、記憶體電壓。
可以看這篇俄文的分享文章參考https://www.cryptoprofi.info/?p=5219
設定的部分我也還在研究,有空再來細節整理。
原則上,Rx560 4G穩定的最大運算設定為:
CORE: 1125 (or 1150) MEM: 2100 (or 2050) (Core+Mem)mV: 850
本來預設值,燒機程式會讓核心溫度升到71。C(環境溫度30。C),而且感覺畫面頓頓的。
後來調整後,燒機程式可以讓溫度降到65。C(環境溫度28。C),感覺畫面是相對順暢了。
也許把散熱膏重抹,風扇改成更暴力流量的噪音扇。
也許這樣的新設定讓核心溫度可能可再降低,至於這個部分後面再來交叉測試看看。

C-4. 進階記憶體超頻工具 之二:
安裝amdmemtweak 套件(https://github.com/Eliovp/amdmemorytweak
wget https://github.com/Eliovp/amdmemorytweak/releases/download/0.1.9.1/amdmemtweak
chmod 755 ./amdmemtweak
sudo apt install libpci-dev
看文章說明,好像GDDR5的記憶體晶片,可以透過這個工具增加運算效率。
所以寫一個.sh的檔案,指令多一個sleep秒數來延遲輸出。
參數REF可以嘗試設定20~90,看哪種是穩定的和不會過熱。
在這張RX560 4G的顯卡,看起來設定30是安全的數值。
nano RX560amdmemtweak.sh
#!/bin/bash
#filename: RX560amdmemtweak.sh
sleep 1
sudo ./amdmemtweak --i 0 --REF 30

chmod 755 RX560amdmemtweak.sh
sudo ./RX560amdmemtweak.sh

C-5. 進階記憶體超頻工具 之二: – (2022.10.16更新)
安裝GUI介面的CoreCTRL套件https://gitlab.com/corectrl/corectrl
如果習慣用XWIN,不要用非視覺化的CMD指令和程式,這個是最近用到覺得很方便的圖形化工具。
而且UBUNTU已經有PPA的安裝連結,指令如下:
sudo add-apt-repository ppa:ernstp/mesarc
sudo apt update
sudo apt install corectrl
安裝好,如果amdgpu驅動程式和X WINDOW功能都正常的話,它安裝後就能正常的工作和顯示。
除了支援多顯卡(CPU也能部分調整),AMD顯卡的核心時脈、核心電壓、記憶體時脈、記憶體電壓、風扇預設和起始速度、性能模式,都能視覺化的去點選和操作。
嘗試看看喔!

(D)文字版的console介面,可以安裝什麼套件來看顯卡GPU和MEM的稼動率狀態。
可以抓RadeonTOP這個開發程式,https://github.com/clbr/radeontop

其他相關參考文章:
1.
https://blog.xuite.net/b993011029311/CLanguateNote/331081165-%E9%99%8D%E7%B4%9A+Linux+Kernel+Version+on+Ubuntu
2.
http://roan.logdown.com/posts/183081-ubuntu-1204-lts-kernel-downgrade
3.
https://iter01.com/592559.html
4.
https://zhengdao.github.io/2018/10/09/switch-ubuntu-linux-kernel/
5.
https://askubuntu.com/questions/678630/how-can-i-avoid-kernel-updates
6.
https://www.cryptoprofi.info/?p=5219

其他參考:
安裝CLinfo套件支援
https://gist.github.com/asciitohex/ec24762ae4cdf94d685d6f15db6239a1
wget http://cs.wisc.edu/~riccardo/assets/AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2
# Install AMD SDK
tar -xvf AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2
chmod +x AMD-APP-SDK-v3.0.130.136-GA-linux64.sh
sudo bash AMD-APP-SDK-v3.0.130.136-GA-linux64.sh

https://sibsaidinblog-tw.blogspot.com/2016/04/opencl-amd-cpu.html
設定 OpenCL ICD 載入器
ls /opt/AMDAPPSDK-3.0/lib/x86_64/sdk/libamdocl64.so
echo "/opt/AMDAPPSDK-3.0/lib/x86_64/sdk/libamdocl64.so" > /etc/OpenCL/vendors/amdocl64.icd

*********
** 2022.09.04更新追加:

如果遇到ohgodatool套件修改風扇速度無效的話,可以參考兩篇文章的說明和設定。
https://linuxreviews.org/HOWTO_undervolt_the_AMD_RX_4XX_and_RX_5XX_GPUs
https://realtechtalk.com/AMD_Set_Fan_Speed_and_Other_Powerplay_MemoryCPU_Timings_with_a_Linux_script-2094-articles
A.
GRUB的開機參數要開啟設定值的功能,amdgpu.ppfeaturemask=0xfffd7fff 或 amdgpu.ppfeaturemask=0xffffffff。
sudo nano /etc/default/grub
找那行GRUB_CMDLINE_LINUX_DEFAULT=”xxxxxx”,最後面的”之前,加入amdgpu.ppfeaturemask=0xfffd7fff,存檔。
sudo update-grub
更新好以後,重開機。

B.
重開機好以後,先知道自己的顯示卡是哪一個檔案,例如我的ID0卡的檔案位置在/sys/class/drm/card0/device/hwmon/hwmon0/。
然後該資料夾下的pwm1_enable檔,預設值可能是2的狀態,要改成1(cat指令可以看數值)。
接著該資料夾下的pwm1檔,強制設定需要的數值(1-255 = 1%~100%),像我設定210的意思為80%風扇輸出。
另外,留意這個更動指令無法用sudo echo方式修改,會有錯誤訊息,如:bash: /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable: Permission denied
所以要改成登入成root的狀態,修改好以後離開亦可。
sudo su
echo 1 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
echo 210 > /sys/class/drm/card0/device/hwmon/hwmon0/hwmon0/pwm1
exit

C.
其他像CORE、MEM或是VOLTAGE的設定,就參考上述兩連結的內容來嘗試設定看看吧。
祝好運:)

*********
** 2022.10.16更新追加:

因為系統在顯卡好像不是很穩定運作,嘗試不一樣版本試試看。
關於AMDGPU新版本與新的安裝經驗,大概整理流程(順便給自己記憶):
KERNEL再降版到5.4.0-54
1.
sudo apt install linux-image-5.4.0-54-generic linux-headers-5.4.0-54-generic linux-modules-extra-5.4.0-54-generic linux-modules-5.4.0-54-generic
2.
修改/etc/default/grub指向此版本,更新與重開機;
或者直接重開機,選單改此版開機。
3.
確定uname -r已經是正確的降版後。刪除系統安裝的KERNEL和修改GRUB預設開機選單選項。
4.
到AMD官網抓支援自己顯卡的版本,如Ubuntu 64BIT的RX470這天顯示:Radeon™ Software for Linux® installer version 22.20 for Ubuntu 20.04.5 HWE
https://www.amd.com/zh-hant/support
wget https://repo.radeon.com/amdgpu-install/22.20/ubuntu/focal/amdgpu-install_22.20.50200-1_all.deb
sudo apt install amdgpu-install_22.20.50200-1_all.deb
PS.如果已經有安裝過,建議先移除(amdgpu-uninstall)和重開機一次,再來安裝。
5.
參考說明文件:https://amdgpu-install.readthedocs.io/en/latest/
這一版下的安裝指令為:
sudo amdgpu-install –usecase=workstation -y –vulkan=pro –opencl=rocr,legacy –no-32
PS. 64BIT系統要記得多–no-32指令,避免找不到套件。
6.
安裝好以後,重開機。dmesg |grep VGA確定顯卡有正確做動啟用。
7.
KERNEL版本5.4.0-54也許會出現類似missing firmware /lib/firmware/amdgpu/_____xxxx____.bin的訊息。
我們抓韌體檔案,更新進去。
cd ~/Documents
git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo cp ~/Documents/linux-firmware/amdgpu/* /lib/firmware/amdgpu
sudo update-initramfs -k all -u -v
編譯更新完成之後,重開機一次應該就能正常。
8.
安裝CLinfo套件支援https://gist.github.com/asciitohex/ec24762ae4cdf94d685d6f15db6239a1
wget http://cs.wisc.edu/~riccardo/assets/AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2
tar -xvf AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2
chmod +x AMD-APP-SDK-v3.0.130.136-GA-linux64.sh
sudo bash AMD-APP-SDK-v3.0.130.136-GA-linux64.sh
ls /opt/AMDAPPSDK-3.0/lib/x86_64/sdk/libamdocl64.so
sudo nano /etc/OpenCL/vendors/amdocl64.icd
加入此行/opt/AMDAPPSDK-3.0/lib/x86_64/sdk/libamdocl64.so後,存檔重開機。

2 thoughts on “AMD顯卡,新版Kernel 5.11衝突無法安裝原廠驅動程式,降版本解法(UBUNTU Linux)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

請輸入下列驗證碼計算後阿拉伯數字 (Translate it, if not Taiwanese to post reply) *