快轉到主要內容

實驗:Android免刷機跑postmarketOS(Termux proot)

智慧型手機 Termux教學 PostmarketOS Termux
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

English version

postmarketOS為一手機Linux系統,基於Alpine Linux開發。postmarketOS是為真正的手機Linux發行版,不是Android那種殘廢玩意。

但是postmarketOS需要打很多patch才可以刷到 Android手機上。儘管 有人詢問能否把pmbootstrap移植到Termux,可chroot環境是難以在Android跑起來的。

於是就有了本文的實驗。

我採取縫合怪的做法,透過Termux Proot跑postmarketOS系統,讓我們可以體會一把手機上的Linux系統長怎樣。

需要注意的是,單純跑postmarketOS是沒有太大意義的,proot限制太多。真要玩的話 刷入postmarketOS,脫離Android系統才是最好的做法。

1. 前置作業
#

2. 安裝proot Alpine Linux
#

Termux預設的Alpine Linux儲存庫是Edge分支,但是此分支不穩定,所以我將其切換為Alpine 3.17(對應postmarketOS v22.12)

  1. 安裝proot Alpine
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
  1. 將儲存庫切換為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
  1. 新增使用者,設定時區
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
  1. 在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
#

  1. 加入postmarketOS v22.12 (Aplpine v3.17)儲存庫
vim /etc/apk/repositories

# 新增這行:
https://mirror.postmarketos.org/postmarketos/v22.12
  1. 安裝postmarketos-keys
apk add -u --allow-untrusted postmarketos-keys
apk update && apk upgrade
  1. 將以下內容加入至/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伺服器,用於顯示桌面環境,以下是各個指令用途:

  1. proot-distro login --user user --shared-tmp:登入Proot
  2. termux-x11 &: 啟動X伺服器
  3. export DISPLAY=:0
  4. 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

  1. 安裝SXMO相關套件
sudo apk add postmarketos-ui-sxmo-de-dwm postmarketos-tweaks-sxmo-x11 feh dwm svkbd conky clickclack
  1. 在啟動SXMO前執行此指令:export XDG_RUNTIME_DIR=/tmp

  2. 接著啟動SXMO:dbus-launch --exit-with-session /usr/bin/sxmo_xinit.sh &

  3. 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套件並使用預設按鍵綁定。

相關文章

Termux終端機使用教學:Android手機跑Linux指令
智慧型手機 Termux教學 Linux Termux
用Termux Proot在Android手機玩Minecraft Java版
智慧型手機 Termux教學 Raspberry Pi Minecraft
如何在手機上跑Linux系統?你有這幾個方法可以嘗試
智慧型手機 真Linux手機 Termux ISH Shell UTM PostmarketOS Ubuntu Touch

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。