內容目錄
專案亮點:
- 極度純淨: 採用“編譯即焚”策略,只保留幾百MB的內核檔案,不佔用幾十GB的C盤空間。
- 相容性無敵: 完美支援 ARM 架構(微信、抖音、王者榮耀、吃雞)。
- 功能全開: 自帶谷歌服務框架 (GAPPS),支援 Magisk Root,銀行 App 指紋支付全過。
⚠️ 避坑指南(必讀):
- 代理報錯: 如果看到 “WSL 不支援 localhost 代理” 的紅色提示,請直接忽略,做完第四階段會自動修復。
- 下載慢: 起始化安卓時下載速度可能較慢,請耐心等待,盡量不要手動中斷。
- 目錄問題: 教學中所有指令都已包括
cd ~,請嚴格複製,不要自己亂切目錄。
第一階段:準備一次性編譯環境
1. 起始化 WSL
右鍵“開始選單” -> 終端 (管理員),輸入以下指令啟用 Linux 子系統支援:
# 安裝 WSL 功能並啟用虛擬機平台
wsl --install
完成後重啟電腦。
2. 安裝編譯工具
重啟後進入 WSL (Ubuntu),執行以下指令安裝構建 Linux 內核所需的依賴包:
# 回到使用者主目錄 cd ~ # 更新軟體源並安裝編譯所需的依賴包 (如 gcc, make, git 等) sudo apt update && sudo apt install -y build-essential flex bison dwarves libssl-dev libelf-dev cpio qemu-utils git bc pahole unzip
3. 下載源程式碼
設定 Git 快取以防止下載大檔案失敗,並克隆微軟官方的 WSL2 內核源程式碼:
# 確保在主目錄操作 cd ~ # 設定 Git 快取區為 500MB,防止下載大檔案中斷 git config --global http.postBuffer 524288000 # 關閉 SSL 驗證,防止因網路問題導致連線失敗 git config --global http.sslVerify false # 建立存放內核的目錄並進入 mkdir -p ~/kernel && cd ~/kernel # 克隆微軟官方 WSL2 內核源程式碼 (6.6.y 版本),--depth=1 表示只下載最新一次送出,節省流量 git clone https://github.com/microsoft/WSL2-Linux-Kernel.git --depth=1 --branch linux-msft-wsl-6.6.y # 進入源程式碼目錄 cd WSL2-Linux-Kernel
第二階段:編譯內核與驅動 (VHDX 專案)
1. 配置內核
這裡使用 6.6.x 內核的新版配置。這些指令將開啟安卓運行所需的 Binder IPC 通信機制:
# 1. 複製微軟官方提供的 WSL 預設配置檔案 cp Microsoft/config-wsl .config # 2. 修改配置檔案,追加 Android 支援和 PSI 效能監控支援 cat >> .config <<EOF CONFIG_ANDROID=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ANDROID_BINDERFS=y CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" CONFIG_PSI=y EOF # 3. 根據新修改的配置,自動更新其他依賴選項 make olddefconfig
2. 編譯並打包
這一步耗時約 15-20 分鐘,將編譯內核並生成獨立的驅動磁碟檔案:
# 使用所有 CPU 核心並行編譯內核 (加快速度) make -j$(nproc) # 安裝編譯好的模組到 modules 目錄 make INSTALL_MOD_PATH="$PWD/modules" modules_install # 精簡驅動檔案,去除不必要的除錯符號,減小體積 find ./modules/lib/modules/$(make -s kernelrelease) -name '*.ko' -exec strip --strip-unneeded {} \; # 賦予腳本執行權限 sudo chmod +x Microsoft/scripts/gen_modules_vhdx.sh # 運行微軟官方腳本,將 modules 目錄打包成 modules.vhdx 虛擬磁碟檔案 sudo ./Microsoft/scripts/gen_modules_vhdx.sh "$PWD/modules" $(make -s kernelrelease) modules.vhdx
3. 匯出檔案
注意: 執行完這一步會自動離開 WSL。
# 在 D 盤建立資料夾 (你可以改成其他盤符,但後面配置要對應) sudo mkdir -p /mnt/d/MyWaydroid # 複製編譯好的內核檔案 (bzImage) 到 D 盤 sudo cp arch/x86/boot/bzImage /mnt/d/MyWaydroid/bzImage # 複製打包好的驅動磁碟 (modules.vhdx) 到 D 盤 sudo cp modules.vhdx /mnt/d/MyWaydroid/modules.vhdx # 提示成功並離開 WSL echo "✅ 匯出成功,準備離開..." exit
第三階段:重設環境
在 Windows PowerShell (管理員) 中執行以下指令,刪除剛才的編譯環境,釋放空間:
# 登出並刪除 Ubuntu 系統,清理編譯產生的垃圾檔案
wsl --unregister Ubuntu
第四階段:配置正式環境
1. 重裝 Ubuntu
# 重新安裝一個干淨的 Ubuntu wsl --install -d Ubuntu # 注意:進入系統後設定好使用者名密碼,然後輸入 exit 離開! exit
2. 配置 .wslconfig (解決代理和記憶體問題)
在 PowerShell 中執行(確保路徑是雙斜槓 `\\`)。此配置將啟用鏡像網路(解決代理問題)並掛載我們在第二階段編譯的內核:
# 定義配置內容變量 $config = @" [wsl2] networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true memory=8GB processors=4 kernel=D:\\MyWaydroid\\bzImage kernelModules=D:\\MyWaydroid\\modules.vhdx [experimental] ignoredPorts=53 "@ # 將配置寫入使用者主目錄下的 .wslconfig 檔案 Set-Content -Path "$env:USERPROFILE\.wslconfig" -Value $config # 強制關閉 WSL 以應用新配置 wsl --shutdown
第五階段:安裝與關鍵修復 (必做!)
重新輸入 wsl 進入 Ubuntu。
1. 修復 BinderFS (解決 “ls: cannot access” 報錯)
cd ~ # 1. 建立 binderfs 掛載點目錄 sudo mkdir -p /dev/binderfs # 2. 將 binder 檔案系統掛載到該目錄 sudo mount -t binder binder /dev/binderfs # 3. 建立軟連結,讓 Waydroid 能在預設路徑找到驅動 sudo ln -s /dev/binderfs/binder /dev/binder sudo ln -s /dev/binderfs/hwbinder /dev/hwbinder sudo ln -s /dev/binderfs/vndbinder /dev/vndbinder # 4. 修改 fstab 檔案,確保開機自動掛載驅動 echo "binder /dev/binderfs binder nofail 0 0" | sudo tee -a /etc/fstab # 5. 驗證是否成功 (如果輸出 /dev/binder 則成功) ls /dev/binder
2. 安裝 Waydroid
# 更新軟體源並安裝基礎依賴工具 sudo apt update && sudo apt install -y curl ca-certificates python3-pip python3-venv weston # 加入 Waydroid 官方軟體源 curl https://repo.waydro.id | sudo bash # 安裝 Waydroid 主程式 sudo apt install -y waydroid
3. 起始化 (自動下載)
這一步會下載約 800MB 的鏡像,請保持網路通暢,耐心等待,不要中斷。
# 起始化 Waydroid,-s GAPPS 表示下載帶谷歌框架的版本,-f 表示強制重設
sudo waydroid init -s GAPPS -f
第六階段:修改更新、Root 與銀行認證
1. 啟動 Waydroid
在安裝後續修改更新前,先啟動一次 UI 確保基礎環境標準:
# 啟動 Waydroid 圖形介面
waydroid show-full-ui
2. 修復 Play Protect 認證 (解決 Google 彈窗)
Waydroid 預設未通過谷歌認證,這會導致 Google Play 無法登入並瘋狂彈窗。我們需要手動註冊裝置 ID。
A. 取得 Android ID
在 Ubuntu 終端執行以下指令:
# 進入安卓 Shell,查詢 Google 服務資料庫中的 Android ID
sudo waydroid shell sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"
(輸出結果應為一串純數字,例如:345678901234567)
B. 註冊裝置
- 複製上面查詢到的那串數字。
- 點擊訪問 Google 裝置註冊頁面 (google.com/android/uncertified)。
- 登入你的谷歌帳號,將數字貼上到輸入框中,點擊 “註冊 (Register)”。
C. 清除快取生效
註冊後通常需要等待 5-10 分鐘生效。生效後執行以下操作:
- 進入 Waydroid 安卓介面。
- 開啟 Settings (設定) -> Apps (應用) -> See all apps。
- 找到 Google Play Store -> Storage & cache -> Clear storage (清除資料)。
- 找到 Google Play Services -> Storage & cache -> Clear storage (清除資料)。
- 重啟 Waydroid。
3. 安裝 ARM 轉譯與 Magisk (交談式)
為了運行 ARM 應用(如微信、王者榮耀)並取得 Root 權限,執行以下腳本:
cd ~ # 清理舊的腳本目錄 (如果有) sudo rm -rf waydroid_script # 克隆第三方安裝腳本倉庫 git clone https://github.com/casualsnek/waydroid_script cd waydroid_script # 建立 Python 虛擬環境,防止污染系統環境 python3 -m venv venv # 啟動虛擬環境 source venv/bin/activate # 安裝腳本需要的 Python 庫 pip install -r requirements.txt # 運行主腳本 sudo venv/bin/python3 main.py
ߎ핦㍤휦쇥헯
- 上下鍵: 搬移游標。
- 空白鍵: 選中/取消選中(請務必選中
Libhoudini和Magisk)。 - 換行鍵: 確認執行安裝。
安裝完成後,離開虛擬環境:
# 離開 Python 虛擬環境
deactivate
⚠️ 注意: 安裝完後,請務必重啟一次 Waydroid 才能看到 Magisk 圖示:
# 停止 Waydroid 會話 waydroid session stop # 重新顯示 UI waydroid show-full-ui
4. 通過 Play Integrity 認證(解決銀行 App 閃退)
為了讓銀行 App 標準使用不閃退,請按以下步驟操作:
A. 基礎配置
- 在安卓裡找到 Magisk (或 Kitsune Mask) 圖示開啟。
- 點擊 Magisk 右上角齒輪 -> 開啟 Zygisk -> 重啟 Waydroid。
B. 下載模組 (直接在安卓內操作)
開啟 Waydroid 安卓系統自帶的瀏覽器,訪問以下連結下載 ZIP 包:
- PlayIntegrityFork (修復認證): https://github.com/osm0sis/PlayIntegrityFork/releases
- Zygisk-Assistant (隱藏 Root): https://github.com/snake-4/Zygisk-Assistant/releases
下載的檔案預設會儲存在安卓的 Downloads 資料夾中。
C. 刷入與配置
- 在 Magisk -> 模組 -> 從本地安裝,找到 Downloads 資料夾,依次刷入剛才下載的兩個 zip。
- 在 Magisk -> 設定 -> 配置排除清單 (Configure DenyList)。
- 點擊右上角選單 -> 顯示系統應用。
- 勾選 銀行 App 和 王者榮耀。
- 注意: 因為安裝了 Zygisk-Assistant,設定裡的“遵守排除清單 (Enforce DenyList)”開關建議關閉。
- 重啟 Waydroid,大功告成!
第七階段:效能釋放 —— 開啟 GPU 硬體加速
⚠️ 重要提示:
我們預設使用了 swiftshader (CPU 編譯) 以確保 100% 成功啟動。
如果你想追求高效能(比如王者榮耀 60 幀、介面絲滑),可以按以下專案嘗試開啟 GPU 加
方案A:開啟 GPU 硬體加速(效能模式)
進入 Ubuntu 終端,輸入以下指令修改配置:
# 1. 進入 Waydroid 配置模式 sudo waydroid shell # 2. 修改編譯驅動為 d3d12 (這是 WSLg 專門的 GPU 介面) setprop ro.hardware.gralloc default setprop ro.hardware.egl d3d12 # 3. 離開配置模式 exit
然後重啟 Waydroid 生效:
# 停止會話 waydroid session stop # 重新啟動 waydroid show-full-ui
方案B:如果黑屏了,如何救回(後悔藥)
如果你改完上面的設定,啟動 Waydroid 後發現視窗全黑、一直轉圈或是閃退,說明你的顯卡驅動和現用的的 Waydroid 鏡像不相容。
不需要重裝! 只需要改回 CPU 編譯即可:
# 進入配置模式 sudo waydroid shell # 改回軟體編譯 (SwiftShader) setprop ro.hardware.egl swiftshader # 離開 exit
懶人福利—— 一鍵啟停腳本
在你的 Windows 桌面上新增兩個文字文件,分別貼上下面的代碼,然後將副檔名名由 .txt 改為 .bat。
腳本1:啟動安卓 (Start_Waydroid.bat)
雙擊後會跳出一個黑框(請不要關閉它),稍等片刻安卓介面就會出現。
@echo off
echo 正在啟動 Waydroid...
:: 呼叫 WSL 中的 Ubuntu 發行版,執行顯示 UI 的指令
wsl -d Ubuntu waydroid show-full-ui
exit
腳本2:徹底關閉 (Kill_Waydroid.bat)
作用:關閉安卓視窗,並強制殺死 WSL 後台程式。執行後,任務管理器裡將看不到任何 WSL/Vmmem 程式,徹底釋放記憶體。
@echo off echo 正在停止 Waydroid 會話... :: 先嘗試溫和地停止 Waydroid 服務 wsl -d Ubuntu waydroid session stop echo 正在關閉 WSL 子系統... :: 強制關閉整個 WSL 子系統,釋放記憶體 wsl --shutdown echo ✅ 已徹底關閉,Waydroid 程式已結束。 :: 等待 2 秒後自動關閉視窗 timeout /t 2
常見問題避坑:
- 連接埠衝突 (DNS 錯誤): 教學中已加入
ignoredPorts=53,如果你發現安卓沒網,請檢查.wslconfig是否生效。 - Google 彈窗紅叉: 請務必仔細執行“第六階段”的第 2 步,取得 ID 並註冊。
- C 盤空間: 如果你選了 D 盤專案,C 盤幾乎不占額外空間,非常干淨。
最终成果:
至此,你已經擁有了一個完整、純淨且高效能的安卓子系統。享受你的 2025 新體驗吧!