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

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

WSL

启用Window子系统及虚拟化

虚拟机平台只是hyper-v的部分功能,为了使用wsl2下的图形界面可视化,需要开启全部功能的hyper-v

  1. 打开 控制面版
  2. 访问 程序和功能 子菜单 打开或关闭Windows功能
  3. 选择适用于Linux的Windows子系统虚拟机平台Hyper-V
  4. 点击确定
  5. 重启

升级wsl

以解决:Windows11 WSL 打开Ubuntu 报错 WslRegisterDistribution failed with error: 0x800701bc

下载 适用于 x64 计算机的 WSL2 Linux 内核更新包:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

然后安装升级包

配置wsl2为默认

1
wsl --set-default-version 2

wsl更新

安装子系统

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

如果希望安装除 Ubuntu 以外的 Linux 发行版,执行wsl --list --online以查看可用分发版列表。

wsl --install -d Ubuntu-20.04

Ubuntu-20.04是分发版名称

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

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

设置默认登陆用户为root

  • C:\Users\用户名\AppData\Local\Microsoft\WindowsApps路径下确认所安装的Linux子系统具体的版本号
  • 然后打开CMD,输入XXXXXX版本号.exe config --default-user root运行
  • 例如:ubuntu2004 config --default-user root

更改或重置密码

若要更改或重置密码,打开 Linux 分发版并输入命令 passwd 。 系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。

如果忘记了 Linux 分发版的密码:

请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root

如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。

在 PowerShell 中的根级别打开 WSL 分发后,可以使用此命令更新密码:其中 是分发中你忘记了其密码的帐户的用户名:passwd <username> <username>

系统将提示你输入新的 UNIX 密码,然后确认该密码。 当系统告知密码已成功更新后,使用 命令在 PowerShell 中关闭 WSL: exit

1
2
# 并配置root密码
passwd root

安装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

修改WSL/Docker Desktop运行文件路径

WSL

  • 查看WSL分发版本及名称

    1
    wsl -l --all -v

    以下<分发版本名称>均为Ubuntu-24.04

  • 关闭所有发行版

    1
    wsl --shutdown
  • <分发版本>导出到D:\wsl\docker-desktop-data\Ubuntu-24.04.tar

    注意,原有的docker images不会一起导出

    1
    wsl --export <分发版本名称> D:\wsl\ubuntu2404\Ubuntu-24.04.tar
  • 注销<分发版本>

    1
    wsl --unregister <分发版本名称>
  • 重新导入<分发版本>到要存放的文件夹D:\wsl\ubuntu2404\

    1
    wsl --import <分发版本名称> D:\wsl\ubuntu2404\ D:\wsl\ubuntu2404\Ubuntu-24.04.tar --version 2
  • 删除tar文件(可选)

Docker Desktop

WSL 2 版本 默认将docker desktop程序安装到c盘,数据存放于 C:\Users\当前用户名\AppData\Local\Docker\wsl\data\ext4.vhdx 这样会导致docker使用量上去C盘的空间越来越大。为了解决这个问题我们一般习惯性将数据部分移动到其他盘。

  • 配置Docker Desktop下的Disk image location,如果配置无法生效,可进行以下操作。Github解决方案👆

  • 首先关闭Docker Desktop

  • 手动配置%APPDATA%\Docker\settings.jsoncustomWslDistroDir为自定义镜像文件夹,如D:\\wsl\\images【注:需要保证该文件夹存在】

  • 查看WSL分发版本及名称

    1
    wsl -l --all -v

    以下<分发版本名称>均为docker-desktop-data

  • 关闭所有发行版

    1
    wsl --shutdown
  • <分发版本>导出到D:\wsl\docker-desktop-data\docker-desktop-data.tar

    注意,原有的docker images不会一起导出

    1
    wsl --export <分发版本名称> D:\wsl\docker-desktop-data\docker-desktop-data.tar
  • 注销<分发版本>

    1
    wsl --unregister <分发版本名称>

    说明:解除当前的docker 数据虚拟盘映射,该操作后会删除原有的ext4.vhdx (数据未备份前请谨慎操作)

  • 重新导入<分发版本>到要存放的文件夹D:\wsl\docker-desktop-data\

    1
    wsl --import <分发版本名称> D:\wsl\docker-desktop-data\ D:\wsl\docker-desktop-data\docker-desktop-data.tar --version 2
  • 删除tar文件(可选)

    1
    D:\wsl\docker-desktop-data\docker-desktop-data.tar
  • 重新启动Docker

    在开始菜单中找到docker点击启动即可,这样就把存储转移了

配置docker desktop

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

实现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

解决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端口远程访问

让别的客户端机器也能访问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

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.

Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE

Go to settings > (search) turn windows feature on / off

If Windows Hypervisor Platform and Windows Machine Platform is unchecked, please check them, else uncheck and recheck them.

Reboot

Open the terminal check, run command - wsl -l -v

should result in saying ubuntu is running in version 1/2.