1:安装
Windows 11 wsl2 安装全流程:https://blog.csdn.net/u011119817/article/details/130745551
2:常用命令
命令 | 作用 |
---|---|
-v | 查看 wsl2 版本,建议使用 wsl --update 更新一下(别开代理更新)。 |
-l -v | 查看已安装的 Linux 发行版,以及状态和版本。 |
-l -o | 查看可安装的 Linux 发行版,需要联网和魔法。 |
–install <Linux发行版名称> | 指定发行版本名称安装。 |
–unregister <Linux发行版名称> | 指定发行版本名称卸载。 |
-d <Linux发行版本名称> | 指定发行版本名称启动。 |
–set-default <Linux发行版本名称> | 指定发行版本名称缺省。【只使用 wsl 命令默认启动 缺省发行版 Linux】 |
–shutdown | 指定发行版本名称关闭。【默认情况下退出 wsl 后过个几秒钟自动关闭】 |
-u <Linux内部用户> | 指定 Linux 内部用户,默认 root 用户登录。 |
–export <Linux发行版本名称> <导出到指定路径> | 导出 Linux 发行版镜像到指定路径下。 |
–import <自定义Linux发行版本名称> <指定安装目录> <指定镜像文件> --version <指定版本> | 导入 Linux 发行版镜像。 |
3:镜像迁移
默认情况下 wsl2 安装的所有镜像都在 C 盘,可以先安装到 C 盘,后期在迁移到其它盘符中。
注意:迁移后可能会导致GUI无法显示,不在意可以迁移。搜索应用时,会出现
Kali Linux
,迁移后不能使用该应用直接打开 Kali,否则会重新安装一个新的 Kali。
# 安装 kali-liunx,安装后默认在 C 盘。
wsl --install kali-linux
# 将 kali-linux 的镜像迁移到 E:\wsl2_linux 目录下。
wsl --export kali-linux "E:\wsl2_linux\kali.tar"
# 将 kali-linux 的镜像导入到 wsl2 中。
wsl --import Kali "E:\wsl2_linux" "E:\wsl2_linux\kali.tar" --version 2
# 将 kali-linux 卸载
wsl --unregister kali-linux
以上方法同样可用于 wsl 的快照,如果 linux 被玩坏了也可以这样干。
4:文件共享
4.1:Windows -> Linux
Windows 访问 Linux 的资源方式,直接打开任务管理器,左下角此电脑
同级选项有一个Linux
,这里可以直接访问到 Linux 的根目录资源。
4.2:Linux -> Windows
Linux 下的 /mnt
目录自动挂在了 Windows 的所有盘符。
5:镜像网络
5.1:注意
wsl 没有升级到 2.x 之前,只能通过 Hyper-v 管理器创建网卡,再通过用户目录下的 .wslconfig
文件绑定 wsl。
升级到 2.x 后,发布了镜像网络
,镜像网络会根据宿主机的网卡个数,自动生成多张网卡,与宿主机网卡同步,Mac、IP都相同。
wsl 升级到 2.x 需要 Win 11 专业版的 23H2 版本,升级命令:wsl --update --pre-release
5.2:配置
配置镜像网络后,只能通过 127.0.0.1 访问,避免过度占用宿主机端口,其它 IP 需配置 hostAddressLoopback 参数。
编辑 %USERPROFILE%
路径下的 .wslconfig
文件 (没有就创建),添加以下配置:
# wsl 性能配置
[wsl2]
# 默认4GB内存
memory=8GB
# 默认2个处理器
processors=4
# 默认2GBswap
swap=2GB
# 镜像网络配置
[experimental]
# 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
autoMemoryReclaim=gradual
# 开启镜像网络
networkingMode=mirrored
# 开启 DNS Tunneling
dnsTunneling=true
# 开启 Windows 防火墙
firewall=false
# 开启自动同步代理
autoProxy=true
# 开启自动释放 WSL2 虚拟硬盘空间
sparseVhd=true
# 允许 127.0.0.1 以外的 IP 访问 wsl,默认只允许 127.0.0.1 访问 wsl
hostAddressLoopback=true
6:Linux 常见问题
6.1:Sysvinit
wsl 启动的 Linux 无法使用 systemd 来管理服务,只能使用 sysvinit 对应的 service 来管理服务,例如:service docker start
。
6.2:Docker
wsl 安装 Docker 后,启动时可能会有如下报错:
# 这个报错不用管,其实 Docker 已经启动了,没有什么太大影响。
mount: /sys/fs/cgroup/cpuset: wrong fs type, bad option, bad superblock on cgroup, missing codepage or helper program, or other error.
dmesg(1) may have more information after failed mount system call.
启动 Docker 后,创建一个容器后,在宿主机中访问失败,需要在 /etc/docker/daemon.json
文件中添加以下配置并重启 Docker:
{
"iptables": false
}
6.3:VMware
安装 Hyper-V 后,在使用 VMware16 过程中,虚拟机启用了 CPU 的 虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)
选项,很可能出现以下报错:
ERROR:此平台不支持虚拟化的 Intel VT-x/EPT
这是因为 Hyper-V 与 VMware16 冲突了。
- 打开 PowerShell(管理员),执行:
bcdedit /set hypervisorlaunchtype off
开启后禁止加载 Hyper-V,设置为 auto 可恢复。 - 重启主机。
- 重新打开 VMware16,启动虚拟机成功。
好了,结果是 wsl2 起不来了,开启 CPU 虚拟化的 WMware 虚拟机能起来。。。
VMware 中的虚拟机想要用 Docker 就必须开启 CPU 虚拟化,但又会与 wsl2 起冲突,难搞哦,二选一。。。
只要 VMware 不开启 CPU 虚拟化,不使用 Docker,两者就可以共存,否则就得牺牲掉 wsl2 或者牺牲掉 VMware 的 CPU虚拟化。