快轉到主要內容

如何在Linux安裝Bliss OS,支援GPU加速的Android-x86虛擬機,可玩手遊

Linux系統 虛擬機與容器技術 Bliss OS Android-x86 KernelSU VirGL Linux QEMU Scrcpy
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

要在Linux系統跑Android APP,Ivon在 Linux的Android模擬器一文提過多種方案。本篇文章Ivon要介紹Android-x86分支「Bliss OS」。

Bliss OS算是Android-x86的改進版,可以安裝在實體機和虛擬機,支援許多新硬體,例如Intel 10代處理器以後的GPU。Android版本也有更新,目前穩定版是Bliss OS 14 (Android 11),開發版是Bliss OS 15 (Android 12)。Linux核心版本也用上5.15了。

內建Google Play商店,不用另外裝轉譯器也能玩64位元的3D遊戲,可以說是很大的進步了。

本文將討論在Linux上安裝Bliss OS 14的QEMU虛擬機,透過virglrenderer走虛擬機的GPU加速,使其能夠玩手遊。

影片版安裝過程參考:

1. 為何要選擇Bliss OS?
#

Bliss OS是基於Android-x86開發的Android系統,專門設計給電腦、平板跑Android用。在Android-x86的基礎上預載了許多實用工具,並保持活躍的開源更新模式。

比較一下便可知道,Android-x86官方網站最新的版本是Android 9.0,而Bliss OS最新測試版已來到Android 12。

Android版本舊看似不是大問題,但是在ARM轉譯上就有很大差距。Android-x86 9.0依賴Intel的「liboudini」技術,在x86架構的Android系統上執行ARM架構的APK,但只支援到32位元ARM-v7eabi的APK而已,現在有越來越多開發者只提供64位元ARM-v8a的APK哪。因此我們得改用Android 11以上的libhoudini,以相容64位元ARM架構的APK。

除了Android版本較新能相容更多電腦硬體外,Bliss OS也加入了一些讓Android變得像電腦的功能,例如強制旋轉、按鍵映射、遊戲模式、模擬觸控點擊、KernelSU(更難偵測到的root權限)等實用功能,還有用「Gearlock」取代傳統的Android recovery。

順帶一提,Bliss OS的開發團隊同時也有研發 Waydroid,所以二者的功能有些類似。

2. 安裝虛擬機需要的軟硬體
#

我的系統規格:

  • CPU:Intel i5-10210U
  • GPU:Intel® UHD Graphics 620
  • Android-x86版本:11.0
  • QEMU版本:8.1.1
  • virglrenderer版本:0.10.4

請確認CPU已經開啟虛擬化、KVM核心模組已經載入。

請在Linux系統安裝QEMULibvirtVirt Manager套件。Arch Linux參考 這篇。Ubuntu參考 這篇

接著準備相容的顯示卡,virglrenderer是半虛擬化的GPU技術,可讓虛擬機在免GPU直通下獲得3D硬體加速。virglrenderer適用Intel與AMD顯示卡。

Nvidia的virglrenderer不是很穩定,且Nvidia在Android的驅動也有問題,GPU直通不可行。如果你是Nvidia顯示卡,建議放棄硬體加速。

3. 開始安裝Bliss OS系統,硬碟分割
#

Bliss OS官方網站目前提供Android 11 ~ Android 13的ISO。

Bliss OS 14(Android 11)和Bliss OS 15(Android 12L)使用Intel libhoudini轉譯ARM架構的APK,在那之後的版本則是改用Google libndk。

這裡使用Bliss OS 14做示範。

  1. 官網下載ISO,選擇內建GApps的版本

  2. 開啟Virt Manager,新增虛擬機,選取ISO,系統選擇Android-x86

  3. 建議分配8GB RAM、4核心CPU。RAM越大越好,因ARM指令轉譯有時會佔用大量RAM。

  4. 至少分配64GB虛擬硬碟

  5. 勾選在安裝前自訂配置

  6. 晶片組類型選擇Q35,韌體選擇OVMF_CODE.fd

  7. 將硬碟設定為VirtIO

  8. 將CDROM改為SATA

  9. 將開機裝置全部勾選,並將CDROM放到最上面

  10. 將Spice監聽類型設為無,並勾選OpenGL,裝置選取Intel顯示卡

  11. 將顯示卡設定為VirtIO,並勾選3D加速

  12. 點選開始安裝系統

  13. 用鍵盤選取Bliss OS Installation

  14. 按Etner,選取Create/Modify Partition

  15. 確認使用GPT分割表

  16. 用鍵盤操作:鍵盤左右鍵移動到New,按Enter,輸入+512M,再輸入ef00變更分區類型為EFI。分區名稱設為efi,將第一個分區設為EFI分區。

  17. 鍵盤移動到Free Space,按Enter,選取New,全部按Enter,分區名稱輸入android,將第二個分區設為Linux系統分區。(可能因不對齊導致出現三個分區,不用理它)

  18. 鍵盤移動到Write,按Enter寫入變更。隨後移動至Quit退出。

  19. 選取分割好的硬碟vda2

  20. 將系統格式化為Ext4

  21. 安裝EFI/GRUB,並格式化

  22. 安裝後,點選Virt Manager的強制關機按鈕。從硬體列表移除CDROM

  23. 之後開機,選取第一個選項,預設便會載入virglrenderer的系統。

Bliss OS 14內建Google Play商店,可直接登入Google帳號。

ARM轉譯器預設已啟用,不用手動安裝。

4. Bliss OS使用技巧
#

Bliss OS預設啟用Boringdroid的桌面模式,系統下方會常駐一條工作列。

如果有APP需要全螢幕執行,可在系統設定 → Boringdroid → Set full screen app選取。

Bliss OS預裝「Set Orientation」APP可強制旋轉螢幕,不過這個太老了,我認為 OHMAE Ryosuke的強制旋轉螢幕更好用。

截圖請按下滑選單擷取。至於螢幕錄影,virglrenderer錄出來顏色怪怪的,建議用電腦 OBS擷取虛擬機視窗。

原生Android多視窗支援度不是很好,如果硬要的話可以在開發人員選項啟用「自由形式視窗」。

Bliss OS內建KernelSU和 Termux,Root權限並非全域啟用,需要對個別APP掛載。

虛擬機ADB連線我是參考 Reddit文章用無線連接的。如果要在ADB Shell啟用Root權限:開啟KernelSU授予「com.android.shell」權限即可。

如何修改Bliss OS螢幕解析度:最簡單方法,裝 SecondScreen再用KernelSU授予Root權限。或者 修改Bliss OS開機的GRUB參數,輸入video=1280x720

5. 實際在Bliss OS玩遊戲
#

如果遊戲滑鼠點選沒反應,你可以在系統設定 → Blissify → Force Mouse Click as touch,強制將滑鼠點選轉譯成觸控點選。注意開啟此選項會導致滑鼠滾輪失效。

Bliss OS內建「遊戲模式」,在系統設定 → Blissify → Gaming Mode啟用。當使用者開啟遊戲APP的時候,便會自動停用通知,並出現懸浮按鈕方便截圖。

有些遊戲要用按鍵映射才能操作,你可以開啟KernelSU,授予XtMapper Root權限。接著開啟XtMapper,啟用服務,選取APP,設定按鍵綁定。

另外, QtScrcpy的按鍵映射也可以配合虛擬機使用。


為了測試Bliss OS轉譯器能耐,以下遊戲我全部用ARM-v8架構的APK測試。如果Google Play不給安裝,自行找APK。

《水果忍者》、《Temple Run 2》正常執行。

接著是《原神》,Waydroid可以跑,理論上Bliss OS應該也行才對…但virglrenderer不是很穩定,原神v4.1.0編譯著色器會崩潰。

另一款大型遊戲《幻塔》不用任何指令稿就能成功進入遊戲。

延伸閱讀
#

相關文章

Android-x86 QEMU虛擬機安裝教學,在Linux上執行手機APP,支援GPU加速的VM
Linux系統 虛擬機與容器技術 Android-x86 Linux QEMU VirGL Scrcpy
Cassowary:在Linux跑Windows軟體,支援Microsoft Office 365、Adobe Photoshop
Linux系統 虛擬機與容器技術 Microsoft Office Photoshop QEMU Windows Linux
ReDroid教學:用Docker跑Android系統,在x86電腦玩ARM手機遊戲
Linux系統 虛擬機與容器技術 ReDroid Android Docker Linux Scrcpy

留言板

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

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

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