Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )

  • 1. WSL 简介
    • 1.1 什么是 WSL ?
    • 1.2 WSL1 与 WSL2
  • 2. 安装 WSL
    • 2.1 安装 WSL1
      • (1)启用“适用于 Linux 的 Windows 子系统”可选功能
      • (2)重启电脑
      • (3)安装 Linux 发行版,如 Ubuntu
      • (4)启动 Linux 子系统
    • 2.2 升级到 WSL2
      • (1)开启“虚拟机平台”可选功能
      • (2)重启电脑
      • (3)下载 Linux 内核更新包
      • (4)设置 WSL 版本
  • 3. 使用 WSL
    • 3.1 启动和退出 Linux 子系统
    • 3.2 文件系统
      • 如何在 Linux 应用中使用 Windows 文件?
      • 不要使用 Windows 应用和工具更改 Linux 文件!
    • 3.3 换源
  • 4. 安装图形界面
    • 4.1 Xfce4 + VcXsrv
      • (1)安装 VcXsrv
      • (2)安装 Xfce4 桌面
      • (3)设置与启动桌面
    • 4.2 Gnome + VcXsrv
      • (1)安装 VcXsrv
      • (2)安装 Gnome 图形界面
      • (3)设置 systemd
      • (4)设置与启动桌面
  • 参考链接

前言:最近刚换一台新的电脑,在准备安装 Win10 / Linux 双系统时,了解到 Win10 推出了 WSL 功能,于是决定体验一下。

1. WSL 简介

1.1 什么是 WSL ?

要想使用 Linux 系统,以前通常有两种方式:(1)使用虚拟机,(2)直接使用 Linux 系统。使用虚拟机时开销较大;直接使用 Linux 系统虽然可以带来最流畅的体验,但是与 Windows 系统之间进行切换时比较麻烦,一次只能使用一个系统。

为此,微软开发了适用于 Linux 的 Windows 子系统,称为 WSL,可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。简单点来说,有了 WSL,就可以在 Windows 系统中像运行软件一样运行 Linux 系统。

1.2 WSL1 与 WSL2


将适用于 Linux 的 Windows 子系统从 WSL 1 升级到 WSL 2 的主要区别和优势是:

  • 提高文件系统性能,
  • 支持完全的系统调用兼容性。

WSL 2 使用最新、最强大的虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 但是,WSL 2 不是传统的 VM 体验。

2. 安装 WSL

2.1 安装 WSL1

(1)启用“适用于 Linux 的 Windows 子系统”可选功能

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。可以使用命令行的方式,也可以使用图形界面的方式。

图形界面方式

在【设置 -> 更新与安全->开发者选项】中开启【开发人员模式】

在【程序和功能 -> 启用或关闭 Windows 功能】中勾选【适用于 Linux 的 Windows 子系统】

命令行方式

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

(2)重启电脑

(3)安装 Linux 发行版,如 Ubuntu

在 Microsoft Store 中下载并安装需要的 Linux 发行版

(4)启动 Linux 子系统

至此,Linux 子系统就相当于 Windows 系统上安装的一个软件,可以在开始菜单子启动。

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码。

至此,已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

可打开 PowerShell 命令行并输入以下命令(仅在 Windows 内部版本 18362 或更高版本中可用),检查分配给每个已安装的 Linux 分发版的 WSL 版本:wsl -l -v

PS C:\Users\user-name> wsl --list --verboseNAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1

2.2 升级到 WSL2

(1)开启“虚拟机平台”可选功能

同样地,可以采用图形界面的操作方式,也可以采用命令行的方式。

图形界面方式
在之前的基础上,勾选【虚拟机平台】。

命令行方式

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

(2)重启电脑

(3)下载 Linux 内核更新包

下载最新包:适用于 x64 计算机的 WSL Linux 内核更新包

然后双击运行,安装

(4)设置 WSL 版本

PS C:\Users\user-name> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。

说明:

  • 若要将分发版设置为受某一 WSL 版本支持,请运行:
wsl --set-version <distribution name> <versionNumber>

请确保将 <distribution name> 替换为你的分发版的实际名称,并将 <versionNumber> 替换为数字“1”或“2”。 可以随时更改回 WSL 1,方法是运行与上面相同的命令,但将“2”替换为“1”。

  • 如果要使 WSL 2 成为你的默认体系结构,可以通过此命令执行该操作:
wsl --set-default-version 2

从 WSL 1 更新到 WSL 2 可能需要几分钟才能完成,具体取决于目标分发版的大小。如果--set-default-version 未列出,则表示你的 OS 不支持它,你需要更新到版本 1903(内部版本 18362)或更高版本。

3. 使用 WSL

3.1 启动和退出 Linux 子系统

进入 Linux 子系统有以下几种方式:
(1)和正常软件一样启动,如在开始菜单中点击其图标、双击桌面快捷方式
(2)在 Windows 中打开一个终端,如 PowerShell,输入命令wsl
(3)在终端中输入命令Linux 发行版名称.exe,如ubuntu20.04.exe

退出 Linux 子系统的方式:
(1)直接关闭终端
(2)在终端中输入命令exit,此时退出了 WSL,然后输入命令 wsl -t Ubuntu-20.04,关闭 ubuntu 子系统。

  1. 使用 wsl命令进入 Linux 子系统时,进入的目录是当前打开终端的位置,使用 PowerShell 终端时,所在位置为/mnt/c/Users/windows-login-name。使用 ubuntu2004.exe命令进入 Linux 子系统时,进入的目录是所在位置为/home/linux-login-name

  2. 常用的 wsl 命令:

# 列出所有分发的名称、运行状态、对应的 WSL 版本
wsl -l -v
# 终止指定的 Linux 分发
wsl -t <distro>
# 注销分发
wsl --unregister <distro>
# 终止所有正在运行的分发和 WSL2 轻型工具虚拟机
wsl --shutdown

3.2 文件系统

如何在 Linux 应用中使用 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 文件!

C:\Users\windows-login-name\AppData\Local\Packages\目录下有一个以CanonicalGroupLimited开头的文件夹,Linux 子系统相关的文件都存储在该文件夹里面。需要特别注意的是:任何情况下都不要使用 Windows 应用和工具更改该目录里面的 Linux 文件!

正确的做法:
将工作文件存放在 Windows 文件系统中,这样不仅能够在 Windows 中直接进行访问,还能在 Linux 中通过 /mnt/<drive>/<path> (例如 /mnt/c/dev/project/...) 进行访问,从而避免了在 Windows 和 Linux 系统中来回拷贝文件。

总之,为了避免丢失文件或污染文件数据,需要遵循下面三条准则:

  • 如果想要使用 Windows 和 Linux 工具访问、创建、修改文件,请将文件存储在Windows 文件系统中。
  • 通过 Windows 应用、工具、脚本、终端来访问、创建、修改 Linux 子系统中的文件时,请使用 \\wsl$\<DistroName>\
  • 千万不要使用寻找 AppData目录中的文件的方式,通过 Windows 应用、工具、脚本、终端来访问、创建、修改 Linux 子系统中的文件。

计算机的存储设备上存储了与每个文件、目录相关的文件元数据(例如:权限、拥有者、时间戳等),Windows 和 Linux 中文件元数据的表示方式是不同的。因此,通过 Windows 应用、工具、脚本、终端来访问、创建、修改位于AppData目录中的 Linux 子系统中的文件时,会造成数据污染或损坏 Linux 环境,导致需要卸载和重新安装 Linux 子系统。

3.3 换源

使用 Linux 子系统时,为了提高软件的安装速度,需要将软件源换成国内的镜像源。

(1)备份原来的数据源配置文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

(2)修改数据源配置文件

sudo vi /etc/apt/sources.list

这里使用中科大的源 (此处是 20.04 版本的源,对应版本名称为focal,如果是其他版本则替换为对应的版本名即可)。

# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiversedeb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

i键进入编辑模式,修改后,按 ESC 键退出编辑模式,输入:wq保存并退出。

(3)更新源,升级软件(可选):

sudo apt-get update
sudo apt-get upgrade

4. 安装图形界面

WSL 工具的目的是使用户能够视需要在 Windows 上运行 Bash 和核心 Linux 命令行工具。WSL 尚不支持 GUI 桌面或应用程序 (例如 Gnome、KDE 等) 。

对于 Linux 技术使用得还不太熟练的可以自行安装图形界面,以方便使用。

安装图形界面有多种方案可供选择,下面介绍其中使用最多的两种。

取决于使用的是 WSL1 还是 WSL2、Ubuntu 18.04 及以下版本还是 Ubuntu 20.04 版本,图形界面的安装方法有所不同。

4.1 Xfce4 + VcXsrv

安装 xfce4 桌面,然后设置 xrdp 远程连接,再使用 VcXsrv 进行显示(也可以用 VNC 软件进行显示)。

(1)安装 VcXsrv

X-Windows 显示服务器程序有多种:VcXsrv Windows X Server、Xming、Cygwin X Server。这里选择 VcXsrv,免费开源,在 SourceForget 上评价不错,下载地址为 https://sourceforge.net/projects/vcxsrv/

下载后安装,打开XLaunch,选择:“one large window”,Display number 设置成0,

选择【start no client】

勾选 【Disable access control】

可以点击 【save configuration】,将配置保存为文件,下次直接打开配置文件就可以了。

点击完成后,将会弹出一个黑色窗口,开始监听 Linux 的显示服务请求。

(2)安装 Xfce4 桌面

Xfce 是一种轻量级的桌面,基于GTK2.0,和旧版 Gnome 界面类似,可以运行在很多 Linux 发行版上,包括 Ubuntu 。

sudo apt-get install xfce4

(3)设置与启动桌面

设置显示器的地址。

sudo vim ~/.bashrc
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
source ~/.bashrc

实际上,上面的做法等价于:
在 Windows 中打开 PowerShell,输入 ipconfig 命令,可以查看到 Windows 与 Ubuntu 虚拟机进行通信的网络地址。

然后,通过 export DISPLAY=192.168.104.97:0命令告诉桌面程序应该去哪里寻找在本地运行的 X 服务器。

然后启动桌面

startxfce4

此时,在 XLaunch 中就可以看到 Ubuntu 系统的 xfce4 桌面。

该方法适用于 WSL2 的各种 Ubuntu 版本。

4.2 Gnome + VcXsrv

给 WLS2 的 Ubuntu 20.04 系统安装 Gnome 桌面的麻烦之处在于:Ubuntu 20.04 默认安装的 gnome 版本是高于 3.34 的,gnome 从这一版本开始就完全依赖 systemd 了,而 WSL 2 默认不是以 systemd 作为初始化进程,因此无法直接运行 gnome 桌面。

(1)安装 VcXsrv

同 4.1 节。

(2)安装 Gnome 图形界面

安装 gnome 桌面:

sudo apt install ubuntu-desktop

(3)设置 systemd

WSL2 默认不是以 systemd作为初始化进程,所以无法使用systemctl,使用systemctl时会出现以下提示:

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

为了使 WSL2 支持 systemd ,有人写了一个脚本 ubuntu-wsl2-systemd-script 。从 github 上下载该脚本并运行,

git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh

然后重启 Ubuntu 系统。此时再次运行systemctl命令,发现能正常运行。

user-name:~$ systemctl UNIT                                                                         >sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fc785225\x2d9131\x2d>sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d>sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d>sys-devices-platform-serial8250-tty-ttyS0.device                             >sys-devices-platform-serial8250-tty-ttyS1.device                             >sys-devices-platform-serial8250-tty-ttyS2.device                             >sys-devices-platform-serial8250-tty-ttyS3.device                             >sys-devices-virtual-block-ram0.device                                        >sys-devices-virtual-block-ram1.device                                        >sys-devices-virtual-block-ram10.device                                       >sys-devices-virtual-block-ram11.device                                       >sys-devices-virtual-block-ram12.device                                       >sys-devices-virtual-block-ram13.device                                       >sys-devices-virtual-block-ram14.device                                       >sys-devices-virtual-block-ram15.device                                       >sys-devices-virtual-block-ram2.device                                        >sys-devices-virtual-block-ram3.device                                        >sys-devices-virtual-block-ram4.device                                        >sys-devices-virtual-block-ram5.device                                        >sys-devices-virtual-block-ram6.device                                        >sys-devices-virtual-block-ram7.device                                        >sys-devices-virtual-block-ram8.device                                        >
lines 1-23

Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。systemctl是 Systemd 的主命令,用于管理系统。

(4)设置与启动桌面

输入sudo vi ~/.bashrc,在文件末尾添加:

export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export XDG_SESSION_TYPE=x11

保存后退出,并使用source ~/.bashrc使修改生效。

然后启动桌面,

gnome-session

此时,在 XLaunch 中就可以看到 Ubuntu 系统的 gnome 桌面。

  1. Ubuntu 18.04 默认安装的 gnome 版本是 3.28.1,不依赖于systemd,因此不需要设置systemd就可以运行 gnome 桌面。
  2. 对于Ubuntu 20.04,也可以选择 Cinnamon 桌面,因为 Cinnamon 是基于 gnome 的老版本改的,不依赖于 systemd 。
sudo apt install cinnamon-desktop-environment lightdm
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
cinnamon-session &

参考链接

  1. Microsoft 官方文档
  2. Win10安装Ubuntu子系统及图形化界面详细教程
  3. wsl2(win10 Linux子系统)图形界面的安装,wsl同理
  4. win10创建Ubuntu16.04子系统,安装常用软件以及图形界面(包括win10远程桌面连接Ubuntu)
  5. WSL2 Ubuntu图形界面使用指南
  6. wsl2 ubuntu Gnome 桌面
  7. WSL2中的Ubuntu上运行GNOME的问题
  8. WSL启用systemd
  9. Systemd 入门教程:命令篇

Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + Gnome 桌面 )相关推荐

  1. 在win10系统安装linux系统,win10系统安装Linux子系统的操作方法

    很多小伙伴都遇到过对win10系统安装Linux子系统进行设置的困惑吧,一些朋友看过网上对win10系统安装Linux子系统设置的零散处理方法,并没有完完全全明白win10系统安装Linux子系统的操 ...

  2. Windows 10安装 WSL2 (Ubuntu 20.04)

    条件 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本. 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本. 低于 18 ...

  3. anydesk linux安装_在Ubuntu 20.04上安装AnyDesk

    在Ubuntu 20.04上安装AnyDesk 运行系统更新 首先,更新和升级系统软件包.apt updateapt upgrade 安装AnyDesk 有两种方法可以在Ubuntu 20 04上安装 ...

  4. ubuntu linux安装控制面板,在Ubuntu 20.04上安装Ajenti控制面板的方法

    本文介绍在Ubuntu 20.04服务器上安装Ajenti控制面板的方法,下面介绍的安装方法最大的好处是它完全自动化的. 一.更新Ubuntu 20.04系统 确保您正在全新安装Ubuntu 20.0 ...

  5. ubuntu linux theme,如何在Ubuntu 20.04中启用全局暗黑主题

    Ubuntu 20.04在设置实用程序中引入了新的Dark暗模式.但是,当您在Gnome Shell中将其打开时,它并不是完全暗黑. 系统任务栏菜单,顶部栏中的日历,通知弹出窗口和桌面上下文菜单不是暗 ...

  6. 在 Ubuntu 20.04 LTS 桌面版上安装 MS 字体

    在 Ubuntu 18.04 LTS 桌面版上安装 MS 字体 如下所示安装 MS TrueType 字体: $ sudo apt update $ sudo apt install ttf-msco ...

  7. Win10安装Linux子系统教程

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

  8. mac os 安装linux驱动,教程:Ubuntu 14.04安装Mac OS X主题

    安装MAC OS X 主题会帮助你的 Ubuntu 14.04 看起来更像MAC OS X.在这里我们介绍的Macbuntu安装包包含了GTK 主题,这些主题是专门为Ubuntu Unity定制的.图 ...

  9. windows 10远程连接ubuntu 18.04 Gnome桌面:NoMachine工具使用详解

    文章目录 Gnome桌面环境 NoMachine工具 实际操作 Ubuntu操作 Windows操作 远程连接设置 总结 做为系统管理员,远程连接到各种服务器算是常规操作.如果本地是windows环境 ...

最新文章

  1. 为清理助手制作便利工具的技术实现
  2. 新基建重点,5G时代基石,数据中心加速发展
  3. 分布式链路追踪框架的基本实现原理
  4. [Leedcode][JAVA][第72题][动态规划]
  5. pureMVC简单示例及其原理讲解四(Controller层)
  6. 使用Kubernetes容器服务在云上搭建AI推理环境
  7. VB6-改造ComUnit(免除用例名称注册)
  8. [dev][ipsec][esp] ipsec链路中断的感知问题
  9. python3.3 urllib.error.HTTPError: HTTP Error 403: Forbidden
  10. Android NDK开发之 NEON 矩阵转置,矩阵乘法实现
  11. ua获取手机型号_如何根据 UA 判断手机型号和厂家?
  12. 邮件服务器的渗透,渗透基础——从Exchange服务器上搜索和导出邮件
  13. 网页设计初学者可制作的简单网页——我的第二篇博客
  14. java 点名器_java随机点名器 课程设计.docx
  15. AFX_EXT_CLASS的使用
  16. 移动、电信、联通、QQ币、游戏点卡快速秒充体验
  17. 暴风雨中的幸福——记我敬爱的米老师
  18. 密集匹配实验数据共享
  19. listbox删除报错_listbox里面项的删除方法
  20. 马化腾的2万不好赚!绝悟AI稳如猛虎,人类王者被虐成狗

热门文章

  1. 新手快速提升战力攻略-《无间狱》
  2. 没有基础的人学java开发难吗?
  3. uni app 自定义 头部组件(2) 局部 右侧按钮
  4. vue 页面多个倒计时
  5. stem学科建设原则
  6. 攻克名企面试题,剑指心仪offer!——题目7:栈的压入、弹出序列
  7. 三端稳压器去耦电容导致的环路不稳定
  8. 打开word时424错误
  9. 为什么我辞去华尔街日报的工作加盟Oracle
  10. 【Android 实现VideoView开始和播放时缓冲监听动画(监听播放状态)】