WSL子系统 服务器

2025-03-23 约 829 字 阅读时长2 分钟

WSL子系统

常用命令

cmd
 1dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
 2
 3dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
 4
 5wsl -l -v  # 列出所有已安装的 Linux 发行版
 6
 7wsl  # 启动默认的 Linux 发行版
 8
 9wsl -d <DistributionName>   # 启动指定的 Linux 发行版
10
11wsl --set-default <DistributionName>  # 设置默认的 Linux 发行版
12
13wsl --set-default-version 2  # 设置默认的 WSL 版本
14
15wsl --update <DistributionName>  # 更新 Linux 发行版到 WSL 2
16
17wsl --unregister <DistributionName>  # 卸载 Linux 发行版
18
19wsl --update-kernel  # 更新 WSL 2 内核
20
21wsl --export Ubuntu-24.04 D:\wsl\ubuntu24.tar  # 导出备份
22
23wsl --import Ubuntu-24.04 D:\wsl\Ubuntu-24.04 D:\wsl\ubuntu24.tar  # 导入备份
24
25wsl --shutdown  # 关闭所有 WSL 实例
26
27wsl --shutdown <DistributionName>  # 关闭特定的 WSL 发行版
28
29# 手动安装 
30# 1.下载 https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
31# 2. Add-AppxPackage .\Ubuntu.appx

配置

域名

  • 方式1:wsl子系统 dns 总是会默认通过请求变成 windows 的 dns ,配置 /etc/resolv.conf

    conf
    1nameserver 223.5.5.5
    2nameserver 223.6.6.6
  • 方式2:使用 .bashrc , 添加下面命令

    shell
    1export RESOLV_CONF="/etc/resolv.conf"
    2alias set-dns='sudo echo "nameserver 223.5.5.5" > $RESOLV_CONF && sudo echo "nameserver 223.6.6.6" >> $RESOLV_CONF'

    然后命令行执行

    bash
    1source ~/.bashrc  # 应用最新配置文件
    2set-dns  # 修改/etc/resolv.conf文件,设置域名

系统代理

配置系统代理

shell
 1export hostip=$(ip route | grep default | awk '{print $3}')
 2export hostport=10808
 3# add for proxy
 4alias set-proxy='
 5    export https_proxy="socks5://${hostip}:${hostport}";
 6    export http_proxy="socks5://${hostip}:${hostport}";
 7    export all_proxy="socks5://${hostip}:${hostport}";
 8    echo -e "Acquire::http::Proxy \"http://${hostip}:${hostport}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null;
 9    echo -e "Acquire::https::Proxy \"http://${hostip}:${hostport}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null;
10'
11alias un-proxy='
12    unset https_proxy;
13    unset http_proxy;
14    unset all_proxy;
15    sudo sed -i -e '/Acquire::http::Proxy/d' /etc/apt/apt.conf.d/proxy.conf;
16    sudo sed -i -e '/Acquire::https::Proxy/d' /etc/apt/apt.conf.d/proxy.conf;
17'

命令行执行

bash
1set-proxy # 开启代理
2un-proxy  # 关闭代理

docker代理

  • 方式1: 直接新建或修改文件 /etc/docker/daemon.json

    json
    1{
    2 "registry-mirrors": ["https://l2z6apov.mirror.aliyuncs.com"],   // 这个是阿里镜像
    3 "proxies": {
    4    "http-proxy": "socks5://172.17.208.1:10808",
    5    "https-proxy": "socks5://172.17.208.1:10808"
    6  }
    7}

    重启服务

    bash
    1systemctl daemon-reload
    2systemctl restart docker
  • 方式2: 使用 .bashrc, 添加下面内容

    bash
     1# 变量hostip、hostport在前面系统代理时已经定义过了
     2# export hostip=$(ip route | grep default | awk '{print $3}')
     3# export hostport=10808
     4alias set-docker-proxy='
     5        echo -e "{\"proxies\": {\"http-proxy\": \"socks5://${hostip}:${hostport}\", \"https-proxy\": \"socks5://${hostip}:${hostport}\" }}" | tee /etc/docker/daemon.json > /dev/null;
     6        systemctl daemon-reload;
     7        systemctl restart docker;
     8'
     9alias un-docker-proxy='
    10        echo -e "{}" | tee /etc/docker/daemon.json > /dev/null;
    11        systemctl daemon-reload;
    12        systemctl restart docker;
    13'

    运行命令

    bash
    1source ~/.bashrc  # 应用最新配置文件
    2set-docker-proxy  # 设置docker代理,并重启docker
    3un-docker-proxy  # 取消设置docker代理,并重启docker

压缩 WSL 的虚拟磁盘

  1. 运行 diskpart

    在命令提示符中输入以下命令并回车:

    bash
    1diskpart
  2. 选择虚拟磁盘文件

    输入以下命令,指定你的 WSL 虚拟磁盘文件路径

    bash
    1select vdisk file="D:\wsl\Ubuntu-24.04\ext4.vhdx"

    确保路径和文件名完全正确,否则会报错。

  3. 压缩虚拟磁盘

    输入以下命令以压缩虚拟磁盘:

    bash
    1compact vdisk

    这个过程可能需要一些时间,具体取决于磁盘的大小和当前的使用情况。

  4. 分离虚拟磁盘

    输入以下命令将虚拟磁盘从当前会话中分离:

    bash
    1detach vdisk
  5. 退出 diskpart

    输入以下命令退出 diskpart

    bash
    1exit
使用滚轮缩放
按住拖动