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

  1. 開機選單: 第三個選項 「installation」
  2. 安裝到哪裡? (select a partiton to install LineageOS) sda1
  3. Do not format
  4. 安裝 GRUB? Yes
  5. 把 /system 設為 rw? Yes
  6. 等它安裝... (不用一分鐘)
  7. reboot
  8. 開機選單: 暴力關機

完成後, 從 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 滑鼠有點鈍鈍的。

  1. 如何關機? 按 ctrl-alt-delete 會出現關機選單。 或是按 alt-f1 會切換到命令列, 然後可以下 reboot -p 關機。 如果改變主意, 可以按 alt-f7 切回圖形介面。 如果按這些鍵, 結果被 host 接收到, 那麼可以改從 kvm 命令列下: sendkey ctrl-alt-deletesendkey alt-f1
  2. 從 host (lubuntu) 的另一個分頁: adb connect localhost:5022 然後 adb shell 連進 android x86。 可以下 free、 df、 uname -a、 ls 等等指令了解環境。 再試一下 su, 感受一下以前在手機上從未實現過的自主權。
  3. Welcome: 把 「English (United States)」 往上拉, 每拉一次, 螢幕就會閃一次。 語言改選繁體中文
  4. 開始設定、 「設為新裝置」。
  5. 你現在在公用電腦上玩耍! 略過 google 帳號設定, 不要輸入任何帳號密碼!
  6. google 服務頁面, 我通通關掉, 只打開 「協助改善 android 體驗」 的匿名資料。
  7. 我也有啟用 「協助改善 LineageOS」、 「啟用隱私守衛」。
  8. 主螢幕應用程式: Trebuchet
  9. 安裝 f-droid。 打開 chrome、 搜尋 f-droid、 下載它的 apk、 「不安裝來路不明的應用程式」改設定成 「允許安裝來源不明的應用程式」。 再次回到 「下載」、 雙擊 apk、 開啟 Play 安全防護。

    如果從模擬器下載之後無法安裝, 就從 host 下載並下安裝指令: adb install FDroid.apk 命令列最可靠了。

  10. 安裝完成後, 第一次開啟 f-droid, 需要等幾分鐘, 讓它更新套件庫, 才會出現套件清單。
  11. 安裝一個 file manager, 例如 ghost commander。 裝了它之後, 我才能換桌布、 播音樂 (雖然播音樂卡卡的, 速度不夠)。

完成後, 從 host: zfs snapshot bront/ax86@1-f-droid

三、 刻苦中文輸入法

試過幾個中文輸入法, 通通失敗。 google zhuyin 輸入法閃退; gboard (忘記了); lime ime 雖是自由軟體, 卻需要登入 google 帳號才能用。 所以只好:

  1. 安裝 termux。
  2. 如果字太小, 可以從 kvm 的 monitor 送按鍵: sendkey ctrl-alt-equal (原本的意思是 ctrl-alt-+)
  3. 回到 termux, apt install nano
  4. su 變身。
  5. mkdir /sdcard/my ; touch /sdcard/my/ch.txt ; tail -f /sdcard/my/ch.txt
  6. 在 host (lubuntu) 的終端機上打: adb shell 'cat >> /sdcard/my/ch.txt' 然後開始打中文, 在 guest 裡面的 termux 終端機就會跟著出現中文。
  7. 在 termux 裡面, 長按你要的中文, 就可以 copy paste 到其他的 apps 去。
  8. 用完之後, 按 ctrl-c 結束。

四、 NetGuard 防火牆

  1. 從 f-droid 安裝 NetGuard
  2. 進入設定之後...
  3. 「預設」: 阻擋 Wi-Fi、 阻擋行動網路、 阻擋漫遊
  4. 「進階選項」: 打開管理系統程式、 打開網路訪問日誌、 打開網路連接通知
  5. 回到主畫面, 只放行 chrome 跟 f-droid, 其他通通關掉, 包含系統的媒體*、 Android* 等等。 可參考 netguard.xml 的設定。
  6. 備份: 輸出設定、 左上角選單「儲存至」、 Standard PC、 my、 「儲存」
  7. 左上角的盾牌旁邊有一個開關。 關掉再打開, 也就是重新啟動 NetGuard。
  8. 注意畫面左上角出現通知, 很多 google 服務都想要連線。
  9. 打開 termux, 執行 wget http://www.cyut.edu.tw/ 應該會被阻擋。 左上角應該會出現一個新的通知。 或是 ssh s10414xxx@v.im.cyut.edu.tw 也會被擋。
  10. 如果是從 host 用 adb shell 連進去, 想要使用網路, 那就必須先從 netguard 裡面放行 「殼層」 (shell)。
  11. 如果想要從瀏覽器裡下載檔案, 那就必須放行下載、 下載管理員、 媒體傳輸通訊協定主機、 媒體儲存空間。
  12. 不太確定... 放行好像立刻生效; 阻擋好像要隔一下子或重開機才會生效。

完成後, 從 host: zfs snapshot bront/ax86@2-netguard

五、 你常用的 app 有沒有可疑的網路活動?

netguard 逮到某些 apps 想上傳資料 現在請在你的實體手機上安裝 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 名稱、 你在做什麼事情的時候發現它在上傳資料。 請同學幫忙查看你的 「練習/作業成果」。

其他雜項

  1. 換桌布: 在 host 裡面: cd ~/某個圖片庫 ; adb push . /sdcard/Pictures/ 。 回到 android-x86 guest 裡面, 長按桌面、 選下面左邊 「桌布」、 選 「我的相簿」、 「開啟檔案」、 GhostCommander, 找到你的桌布、 左上角打勾處 「設定桌布」。
  2. 如果可以忍受沒有圖形選單的環境, 在 adnroid 底下最容易上手的程式設計方式就是在 termux 裡面 pkg install python, 然後就可以寫文字模式的 python 程式。 (版本是 python3 !)

(回課程首頁)