之前有網友提到了,於是補充一篇關於:手機刷PostmarketOS系統後如何安裝Docker。另外順便解答大家的一些問題:
PostmarketOS是可以在手機上原生執行的Linux系統,基於Alpine Linux開發。刷機後可以在舊手機上體驗完整的Linux系統。這裡重點說一句:刷PostmarketOS和大家理解的刷機目的完全不同。手機刷PostmarketOS後就不是為了作為手機使用。
雖然PostmarketOS具備手機的一些功能比如打電話、聯網。但操作邏輯和安卓IOS不同,也並不好用。加上一些驅動原因很多手機刷機後撥號和網路功能無法正常使用。所以如果只是圖個新鮮刷PostmarketOS完全沒必要。PostmarketOS的意義在於讓的舊裝置變成一臺Linux主機,你可以在上面學習Linux操作,網站搭建等。是一個非常不錯的學習和實驗環境。鑑於現在樹莓派漲價嚴重,舊手機刷PostmarketOS完全可以成為效能更好價格更低的代替方案。
並非只有紅米2才能刷PostmarketOS,在官方的wiki上可以看到已經有非常多的裝置刷了PostmarketOS。但是不同的裝置刷機難度不同,而且網上很難找到完整的刷機方案,新手玩不轉。新手想體驗PostmarketOS建議找最成熟的刷機方案。
另外由於很多裝置相容不完全,導致功能無法完全正常使用,這也是為什麼如果你刷PostmarketOS是為了當一個手機用,那就完全沒必要。但是如果你只是想把一臺舊手機改裝成Linux主機,那你的選擇非常多,而且最終好用程度可能會超出你的預期。
先介紹一下如何安裝docker,PostmarketOS的包管理命令是apk,用下面的命令安裝docker並設定開機自啟動:
sudo apk add docker
sudo service docker start
sudo rc-update add docker default
我推薦搭建順便安裝一下zerotier,這樣遠端也可以訪問手機SSH也能遠端訪問docker裡的應用。
sudo apk add zerotier
但是安裝docker之後會遇到一個問題,因為防火牆的原因docker的埠無法透過外部訪問。雖然官方文件裡介紹了可以透過防火牆規則允許docker通訊,但是實際我按照官方指引配置/etc/nftables.d後無效:
#!/usr/sbin/nft -f
table inet filter {
chain input {
iifname "docker*" accept comment "Allow incoming network traffic from Docker"
}
chain forward {
iifname "docker*" accept comment "Allow outgoing network traffic from Docker"
ct state {established, related} counter accept comment "accept established connections"
}
}
於是我直接關了防火牆(因為這不是真正的伺服器,也沒有公網所以關閉防火牆影響不大):
sudo service nftables stop
sudo rc-update del nftables
這下docker可以正常訪問了,但是注意由於手機CPU是ARM指令集,所以下載映象時也要搜尋ARM映象。我安裝了一個speedtest進行測速。PostmarketOS另一個強大之處在於USB連線電腦可以使用USB網絡卡模式共享電腦的網路,直接透過172.16.42.1就可以訪問PostmarketOS。在USB連線模式下我的紅米2測速可以達到100兆:
而在wifi連線下,測速則只有20兆:
另外有朋友說透過USB聯網可不可以充電,事實上透過USB聯網同時是可以充電的。所以只要透過USB插在電腦上,PostmarketOS就是一臺帶UPS的小主機。可以像我一樣套娃(手機連線小主機)。
以及透過SSH小主機後,再SSH手機:
唯一遺憾的是手機OTG拓展時不能充電,不然透過OTG拓展真可以做一臺功能不錯的小主機了(至少做個下載機沒問題)。如果USB口被佔用只能透過改裝電池位置的電源介面。
如果手機記憶體比較小,比如像我這臺紅米2(1G+8G),其實安裝Docker的意義不大,因為很多映象安裝下來有幾百兆,空間馬上就會被佔滿。如果有效能好一點的手機可以用Docker搭建不少服務。如果手機效能較差,主要用於學習Linux。把它當成一個小伺服器進行測試學習Nginx+PHP+Sqlite勉強可以執行。
另外編譯安裝wakeonlan後作為區域網的一個喚醒器喚醒區域網中的其它主機,直接命令操作比較麻煩可以透過設定alias配置:
alias ubuntu='~/sd/WakeOnLAN-0.3/a.out mac地址'
最後關於折騰是不是浪費時間這個問題,折騰是真折騰。至於是不是浪費時間,主要看目的和個人愛好,但有一說一PostmarketOS這個專案是真不錯。