置頂

我的 VPython 教學文件 (HackMD 版本)

VPython 教學文件目錄 安裝及測試 基本語法 等速度直線運動 自由落下 終端速度 水平抛射 使用For迴圈計算水平抛射資料 斜向抛射 圓周運動 簡諧運動 單擺 木塊彈簧系統分離 重力及簡諧 行星運動 相疊木塊 雙重簡諧運動 一維彈性碰撞 ...

熱門文章

2022年2月13日 星期日

解決 Lenovo T14s 使用 Ubuntu 20.04 暫停後畫面亂掉的問題

作者:王一哲
日期: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



結語


雖然目前暫時解決了待機之後畫面整個亂掉的問題,但是無法調整亮度也有點麻煩,不知道是否有更好的解決方案。


沒有留言:

張貼留言