WSL简介
什么是 WSL ?
在计算机上使用 Linux 系统通常有两种方式:使用虚拟机或安装 Linux 系统。使用虚拟机时开销较大,直接使用 Linux 系统虽然可以带来流畅体验,但与 Windows 之间来回切换比较麻烦。为此,微软开发了适用于 Linux 的 Windows 子系统,简称 WSL。
WSL 可以让开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 系统。 通过WSL开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的开销。
WSL 1 与 WSL 2
WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。
从上表中可以看出,WSL 2 架构在几个方面优于 WSL 1,但跨 OS 文件系统的性能除外,对于这种情况,可通过将项目文件存储在与处理项目时运行的工具相同的操作系统上进行处理。
WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。 通过按 Windows 徽标键 + R,检查你的 Windows 版本,然后键入winver,选择“确定”。
安装 WSL
如果运行 Windows 10 版本 及更高版本(内部版本 19041 及更高版本)或 Windows 11 ,则可使用命令wsl --install安装运行 WSL 所需的一切内容,具体步骤参考安装 WSL | Microsoft Learn。此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能,默认安装在C盘用户的Appdata目录中。下面介绍手动安装 WSL 以及 Linux 发行版的步骤。
开启 WSL1
需要先启用 “适用于 Linux 的 Windows 子系统“ 可选功能,才能在 Windows 上安装 Linux 分发版。在设置 -> 更新与安全->开发者选项中开启开发人员模式,然后在程序和功能 -> 启用或关闭 Windows 功能中勾选适用于 Linux 的 Windows 子系统,重启计算机。
命令行方式:以管理员身份打开终端 PowerShell 然后输入以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
升级到 WSL2
若要更新到 WSL 2,需要运行 Windows 10:
对于 x64 系统:版本 1903 或更高版本,内部版本为 18362 或更高版本。对于 ARM64 系统:版本 或更高版本,内部版本为 19041 或更高版本。
或 Windows 11。
安装 WSL 2 之前,必须启用 ”虚拟机平台”可选功能。在程序和功能 -> 启用或关闭 Windows 功能中勾选虚拟机平台可选功能或者以管理员身份打开终端 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启计算机,以完成 WSL 安装并更新到 WSL 2。
安装 Linux 内核更新包
1.下载最新包:适用于 x64 计算机的 WSL2 Linux 内核更新包
2.运行上一步中下载的更新包。(双击运行 - 系统将提示你提供提升的权限,选择“是”)
设置 WSL 默认版本
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
安装 Linux 发行版
安装方式
1.通过Microsoft Store或者使用命令wsl --install自动安装。默认安装的 Linux 分发版是Ubuntu ,可使用命令wsl --install -d <Distribution Name>来指定安装的发行版,将<Distribution Name>替换为要安装的发行版的名称。但这种方式仅适用于Microsoft Store 支持的版本,使用命令wsl --list --online查看可通过在线商店下载的可用 Linux 发行版列表。
2.导入要与 WSL 一起使用的任何 Linux 发行版 | Microsoft Learn
3.使用LxRunOffline 插件能够安装任意发行版系统到任意目录,且具备转移已安装WSL目录、备份等功能,是一个极好的 WSL 管理软件,下面主要介绍使用LxRunOffline 安装发行版。
安装 LxRunOffline
GitHub 下载最新版:/DDoSolitary/LxRunOffline/releases下载并解压缩之后直接拷贝到C:\Windows\System32或者 添加插件目录到环境变量 Path。如果需要通过右键菜单功能执行某些功能操作,则需要以管理员权限打开终端,执行regsvr32LxRunOfflineShellExt.dll完成功能注册。最后打开终端输入命令lxrunoffline验证是否安装成功。
下载发行版镜像
Microsoft WSL 离线包:Manually download Windows Subsystem for Linux (WSL) DistrosLxRunOffline WiKi 镜像:DDoSolitary/LxRunOffline Wiki · GitHub从其它渠道下载的发行版镜像包如果是从微软官方下载的 WSL 离线包,解压后找到install.tar.gz就是后续使用的安装文件。
开启目录大小写敏感
Windows 文件系统默认不区分大小写,而Linux是区分的。这就导致在安装、运行部分软件时会报错,我们新建一个用于存放 WSL 的安装目录,打开终端并切换到相应目录,运行以下命令开启当前目录大小写敏感:
# .\ 表示当前目录,此处参数可自定义fsutil.exe file setCaseSensitiveInfo .\ enable
# 查看某个目录是否大小写敏感fsutil.exe file queryCaseSensitiveInfo <path># 禁用大小写敏感fsutil.exe file setCaseSensitiveInfo <path> disable
安装发行版
输入以下命令进行安装:
# -s 参数表示在桌面创建WSL快捷图标lxrunoffline i -s -n <WSL名称> -d <安装路径> -f <安装包路径>.tar.gz
例如:
LxRunOffline i -n centos -d D:\linux\centos7 -f D:\downloads\centos-7-x86_64-docker.tar.xz
使用 WSL
本文所有示例将以 Ubuntu2204 发行版为例,WSL 基本使用命令可参考 Microsoft 官方文档:
WSL 的基本命令 | Microsoft Learn/zh-cn/windows/wsl/basic-commands
运行 WSL
运行默认 Linux 发行版
# 方式1wsl# 方式2bash
运行指定 Linux 发行版
# wsl命令wsl -d <WSL名称># lxrunoffline 命令lxrunoffline r -n <WSL名称>
设置默认用户
使用 LxRunOffline 安装的 WSL 默认是以 root 用户登录,如果你需要默认以普通用户登录则需要进行以下操作。首先运行 WSL 并输入以下命令创建用户:
useradd -m -s /bin/bash <用户名>
然后对该用户设置密码,输入命令后会提示输入两次密码
passwd <用户名>
授予该用户 sudo 权限
usermod -aG sudo <用户名>
查看用户 UID ,一般是 1000
id -u <用户名>
按 Ctrl+D 退出 WSL ,在 PowerShell 中输入以下命令设置默认用户:
lxrunoffline su -n <WSL名称> -v 1000(UID)
修改WSL 名称或目录后就无法通过 官方命令设置默认用户,同样可以通过以上方式进行设置。
设置默认 WSL
# 命令1wsl --set-default <WSL名称># 命令2lxrunoffline sd -n <WSL名称>
修改 WSL 名称
# 查看WSL名称wsl -l# 查看WSL安装目录lxrunoffline di -n <WSL名称># 导出指定WSL配置文件到目标路径lxrunoffline ec -n <WSL名称> -f <配置文件路径>.xml# 取消注册lxrunoffline ur -n <WSL名称># 使用新名称注册lxrunoffline rg -n <WSL名称> -d <WSL路径> -c <配置文件路径>.xml
列出已安装发行版
查看所有已安装的 Linux 发行版列表,其中包括状态(正在运行或已停止)和运行发行版的 WSL 版本(WSL1 或 WSL2)。
wsl -l -v
设置指定WSL 版本
wsl --set-default-version <distribution name> <Version>
若要指定运行 Linux 发行版的 WSL 版本(1 或 2),请将<distribution name>替换为发行版的名称,并将<Version>替换为 1 或 2 。
创建快捷方式
lxrunoffline s -n <WSL名称> -f <快捷方式路径>.lnk
关闭 WSL
1.关闭当前正在运行的发行版:在终端中使用快捷键 CTRL+ D
注意:该方式并不会立即终止 WSL 的运行,会有十几秒的延迟。
2.终止指定的发行版或阻止其运行
wsl -t <WSL名称>
3.立即终止所有正在运行的发行版和 WSL2 轻量级实用工具虚拟机
wsl --shutdown
在需要重启 WSL 2 虚拟机环境的情形下,例如更改内存使用限制或更改.wslconfig 文件,可能必须使用此命令。
在 WSL 中访问 Windows 文件
WSL 的优势之一是可以通过 Windows 和 Linux 应用或工具访问文件。WSL 将计算机的固定驱动器装载到 Linux 分发版中的/mnt/<drive>文件夹下。 例如,你的 C: 驱动器装载在/mnt/c/。
例如,使用装载的驱动器,可以使用 Visual Studio 或 VS Code 编辑C:\dev\myproj\中的代码,并通过/mnt/c/dev/myproj访问相同的文件,在 Linux 中测试该代码。
使用 WSL 的主要限制之一是不支持使用 Windows 应用或工具直接访问/更改 Linux 发行版文件系统中的文件。Windows 和 Linux 中文件元数据的表示方式是不同的。因此,通过 Windows 应用、工具、脚本、终端来访问、创建、修改 Windows 目录中的 Linux 子系统的文件时,会造成数据污染或损坏 Linux 环境,导致需要卸载和重新安装 Linux 子系统。
正确方法:将工作文件存放在 Windows 文件系统中,这样不仅可以在 Windows 中直接访问,还能在 Linux 中通过/mnt/<drive>/<path>进行访问,避免在两个系统中来回拷贝文件。
更换软件源
使用 Linux 子系统时,为了提高软件的安装速度,需要将软件源换成国内的镜像源。
1.备份原来的数据源配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak
2.修改数据源配置文件:直接使用国内源覆盖文件内容
sudo vi /etc/apt/sources.list
这里使用Ubuntu 22.04 的中科大源,名称为jammy,其他版本则替换为对应的版本名称即可。
# 默认注释了源码仓库,如有需要可自行取消注释deb https://mirrors./ubuntu/ jammy main restricted universe multiverse# deb-src https://mirrors./ubuntu/ jammy main restricted universe multiversedeb https://mirrors./ubuntu/ jammy-updates main restricted universe multiverse# deb-src https://mirrors./ubuntu/ jammy-updates main restricted universe multiversedeb https://mirrors./ubuntu/ jammy-backports main restricted universe multiverse# deb-src https://mirrors./ubuntu/ jammy-backports main restricted universe multiversedeb https://mirrors./ubuntu/ jammy-security main restricted universe multiverse# deb-src https://mirrors./ubuntu/ jammy-security main restricted universe multiversedeb https://mirrors./ubuntu/ jammy-proposed main restricted universe multiverse# deb-src https://mirrors./ubuntu/ jammy-proposed main restricted universe multiverse
其它软件源请参考:Ubuntu 22.04换国内源 清华源 阿里源 中科大源 163源_CSDN博客/xiangxianghehe/article/details/122856771
3.更新升级软件 (可选)
sudo apt-get updatesudo apt-get upgrade
安装 systemd 脚本[可选]
目前 WSL 不支持systemd(Linux 服务管理系统),可以安装ubuntu-wsl2-systemd-script脚本来使用相关命令。注:安装该脚本需要将 WSL 版本切换为 WSL2 ,否则使用时可能会报错。
# 安装gitsudo apt install git
# 运行脚本和命令git clone /DamionGans/ubuntu-wsl2-systemd-script.gitcd ubuntu-wsl2-systemd-script/bash ubuntu-wsl2-systemd-script.sh
# 重新启动 WSL 并尝试运行 systemctlsystemctl
安装图形界面
安装桌面环境xfce4
sudo apt-get install xfce4 xfce4-goodies
注:display manager 选择gdm3或lightdm均可。
安装远程桌面服务xrdp
sudo apt-get install xrdp
修改配置文件xrdp.ini
# 复制一份备用sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
# 配置端口 3389 改为 3390,避免和windows的端口冲突sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini# max_bpp=32修改为 128(最大位图深度)sudo sed -i 's/max_bpp=32/#max_bbp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini# #xserverbpp=24修改为 128,取消注释 #sudo sed -i 's/xservervpp=24/#xservervpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
新增配置文件.xsession
# 告诉系统: 开启桌面环境的时候用xfce4-sessionsudo echo xfce4-session > ~/.xsession
配置sesman.ini
sudo vim /etc/xrdp/sesman.ini
将KillDisconnected的值修改为true保存退出。
修改配置startwm.sh
sudo vim /etc/xrdp/startwm.sh
注释掉末尾亮行,并添加一行startxfce4如图所示:
启用 xrdp 服务
sudo /etc/init.d/xrdp start
WSL 的图形桌面需借助 Windows 远程桌面进行显示,但必须先开启 xrdp 服务才能使用远程桌面连接。这样每次使用 WSL 桌面都需要手动开启 xrdp,可将xrdp 服务设置为开机自启。
WSL(ubuntu2204)xfce4语言支持报错及配置WSL服务自启_itboone的博客/w47_csdn/article/details/129101896?spm=1001..3001.5501
远程桌面链接
按下Windows+R键,输入mstsc打开远程桌面连接。
IP为本机即 localhost,端口为配置的3390,IP也可以使用ifconfig命令查到的eth0inet 地址。
连接后进入登录页面,用户名和密码填写 WSL 的用户名和密码。注:不要使用root用户登录。
安装 chrome 浏览器
1.为Google Chrome 创建源列表文件
sudo vim /etc/apt/sources.list.d/google-chrome.list
2.在源列表文件中添加以下内容
deb [arch=amd64] /linux/chrome/deb/ stable main
3.下载Google的签名密钥
wget /linux/linux_signing_key.pub
4.将密钥添加到密钥环以便包管理器可以验证包的完整性
sudo apt-key add linux_signing_key.pub
5.更新包列表并安装稳定版 Chrome
sudo apt updatesudo apt install google-chrome-stable
6.从命令行启动 Chrome 浏览器
google-chrome-stable
安装中文环境及中文输入法
WSL(ubuntu2204)xfce4安装中文环境和fcitx5框架及中文输入法_itboone的博客/w47_csdn/article/details/129107128?spm=1001..3001.5501
相关问题
一劳永逸,wsl2出现“参考的对象类型不支持尝试的操作”的解决办法_桑榆肖物的博客/marin1993/article/details/119841299
参考资料
适用于 Linux 的 Windows 子系统文档 | Microsoft Learn/zh-cn/windows/wsl/
LxRunOffline使用手册 | 0opsdc ()/post/lxrunoffline/
使用 LxRunOffline 实现 WSL 自定义安装_farer_yyh的博客/farer_yyh/article/details/113785474
WSL GUI图形界面(xfce4)的安装 - 简书 ()/p/af94731626e3
WSL(Ubuntu20.04)与其图形界面安装配置_sandonz的博客/sandonz/article/details/120854876
Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )/FSKEps/article/details/118493578