2025年4月20日 星期日

將樹莓派一代的作業系統再次升級

其實自從上次重灌完後,系統就穩定穩定的
以工程師的習性,很不想去動這麼穩定的系統呢
不過既然在更新一些工具程式的過程中得知程式有bug
而升級是最簡單的解法,那麼也只好朝這個方向前進
這次是要把第一代的Raspberry pi ,從Buster升級為Bullseye
以獲得較新版本的python解決websockets應用的問題

樹莓派官網Bullseye版本代表圖片

最近AI用得兇,除了拿來畫梗圖,翻譯與問一些東西外
用最多的就是拿來寫python的工具程式了
開發與除錯的速度真的不可同日而語
於是在解決掉公司工作上的需求後,就轉向個人需求啦
就在先前開發的websocket的程式再加一點新功能時
從debug的log發現多筆的錯誤記錄
而且是websocket的問題
經過詢問AI與自己查找的結果,矛頭指向使用舊版的python
https://github.com/python-websockets/websockets/issues/808
上面的討論指向使用3.7.0~3.7.3的版本會有問題
而我用的是python是3.7.3,剛好中了
好吧,那好像也只能升級了
順便再詢問AI,可不可以只升級python版本
得到的答案當然是可以,但AI的建議是不要,我看了步驟也覺得很麻煩
那就只剩下升級作業系統的選項了

往前翻找,上次已經是五年前重灌了啊
https://darkdragon-darkdragon.blogspot.com/2020/02/blog-post.html
上次因為原本是灌桌面板要改伺服器版才用重灌的
這次應該不用那麼麻煩,可以用升級的就好
理論上用升級的不會有什麼問題,但還是害怕出錯
就問了一下AI該備份哪些東西
一一確認手法沒問題,並把資料拉下來後
開始升級

最新的樹莓派作業系統版本其實是Bookworm,而不是Bullseye
但是,AI是建議3代以下使用Bullseye,這聽起來蠻合理的
畢竟1~3代樹莓派的硬體架構實在跟4、5代差太多了
所以雖然我從官方網站上Release訊息並沒有找到明確的相容性說明
https://www.raspberrypi.com/news/bookworm-the-new-version-of-raspberry-pi-os/
只有說新的視窗環境Wayland會在4與5代為預設
我還是決定就升級到Bullseye這版了
這系統的Python版本是3.9,也夠用了

升級的處理其實蠻簡單的
就是先執行全面的更新與升級
然後進到source.list與raspi.list將buster更改為bullseye
之後再正式進行全面的更新與昇級
最後重開機後就有更新後的系統了
完整步驟如下:
Step1,執行apt進行更新與升級
sudo apt update && sudo apt full-upgrade -y
Step2,修改source.list
sudo nano /etc/apt/sources.list
將buster更改為bullseye
Step3,修改respi.list
sudo nano /etc/apt/sources.list.d/raspi.list
一樣將buster更改為bullseye
Step4,執行新系統的更新與昇級
sudo apt update && sudo apt full-upgrade -y
之後就開始升級啦
Step5,重新開機
sudo reboot
Step6,升級後將舊不用的套件移除
sudo apt autoremove -y && sudo apt autoclean
這樣就完成啦!

唉~~有這麼順利就好了
在第4步更新完後,我就發現ssh連不進樹莓派了
查了一下異常,中文修改版的putty版本太舊的,不給連了
只好換英文正版的putty
然後在第5步重開機後,也是連不進去樹莓派
這次更慘,連IP都找不到
心想:該不會升級失敗變磚了吧?
數次進行電源的插拔,看了一下燈號上的反應,系統應該正常
可是就是沒辦法在區網上找到這台
沒辦法,只能接實體螢幕與USB鍵盤看看
接上後如先前判斷,系統開機正常
但有兩個異常,一個就是就是dhcpd服務異常,這就是網路上不了線的原因
這邊我是進raspi-config再把dhcpd開起來後
重開機就上線了
另一個就是apache2異常
這個看系統訊息很明確,因為php昇級為7.4,所以載入不存在的7.3當然會有問題
把php7.4的conf與load搬入mods-enabled,並把7.3的砍了
重新再開機,一切正常了!
之後就執行第6步把空間再釋放一些掉
終於正式完成了

其實這次昇級已經蠻順的了
也只有3個錯誤要處理
ssh client、dhcpd service與apache2
處理也都蠻快的,不到1小時就搞定了
不過系統昇級是沒什麼問題
但升級完,之前寫的websockets套件因為更新了
所以昇級後沒辦法直接用,寫法要稍微更換一下
這邊也沒有很難,但要看懂很久沒碰的程式碼花了不少時間
再加上都要更新了,乾脆就用上剛學的aiohttp來重弄吧
所以這部分另外再寫一篇筆記吧

沒有留言: