记录windows11+wsl2

2022年更新:

  • powertoys没有utools好用,已更新成utools(之后会单独记一篇utools的插件篇)
    win11下载地址

点击创建win11安装,以使用usb方式制作启动盘

下载之后进行安装及配置启动盘(下一步下一步即可)

安装wsl(默认ubuntu)

若要使用简化的 --install 命令,必须运行最新版本的 Windows(内部版本 20262+)。 若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 可以使用“设置”菜单或 Windows 更新助手进行更新。

如果希望安装除 Ubuntu 以外的 Linux 发行版,或者希望手动完成这些步骤,请参阅 WSL 安装页了解更多详细信息。

打开 PowerShell(或 Windows 命令提示符)并输入:

wsl --install Ubuntu-20.04

Ubuntu-20.04是分发版名称

然后重启,会提示进行设置账户密码

wsl默认mount的路径是/mnt/xxx, 比如c盘则是/mnt/c

配置wsl2为默认

wsl --set-default-version 2

修改wsl的路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.查看WSL分发版本及名称
在Windows PowerShell中输入如下命令:
wsl -l --all -v

2.导出分发版为tar文件到d盘
wsl --export <分发版本名称> D:\wsl\wsl-ubuntu\wsl-ubuntu.tar

3.注销当前分发版
wsl --unregister <分发版本名称>

4.重新导入并安装wsl在D:\wsl\wsl-ubuntu
wsl --import <分发版本名称> D:\wsl\wsl-ubuntu\ D:\wsl\wsl-ubuntu\wsl-ubuntu.tar --version 2

5.设置默认登陆用户为root(或者使用安装时用户名),并配置root密码
ubuntu2004 config --default-user root
passwd root

6.删除tar文件(可选)
D:\wsl\wsl-ubuntu\wsl-ubuntu.tar

安装docker desktop

  • 关闭自动重启
  • 修改mirror
    1
    2
    3
    4
    "registry-mirrors": [
    "https://0vlzmqf0.mirror.aliyuncs.com",
    "https://registry.docker-cn.com"
    ]

修改docker desktop运行文件路径

1
2
3
4
5
6
7
8
9
10
11
12
13
1.首先关闭docker

2.关闭所有发行版:
wsl --shutdown

3.将docker-desktop-data导出到D:\wsl\docker-desktop-data\docker-desktop-data.tar(注意,原有的docker images不会一起导出)
wsl --export docker-desktop-data D:\wsl\docker-desktop-data\docker-desktop-data.tar

4.注销docker-desktop-data:
wsl --unregister docker-desktop-data

5.重新导入docker-desktop-data到要存放的文件夹:D:\wsl\docker-desktop-data\
wsl --import docker-desktop-data D:\wsl\docker-desktop-data\ D:\wsl\docker-desktop-data\docker-desktop-data.tar --version 2

实现wsl ssh连接(习惯使用xshell,不习惯powershell和windows terminal的话)

  • 2022更新: wsl ip总变.我没找到固定ip的方法.这块不建议弄
  • 先卸载重装一遍ssh服务,这里不是很确定是不是自带ssh服务有没有问题 ,这里使用root
    1
    2
    apt-get remove openssh-server
    apt-get install openssh-server
  • 编辑sshd_config文件
    1
    2
    3
    4
    5
    vim /etc/ssh/sshd_config

    Port 2222 #设置ssh的端口号, 由于22在windows中有别的用处, 尽量不修改系统的端口号
    PermitRootLogin yes # 可以root远程登录
    PasswordAuthentication yes # 密码验证登录
  • 重启服务
    1
    sudo service ssh --full-restart

安装g++和make

1
apt install -y g++ make

设置无密码操作

通常,当我们在本地计算机上工作时,最好更新sudoers并将组设置%sudo为无密码:

1
2
3
4
5
6
7
8
# Edit the sudoers with the visudo command
sudo visudo

# Change the %sudo group to be password-less
%sudo ALL=(ALL:ALL) NOPASSWD: ALL

# Press CTRL+s to write
# Press CTRL+X to exit

Linux Tab 命令提示时忽略大小写

1
2
touch ~/.inputrc
echo 'set completion-ignore-case on' >> .inputrc

解决WSL2中Vmmem内存占用过大问题

  • 按下Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹
  • 新建文件 .wslconfig ,然后记事本编辑
  • 填入以下内容并保存, memory为系统内存上限,这里我限制最大4gb,可根据自身电脑配置设置
    1
    2
    3
    4
    [wsl2]
    memory=4GB
    swap=0
    localhostForwarding=true
  • 然后启动cmd命令提示符,输入 wsl --shutdown 来关闭当前的子系统

WSL无法打开或者卡死

使用管理员权限打开终端(比如cmd),然后输入
netsh winsock reset
最后,重启windows即可

解决子系统ubuntu下载速度慢解决方法

  • windows更新->高级选项->传递优化->勾选允许从其他电脑下载,internet和我的本地网络设备

让别的客户端机器也能进行访问docker engine 的2375端口

1
2
3
cmd以管理员身份运行(替换<ipv4-ip>):

netsh interface portproxy add v4tov4 listenport=2375 connectaddress=127.0.0.1 connectport=2375 listenaddress=<ipv4-ip> protocol=tcp

如果遇到: Unable to expose Docker API on 127.0.0.1:2375,[::1]:2375 on Windows

关闭docker destop执行以下步骤(https://github.com/docker/for-win/issues/3546)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
I had the same issue. By some reason Windows reserves port 2375:
- netsh interface ipv4 show excludedportrange protocol=tcp

If you see that one of port ranges include port 2375 then you have the same issue.Disable Hyper-V and reboot:
- dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

Then reserve port 2375:
- netsh int ipv4 add excludedportrange protocol=tcp startport=2375 numberofports=1

Enable Hyper-V and reboot again:
- dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

Now it should be fine.
Also see this thread where I found this solution.
powertoys

https://github.com/microsoft/PowerToys