Waydroid on WSL2

环境

  • WSL版本: 2.3.24.0
  • 内核版本: 5.15.153.1-2
  • WSLg版本: 1.0.65
  • MSRDC版本: 1.2.5620
  • Direct3D版本: 1.611.1-81528511
  • DXCore版本: 10.0.26100.1-240331-1435.ge-release
  • Windows版本: 10.0.19045.4894
  • 发行版:Ubuntu 24.04

注意

对于其他环境,本文不保证有效。

安装必要的软件包

bash
sudo apt update
sudo apt install bc bison build-essential cpio flex libelf-dev libncurses-dev libssl-dev pahole pkg-config python3 pulseaudio weston

克隆WSL Kernel代码

bash
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git --depth=1 --branch=linux-msft-wsl-5.15.y

注意

这里克隆的是linux-msft-wsl-5.15.y分支。对于其他分支,本文不保证有效。

注意

请自行解决国际互联网访问。

自定义内核选项

bash
cd WSL2-Linux-Kernel
cp Microsoft/config-wsl .config
make menuconfig

Save & Exit。打开.config

makefile
# CONFIG_PSI is not set
CONFIG_PSI=y // [!code ++]
CONFIG_PSI_DEFAULT_DISABLED=n // [!code ++]
......
# CONFIG_ANDROID is not set
CONFIG_ANDROID=y // [!code ++]
CONFIG_ANDROID_BINDER_IPC=y // [!code ++]
CONFIG_ANDROID_BINDERFS=y // [!code ++]
CONFIG_ANDROID_BINDER_DEVICES="" // [!code ++]
CONFIG_ANDROID_BINDER_IPC_SELFTEST=y // [!code ++]

参考Waydroid - ArchWiki

编译自定义内核

bash
make -j $(nproc)

启用自定义内核

此时,编译好的内核在arch/x86/boot/bzImage。把它复制到Windows下。

关闭WSL:

bash
wsl --shutdown

.wslconfig

ini
[wsl2]
kernel=<path to custom kernel> # 路径中的反斜杠要再加反斜杠转义,例如 C:\\Users\\username\\kernel

提示

什么是.wslconfig?请参考WSL中的高级配置设置

安装Waydroid

bash
sudo apt install curl ca-certificates
curl https://repo.waydro.id | sudo bash
sudo apt install waydroid

初始化Waydroid

bash
sudo waydroid init

Waydroid会自动下载LineageOS镜像。如果速度很慢,请考虑Using custom Waydroid images | Waydroid

关闭WSL并重启:

bash
wsl --shutdown

启动Waydroid

/var/lib/waydroid/waydroid_base.prop

txt
ro.hardware.gralloc=gbm      // [!code --]
ro.hardware.egl=mesa-drivers // [!code --]
ro.hardware.gralloc=default  // [!code ++]
ro.hardware.egl=swiftshader  // [!code ++]

提示

这一步可能不是必须的。参考Waydroid - NixOS Wiki


然后:

bash
unset WAYLAND_DISPLAY
weston

此时会打开一个WSLg窗口。点击窗口左上角,打开两个Weston终端。

其中一个输入:

bash
waydroid session start

等到Andorid with user 0 is ready.

另一个输入:

bash
waydroid show-full-ui

最终:

提示

其实不经过waydroid session start,直接waydroid show-full-ui也可以。

Todo List
Valaxy v0.28.4 驱动|主题-Yunv0.28.4