作 者:道哥,10+年的嵌入式开发老兵。

公众号:【IOT物联网小镇】,专注于:C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式开发等领域。 公众号回复【书籍】,获取 Linux、嵌入式领域经典书籍。

转 载:欢迎转载文章,转载需注明出处。

在上一篇文章中,我们主要聊了一下:在 Windows 系统中,安装 WSL 子系统。

文章在此:WSL:在 Windows 系统中开发 Linux 程序的又一神器

但是 WSL 只是长得像 Linux 而已,虽然在这个子系统中,我们可以执行 Linux 程序,但是到了底层,WSL 调用的还是 win32 API

也就是说:WSL 只是一个适配层。

后来,微软终于放出了 WSL2 这个真正的 Linux 子系统,这是一个真正的 Linux 完整内核,与传统的虚拟机 VitualBoxVMWare 一样,但是它与宿主机的互操作性更好。

为了完整性,我们就继续把这个流程给走完。

在这个过程中遇到的问题、需要的安装软件等资源,已经上传到网盘,在文末有下载地址。

安装 WSL2 的前提条件

在开始之前,我们先来看一下目前电脑中的 WSL 的版本。

Windows 命令行窗口,输入指令: wsl --list --verbose(或者输入简化版本: wsl -l -v),得到结果:

可以看到我们上一篇文章中安装的 Ubuntu-18.04,而且 WSL 的版本是 1

如果要升级到 WSL2Windows 操作系统的内核版本必须满足一定的要求,如下:

我们就按照官方的要求,检查一下自己的电脑是否满足需求:选择 Windows 徽标键 Win + R,然后键入 winver,选择 “确定”。

看来我的系统能满足要求,那就继续下一个步骤!

如果你的内核版本不满足这个需求,可以搜索关键字 “WIN10 获取内部预览版本”,就可以找到解决方案。

安装 WSL2

继续以管理员身份启动 PowerShell,然后执行指令:

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

此时,又到了重启电脑的时候!

重启之后,继续在 PowserShell 中,把 Ubuntu-18.04 设置为 WSL2 版本。

输入的指令是:

wsl --set-version Ubuntu-18.04 2

这个步骤可能会遇到这样的问题:

解决方法:从微软的官网下载 WSL2 Linux 内核升级包,下载地址是:

WSL2 Linux 内核升级包

也可以从文末的网盘中下载

下载之后,一路 Next 安装即可。

此时,在 PowerShell 中重新执行 wsl --set-version Ubuntu-18.04 2 指令(需要等待一段时间,大概 1 分钟左右吧):

同时,把 WSL 的默认版本改为 2wsl --set-default version 2

此时,我们再执行指令 wsl -l -v 来查看一下,就变成 WSL2 版本了:

现在,重新启动一下 Ubuntu-18.04 系统,虽然还是黑乎乎的窗口,但是它可是一个完整、纯正的 Linux 操作系统!

安装桌面环境

这部分的操作,参考:https://autoize.com/xfce4-desktop-environment-and-x-server-for-ubuntu-on-wsl-2/。

关于 Linux 的桌面环境,它与 Windows 桌面环境的理念有一些不一样。

Linux 系统中,桌面环境是一个独立的应用程序,不属于操作系统的一部分。

换句换说,即使没有桌面环境,也可以很愉快的玩 Linux 系统,比如那些服务器之类的设备。

Linux 中的桌面由客户端和服务端组成,它们之间通过一个协议来通信,俗称:X11

服务端:负责图形的显示;

客户端:根据系统设置的 DISPLAY 环境变量,把显示图形的请求发送给服务端;

因此,为了让我们的 Ubuntu 显示图形界面,我们就需要安装一个服务端软件和客户端软件。

注意:这里的服务端软件是安装在 Windows 系统中的,客户端是安装在 Ubuntu-18.04 系统中的。

安装客户端

Ubuntu-18.04 的终端窗口中,执行如下指令安装客户端软件 xfce4

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install xfce4

配置 DISPLAY 环境变量

因为 Ubuntu 中的客户端 xfce4 需要把显示请求,通过网络发送给 Windows 上的服务端,因此需要知道 Windows 系统的 IP 地址,在 Windows 系统中的命令行窗口中查看:ipconfig

然后在 Ubuntu-18.04 中把这个 IP 地址,配置到家目录下的 .bashrc 文件中:

$ cd
$ vi .bashrc

在文件末尾添加:

export DISPLAY=192.168.192.1:0

保存、关闭文件之后,执行:source ~/.bashrc 更新即可。

安装服务端

图形界面有 VcXsrvXming 两款软件,我们选择前面的 VcXsrv

同样的,我已经把 vcxsrv-64.1.20.9.0.installer.exe 放在网盘里,下载后一路 Next 安装。

安装之后,启动 Windows 桌面上的 XLaunch 程序:

然后,按照参考文档中的配置,如下:

在最后一个步骤,可以把配置信息保存在桌面上。

启动客户端

Ubuntu-18.04 系统中的命令行窗口,执行指令:startxfce4

此刻,神器的事情就发生了:你的 Windows 系统中是不是就跳出了下面这个窗口:

可以打开桌面上 File System,是不是看到了很多熟悉的身影?

在打开 mnt 目录,是不是看到了 Windows 系统中的盘符?

但是,中文信息显示的都是乱码!那我们就来安装中文语言支持包。

中文支持

Ubuntu-18.04 系统命令行窗口,设置 locale:

此时,我们可以使用桌面环境中的终端窗口,如下图所示:

sudo vi /etc/locale.gen

把下图中的蓝色这一行复制,然后去掉前面的 #空格,然后保存、退出。

然后在终端中执行指令: sudo locale-gen

单机右上角的用户名,选择 【Log Out..】

此时,Ubuntu 虚拟机的 WSL 窗口中的 xfce4 客户端会退出,再次执行 startxfce4 启动客户端:

再次,在桌面中的终端窗口中,把 locale 改为中文:

sudo vi /etc/default/locale

LANG=C.UTF-8 改为 LANG=zh_CN.UTF-8

然后,把下面这个几个中文语言包给它安装进去:

sudo apt install language-pack-zh-hans
sudo apt install language-pack-gnome-zh-hans
sudo apt install language-pack-kde-zh-hans

此刻,你再看一下刚才的那些乱码,是不是已经正确显示中文了?

------ End ------

接下来,你还可以安装各种 IDE,探索它们是如何共享文件的...

文中需要安装的软件,已经上传到网盘中了。

请在公众号后台回复721(不是留言区啊),即可收到下载地址,谢谢!

推荐阅读

【1】C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻

【2】一步步分析-如何用C实现面向对象编程

【3】原来gdb的底层调试原理这么简单

【4】内联汇编很可怕吗?看完这篇文章,终结它!

其他系列专辑:精选文章C语言Linux操作系统应用程序设计物联网

星标公众号,能更快找到我!

WSL2:Windows 亲生的 Linux 子系统的更多相关文章

  1. Windows下的Linux子系统安装,WSL 2下配置docker

    Windows下的Linux子系统安装,WSL 2下配置docker 前提条件: 安装WSL 2需要Windows 10版本是Build 18917或更高,首先先确认系统版本已升级. 在“启用或关闭W ...

  2. Windows10上开启WSL2(Windows Subsystem for Linux 2)及Docker Desktop For Windows

    什么是WSL2 WSL2(Windows Subsystem for Linux 2)是适用于Linux的Windows子系统体系结构的一个新版本,它支持适用于Linux的Windows子系统在Win ...

  3. WSL(Windows上的Linux子系统)

    WSL(Windows上的Linux子系统) WSL,Windows Subsystem for Linux,就是之前的Bash on [Ubuntu on] Windows(嗯,微软改名部KPI++ ...

  4. Windows 10 下 Linux 子系统的安装和使用

    介绍 适用于 Windows 的 Linux 子系统(英语:Windows Subsystem for Linux,简称 WSL)是一个为在 Windows 10 和 Windows Server 2 ...

  5. 关于WSL(Windows上的Linux子系统)的介绍

    WSL,Windows Subsystem for Linux,就是之前的Bash on [Ubuntu on] Windows(嗯,微软改名部KPI++ 首先要说一句,其实Windows 10在一周 ...

  6. 关于WSL(Windows上的Linux子系统)的简单介绍及安装

    WSL,Windows Subsystem for Linux,就是之前的Bash on [Ubuntu on] Windows(嗯,微软改名部KPI++),在wsl环境下我们可以运行一些Linux程 ...

  7. windows 下使用Linux子系统

     在 Windows 上进行 web 开发,比较普遍的方案是使用 phpstudy 或者别的一些集成环境软件进行环境搭建,写好代码后将代码上传至版本管理工具 git/svn,再将代码同步到 Linux ...

  8. Windows中安装Linux子系统的详细步骤

    早就听说Windows中可以安装Linux子系统,体验了一下,感觉还是不错的,下面直接开始安装和配置步骤吧! 开启Windows中的配置 首先开启开发者模式 打开"所有设置"进入& ...

  9. Windows下的Linux子系统

    强调!!!必须是Windows专业版!!! 一.安装运行过程 第一步:打开开发人员模式 第二步:进入 '控制面板 '--'程序'--'启用的Windows功能'--勾选Linux子系统(根据提示进行重 ...

随机推荐

  1. 对抗性鲁棒性与模型压缩:ICCV2019论文解析

    对抗性鲁棒性与模型压缩:ICCV2019论文解析 Adversarial Robustness vs. Model Compression, or Both? 论文链接: http://openacc ...

  2. GPU上的图像和信号处理

    GPU上的图像和信号处理 NVIDIA Performance Primitives(NPP)库提供GPU加速的图像,视频和信号处理功能,其执行速度比仅CPU实施快30倍.拥有5000多个用于图像和信 ...

  3. MinkowskiEngine基准测试

    MinkowskiEngine基准测试 介绍卷积层和小型U网络的前馈和后馈通过时间.可以将具有相同张量步幅,步幅和内核偏移的内核映射重新用于其他层,可以在大型nueral网络中使用的所有层上,分摊此页 ...

  4. ffmpeg architecture(下)

    ffmpeg architecture(下) 第3章-转码 TLDR:给我看代码和执行. $ make run_transcoding 我们将跳过一些细节,但是请放心:源代码可在github上找到. ...

  5. 重新整理 .net core 实践篇—————路由和终结点[二十三]

    前言 简单整理一下路由和终节点. 正文 路由方式主要有两种: 1.路由模板方式 2.RouteAttribute 方式 路由约束: 1.类型约束 2.范围约束 3.正则表达式 4.是否必选 5.自定义 ...

  6. 面试常问的Java虚拟机内存模型,看这篇就够了!

    一.虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的. 同一个java代码在windows上生成的机器码可能是0101.......,在lin ...

  7. oracle中job无法正常运行,如何排查

    1.生产环境Oracle中的job无法正常运行 select * from dba_jobs_running;(查看正在运行的job) 2.select * from dba_jobs(查看job历史 ...

  8. 基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则

    目录 系列文章 仓储 仓储的通用原则 仓储中不包含领域逻辑 规约 在实体中使用规约 在仓储中使用规约 组合规约 学习帮助 围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实 ...

  9. Sublime Text 4 破解笔记

    Sublime Text 4 破解笔记 偶然看到Sublime已经更新到版本4了,多了许多很nice的新特性,例如: 船新 UI 感知上下文的自动补全 支持 TypeScript, JSX 和 TSX ...

  10. Vue(6)v-on指令的使用

    v-on 监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码.事件代码可以直接放到v-on后面,也可以写成一个函数.示例代码如下: <div id ...