前幾篇都是在為今天的主題鋪路: 在 android 手機或平板上執行完整的 GNU/Linux, 裝置不必 root !
假設你已安裝好 termux。
在裡面執行 pkg install proot-distro
安裝 proot-distro, 再下 proot-distro list
查看有哪些發行版本的 GNU/linux 可以安裝。
例如我選擇 debian: proot-distro install debian
安裝好就可以用 proot-distro login debian
進入 (近乎) 完整的 debian 命令列環境。
Proot 是一個 user space 版本的 chroot, 所以不需要 android 系統的 root 權限, 但是在自己的小環境裡面看起來又像是擁有 root 的身份。 而 proot-distro 則是從 proot 長出來的各種 distribution。 它透過 ptrace() 攔截系統呼叫、 修改輸入參數與傳回值, 來達到假扮 root 的目的。 當然, 它的權限只跟 termux 一樣多而已。
從外面的 termux 環境看, 它長在這裡:
$PREFIX/var/lib/proot-distro/installed-rootfs/debian/
(
出處)
從 proot-distro 裡面向外看, 也可以看得到 android 系統的常用資料目錄:
/sdcard/
以及 termux 環境的根目錄:
/data/data/com.termux/files/
接下來的事就跟平常在 GNU/linux 底下一樣很簡單了:
安裝我自己喜歡用的套件:
apt install bash-completion vim wget lynx
、
安裝 xfce4 (含 X Window 系統)、 vnc server、 聲音相關套件:
apt install xfce4 tightvncserver dbus-x11 pulseaudio
。
我的 ~/.vnc/xstartup 長這樣 (從
這裡 改來的):
#!/bin/sh export XKL_XMODMAP_DISABLE=1 sakura & exec /etc/X11/Xsession
啟動 vnc server: vncserver -geometry 1440x800 :61
然後回到 android、 打開
avnc 登登! 看到 X Windows 在未 root 的平板上開起來, 好感動啊!
如果需要聲音的話, 先切到 termux 這個 app、 從螢幕左側向右滑、 點 "New Session" 另開一個分頁 (重點就是不要在 proot-distro 裡面)、 下兩個指令:
pulseaudio --start --exit-idle-time=-1 pacmd load-module module-native-protocol-tcp
再把 termux 裡面的 ~/.config/pulse/cookie 複製到
proot-distro 裡面的相同位置:
cp ~/.config/pulse/cookie
$PREFIX/var/lib/proot-distro/installed-rootfs/debian/root/.config/pulse/cookie
切回 proot-distro 分頁或 avnc 的終端機視窗並且
echo $PULSE_SERVER
確認它的值是 127.0.0.1
(系統已預先設定好),
然後就可以播音樂了。
右圖顯示的是同樣的複製動作, 但採取 proot-disro 的視角。 原先它的 cookie 與 termux 的不同, 後來把 termux 的 ~/.config/pulse/cookie 拷貝過來, 聲音就通了。
我又安裝&試用 inkscape, 感覺速度比 avnc 客戶端連到桌機 X server 慢很多, 不太實用。 看 youtube 則是 lag 到完全無法用。 高手 自行編譯硬體加速 把它變得很順暢; 另有 其他疑難雜症解方; 不過我就先不跟進了。 光是看到完整的 linux 桌面就已經很滿足了~
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。