快轉到主要內容

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

分類   資訊科技 虛擬機與容器技術
標籤   Waydroid
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

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。

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

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