Android-x86
一、 安裝
zfs create -V 4G bront/ax86 fdisk /dev/zvol/bront/ax86 # 用 fdisk 或 cfdisk 切一個分割、 佔滿所有空間 partprobe /dev/zvol/bront/ax86 mkfs -t ext4 -O ^64bit /dev/zvol/bront/ax86-part1 kvm -m 2048 -monitor stdio -vga std -cpu host -usbdevice mouse -cdrom /x/cdrom/android-x86-7.1-r2.iso -boot order=dc /dev/zvol/bront/ax86 # 記憶體若不夠, 會一直 reboot
以上 kvm 指令參考 官網 debug-howto。
- 開機選單: 第三個選項 「installation」
- 安裝到哪裡? (select a partiton to install LineageOS) sda1
- Do not format
- 安裝 GRUB? Yes
- 把 /system 設為 rw? Yes
- 等它安裝... (不用一分鐘)
- reboot
- 開機選單: 暴力關機
完成後, 從 host: zfs snapshot bront/ax86@0-fresh
萬一等一下玩壞了, 可以用 zfs rollback bront/ax86@0-fresh
還原到這個時間點。
二、 自由的起點
值得好奇一下的事: 如果拒絕登入 google, 你的 android 平版電腦還能用嗎?
再次開機: kvm -m 2048 -monitor stdio -soundhw es1370
-net nic -net user,hostfwd=tcp::5022-:5555 /dev/zvol/bront/ax86
滑鼠有點鈍鈍的。
- 如何關機? 按 ctrl-alt-delete 會出現關機選單。
或是按 alt-f1 會切換到命令列,
然後可以下
reboot -p
關機。 如果改變主意, 可以按 alt-f7 切回圖形介面。 如果按這些鍵, 結果被 host 接收到, 那麼可以改從 kvm 命令列下:sendkey ctrl-alt-delete
或sendkey alt-f1
。 - 從 host (lubuntu) 的另一個分頁:
adb connect localhost:5022
然後adb shell
連進 android x86。 可以下 free、 df、 uname -a、 ls 等等指令了解環境。 再試一下 su, 感受一下以前在手機上從未實現過的自主權。 - Welcome: 把 「English (United States)」 往上拉, 每拉一次, 螢幕就會閃一次。 語言改選繁體中文
- 開始設定、 「設為新裝置」。
- 你現在在公用電腦上玩耍! 略過 google 帳號設定, 不要輸入任何帳號密碼!
- google 服務頁面, 我通通關掉, 只打開 「協助改善 android 體驗」 的匿名資料。
- 我也有啟用 「協助改善 LineageOS」、 「啟用隱私守衛」。
- 主螢幕應用程式: Trebuchet
- 安裝 f-droid。 打開 chrome、 搜尋 f-droid、
下載它的 apk、 「不安裝來路不明的應用程式」改設定成
「允許安裝來源不明的應用程式」。
再次回到 「下載」、 雙擊 apk、 開啟 Play 安全防護。
如果從模擬器下載之後無法安裝, 就從 host 下載並下安裝指令:
adb install FDroid.apk
命令列最可靠了。 - 安裝完成後, 第一次開啟 f-droid, 需要等幾分鐘, 讓它更新套件庫, 才會出現套件清單。
- 安裝一個 file manager, 例如 ghost commander。 裝了它之後, 我才能換桌布、 播音樂 (雖然播音樂卡卡的, 速度不夠)。
完成後, 從 host: zfs snapshot bront/ax86@1-f-droid
。
三、 刻苦中文輸入法
試過幾個中文輸入法, 通通失敗。 google zhuyin 輸入法閃退; gboard (忘記了); lime ime 雖是自由軟體, 卻需要登入 google 帳號才能用。 所以只好:
- 安裝 termux。
- 如果字太小, 可以從 kvm 的 monitor 送按鍵:
sendkey ctrl-alt-equal
(原本的意思是 ctrl-alt-+) - 回到 termux,
apt install nano
- su 變身。
mkdir /sdcard/my ; touch /sdcard/my/ch.txt ; tail -f /sdcard/my/ch.txt
- 在 host (lubuntu) 的終端機上打:
adb shell 'cat >> /sdcard/my/ch.txt'
然後開始打中文, 在 guest 裡面的 termux 終端機就會跟著出現中文。 - 在 termux 裡面, 長按你要的中文, 就可以 copy paste 到其他的 apps 去。
- 用完之後, 按 ctrl-c 結束。
四、 NetGuard 防火牆
- 從 f-droid 安裝 NetGuard
- 進入設定之後...
- 「預設」: 阻擋 Wi-Fi、 阻擋行動網路、 阻擋漫遊
- 「進階選項」: 打開管理系統程式、 打開網路訪問日誌、 打開網路連接通知
- 回到主畫面, 只放行 chrome 跟 f-droid, 其他通通關掉, 包含系統的媒體*、 Android* 等等。 可參考 netguard.xml 的設定。
- 備份: 輸出設定、 左上角選單「儲存至」、 Standard PC、 my、 「儲存」
- 左上角的盾牌旁邊有一個開關。 關掉再打開, 也就是重新啟動 NetGuard。
- 注意畫面左上角出現通知, 很多 google 服務都想要連線。
- 打開 termux, 執行
wget http://www.cyut.edu.tw/
應該會被阻擋。 左上角應該會出現一個新的通知。 或是ssh s10414xxx@v.im.cyut.edu.tw
也會被擋。 - 如果是從 host 用
adb shell
連進去, 想要使用網路, 那就必須先從 netguard 裡面放行 「殼層」 (shell)。 - 如果想要從瀏覽器裡下載檔案, 那就必須放行下載、 下載管理員、 媒體傳輸通訊協定主機、 媒體儲存空間。
- 不太確定... 放行好像立刻生效; 阻擋好像要隔一下子或重開機才會生效。
完成後, 從 host: zfs snapshot bront/ax86@2-netguard
。
五、 你常用的 app 有沒有可疑的網路活動?
現在請在你的實體手機上安裝 apk extractor 之類的。
找幾個常用的、 應該要可以離線運作的 apps。
把它們的 apk 抓出來、 用 adb install xxx.apk
安裝進虛擬機, 看看有沒有被 netguard 抓包, 如右圖。
請用畫面快照, 並且上傳:
scp xxx.png s10414xxx@v.im.cyut.edu.tw:public_html/netguard.png
然後 ssh -X s10414xxx@v.im.cyut.edu.tw
並且進入 public_html , 在裡面建一個 netguard.html,
插入上傳的圖片, 並簡單描述 app 名稱、
你在做什麼事情的時候發現它在上傳資料。
請同學幫忙查看你的 「練習/作業成果」。
其他雜項
- 換桌布: 在 host 裡面:
cd ~/某個圖片庫 ; adb push . /sdcard/Pictures/
。 回到 android-x86 guest 裡面, 長按桌面、 選下面左邊 「桌布」、 選 「我的相簿」、 「開啟檔案」、 GhostCommander, 找到你的桌布、 左上角打勾處 「設定桌布」。 - 如果可以忍受沒有圖形選單的環境,
在 adnroid 底下最容易上手的程式設計方式就是在
termux 裡面
pkg install python
, 然後就可以寫文字模式的 python 程式。 (版本是 python3 !)