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 版本 2004 及更高版本(内部版本 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 系统:版本 2004 或更高版本,内部版本为 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 下载最新版:https://github.com/DDoSolitary/LxRunOffline/releases 下载并解压缩之后直接拷贝到 C:\Windows\System32 或者 添加插件目录到环境变量 Path。如果需要通过右键菜单功能执行某些功能操作,则需要以管理员权限打开终端,执行 regsvr32 LxRunOfflineShellExt.dll 完成功能注册。最后打开终端输入命令 lxrunoffline 验证是否安装成功。

下载发行版镜像

  • Microsoft WSL 离线包:Manually download Windows Subsystem for Linux (WSL) Distros
  • LxRunOffline 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 Learnhttps://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

运行 WSL

运行默认 Linux 发行版

# 方式1
wsl
# 方式2
bash

运行指定 Linux 发行版

# wsl命令
wsl -d <WSL名称># lxrunoffline 命令
lxrunoffline r -n <WSL名称>

设置默认用户

使用 LxRunOf­fline 安装的 WSL 默认是以 root 用户登录,如果你需要默认以普通用户登录则需要进行以下操作。首先运行 WSL 并输入以下命令创建用户:

useradd -m -s /bin/bash <用户名>

然后对该用户设置密码,输入命令后会提示输入两次密码

passwd <用户名>

授予该用户 sudo 权限

usermod -aG sudo <用户名>

查看用户 UID ,一般是 1000

id -u <用户名>

按 Ctrl+D 退出 WSL ,在 Pow­er­Shell 中输入以下命令设置默认用户:

lxrunoffline su -n <WSL名称> -v 1000(UID)

修改 WSL 名称或目录后就无法通过 官方命令设置默认用户,同样可以通过以上方式进行设置。

设置默认 WSL

# 命令1
wsl --set-default <WSL名称>
# 命令2
lxrunoffline 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.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

其它软件源请参考: Ubuntu 22.04换国内源 清华源 阿里源 中科大源 163源_CSDN博客https://blog.csdn.net/xiangxianghehe/article/details/122856771

3. 更新升级软件 (可选)

sudo apt-get update
sudo apt-get upgrade

安装 systemd 脚本[可选]

目前 WSL 不支持 systemd(Linux 服务管理系统),可以安装 ubuntu-wsl2-systemd-script 脚本来使用相关命令。注:安装该脚本需要将 WSL 版本切换为 WSL2 ,否则使用时可能会报错。

# 安装git
sudo apt install git
# 运行脚本和命令
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
# 重新启动 WSL 并尝试运行 systemctl
systemctl

安装图形界面

安装桌面环境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-session
sudo 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的博客https://blog.csdn.net/w47_csdn/article/details/129101896?spm=1001.2014.3001.5501

远程桌面链接

按下 Windows+R 键,输入 mstsc 打开远程桌面连接。

IP为本机即 localhost,端口为配置的3390,IP 也可以使用 ifconfig 命令查到的 eth0 inet 地址。

连接后进入登录页面,用户名和密码填写 WSL 的用户名和密码。注:不要使用 root 用户登录。

安装 chrome 浏览器

1. 为Google Chrome 创建源列表文件

sudo vim /etc/apt/sources.list.d/google-chrome.list

2. 在源列表文件中添加以下内容

deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

3. 下载Google的签名密钥

wget https://dl.google.com/linux/linux_signing_key.pub

4. 将密钥添加到密钥环以便包管理器可以验证包的完整性

sudo apt-key add linux_signing_key.pub

5. 更新包列表并安装稳定版 Chrome

sudo apt update
sudo apt install google-chrome-stable

6. 从命令行启动 Chrome 浏览器

google-chrome-stable

安装中文环境及中文输入法

WSL(ubuntu2204)xfce4安装中文环境和fcitx5框架及中文输入法_itboone的博客https://blog.csdn.net/w47_csdn/article/details/129107128?spm=1001.2014.3001.5501

相关问题

一劳永逸,wsl2出现“参考的对象类型不支持尝试的操作”的解决办法_桑榆肖物的博客https://blog.csdn.net/marin1993/article/details/119841299

参考资料

适用于 Linux 的 Windows 子系统文档 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows/wsl/

LxRunOffline使用手册 | 0opsdc (oopsdc.com)https://oopsdc.com/post/lxrunoffline/

使用 LxRunOffline 实现 WSL 自定义安装_farer_yyh的博客https://blog.csdn.net/farer_yyh/article/details/113785474

WSL GUI图形界面(xfce4)的安装 - 简书 (jianshu.com)https://www.jianshu.com/p/af94731626e3

WSL(Ubuntu20.04)与其图形界面安装配置_sandonz的博客https://blog.csdn.net/sandonz/article/details/120854876

Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )https://blog.csdn.net/FSKEps/article/details/118493578

Win10安装Linux子系统WSL(ubuntu2204)及图形桌面xfce4相关推荐

  1. win10安装linux子系统CentOS

    win10安装linux子系统CentOS(windows subsystem linux)流程记录 参考文章 win10系统设置 子系统安装 安装方式的选择 流程 下载 安装 启用 wsl1 升级至 ...

  2. win10 下载 linux系统安装教程,Win10安装Linux子系统图文教程

    Windows10提供了ubantu Linux子系统,终于可以把卡卡的虚拟机扔在一边了,下面介绍一下win10安装linux子系统的过程. 1.打开Windows功能,在这里把勾打上 2.打开设置– ...

  3. Win10安装Linux子系统教程

    一.开启 Window10附加功能 (1)Hyper-V (2)适用于Linux的Windows子系统 (3)虚拟机平台 (4)打开windows设置,搜索开发者设置,启用开发人员模式. 二.安装 W ...

  4. windows11 安装 Linux子系统 WSL及ubuntu22.04

    我们需要在windows11中快速搭建一个Linux环境,那么最简单的方法就是安装WSL(Linux子系统) 由于本人使用的Windows11系统是家庭版,安装过程中也碰到了不少问题,并逐一记录解决, ...

  5. 轻度Linux患者福利,Win10安装Linux子系统教程,附 Docker 安装教程

    现在 win10 实在是太方便了,可以不用 cmd 或者 shell 了,以下我总结了怎么在win10下安装一个linux系统了. 一.开启 Window10附加功能 (1)Hyper-V (2)适用 ...

  6. win10安装linux子系统详细教程(非虚拟机方式)

    文章目录 1.前言 2.安装Windows Terminal 3.开启Windows子系统功能 4.安装Centos子系统 5.使用Centos子系统 1.前言   对于程序员来说,Linux技能基本 ...

  7. win10 安装 Linux子系统(WSL)

    序:前段时间字节不是发布了 modernJS 的开源项目吗?大概看了一部分的内容,这些的东西就不一一列出来了,本来想尝一口的,在环境准备的系统那里就先折了一下(目前支持 OS X,Linux,和 Wi ...

  8. win10子系统linux安装在哪里,win10的linux子系统安装及使用

    最近需要用到linux但是又不想装双系统,正好win10推出了linux子系统,省事了,自己也是煞费苦心才整明白 1.首先你要是很新的win10版本(1607及已上),这样才有下面的步骤 依次在 设置 ...

  9. win10 下载 linux系统安装教程,windows10电脑中如何安装linux子系统

    为了获得更好的体验,一些用户想要windows10正式版电脑中安装linux子系统.那么,这该如何操作呢?会不会非常复杂呢?答案是否定的.接下来,小编就给大家详细介绍win10安装linux子系统的具 ...

最新文章

  1. 创建属于自己的调色板
  2. SpringBoot入门:新一代Java模板引擎Thymeleaf(理论)
  3. Silverlight专题(10)- WatermarkedTextBox使用
  4. P2827-蚯蚓【队列】
  5. linux下安装配置apache+php,linux下安装apache与php;Apache+PHP+MySQL配置攻略
  6. 跳过DOSBox映射的方法
  7. fast.ai 深度学习笔记:第一部分第五课
  8. PYTORCH BN层
  9. excel删除重复数据保留一条_Excel一键删除重复数据,你居然还用逐条排查?
  10. JDBC连接池DBUtils
  11. SSM框架中出现的几种注解的理解
  12. 厦门大学847信号与系统考研参考书目
  13. 【文献研究】国际班轮航运的合作博弈:The coopetition game in international liner shipping
  14. 谷歌SEO优化排名做法详解,看这篇就都懂了
  15. git官网下载太慢解决方法
  16. Linux笔记------关闭系统漏洞补丁(spectre meltdown补丁)
  17. Android手机中的尺寸单位
  18. 一个23届蔡鸡渣硕找实习的经历(附部分记录了还想得起来的面经)
  19. tec控制pid程序_如何设计TEC 温度环路 PID 控制电路?这个方法告诉你
  20. 车载对讲机 计算机重启,对讲机常见问题解答

热门文章

  1. 外壳IK碰撞冲击测试
  2. live555作为RTSP流媒体服务器RTSPServer时解决对接海康NVR时G711音频不能正常播放的问题
  3. KEPServer4.28连接AB Micro820PLC
  4. 波数及波数向量(波矢量)
  5. 关于SPSS在某些电脑上无法安装的问题
  6. 【技术总结】大数据开发模块化知识体系、学习路线及对应的资料推荐
  7. python环境安装(window安装)及换成中文模式----梅花
  8. 码农不识贝叶斯,虽知数据也枉然
  9. Ubuntu MemoryAnalyzer 启动报错:The platform metadata area could not be written
  10. clojure_深入了解Clojure系列