在 WSL2 上編譯並使用 Darling
---
日期: Oct 29, 2019
標籤:
-
WSL
-
WSL2
-
Darwin
語言:
中文
---
這篇文章已經超過 6 年了。如果這是篇技術性文章,它很大可能已經不再有效,但是你可以嘗試它並檢查它是否仍然有效。
翻譯並修改自darlinghq/darling issue #260 的評論
TL;DR
這篇文章將會講述如何在 WSL2 上編譯並使用Darling,一款可以在 Linux 系統上執行 Darwin (就是 MacOS 的開源核心)的相容層,就像 WineHQ 一樣。
編譯 Darling 和 WSL2 Kernel
開啟 WSL Ubuntu,並依次鍵入以下指令。以下指令會下載、編譯和安裝除了 Kernel 以外大部分 Darling 元件,並下載、編譯和安裝一份修改過的 WSL Kernel並複製到C盤。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| # 確保32位依賴能正確安裝 sudo dpkg --add-architecture i386 sudo apt-get update
# 安裝必要的安裝包 sudo apt-get install cmake clang bison flex xz-utils libfuse-dev libudev-dev pkg-config libc6-dev:i386 linux-headers-generic gcc-multilib libcap2-bin libcairo2-dev libgl1-mesa-dev libtiff5-dev libfreetype6-dev libfreetype6-dev:i386 git libelf-dev libxml2-dev libegl1-mesa-dev libfontconfig1-dev libbsd-dev libssl-dev
# 克隆並編譯 Darling git clone --recursive https://github.com/darlinghq/darling.git cd darling mkdir build && cd build cmake ..
# 連結一些檔案到 `/usr/include` sudo ln -s /usr/include/x86_64-linux-gnu/jconfig.h /usr/include/jconfig.h sudo ln -s /usr/include/x86_64-linux-gnu/tiffio.h /usr/include/tiffio.h sudo ln -s /usr/include/x86_64-linux-gnu/tiff.h /usr/include/tiff.h sudo ln -s /usr/include/x86_64-linux-gnu/tiffconf.h /usr/include/tiffconf.h sudo ln -s /usr/include/x86_64-linux-gnu/tiffvers.h /usr/include/tiffvers.h sudo ln -s /usr/include/x86_64-linux-gnu/tiffio.hxx /usr/include/tiffio.hxx
# 編譯大部分Darling 元件 make sudo make install
# 在編譯 Kernel 模組之前,我們需要編譯 cd ..
# 克隆並修改 Kernel git clone --depth 1 --single-branch --branch master https://github.com/microsoft/WSL2-Linux-Kernel.git kernel cd kernel sed -i 's/CONFIG_EMBEDDED=y/CONFIG_EMBEDDED=n/g' Microsoft/config-wsl
# 編譯並安裝 Kernel make KCONFIG_CONFIG=Microsoft/config-wsl sudo make modules_install sudo make install sudo update-initramfs -c -k 4.19.67-microsoft-standard+
# 複製到C盤;當然,你也可以選擇複製到任何地方 mkdir /mnt/c/linux-kernels cp /boot/vmlinuz-4.19.67-microsoft-standard+ /mnt/c/linux-kernels/vmlinuz-4.19.67-microsoft-standard+
|
修改 WSL2 使用的 Kernel
現在在你 Windows 使用者資料夾下建立(或編輯) .wslconfig ,加入以下內容:
1 2 3
| [wsl2] #你的其他設定 kernel=C:\\linux-kernels\\vmlinuz-4.19.67-microsoft-standard+
|
然後在 PowerShell 或者命令列裡輸入以下命令關閉所有執行中的 WSL 發行版:
編譯 Darling Kernel 模組
重新開啟你的 WSL 視窗並執行以下命令。以下指令會編譯並安裝 Kernel 模組:
1 2 3 4
| cd darling/build make lkm sudo make lkm_install
|
搞定!
目前仍然有一個Bug使darling shell 只能以root使用者執行,這意味著你只能用以下命令執行:
然後享受 Darwin on Linux on Windows 吧!