目录

前言

一、Linux虚拟运行环境对比

二、安装 WSL

2.1 安装 WSL1

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

(2)重启电脑

(3)安装 Linux 发行版

(4)启动 Linux 子系统

2.2 升级到 WSL2

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

(2)重启电脑

(3)下载 Linux 内核更新包

(4)设置 WSL 版本

三、使用 Linux系统

3.1 启动和退出 Linux 子系统

3.2 换源

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

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

(3)更新源,升级软件

四、GNOME桌面版安装

4.1 将系统更新到最新。

4.2 安装多线程下载工具 Axel

4.3 安装 apt-fast

4.4 配置 apt-fast

4.5 安装 Gnome-Session

4.6 安装 VcXsrv

4.7 启动桌面版 Ubuntu

参考博客



前言

虚拟环境为 Windows 用户提供了一个轻松接触和熟悉 Linux 的机会。无需在硬件上做任何更改,即可体验 Linux 的命令行界面、文件系统等特性。这对于想要学习 Linux、尝试 Linux 应用程序或者将来转向 Linux 开发的人来说是一个极好的入门方式。在 Windows 系统上安装 Linux 虚拟环境有很多优势:

  • 兼容性和便利性

        通过虚拟运行环境,您可以在Windows系统上轻松运行Linux软件和工具,而无需分区或双重引导系统。这使得在不同操作系统之间切换变得更加方便。

  • 隔离环境

        与直接在Windows上安装类Unix工具相比,Linux虚拟机提供了一个独立和隔离的环境。 17您可以在这个环境中自由地安装、配置和测试软件,而不用担心会影响到主机系统。这对于开发、测试以及运行可能与Windows环境冲突的应用程序非常有用。

  • 接近生产环境

        对于开发人员来说,在Windows上安装Linux虚拟运行环境可以轻松地进行Linux软件的开发和测试。您可以在Windows系统上运行开发环境,同时使用Linux环境进行测试,这有助于确保软件在不同平台上的兼容性。

  • 资源分配灵活

        使用虚拟化技术,您可以根据需求动态分配硬件资源(CPU、内存、存储等)给 Linux 虚拟机。随时可以增加或减少资源,为虚拟机提供所需的计算能力。

  • 快速部署和复制

        创建和部署新的 Linux 虚拟机十分简单快速。您还可以制作虚拟机的快照,随时在需要时回滚到之前的状态。复制虚拟机也很方便,可以快速复制出多个相同配置的实例。

一、Linux虚拟运行环境对比

WSL(Windows Subsystem for Linux)是微软为Windows 10引入的功能,允许在Windows系统上运行本机Linux二进制文件,无需虚拟化。WSL提供了原生的Linux系统调用兼容性层,可在Windows上运行大多数Linux程序。然而,WSL1仍然有一些性能限制,并且不支持所有的Linux内核功能。

WSL2是WSL的升级版本,引入了全新的架构,它在Hyper-V虚拟机中运行真正的Linux内核。WSL2提供了更好的性能和更好的兼容性,因为它与真实的Linux内核更接近,同时还支持更多的Linux系统调用。WSL2相对于WSL1来说更快速、更稳定,并且支持更多的Linux应用程序。

VMware虚拟机是一种基于软件的虚拟化技术,允许在主机操作系统上运行多个虚拟的操作系统。与WSL不同,VMware虚拟机提供了完整的虚拟化环境,可以运行任何操作系统,包括各种版本的Linux。它提供了更高的隔离性和灵活性,但也需要更多的系统资源。

下面是它们之间的一些比较:

  1. 性能:WSL2通常比WSL1具有更好的性能,因为它运行在虚拟机中,并且与真实的Linux内核更接近。相比之下,VMware虚拟机的性能可能会略有降低,因为它提供了完整的虚拟化环境。

  2. 兼容性:WSL2的兼容性通常比WSL1更好,因为它与真实的Linux内核更接近,并且支持更多的Linux系统调用。但VMware虚拟机可以运行几乎任何操作系统,因此在兼容性方面更为灵活。

  3. 资源消耗:WSL1消耗的资源相对较少,因为它不涉及虚拟机。WSL2和VMware虚拟机都需要更多的系统资源,因为它们都在虚拟化环境中运行真实的操作系统内核。

  4. 部署和管理:WSL和WSL2都是通过Windows应用商店轻松安装和管理的,而VMware虚拟机需要单独安装和配置。

综上所述,选择合适的虚拟运行环境取决于您的具体需求。如果您需要轻量级的Linux环境,并且主要关注性能和兼容性,那么WSL2可能是一个不错的选择。但如果您需要更高的隔离性、更广泛的兼容性,或者希望在Windows之外运行其他操作系统,那么VMware虚拟机可能更适合您。

本人主要考虑C++高性能算法的需求,选择采用 Win10 + WSL2 + Ubuntu 20.04 配置Linux虚拟运行环境。

二、安装 WSL

2.1 安装 WSL1

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

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

以管理员身份打开 PowerShell 右击 “开始” 键选择 Windows PowerShell (管理员)(A),并运行:

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

执行效果如下:

(2)重启电脑

(3)安装 Linux 发行版

在 Microsoft Store 中下载并安装需要的 Linux 发行版,选择 Ubuntu 20.04.6 LTS。

(4)启动 Linux 子系统

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

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

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

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

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

Microsoft Windows [版本 10.0.19045.3930]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Dell>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1

2.2 升级到 WSL2

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

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

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

(2)重启电脑

(3)下载 Linux 内核更新包

下载最新包:WSL Linux 内核更新包 x64

然后双击运行,安装

(4)设置 WSL 版本

windows下以管理员身份打开PowerShell。

设置 Ubuntu-20.04 为 WSL 2:

wsl.exe --set-version Ubuntu-20.04 2

如果要设置为WSL 1,执行如下命令:

wsl.exe --set-version Ubuntu-20.04 1

可以打开 PowerShell 命令行并输入以下命令检查分配给每个已安装的 Linux 分发版的 WSL 版本:wsl -l -v

Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

PS C:\Windows\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1
PS C:\Windows\system32> wsl.exe --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。
PS C:\Windows\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

三、使用 Linux系统

3.1 启动和退出 Linux 子系统

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

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

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

常用的 wsl 命令:

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

3.2 换源

使用 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 multiverse

deb 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 multiverse

deb 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 multiverse

deb 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

四、GNOME桌面版安装

WSL 工具的目的是使用户能够视需要在 Windows 上运行 Bash 和核心 Linux 命令行工具。WSL 尚不支持 GUI 桌面或应用程序 (例如 Gnome、KDE 等) 。对于 Linux 技术使用得还不太熟练的可以自行安装图形界面,以方便使用。

4.1 将系统更新到最新

在继续安装之前,请确保拥有最新的包列表,并将已经安装的包升级到最新版本。

sudo apt update && sudo apt upgrade -y

4.2 安装多线程下载工具 Axel

先安装一款类似迅雷的下载工具软件,因为我们会下载一些大的软件包,即使网络带宽很好,这些下载也需要一些时间。我们可以通过同时并行下载多个包来加快下载速度。

sudo apt install axel

4.3 安装 apt-fast

apt-fast 是一款替代 apt-get 提升下载速度的软件,通过安装这款软件来增加线程使下载软件速度加快。在下载软件包时,会大大缩短apt下载时间。使用过程与apt(apt-get)一样,只需要将apt(apt-get)改成apt-fast即可。

将PPA添加到资源列表:

sudo add-apt-repository ppa:apt-fast/stable

安装apt-fast:

sudo apt -y install apt-fast

安装过程中会有一些配置要完成。

 询问用哪个包管理器替换 apt-fast,Ubuntu 20.04 使用 apt:

设置最大连接数,使用默认值 5。你也可以自己在 ${_MAXNUM} 变量中设置允许的连接数。

最后,选择Yes。

4.4 配置 apt-fast

打开 apt-fast.conf 文件

sudo nano /etc/apt-fast.conf

向下滚动,删除第一个镜像数组的注释,如下图所示。按 ctrl+x 退出,按 Y 键然后回车 enter 选择保存。完成 apt-fast 的配置。

4.5 安装 Gnome-Session

使用 apt-fast 下载安装 gnome-session 桌面环境。

sudo apt-fast install ubuntu-desktop gnome

打开 .bashrc 文件

nano ~/.bashrc

将这两行粘贴到.bashrc文件末尾:

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
export LIBGL_ALWAYS_INDIRECT=1

执行以下脚本:

git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
tanghao@DESKTOP-KL9JBME:~$ git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
Cloning into 'ubuntu-wsl2-systemd-script'...
remote: Enumerating objects: 121, done.
remote: Counting objects: 100% (39/39), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 121 (delta 33), reused 29 (delta 28), pack-reused 82
Receiving objects: 100% (121/121), 33.51 KiB | 181.00 KiB/s, done.
Resolving deltas: 100% (63/63), done.
tanghao@DESKTOP-KL9JBME:~$ cd ubuntu-wsl2-systemd-script/
tanghao@DESKTOP-KL9JBME:~/ubuntu-wsl2-systemd-script$ bash ubuntu-wsl2-systemd-script.sh
Hit:1 https://mirrors.ustc.edu.cn/ubuntu focal InRelease
Hit:2 https://mirrors.ustc.edu.cn/ubuntu focal-security InRelease
Hit:3 https://mirrors.ustc.edu.cn/ubuntu focal-updates InRelease
Hit:4 https://mirrors.ustc.edu.cn/ubuntu focal-backports InRelease
Hit:5 http://ppa.launchpad.net/apt-fast/stable/ubuntu focal InRelease
Reading package lists... Done
Selecting previously unselected package daemonize.
(Reading database ... 125395 files and directories currently installed.)
Preparing to unpack .../daemonize_1.7.8-1_amd64.deb ...
Unpacking daemonize (1.7.8-1) ...
Setting up daemonize (1.7.8-1) ...
Processing triggers for man-db (2.9.1-1) ...
'\\wsl$\Ubuntu-20.04\home\tanghao\ubuntu-wsl2-systemd-script'
用作为当前目录的以上路径启动了 CMD.EXE。
UNC 路径不受支持。默认值设为 Windows 目录。

成功: 指定的值已得到保存。
'\\wsl$\Ubuntu-20.04\home\tanghao\ubuntu-wsl2-systemd-script'
用作为当前目录的以上路径启动了 CMD.EXE。
UNC 路径不受支持。默认值设为 Windows 目录。

成功: 指定的值已得到保存。

这个脚本执行成功后,需要重启ubuntu。在 Windows 终端中打开一个新的 PowerShell 窗口并键入:

wsl --shutdown

继续,关闭现有的 ubuntu 选项卡并打开一个新选项卡。

4.6 安装 VcXsrv

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

https://sourceforge.net/projects/vcxsrv/

打开下载安装好的了 VcXsrv。启动 X server (XLaunch) 并执行以下步骤:

选择One large window,在显示编号(display number)中输入 0。

继续使用默认选择。我们将手动启动客户机。

这一步很重要。确保选中“Disable Access Control(禁用访问控制)”选项,否则我们的 gnome-session 客户端将无法访问Server X。

并在最后一步单击完成。

4.7 启动桌面版 Ubuntu

完成上述步骤后,我们将看到一个黑色窗口,里面没有任何内容。现在将在这个窗口中启动我们的 gnome-session。

转到 Ubuntu 终端并输入,之后每次启动 GNOME 桌面都使用以下命令:

sudo gnome-session

大功告成!

参考博客

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

Windows中WSL2 配置运行GNOME桌面版 Ubuntu

Logo

更多推荐