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

要在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 12的ISO。

為了執行64位元ARM應用程式,故使用Bliss OS 14 (Android 11),這個版本有內建libhoudini,新版ISO不知為何又砍掉了。

  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編譯著色器會崩潰。

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

延伸閱讀


感謝您的閱讀。歡迎分享Ivon的部落格(ivonblog.com)的文章,引用或轉載請註明文章網址,並遵守創用CC-姓名標示-非商業性-禁止改作 4.0 國際授權條款。如需商業使用請來信告之。

written by human, not by AI

如果本網站文章對您有幫助,歡迎請我喝杯珍珠奶茶。

留言板

點選按鈕,選擇您覺得方便的留言系統。要討論程式碼請用Giscus,匿名討論請用Disqus。

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

這是Disqus留言板,您可能會看到Disqus投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。