跳转到内容
新建笔记

WSL

WSL(Windows Subsystem for Linux)提供了一个兼容性层,使得可以在 Windows 上运行 Linux 命令行工具和应用程序,而无需虚拟机或双重启动系统。WSL 不是一个容器化解决方案。

命令描述
wsl --list --online列出在线可用的 Linux 发行版。
wsl --list --verbose列出已安装的 Linux 发行版,并显示详细信息。
wsl --set-version <distribution name> <versionNumber>设置特定发行版的 WSL 版本。
wsl --set-default-version <Version>设置默认 WSL 版本。
wsl --set-default <Distribution Name>设置默认的 Linux 发行版。
wsl --distribution <Distribution Name> --user <User Name>以特定用户的身份运行特定的 Linux 发行版。
wsl --update更新 WSL 到最新版本。
wsl --status检查 WSL 配置的状态。
wsl --version检查 WSL 及其组件的版本。
wsl --help显示 WSL 中可用的选项和命令列表。
wsl --user <Username>以指定用户的身份运行 WSL。
<DistributionName> config --default-user <Username>更改发行版的默认用户。
wsl --shutdown立即终止所有运行的发行版和 WSL 2 轻量级实用工具虚拟机。
wsl --terminate <Distribution Name>终止指定的发行版。
wsl hostname -i标识通过 WSL 2 安装的 Linux 分发版的 IP 地址。
cat /etc/resolv.conf在 WSL 2 中查看 Windows 计算机的 IP 地址。
wsl --export <Distribution Name> <FileName>将发行版导出为 tar 文件。
wsl --import <Distribution Name> <InstallLocation> <FileName>从 tar 文件导入发行版。
wsl --import-in-place <Distribution Name> <FileName>就地导入发行版,使用.vhdx 文件。
wsl --unregister <Distribution Name>注销和卸载 Linux 发行版。
wsl --mount <DiskPath>在所有 WSL 2 发行版中挂载物理磁盘。
wsl --unmount <DiskPath>卸载已挂载的磁盘或分离所有已挂载的磁盘。

(1)配置和编译内核

终端窗口
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
cd WSL2-Linux-Kernel
make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
配置 USB 串口驱动——进入 Device Drivers -> USB support 菜单——选择所需的 USB 串口驱动
make -j$(nproc) bzImage KCONFIG_CONFIG=Microsoft/config-wsl

(2)替换内核

  • 将编译好的 bzImage 复制到 Windows 文件系统中的指定路径C:\wsl_usr_kernel\bzImage

  • 在用户主目录创建 .wslconfig 文件,并添加以下内容

    [wsl2]
    kernel=C:\\wsl_usr_kernel\\bzImage
  • 重启后检查uname -r

若要取消自定义内核,将 .wslconfig 文件改名即可

(1)环境配置:

  • 硬件条件:非arm64;Windows 11;WSL 2;Linux 内核≥5.10.60.1

  • 下载 usbipd-win 项目:官网下载; winget install --interactive --exact dorssel.usbipd-win

  • Linux中安装sudo apt install linux-tools-generic hwdata、

    sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20

(2)使用

终端窗口
usbipd list
#链接
usbipd bind -b <BUSID>
usbipd attach --wsl --busid <BUSID>
# 断开
usbipd detach --busid <busid>