Waydroid既然依賴LXC建立容器,難道不能多開?理論上可以,但沒那麼簡單。
Waydroid本身是為單工作階段設計的,它有systemd服務和Python程式控制Waydroid的行程,故要「同時跑多個Waydroid」實例是很難作到的。
似乎有人曾經 用DistroBox跑Waydroid,這代表把Waydroid塞在Docker裡面容器化是可行的。不過那個條件很嚴苛,只能在Vanilla OS成功跑起來。
難以達成GPU加速的虛擬機更不用說了。
之前我試過 custom Waydroid image path的作法,為了玩原神。但這比較像是替換掉目前的系統的方法。我想要多系統共存。
所以呢,參考 Reddit網友的討論,最笨的方式就是下載多重Waydroid系統映像檔,然後用指令稿的方式多開了。過程是這樣的:每次開機的時候載入不同的系統映像檔,這樣就可以有多個Waydroid版本,同時安裝在一台Linux電腦上。
雖然不能多個實例同步跑,但總歸是一種多系統吧。
1. 目標#
讓Waydroid同時安裝Android 11與Android 13的映像檔
並能任意切換要啟動的系統。
撰文當下,Android 11是穩定版,Android 13尚在開發階段,所以得 自行編譯LineageOS映像檔,或者到 Waydroid Telegram群組下載(搜尋tar.gz)
2. 安裝Waydroid#
測試Waydroid能否在你的電腦開起來
3. 找到Waydroid映像檔位置#
當你執行sudo waydroid init
指令的時候,Waydroid會下載二個映像檔到/var/lib/waydroid/images
,他們分別是system.img
和vendor.img
/var/lib/waydroid/waydroid.prop
記載Waydroid啟動Android時候的選項。
如果這二個檔案不存在,Waydroid才會下載檔案。
看到這裡,知道該怎麼做了吧,當下要啟動的系統就是由system.img
和vendor.img
組成,所以可以將多個映像檔放到該目錄。
那這樣多個Android版本的使用者資料不會互相衝突嗎?Waydroid在啟動Android的時候才會把Android的/data/media/0/
掛載到~/.local/share/waydroid/
。不過Waydroid建立的Androud應用程式的Desktop Entry確實會互相污染。
那麼我們下載目前尚處於測試版狀態的Android 13映像檔
簡單重新命名後,放到該目錄
這樣目錄就有以下檔案
system.img
vendor.img
oldsystem.img
oldvendor.img
4. Waydroid工作階段啟動流程#
啟動服務
sudo systemctl restart waydroid-container
選擇要啟動的Waydroid映像檔
cd /var/lib/waydroid/images
sudo mv system.img oldsystem.img
sudo mv vendor.img oldvendor.img
sudo mv oldsystem.img system.img
sudo mv oldvendor.img vendor.img
重跑一次Waydroid init程序
sudo waydroid init -i /var/lib/waydroid/images
顯示畫面
sudo waydroid show-full-ui
目前測試到的結果,Android 13的Waydroid畫面出不來,但聲音有出現。且waydroid shell
進入ADB,執行getprop
可看到Waydroid版本確實是升到了Android 13。