2018年7月21日 星期六

Android-x86 Nougat 版

三年前曾經介紹過 android-x86 4.* 版。 前陣子為了上課需要, 再次試玩。 現在的 Nougat 版 (7.*) 已可安裝 google play; 不過目前對我來說, 有 f-droid 就夠了。 64 bit 好像沒什麼特別用處, 從官網下載 32bit 版本好了: android-x86-7.1-r2.iso。 另外, 我試過 CM 版 (CyanogenMod), 但是安裝完成後第一次開機要半小時、 adb 不能用、 有時安裝會卡在選語言的畫面。 總之還是用原始的 android-x86 比較穩。

一、 準備硬碟

用虛擬機來安裝作業系統比較方便, 可以一邊繼續做其他事。 網路上用 Virtualbox 的教學文比較多; 但我偏好用 kvm。 此外, zfs 的 snapshot 快照功能很好用, 所以我們要在 zfs 上面建一個 volume。 如果你直接拿實體機安裝, 請跳到這節最後面。

  1. 建立一個 zfs volume: zfs create -V 4G snowowl/ax86
  2. fdisk /dev/zvol/snowowl/ax86cfdisk /dev/zvol/snowowl/ax86 切一個分割就好、 佔滿所有空間。 搜尋 「cfdisk 分割」 可以找到很多教學文。
  3. 如果 ls -l /dev/zvol/snowowl 看不到 ax86-part1 , 可能還需要手動: partprobe /dev/zvol/snowowl/ax86
  4. 不知道為什麼, 如果讓安裝程式自己格式化硬碟, 可能會出錯, 所以我們先手動格式化, 等一下安裝時則選擇不要格式化。 又因為 android x86 的核心版本略舊, 最多只允許檔案系統長到 2^32 個 blocks, 所以建立 ext4 檔案系統時, 必須指定 不要 64bit 的定址空間mkfs -t ext4 -O ^64bit /dev/zvol/snowowl/ax86-part1
  5. 啟動: kvm -m 2048 -monitor stdio -vga std -cpu host -usbdevice mouse -boot order=dc -cdrom .../android-x86-7.1-r2.iso /dev/zvol/snowowl/ax86 注意! 記憶體若不夠, 會一直 reboot。 以上 kvm 指令參考 官網 debug-howto

如果你選擇不用虛擬機, 而是直接用光碟開實體機, 那麼就只需要挑一顆空的硬碟或隨身碟, 並且事先在 linux 底下做上述 「分割」 跟 「mkfs」 那兩步即可。

二、 安裝過程選項

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

完成後, 從 host: zfs snapshot snowowl/ax86@0-fresh 萬一等一下玩壞了, 可以用 zfs rollback snowowl/ax86@0-fresh 還原到這個時間點。

三、 初次開機的設定

再次開機: kvm -m 2048 -monitor stdio -soundhw es1370 -net nic -net user,hostfwd=tcp::5022-:5555 /dev/zvol/snowowl/ax86 這裡的 -net nic -net ...:5022-:5555 是為了等一下要用 adb。 在較慢的機器上, 滑鼠有點鈍鈍的。

  1. 開始設定、 「設為新裝置」。
  2. 設定 google 帳戶時, 我選擇 「略過」, 因為我的 apps 主要來自 f-droid 市集
  3. google 服務頁面, 我通通關掉, 只打開 「協助改善 android 體驗」 的匿名資料。
  4. 「主螢幕應用程式」 有兩個可選, 我選 Launcher3。 如果改變主意, 可從 「設定」 進入 「應用程式」, 再從右上角的 「設定」 進入 「主畫面應用程式」 更改。
  5. 如何關機? 按 ctrl-alt-delete 會出現關機選單。 或是按 alt-f1 會切換到命令列, 然後可以下 reboot -p 關機。 如果改變主意, 可以按 alt-f7 切回圖形介面。 如果按這些鍵, 結果被 host 攔截下來, 那麼可以改從 kvm 命令列下: sendkey ctrl-alt-deletesendkey alt-f1

可以先關機、 再次從 host 做快照: zfs snapshot snowowl/ax86@1-setup

四、 自由的起點

再次啟動。

  1. 從 host (lubuntu) 的另一個分頁: adb connect localhost:5022 然後 adb shell 連進 android x86。 可以下 free、 df、 uname -a、 ls 等等指令了解環境。 再試一下 su, 感受一下以前在手機上從未實現過的自主權。
  2. 安裝 f-droid。 打開 chrome、 搜尋 f-droid、 下載它的 apk、 「不安裝來路不明的應用程式」改設定成 「允許安裝來源不明的應用程式」。 再次回到 「下載」、 雙擊 apk、 開啟 Play 安全防護。

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

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

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

五、 刻苦中文輸入法

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

  1. 安裝 termux。
  2. 如果字太小, 可以從 kvm 的 monitor 送按鍵: sendkey ctrl-alt-equal (其實是要送出 ctrl-alt-+ 的意思, 但不必按 shift 鍵)
  3. 回到 termux, 練習安裝套件: apt update ; apt install nano 也可以用 apt search editor 搜尋所有 game 相關套件。
  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 結束。

2 則留言:

  1. 不知道貴哥有沒用用過 anbox 或其它用lxc 包裝的 android ? 感覺會比kvm好很多

    回覆刪除
    回覆
    1. container 裡的 android! 太帥了。 謝謝, 以後再來試試看。

      刪除