wsl2安装
wsl2安装
官网链接-适用于 Linux 的 Windows 子系统文档
比较 WSL 版本:
wsl是windows自有的Linux子系统,而wsl2相较于wsl1来说最大的一个区别就是wsl2有完整的Linux内核,wsl2不再是文件夹形式存在于windows盘中,而是会生成一个ext4.vhdx硬盘文件。wsl1不需要内核虚拟化和hyper-v,wsl2需要内核虚拟化支持并启用hyper-v。- wsl2 能直接使用
docker-desktop,支持systemd服务管理器。 - wsl 在
/mnt/路径下自动挂载windows的文件磁盘c d e ...,win与wsl文件互传更方便。- WSL2 架构在几个方面优于 WSL1,但跨 OS 文件系统的性能除外。
wsl2 安装先决条件
wsl2支持Win11的教育版、专业版、企业版;windows内核版本支持wsl2(目前是内部版本不能低于 19041)。
-
打开PowerShell方式:
- 按下键盘windows徽标
WIN+X,打开 终端管理员 - 在搜索栏搜
PowerShell,点击鼠标右键用管理员身份打开
- 按下键盘windows徽标
-
查看windows-OS版本
- winver
-
查看系统类型,即CPU指令集架构
- systeminfo
# 开启linux子系统wsl
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 开启虚拟机平台即hyper-v
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
官方自动更新 wsl1 到 wsl2
网络不好,命令报错没关系,看下面的直接从 GitHub 手动安装最新 wsl 包。
安装wsl
wsl --install
#升级wsl
wsl --update
# 切换默认wsl版本为wsl2(未开启虚拟化会有报错提示)
wsl --set-default-version 2
# 使用wsl2管理指定子系统发行版
wsl --set-version Ubuntu-22.04 2
从微软商店安装 WSL2
打开微软商店,搜索wsl,选择Windows Subsystem for Linux
按官方自动安装升级 wsl2 失败,手动更新 wsl1 到 wsl2
注意:
官网的旧版 WSL 的手动安装步骤中,适用于 x64 计算机的 WSL2 Linux 内核更新包 下载的更新包wsl_update-x64.msi就是个BUG,严重误导了我,还是使用不了命令wsl --version,也启动不了systemd,直接让我破防了好多天。
在网上看了太多文章,都是从微软商店下载的wsl才没问题,因为所以启发我直接从github的WSL最新稳定安装包安装,终于大功告成!
# 切换默认wsl版本为wsl2(未开启虚拟化会有报错提示)
wsl --set-default-version 2
# 使用wsl2管理指定子系统发行版
# wsl --set-version Ubuntu-22.04 2
第一次安装wsl的用户需重启电脑
# 看自己安装的版本
wsl --list --verbose
#简写
wsl -l -v
官方自动安装linux发行版ubuntu22.04
# 查看可安装的linux发行版 (操作超时)
wsl --list --online
# 从github自动安装 (操作超时)
wsl --install -d Ubuntu-22.04
手动安装linux发行版ubuntu22.04
cd d:\wsl\
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2204 -OutFile ubuntu22.04.appx -UseBasicParsing
Rename-Item .\ubuntu22.04.appx ubuntu2204_0.zip
Expand-Archive .\ubuntu2204_0.zip
Rename-Item .\ubuntu2204_0\Ubuntu_2204.1.7.0_x64.appx ubuntu2204.zip
mv .\ubuntu2204_0\ubuntu2204.zip .\
del -r .\ubuntu2204_0
Expand-Archive .\ubuntu2204.zip
cd .\ubuntu2204\
.\ubuntu.exe
手动安装linux发行版ubuntu20.04
cd d:\wsl\
Invoke-WebRequest -Uri https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx -OutFile ubuntu20.04.appx -UseBasicParsing
# 可通过将 .appx 文件更改为 zip 文件来安装该文件
Rename-Item .\ubuntu20.04.appx ubuntu-20.04.zip
Expand-Archive .\ubuntu-20.zip -Verbose
cd .\ubuntu-20\
.\ubuntu2004.exe
WSL 中的高级设置配置
- 详细参数配置,请参照官网说明
- wsl.conf 和 .wslconfig 之间有什么差别?
- .wslconfig 用于在 WSL 2 上运行的所有已安装发行版中全局配置设置。文件位置在
Windows文件资源管理器并在地址栏中输入%UserProfile% - wsl.conf 用于为在 WSL 1 或 WSL 2 上运行的 Linux 发行版针对每个发行版配置设置。
- .wslconfig 用于在 WSL 2 上运行的所有已安装发行版中全局配置设置。文件位置在
- WSL2全局资源配置
Windows文件资源管理器并在地址栏中输入%UserProfile%,编辑.wslconfig文件[wsl2] processors=6 memory=4GB swap=2GB localhostForwarding=true
WSL2中linux发行版ubuntu22.04设置systemd服务管理器
systemd作为pid=1的系统进程,代替wsl默认的init系统进程
- 如果需要使用微软官方支持的systmed,在目前来说你需要满足这些前置条件:
- 操作系统为windows 11
- wsl 版本为 0.67.6 或以上
- 查看wsl版本号命令为:
wsl --version,如果此命令未正常回显版本号,或版本号低于0.67.6,那么你安装的wsl还不支持systemd。
- nano编辑器
- 使用说明:按键盘键
CTRL+X->Y->ENTER
- 使用说明:按键盘键
# step1
sudo nano /etc/wsl.conf
# step2 写入
[boot]
systemd=true
# step3 关闭系统
wsl.exe --shutdown
# step4 查看分发版本名
wsl -l -v
# step5 启动指定分发版系统
wsl -d Ubuntu
# step6 验证1号进程是init还是systemd
ps -p 1
WSL2 连接 Windows 防火墙问题解决方案
其实就是 WSL2 的锅,但是官方也不管,似乎有什么困难,提供一个 workaround 吧,在 Windows 中加一个防火墙规则就可以了:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
ssh远程登陆(暂不需要)
- 重装ssh,自带的不行
- sudo apt-get remove openssh-server
- sudo apt-get install openssh-server
- 编辑ssh配置
- sudo vi /etc/ssh/sshd_config
#Port = 22去掉这行的#,代表启用端口号22#ListenAddress0.0.0.0 去掉这行的#,代表监听所有地址#PasswordAuthenticationyes,去掉这行的#, 将这行的no改成yes,代表支持账号密码形式的登录
- sudo service ssh restart
WSL-Ubuntu忘记root密码和用户密码
重置root密码
# 进入 WSL 对应分发版的根目录,以及需要修改什么账号的密码
wsl -d Ubuntu-22.04 -u root
# 修改密码
passwd
wsl卸载分发版ubuntu20.04
wsl -l -v
wsl --unregister <DistributionName>
WSL的备份和迁移
解决的问题
- 需要把WSL迁移到其他电脑上工作。
- 默认情况下WSL安装位置在系统盘,系统盘容量不足。
- 像使用虚拟机软件一样备份你正在使用的WSL系统。
步骤
-
开始之前你需要先记下需要迁移的WSL系统的用户名
-
查看需要迁移的WSL是否在运行
wsl -l -v
# NAME STATE VERSION
# * Ubuntu-20.04 Stopped 2
# docker-desktop Stopped 2
# docker-desktop-data Stopped 2
- 终止WSL运行
两条命令都可以,任选其一。
wsl --shutdown
# 立即终止所有正在运行的分发和 WSL 2 轻型虚拟机。
wsl -t <DistributionName>
# 终止指定分发。
- 导出
将WSL系统导出到指定位置,得到一个tar的归档文件。
# <分发版名称> <安装目录>
wsl --export <DistributionName> <FileName> [Options]
# 将指定的 tar 导入为新分发。
example
wsl --export Ubuntu-20.04 D:\Linux\wsl\export-ubuntu-20.04.tar
- 注销原系统-WSL分发并删除根文件系统。
根据你的需要自行选择是否注销原来的WSL。
wsl --unregister <DistributionName>
- 导入
将导出的WSL系统的tar归档文件导入到指定目录下。
wsl --import <DistributionName> <InstallLocation> <FileName> [Options]
在安装目录看到了一个vhdx文件,导入成功。
- 设置登录用户
新还原的WSL系统的默认用户会变成root,必须修改默认用户为之前安装时的用户。
ubuntu-20.04 config --default-user <username>
把ubuntu-20.04 替换为你使用WSL分发版执行文件名称,如ubuntu-20.04.exe等等。 username是原来WSL系统的用户名。
- wsl设置默认发行版
要设置与 wsl 命令一起使用的默认 Linux 发行版,请输入
wsl -s <Distro>
# 将 <Distro> 替换为要使用的分发名称。
例如,从 PowerShell/CMD 输入 wsl -s Debian,将默认发行版设置为 Debian。 现在从 PowerShell 运行 wsl npm init 将在 Debian 中运行 npm init 命令。 要在 PowerShell 或 Windows 命令提示符下运行特定的 WSL 发行版而不更改默认发行版,请使用命令 wsl -d ,将 替换为要使用的发行版的名称。
- 删除导出的归档文件
del D:\export-ubuntu-20.04.tar

浙公网安备 33010602011771号