日期:2022/2/13
前言
我使用的筆記型電腦型號為 ThinkPad T14s Gen 2 (AMD) [1],除了預設的 Windows 10 之外還安裝了 Ubuntu 20.04.3 LTS [2],但是之前遇到一個奇怪的狀況,在 Ubuntu 暫停之後如果按電源鍵喚醒筆電,畫面會變成下圖這樣,完全無法使用,只能長按電源鍵強制重新開機。
努力搜尋了一陣子之後,我在 Lenovo 的討論區看到一篇文章 Thinkpad T14s (amd) Black screen after resume on Fedora 32 [3],好像是因為 amd 顯示卡的驅動程式與較新版本的 kernel 不合造成的。
移除新版 kernel
我當時使用的 kernel 是 5.13.0-28-generic,需要先移除較新版本的 kernel,直到剩下較舊的 5.4.0-54-generic。可以在文字介面中使用以下的指令查詢目前已經安裝的 kernel
dpkg --list | grep linux-image
再用以下指令移除 kernel 及相關的檔案
sudo apt purge linux-image-X.X.X-XX-generic
sudo apt purge linux-headers-X.X.X-XX-generic
sudo apt autoremove
安裝 amd 顯示卡驅動程式
接下來到 Radeon™ Software for Linux® 20.20 Release Notes [4] 頁面下載 amd 顯示卡的驅動程式,我選擇的版本是 Radeon™ Software for Linux® version 20.20 for Ubuntu 20.04。切換的存放驅動程式壓縮檔的資料夾,使用以下的指令解壓縮、進入解壓縮後的資料夾、安裝驅動程式。
tar -Jxvf amdgpu-pro-20.20-1098277-ubuntu-20.04.tar.xz
cd amdgpu-pro-amdgpu-pro-20.20-1098277-ubuntu-20.04
sudo ./amdgpu-install
如果在安裝的時候出現錯誤訊息、沒有完成安裝,需要先解決套件相依性問題,再用以下指令移除剛才已經安裝的部分。
sudo /usr/bin/amdgpu-uninstall
在安裝完顯示卡的驅動程式之後重新開機,在 grub 畫面選擇 Advanced options for Ubutnu,再選擇 5.4.0-54-generic,進到 Ubuntu 之後再試著將系統暫停,這次就可以在暫停之後正常地喚醒電腦。但是又出現另一個問題,這個版本幾乎無法調整螢幕的亮度,一直維持在接近最大亮度的狀態。
設定開機時預設使用的 kernel
由於 grub 在開機時會預設使用新版本的 kernel,需要修改一些東西才能使用舊版的 kernel。我在另一個討論區找到這篇文章 Set default kernel in GRUB [5]。先用以下指令查詢 grub 進階選項
grep submenu /boot/grub/grub.cfg
我的回傳值是
submenu 'Ubuntu 的進階選項' $menuentry_id_option 'gnulinux-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
再用以下指令查詢已安裝的 kernel 對應的選項
grep gnulinux /boot/grub/grub.cfg
我的回傳值是
set default="gnulinux-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a>gnulinux-5.4.0-54-generic-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a"
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
submenu 'Ubuntu 的進階選項' $menuentry_id_option 'gnulinux-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
menuentry 'Ubuntu,採用 Linux 5.13.0-28-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-28-generic-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
menuentry 'Ubuntu, with Linux 5.13.0-28-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-28-generic-recovery-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
menuentry 'Ubuntu,採用 Linux 5.13.0-27-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-27-generic-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
menuentry 'Ubuntu, with Linux 5.13.0-27-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-27-generic-recovery-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
menuentry 'Ubuntu,採用 Linux 5.4.0-54-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-54-generic-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
menuentry 'Ubuntu, with Linux 5.4.0-54-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-54-generic-recovery-97cae9e0-b5a1-4c02-b1f1-3522ce71641a' {
接下來編輯 grub 設定檔
sudo vim /etc/default/grub
將 GRUB_DEFAULT=0 修改成
GRUB_DEFAULT="gnulinux-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a>gnulinux-5.4.0-54-generic-advanced-97cae9e0-b5a1-4c02-b1f1-3522ce71641a"
最後更新 grub,接下來開機時就會自動使用 5.4.0-54 版的 kernel。
sudo update-grub
結語
雖然目前暫時解決了待機之後畫面整個亂掉的問題,但是無法調整亮度也有點麻煩,不知道是否有更好的解決方案。
沒有留言:
張貼留言