Win11+Wsl2环境配置

532 阅读3分钟

前排提示:如果遇到什么服务名解析不出来或者无法访问的报错记得开加速。

安装

管理员身份打开 Powershell

PS C:> wsl --install

也可以更新下。

PS C:> wsl --update

可以采用图形界面方式打开子系统。命令行的话是:

PS D:> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

PS D:>Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

好了后根据提示重启就可以了。

然后需要安装下内核包:X86Linux内核包

现在好像默认开启后就是wsl2的版本了。不过为了保险可以自己设置下,避免遇到什么问题。

PS C:> wsl --set-default-version 2

安装Linux分发版。这个自己去MicroSoft Store自己搜然后安装就行。比如 Ubuntu。

启动

安装好了之后启动。

打开「开始」菜单找到 Ubuntu 并启动,或使用 wsl 命令从 Windows 命令行启动都随便你。

第一次打开需要初始化的:

Installing, this may take a few minutes...

然后会提示你输入用户名、密码等信息。好了之后会提示你创建成功的。

Installation successful! 

然后就基本上完成了。

迁移

迁移前可以通过这个命令查看下当前运行的分发版本。

PS C:> wsl -l -running
  1. 终止当前运行的wsl
PS C:> wsl --shutdown
  1. 导出。记得替换对应位置的内容。
PS C:> wsl --export {你安装的分发版本} {导出目标文件路径}/{导出文件名}.tar
  1. 将原来的分发卸载。
PS C:> wsl --unregister {你安装的分发版本}
  1. 导入
PS C:> wsl --import {你安装的分发版本} {导出路径} {导出目标文件路径}/{导出文件名}.tar --version 2
  1. 恢复用户。这个别忘记了,不然只能用 root 登录了。
{导出的分发版本} config --default-user {你原来的用户名}

如果这种方式不行,再提供一种解决方案,可以直接视野 root 登录,然后按下面流程操作:

# 查看用户组
ls /home

vim /etc/wsl.conf

# 添加下面内容
[user]
default=yourname

到这基本就完成了。可以启动下看看是不是能用对应账户登录了。 好像还可以通过修改注册表恢复,但是没试过。

换源+中文环境(可选)

比如 清华镜像

  1. 查看自己wsl子系统的版本:
# 三种方式
$ cat /proc/version
Linux version 5.15.133.1-microsoft-standard-WSL2 (root@1c602f52c2e4) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) #1 SMP Thu Oct 5 21:02:42 UTC 2023

$ uname -a
Linux localhost 5.15.133.1-microsoft-standard-WSL2 #1 SMP Thu Oct 5 21:02:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy
  1. 镜像站找到对应版本的配置粘贴过去就行。
# 1. 切root
localhost:~$ sudo su
[sudo] password for :
root@localhost:#
root@localhost:# cp /etc/apt/sources.list /etc/apt/sources.list.bak
root@localhost:#
root@localhost:# vim /etc/apt/sources.list
# 拷贝镜像站提供的版本配置然后拷贝过去就完事了
# esc + :wq 保存退出
root@localhost:# apt update
root@localhost:# apt upgrade -y

localhost:~$

设置中文环境

# sudo apt install language-pack-zh-hans -y
# sudo apt install fontconfig -y 
# sudo apt install fonts-noto-cjk fonts-wqy-microhei fonts-wqy-zenhei -y # 中文字体 
# sudo dpkg-reconfigure locales

然后进入一个设置界面,第一个界面不用管直接回车。 下一个菜单中选择 zh_CN.UTF-8 回车。

然后重启wsl就行。

PS C:> wsl -l -v # 查看安装的分发版本

PS C:> wsl --shutdown #停止所有

PS C:> wsl -t {指定分发版本}

PS C:> wsl #启动

再依次输入下列命令,把 man 帮助页替换为中文。

# sudo apt install manpages-zh # sed -i 's\|/usr/share/man\|/usr/share/man/zh_CN\|g' /etc/manpath.config

可以用 man man 测试。

放个官方文档地址: 官方文档

WSL 部分使用问题记录

  1. 无法连接上github
$ git pull
wsl ssh: connect to host github.com port 22: Connection refused fatal: Could not read from remote repository.  Please make sure you have the correct access rights and the repository exists.

$ ssh -T git@github.com
# 下面清空说明可以连上
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. 

# 连不上可以查看具体原因 一般时dns之类的解析到本地地址了 (出现127.0.0.1xxx)
$  ssh -vT git@github.com

# 修改 /etc/resolv.conf 添加dns地址即可
$ sudo vim /etc/resolv.conf
nameserver 8.8.8.8