wsl2安装与基本环境配置
上一级页面:index-wsl
安装
如何安装wsl:官方文档. 安装 WSL | Microsoft Docs
现在,可以在管理员 PowerShell 或 Windows 命令提示符中输入此命令,然后重启计算机来安装运行适用于 Linux 的 Windows 子系统 (WSL) 所需的全部内容。
1 | wsl --install |
安装完WSL,可以在Windows Store中安装Linux发行版,我目前装的是Ubuntu
wsl --list --online
以查看可用发行版列表并运行
wsl --install -d <DistroName>
以安装发行版。
因为是开发环境,以ubuntu20.04为例
1 | wsl --install -d Ubuntu |
安装完毕后,设置默认发行版为Ubuntu
1 | wsl -s Ubuntu |
打开刚刚安装的Ubuntu,设置默认用户和密码
设置WSL2为默认版本
在Windows Termial输入wsl -l -v
查看当前的子系统是否为wsl2
1 | wsl -l -v |
设置WSL2为默认版本
1 | wsl --set-default-version 2 |
将原本wsl1的Linux分发版,转化为wsl2版本:
1 | wsl --set-version <distribution name> <versionNumber> |
我们需要wsl1转换为wsl2,
<distribution name>
是发行版名称,<versionNumber>
要填2,
1 | wsl --set-version Ubuntu 2 |
安装报错
在安装wsl启动后可能会遇到如下报错:
解决方法如下
关闭hyper-v,虚拟机平台,windows-subsystem-liunx
三个Windows功能,重启PC后,重写开启这三个功能
powershell 管理员模式使用下列命令(询问是否重启,全部选no),完成后重启PC
1 | disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V |
powershell 管理员模式使用下列命令(询问是否重启,全部选no),完成后重启PC
1 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All |
使用wsl命令可以成功进入
1 | wsl |
如果成功进入,问题就解决了,否则就接着往下看:
继续排查问题
先尝试更改wsl默认版本为1。将liunx发行版转换为wsl1
1 | wsl --set-default-version 1 |
1 | wsl --set-version Ubuntu 1 |
使用wsl命令
1 | wsl |
如果这时候可以成功进入,说明你的bios里没有开启虚拟化,请自行到bios开启虚拟化.
然后重新设置WSL2为默认版本,然后再将wsl1的liunx发行版转换为wsl2
wsl迁移到其他盘–导出和导入(可选)
因为虚拟机(Ubuntu20.04)默认安装在C盘,大量占用系统盘的空间,所以迁移到其他盘中
关闭所有正在运行的虚拟机
1 | wsl --shutdown |
对需要迁移的分发或虚拟机导出
虚拟机名称:我的是Ubuntu,
查看安装的虚拟机名称
1 | wsl -l -v |
文件导出路径:填写一个tar结尾的路径,例如D:\u.tar
1 | wsl --export 虚拟机名称 文件导出路径 |
1 | wsl --export Ubuntu D:\\u.tar |
卸载虚拟机(删除原本的虚拟机数据)
1 | wsl --unregister 虚拟机名称 |
1 | wsl --unregister Ubuntu |
导入新的虚拟机
目标路径:新的虚拟机文件路径(理解为软件的安装路径就对了,我安装在D:\wsl\Ubuntu
)
虚拟机文件路径:前文export
导出的文件(D:\\u.tar
)
--version 2
:指定使用WSL2,如果填1就是指定使用WSL1
1 | wsl --import 虚拟机名称 目标路径 虚拟机文件路径 --version 2 |
1 | mkdir D:\\wsl\\Ubuntu |
1 | mkdir C:\\Users\\la\\WSL\\Ubuntu |
查看安装的虚拟机
1 | wsl -l -v |
安装完毕后,设置默认发行版为Ubuntu
1 | wsl -s Ubuntu |
需要更改默认登陆用户,
WSL修改登陆用户
以下方法适用于 Fall Creators Update(20h2) 及更高版本:
假如我们在 WSL 版本的 Ubuntu 18.04 LTS 中忘记密码的时候,需要切换到 root 用户修改密码。
使用管理员打开 PowerShell,输入:
1 | ubuntu1804.exe config --default-user root |
即可修改成默认使用用户名为 root 的用户登录。
同理,如果是Ubuntu,可以这样输入
1 | Ubuntu.exe config --default-user root |
如果是Ubuntu,可以这样输入
1 | Ubuntu.exe config --default-user username |
查看Ubuntu.exe在哪,cmd运行
1 | in cmd |
1 | where.exe Ubuntu |
但是,如果您有多个实例,现在有更好的方案:
在实例中,以 root 身份创建/编辑并添加以下行:/etc/wsl.conf
1 | in cmd, |
1 | sudo vim /etc/wsl.conf |
1 | [user] |
然后关闭它,在 PowerShell 中运行,然后重新启动它。wsl --terminate <distro name>
但现在/etc/wsl.conf
正式成为支持的解决方案。
请重启电脑或者使用管理员CMD重启LxssManager。
要重启 LxssManager
, 请管理员CMD运行:
1 | net stop lxssmanager && net start lxssmanager |
查看是否修改成功
1 | whoami |
更新 WSL 主机名
更新 WSL 主机名,以防止主机 Windows 计算机和 WSL 发行版之间的主机名冲突,尤其是在两者之间来回通信时
最近的 WSL 版本允许在每台主机的 wsl.conf
中分别设置 WSL 分发的主机名
如果想更新 WSL 主机名,编辑/etc/wsl.conf
1 | sudo vim /etc/wsl.conf |
注意,主机名不包含特殊字符、不应包含中文、不应包含控制字符、空白字符,
应当使用字母+数字+-
的组合,且长度适中(不允许超过15 个字符)
生成主机名可以去在线的随机字符串生成器网站,随机密码生成器 - 随机字符串生成器 - Random Password Generator | 小影的工具箱 (c7sky.com)
1 | # see https://docs.microsoft.com/en-us/windows/wsl/wsl-config |
之后重启系统
设置用户密码
有root权限的情况下,
使用命令passwd更改用户密码
修改root用户密码
1 | sudo passwd root |
修改用户lamirs密码
1 | sudo passwd lamirs |
删除用户密码
如果想将某个用户设置为无密码,输入命令如下
1 | sudo passwd -d lamirs |
忘记密码怎么办
打开cmd
1 | wsl -u root |
1 | # wsl内输入,username是要更改用户的用户名 |
需要更改默认用户和root用户的密码
1 | passwd root |
1 | passwd lamirs |
设置Ubuntu国内下载源(可选)
下载的东西会比较多,默认的源是外国的,下载速度很慢,这里建议换成国内的源,参见我的这篇博客:
https://blog.csdn.net/qq_43878324/article/details/113619644
WSL2设置网络代理(可选)
使用apt更新wsl2的基本环境依赖
- 更新源
1 | sudo apt update |
- 修复破损包
1 | sudo apt -f install |
- 更新软件
1 | sudo apt upgrade |
配置wsl config
见Advanced settings configuration in WSL | Microsoft Learn