快轉到主要內容

Waydroid多開的實驗,替換system.img與vendor.img

· 民國113年甲辰年
· ·
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid
目錄

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
#

參考Ubuntu安裝Waydroid

測試Waydroid能否在你的電腦開起來

3. 找到Waydroid映像檔位置
#

當你執行sudo waydroid init指令的時候,Waydroid會下載二個映像檔到/var/lib/waydroid/images,他們分別是system.imgvendor.img

/var/lib/waydroid/waydroid.prop記載Waydroid啟動Android時候的選項。

如果這二個檔案不存在,Waydroid才會下載檔案。

看到這裡,知道該怎麼做了吧,當下要啟動的系統就是由system.imgvendor.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。

相關文章

樹莓派同時裝Linux與Android APP ~ Waydroid安裝教學
分類   資訊科技 虛擬機與容器技術
標籤   Raspberry Pi Waydroid Android Linux
Windows 11用WSL跑Linux的Android容器「Waydroid」
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Windows Subsystem for Linux
Linux跑Android APP,Ubuntu安裝Waydroid教學
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Ubuntu Android

留言板

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。