diff --git a/docs/about.md b/docs/about.md index 1eda444..557e527 100644 --- a/docs/about.md +++ b/docs/about.md @@ -31,7 +31,7 @@ permalink: /about/ 如果您在网页访问过程中遇到什么问题,或者想要交个朋友的话,欢迎随时来找我玩哦~ - 邮箱:meng_si@proton.me -- B站:66ccff色的薰依草 +- B站:[66ccff色的薰依草](https://space.bilibili.com/361714249) ## 网站的成长记录~ 📝 diff --git a/docs/blog/technology/Operate_WSL2.md b/docs/blog/technology/Operate_WSL2.md new file mode 100644 index 0000000..7bc49fd --- /dev/null +++ b/docs/blog/technology/Operate_WSL2.md @@ -0,0 +1,113 @@ +--- +title: WSL2 虚拟机核心操作指南 +createTime: 2025/09/30 16:08:32 +cover: https://image.simengweb.com/elysia_cover_image/2MEiWEhvsx8OtKeJ.png +permalink: /article/operate-wsl2/ +--- +这篇文章主要讲WSL2虚拟机核心操作哦~它基于轻量级Hyper-V运行,像贴心小精灵默默工作~还能用命令行精细控制!接下来讲启动/关闭、实例查看、资源配置、网络操作、备份迁移这五大操作,是不是很期待呢~♪ + + + +## 启动/关闭 WSL2 虚拟机 +WSL2的虚拟机平时是由Windows自动管理的呢,不过我们也可以通过命令手动控制它的生命周期哦~ +``` +# 启动指定的发行版 +wsl -d Ubuntu-20.04 + +# 关闭指定的发行版 +wsl --terminate Ubuntu-20.04 +``` +如果想要完全关闭WSL2的所有虚拟机,也是可以的哦~ + +使用这个命令后,所有的发行版都会被强制终止,内存、网络、文件句柄都会被全部释放呢~ +``` +wsl --shutdown +``` + +## 查看正在运行的 WSL 实例 +想知道当前有哪些WSL实例在运行吗?很简单哦~使用下面这个命令就可以查看啦: +``` +wsl -l -v +``` +输出结果大概是这个样子的哦~ +```text + NAME STATE VERSION +* Ubuntu Running 2 + docker-desktop Running 2 + Ubuntu-20.04 Stopped 2 +``` +看到那个带星号(*)的了吗?那就是当前的默认系统哦~如果想要设置新的默认发行版,可以使用这个命令: +``` +wsl --set-default Ubuntu-20.04 +``` +## 配置 WSL2 资源 +WSL2的资源也是可以自定义配置的哦~我们可以通过编辑`%USERPROFILE%\.wslconfig`文件来设置内存、CPU核心数等参数呢~ +``` +[wsl2] +# 内存限制(默认:80% 物理内存) +memory=4GB + +# CPU 核心数限制(默认:全部核心) +processors=2 + +# 交换空间大小(默认:25% 内存) +swap=2GB + +# 是否启用 localhost 端口转发(默认 true) +localhostForwarding=true +``` +要注意哦~修改完配置后,必须重启WSL2虚拟机才能让这些设置生效呢~ +## 网络相关配置 +WSL2使用的是虚拟NAT网络哦,它和Windows主机是相互隔离的,但又可以互相通信呢~是不是很神奇~ + +| 方向 | 访问方式 | 说明 | +| --- | --- | --- | +| Windows -> WSL2 | localhost:port | 自动端口转发(需要`localhostForwarding=true`) | +| WSL2 -> Windows | `host.docker.internal` 或 `$(cat /etc/resolv.conf \| grep nameserver \| awk '{print $2}')` | 获取主机的IP地址 | +| 外部机器 -> WSL2 | 默认不可达 | 需要手动端口转发或使用 Windows 防火墙规则 | + +想知道WSL2的IP地址吗?可以用这个命令查看哦~(不过要注意,每次启动WSL2后,IP地址可能会变呢~) + +注意哦~这个命令需要进入到WSL2虚拟机内部执行才行呢~ +``` +hostname -I +``` + +如果需要访问WSL2中的服务,多亏了`localhostForwarding`的配置,我们直接访问[localhost:port](http://localhost:port)就可以啦~超方便的~ + +如果需要手动设置端口转发,可以在Powershell中添加防火墙规则和端口转发哦~不过要记得以管理员方式打开Powershell呢~ +``` +# 获取 WSL2 当前IP地址 +$wslIp = (wsl hostname -I).Trim() + +$wslIp + +# 添加端口转发(以 8000 端口为样例) +netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=$wslIp + +# 开放 Windows 防火墙 +New-NetFirewallRule -DisplayName "WSL2 Port 8000" -Direction Inbound -LocalPort 8000 -Protocol TCP -Action Allow + +# 撤销端口转发 +netsh interface portproxy delete v4tov4 listenport=8000 listenaddress=0.0.0.0 + +# 撤销开放的防火墙规则 +Remove-NetFirewallRule -DisplayName "WSL2 Port 8000" +``` + +## 备份和迁移 +WSL2发行版也是可以备份和迁移的哦~我们可以把整个发行版导出成tar文件,这样就可以用于备份、迁移或者分享给其他小伙伴啦~ +``` +# 导出指定发行版到 tar 文件 +wsl --export <发行版名称> <输出文件路径.tar> +wsl --export Ubuntu-20.04 D:\backups\ubuntu-2004.tar + +# 导入 tar 文件为新的发行版 +wsl --import <新发行版名称> <安装目录> [选项] +wsl --import Ubuntu-Backup C:\wsl\Ubuntu-Backup D:\backups\ubuntu-2004.tar --version 2 +``` +要注意哦~导入完成后,默认用户会变成root呢~如果想要设置回原来的用户,可以使用这个命令: +``` +ubuntu2004.exe config --default-user username +``` +悄悄告诉大家一个小秘密~WSL2是可以同时存在多个同源发行版的哦~这样我们就可以在不同的环境中进行不同的实验啦~是不是很方便呢~ \ No newline at end of file