Windows11 安装使用WSL2

启用window子系统及虚拟化

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

更新WSL

wsl --update

如果更新失败,可以手动下载安装包安装。下载地址:https://github.com/microsoft/WSL/releases

设置默认WSL版本

# 将 WSL 默认版本设置为 WSL 2
wsl --set-default-version 2

查看wsl版本

wsl -v

在线安装

查看可用发行版列表

wsl --list --online

如果提示错误,可以参考https://www.cnblogs.com/tommickey/p/17738445.html中的方法配置本地hosts文件后再尝试,或者直接使用手动下载安装的方法。

安装指定发行版

使用wsl --install -d <Distribution Name>安装指定发行版,将 <Distribution Name> 替换为要安装的发行版的名称。例如:

wsl --install -d Ubuntu-24.04  --web-download

手动下载安装

下载发行版本

下载地址:https://aka.ms/wslubuntu2204
下载后改名为:Ubuntu.AppxBundle

安装到C盘

双击Ubuntu.AppxBundle即可安装

设置 Linux 用户名和密码

使用 WSL 安装 Linux 发行版的过程完成后,使用“开始”菜单打开该发行版(默认情况下为 Ubuntu)。 系统将要求你为 Linux 发行版创建“用户名”和“密码”。

  • 此用户名和密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
  • 请注意,输入密码时,屏幕上不会显示任何内容。 这称为盲人键入。 你不会看到你正在键入的内容,这是完全正常的。
  • 创建用户名和密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。
  • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
  • 在 WSL 上运行的每个 Linux 发行版都有其自己的 Linux 用户帐户和密码。 每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。

其他

列出所有已安装的WSL发行版

wsl --list --verbose

卸载的Ubuntu发行版

wsl --unregister <DistributionName>

替换为上一步中找到的Ubuntu发行版的名称

重启WSL

wsl --shutdown && wsl

更换源

sudo vi /etc/apt/sources.list

内容修改为中科大的:

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

然后更新镜像列表:

sudo apt-get update
sudo apt-get upgrade

更换源(Ubuntu 24.04版本)

24.04 版本开始 Ubuntu 系统源文件改用 /etc/apt/sources.list.d/ubuntu.sources

# 备份源文件
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
# 编辑源文件
sudo vim /etc/apt/sources.list.d/ubuntu.sources

源配置可以注释掉,更改为下面其中一个源:

# 更改为 阿里源
Types: deb deb-src
URIs: https://mirrors.aliyun.com/ubuntu/
Suites: noble noble-security noble-updates noble-proposed noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg


# 更改为 清华源
Types: deb deb-src
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
Suites: noble noble-security noble-updates noble-proposed noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

设置代理

vim ~/.bashrc

在最后添加以下两行:

export http_proxy="172.26.16.1:7890"
export https_proxy="172.26.16.1:7890"

保存后执行:

source ~/.bashrc

其中172.26.16.1是windows主机的ip,通过ipconfig可以查到,7890是代理的端口,需要根据你的实际情况更改。

systemd服务开启

开启时执行systemctl命令会遇到

System has not been booted with systemd as init System (PID 1). Can't operate.

在/etc/wsl.conf添加以下配置

[boot]
systemd=true

重启WSL,使用ps --no-headers -o comm 1返回systemd,说明已启用成功,如果返回init说明未启用。使用systemctl list-unit-files --type=service就可以查看服务了。

查询wsl的IP地址

wsl hostname -I

设置root密码

WSL首次创建实例后,先设置root密码

sudo passwd root

设置默认登录用户为root

修改配置文件:

sudo vim /etc/wsl.conf

添加如下内容:

[user]
default=root

重启实例

wsl --shutdown

备份与还原

备份

确定发行版

wsl -l -v

导出备份

wsl --export (发行版) (保存路径以及 文件名称.tar)

例如,我在当前目录,将 发行版为 Ubuntu 的 wsl2备份文件 保存为 wsl2.tar, 可以这样写

wsl --export Ubuntu wsl2.tar

或者,我想把 发行版为 Ubuntu 的 wsl2备份文件 保存在 d盘指定文件夹 内

wsl --export Ubuntu d:\save\linux\wsl2.tar

还原

wsl --import 命令导出所选发行版的备份。

wsl --import (发行版) (安装位置) (文件路径以及文件名称)

例如,我想在我的 C盘 中导入之前保存的备份文件

wsl --import Ubuntu c:\wsl2 d:\save\linux\wsl2.tar

安装多个版本ubuntu

已有ubuntu20.04,现在再安装一个ubuntu24.04

微软提供了一个手动下载WSL发行版的网址:https://learn.microsoft.com/zh-cn/windows/wsl/install-manual

下载后可得到一个后缀名为.AppxBundle的文件,将后缀改成.zip,并解压:

Ubuntu_2404.0.5.0_x64.appx文件改名为Ubuntu_2404.0.5.0_x64.zip,将该文件拷贝你想安装的位置,解压该文件:

解压后文件夹得到一个.exe文件,双击运行;
需要注意的是:安装目录的磁盘不能开压缩内容以便节省磁盘空间选项,否则会报错
可以右键文件夹–>属性–>常规–>高级找到并关闭这个选项

双击 ubuntu2404.exe,等待一段时间后安装完成,自行定义用户名及密码

Could not write value to key \SOFTWARE\Classes\Drive\shell\WSL

似乎是因为WSL在修改注册表的时候遇到了一些困难

重命名报错的注册表字段,打开wsl就正常了

old:

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\WSL
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\WSL
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL

new:

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\WSL_bak
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\WSL_bak
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL_bak

开启大小写敏感

管理员权限打开windows powershell,执行如下命令:

fsutil file setCaseSensitiveInfo E:/www/wwwroot/ enable

说明:E:/www/wwwroot/为需要开启的大小写敏感的文件夹路径,开启后该文件夹及其子文件夹下所有文件都将开启大小写敏感。

关闭大小写敏感

fsutil file setCaseSensitiveInfo E:/www/wwwroot/ disable

查询区分大小写状态

fsutil file queryCaseSensitiveInfo E:/www/wwwroot

安装docker

添加仓库

更新apt包管理器索引

sudo apt update

安装一些需要的工具

sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加Docker官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

我这里连不上docker官网的网络,我换成了阿里云的镜像地址:

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

添加Docker stable稳定版仓库(Intel、Amd)

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

我这里连不上docker官网的网络,我换成了阿里云的镜像地址:

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

安装 Docker

更新apt索引

sudo apt update

安装最新版

sudo apt install docker-ce docker-ce-cli containerd.io

安装Docker-compose

sudo apt install docker-compose

添加用户组

安装好docker后,需要使用管理员权限进行操作,如:sudo docker。为了更方便的使用docker cli,我们可以通过用户组的方式进行解决。

sudo usermod -aG docker ${USER}

设置后,执行docker ps试试,如果提示以下错误:

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock...

则重新登录一下:

su - ${USER}

系统将提示您输入用户的密码以继续。通过键入以下内容,确认您的用户现在已添加到 docker 组:

id -nG

docker国内镜像加速

参考:http://www.884358.com/docker-cmds/#guo_nei_jia_su

跨文件系统的文件存储和性能

建议不要跨操作系统使用文件,除非有这么做的特定原因。 若想获得最快的性能速度,请将文件存储在WSL文件系统中,前提是在 Linux 命令行(Ubuntu、OpenSUSE 等)中工作。 如果使用 Windows 命令行(PowerShell、命令提示符)工作,请将文件存储在 Windows 文件系统中。

例如,在存储 WSL 项目文件时:

使用 Linux 文件系统根目录:/home/<user name>/Project
而不使用 Windows 文件系统根目录:/mnt/c/Users/<user name>/Project$C:\Users\<user name>\Project
在 WSL 命令行的文件路径中看到 /mnt/ 时,表示你正在使用已装载的驱动器。 因此,Windows 文件系统 C:/ 驱动器 (C:\Users\<user name>\Project) 在 WSL 命令行中装载时将如下所示:/mnt/c/Users/<user name>/Project$。 可以将项目文件存储在装载的驱动器上,但如果将其直接存储在 \\wsl$ 驱动器上,性能速度会提高。

https://learn.microsoft.com/zh-cn/windows/wsl/filesystems#file-storage-and-performance-across-file-systems

参考:
https://learn.microsoft.com/zh-cn/windows/wsl/install
https://blog.csdn.net/u011119817/article/details/130745551

发表评论

邮箱地址不会被公开。 必填项已用*标注