前進!Raspberry Pi OS 64 位元
Raspberry Pi OS 原先稱為 Raspbian,是樹梅派基金會基於 Debian 開發的樹梅派官方作業系統。一開始只有 32 為原版本,所以我自己購買的 4 代 8GB 版本(話說現在好像大缺貨,到處都買不到)可以分配使用的效能大幅受限,某種程度上來說和 4GB RAM 的差不多。一直到前年才有 64 位元的 beta 版,去年才推出正式版本。
因為一開始其實小問題不少,所以當時我並沒有馬上升級,一直觀望。直到現在過了一年了,想說應該都修得差不多了吧,沒想到我還是太天真了。這邊會記錄一下我這次升級碰到的各種問題,希望能增加一些中文資料和減少大家在 debug 上的時間。
本人使用的硬體設備:
- Raspberry Pi 4 8GB
- Samsung EVO Plus 64GB
安裝
之前安裝的時候,我是使用第三方工具來對記憶卡進行格式化(FAT32),同樣也是使用第三方工具直接燒錄 RPi OS;但這次發現之前格式化的工具連結已經失效了,所以這次我採用官方的映像檔工具來進行記憶卡的格式化(原先的資料都清除了,相當於是乾淨的全新安裝)及 ISO 燒錄。此工具同時提供預先設定使用者密碼、Wi-Fi 連線等設定,會在燒錄過程中也幫你弄好,就不需要再自己想辦法弄進去。
裝完之後反正就把記憶卡插上樹梅派後接上電開機,這邊就不多做說明。不過這邊花費我不少時間,原因有二:我螢幕輸出從樹梅派接出來後,另外一端根本沒接到電腦螢幕上,害我在那邊 debug 半天(「你電腦有插插頭嗎」原來都是真的);其二是那時候換了一條線,殊不知那條線其實不夠力,導致開機到一半就沒力了(燈號熄滅)。
問題
無法遠端桌面
通常視需求,我會用 ssh 或是 Windows 的遠端桌面來操作樹梅派。安裝好之後,當然是先安裝 xrdp 來準備遠端(ssh 的部分已經在燒錄的時候在工具設定先開啟好了)沒想到卻在登入階段一直發生問題:
1 |
|
再三確認我的帳號密碼,因為可以 ssh 進去,代表絕對是正確的。最後查到樹梅派論壇上這篇文章:https://forums.raspberrypi.com/viewtopic.php?t=323471
看起來好像還沒辦法靠更新解決,但推文中有人提到可以修改設定檔(相關 GitHub issue:https://github.com/neutrinolabs/xrdp/issues/2060#issuecomment-979958020 ),我測試有效的方式:
編輯
/etc/X11/xrdp/xorg.conf
在
Section "Device"
區塊中,註解Option "DRMDevice" "/dev/dri/renderD128"
並新增Option "DRMDevice" ""
。也就是這個區塊會變成:1
2
3
4
5
6
7Section "Device"
Identifier "Video Card (xrdpdev)"
Driver "xrdpdev"
#Option "DRMDevice" "/dev/dri/renderD128"
Option "DRMDevice" ""
Option "DRI3" "1"
EndSection
重開之後就可以使用 Windows 遠端桌面來連接樹梅派了。
rc.local
行為不同?
可以連接之後,就是開始把之前放在樹梅派上的專案和小工具安裝回來。首先是我的樹梅派 IP 機器人小幫手:https://github.com/hms5232/get-LAN-IP-telegram-bot
沒想到設定之後居然沒反應?查了下日誌,發現是連線 Telegram bot 失敗。有人提到說這是因為使用者登入時,還沒連上網路,只要把「在確保網路連線之前不要完成開機程序」啟用就好。我看了半天實在不知道在哪裡,直到我點來點去的時候剛好滑鼠游標移動到上面彈出 tooltip:
嗯……雖然我很努力地想理解這個中文,但選項文字實在讓我難以理解。總之我打開後……還是沒用啊啊啊。
按照道理,rc.local
應該是使用者登入時會執行,如果剛剛的選項有作用,開機程序完成時應該早就連好網路了,那到底是為什麼還是一樣連線失敗?
最後查到了一招雖然爛但只能暫時先將就的招數:設定 sleep
後再執行。
發現暫時有用之後,當天的 debug 之旅就先到這邊,放去旁邊休息了。
結語
原本想說初步這樣至少能用了,直到今天開始記錄上禮拜做的事情時,發現睡覺大法又沒用了。我的老天,這到底是在幹嘛啊啊啊。目前還在思考有沒有其他解決方案,之後如果有的話,再上來更新。說不定會直接重發一篇教學文。沒想到 32 和 64 位元之間的鴻溝這麼大QQ
後來這問題已經解決,請參考另外一篇文〈讓 Telegram bot 告訴你樹莓派的 IP 吧!(Rust version)〉