postmarketOS為一手機Linux系統,基於Alpine Linux開發。postmarketOS是為真正的手機Linux發行版,不是Android那種殘廢玩意。
但是postmarketOS需要打很多patch才可以刷到 Android手機上。儘管 有人詢問能否把pmbootstrap移植到Termux,可chroot環境是難以在Android跑起來的。
於是就有了本文的實驗。
我採取縫合怪的做法,透過Termux Proot跑postmarketOS系統,讓我們可以體會一把手機上的Linux系統長怎樣。
需要注意的是,單純跑postmarketOS是沒有太大意義的,proot限制太多。真要玩的話 刷入postmarketOS,脫離Android系統才是最好的做法。
1. 前置作業#
- Termux
- Termux X11
- Hacker’s keyboard用以與桌面環境觸控互動。
2. 安裝proot Alpine Linux#
postmarketOS的Stable Channel版本號可以到 Wiki查詢,目前是v22.12。
Termux預設的Alpine Linux儲存庫是Edge分支,但是此分支不穩定,所以我將其切換為Alpine 3.17(對應postmarketOS v22.12)
- 安裝proot Alpine Linux
pkg update
pkg install proot-distro pulseaudio
echo "pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1 && pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1 " >> .profile
proot-distro install alpine
- 將儲存庫切換為v3.17
proot-distro login alpine --shared-tmp
apk add vim
vim /etc/apk/repositories
# Change "http://dl-cdn.alpinelinux.org/alpine/edge/main" to "http://dl-cdn.alpinelinux.org/alpine/v3.17/main"
apk update
apk upgrade
- 新增使用者,設定時區
apk add sudo
addgroup storage
adduser -g wheel,storage,video,audio user
visudo
passwd
sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
sudo setup-timezone
- 在Termux proot啟用SSH遠端連線。
sudo vim /etc/ssh/sshd_config
# 將`Port`從22改為8023
ssh-keygen -A
/usr/sbin/sshd
echo "/usr/sbin/sshd" >> /home/user/.profile
# 檢查IP位址。
ip addr
3. 將Alpine轉換為postmarketOS#
- 加入postmarketOS v22.12 (Alpine v3.17)儲存庫
vim /etc/apk/repositories
# 新增這行:
https://mirror.postmarketos.org/postmarketos/v22.12
- 安裝postmarketos-keys
apk add -u --allow-untrusted postmarketos-keys
apk update && apk upgrade
- 將以下內容加入至
/etc/os-release
PRETTY_NAME="postmarketOS v22.12"
NAME="postmarketOS"
VERSION_ID="v22.12"
VERSION="v22.12"
ID="postmarketos"
ID_LIKE="alpine"
HOME_URL="https://www.postmarketos.org/"
SUPPORT_URL="https://gitlab.com/postmarketOS"
BUG_REPORT_URL="https://gitlab.com/postmarketOS/pmaports/issues"
LOGO="postmarketos-logo"
4. 安裝桌面環境#
使用Termux X11當作X伺服器,用於顯示桌面環境,以下是各個指令用途:
proot-distro login --user user --shared-tmp
:登入Proottermux-x11 &
: 啟動X伺服器export DISPLAY=:0
dbus-launch --exit-with-session <指令> &
: 啟動桌面環境
XFCE、LXQT這類傳統Linux桌面是可以輕鬆在Proot環境跑起來的,但是我想嘗試的是針對手機版Linux優化的界面,我們來看看結果如何。
Phosh#
Phosh是GNOME的fork,專為行動裝置優化。
套件名稱是postmarketos-ui-phosh
.
啟動指令為phosh-session
,測試無法啟動,可能要傳入X11 beckend flag?
Plasma Mobile#
套件名稱postmarketos-ui-plasma-mobile
.
使用此指令啟動:dbus-launch --exit-with-session startplasma-x11 &
登入界面出現了,但一登入就黑螢幕。
順帶一提,2022年我有成功在proot Arch Linux執行Plasma Mobile (AUR有收plasma-mobile
套件),但是很不穩定。
SXMO#
套件名稱為postmarketos-ui-sxmo
,但是Termux X11僅支援X顯示協定,所以我改裝postmarketos-ui-sxmo-de-dwm
。
- 安裝SXMO相關套件
sudo apk add postmarketos-ui-sxmo-de-dwm postmarketos-tweaks-sxmo-x11 feh dwm svkbd conky clickclack
在啟動SXMO前執行此指令:
export XDG_RUNTIME_DIR=/tmp
接著啟動SXMO:
dbus-launch --exit-with-session /usr/bin/sxmo_xinit.sh &
SXMO設定檔位於
~/.config/sxmo/
,事件鉤子位於/usr/share/sxmo/default_hooks/
雖然有畫面,但是觸控手勢無效。
SXMO硬體快捷鍵可能得重新綁定,此時需要修改dwm的原始碼:
git clone [email protected]:~mil/sxmo-dwm
# 修改config.def.h並重新編譯安裝dwm
在安裝自訂dwm前需先刪除sxmo-dwm
套件。
或者您可以安裝原版dwm
套件並使用預設按鍵綁定。