文章目录

  • Ubuntu子系统概述
    • 什么是子系统
    • WSL介绍
    • 双系统、虚拟机以及子系统的对比
  • 安装Ubuntu子系统
    • 在Windows10下开启WSL
    • 安装Ubuntu
    • 配置和运行Ubuntu
  • 新环境和新问题
    • WSL2的开启
    • Ubuntu子系统的迁移
    • IP地址的问题
    • 在子系统中访问Windows10下的文件
    • 用windows资源管理器访问子系统文件
    • vscode远端访问
    • 配合wsl-terminal使用效果更佳
    • 其它
  • 总结

Ubuntu子系统概述

什么是子系统

  这里先引入一个概念,WSL(Windows Subsystem for Linux)即windows下的Linux子系统,后面一个小节会详细介绍WSL的概念,Ubuntu子系统的实现即基于WSL。安装Ubuntu子系统可以在Windows上引入一个完整的Ubuntu终端环境,可以使用Linux环境下的功能和应用而不用离开Windows。其使用界面如下图所示:

  每天的第一次开启会展示此系统的详细信息,比如进程数,硬盘使用情况,内存使用情况,IP地址等等,当然也显示了我这有一个僵尸进程。不慌,问题不大。

WSL介绍

源引自百度百科
  Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层,它是由微软与Canonical公司合作开发。WSL基于Windows NT内核虚拟了Linux内核接口,其能够运行大部分的Linux软件,但图形化界面无法运行,所以我们看到的Ubuntu子系统只提供了一个终端环境。
  Windows Subsystem for Linux 包含内核态驱动(lxss.sys和 lxcore.sys),以协调Linux系统调用的请求与Windows NT内核。驱动不包含Linux内核代码,但是是一个全新实现的Linux兼容的内核接口。在原生的Linux上,用户态程序请求一个系统调用,系统调用请求由Linux内核处理。在WSL,当一个系统调用由同一个可执行文件请求时,Windows NT内核把请求发送给lxcore.sys。 当可能时,lxcore.sys将Linux系统调用翻译成等价的Windows NT的调用,由它来完成繁重的工作。当没有可能的等价转换时,Windows内核态驱动需要直接处理请求。比如说,Linux中的fork()系统调用没有直接的等价的windows版本。当一个fork系统调用由Windows Subsystem for Linux产生时,lxcore.sys需要做一些复制进程的准备工作,然后调用Windows NT内核APIs来产生一个进程来正确实现fork操作,完成为新进程复制额外的数据。
  此外WSL也提供了两种文件系统,VolFs 和 DriveFs,VolFs提供了完整的Linux文件系统的特性,包括符号链接和权限管理等;DriveFs兼容Windows下的文件格式,所有的Windows磁盘使用DriveFs挂载在/mnt/目录下。

双系统、虚拟机以及子系统的对比

  接下来对比以上三种在一台电脑上使用多种操作系统的方式,我将主要从安装难度和使用体验上来进行对比分析。
  首先来看双操作系统,安装双操作系统需要到官网下载镜像,备好U盘或者光驱来作为启动媒介,然后通过BIOS界面进入到系统安装。整个安装流程十分复杂且耗时比较长,但其使用体验无疑是最强的,因为其拥有完整的OS环境、硬件资源,仅就使用上来说和操作单一系统是一样的。但就某些情况下需要联合两个系统一同使用时,双操作系统的切换就很麻烦,我们无法在不关闭其中一个系统的情况下使用另外一个系统。其安装难度5颗星,使用体验5颗星。
  接着来看虚拟机,虚拟机可以直接在宿主机上虚拟出新的操作系统。其安装仍然需要镜像文件,不过不用制作U盘启动盘,只需要下载VM虚拟机软件,然后按照软件的指导,可以较为简单的安装虚拟机。因为虚拟机的运行对宿主机来说就是运行一个软件,所以在切换操作系统时就像在切换软件一样简单,不得不说,虚拟的出现解决了双操作系统切换的繁琐耗时,也降低了安装系统的难度。但就其使用效果来说,体验很差,首先虚拟机的启动比正常操作系统启动更耗时,其次是其使用过程中卡顿非常明显,因为其虚拟了整个硬件资源和操作系统内核,而虚拟环境下内存和硬盘资源利用率很低,即使在虚拟机设置中分配较多的CPU和内存资源也很难提升其使用体验。其安装难度3颗星,使用体验3颗星。
  在上面我们对比了双操作系统和虚拟机的优劣势,那么子系统又是如何的呢?首先子系统的安装很简单,下面的一节我将会介绍,其安装过程不用U盘,不用镜像文件,安装过程中也没有过多的选项。其次在使用子系统的同时我们可以不用离开Windows系统,这种感觉就像在Windows下开启一个终端一样体验极好。其安装难度1颗星,使用体验4星半,唯一一点不好(如果能算作缺点的话)的是其没有图形化界面。
  这里额外提一下和本小节标题无关的Docker,相比大家或多或少也都用过,至少也听过。Docker出来的短短几年时间内就迅速受业界欢迎,已经成为不少公司的标配。Docker作为一种容器虚拟技术,可以认为是一种轻量级的虚拟机技术,不虚拟硬件和内核资源,在软件服务层面上完全可以替代虚拟机。它和Ubuntu子系统都具有轻量级的特性,而且都能从软件层面上解决操作系统环境的问题。有兴趣的可以参见这篇博文,相信阅读后可以从不同的角度打开新世界的大门,发现更多的应用场景。

安装Ubuntu子系统

在Windows10下开启WSL

1、第一种方式,命令行终端开启方式(官方文档步骤):
首先以管理员权限开启powershell终端:

  在终端中键入以下代码,然后重启电脑:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

2、第二种方式,图形化界面开启:
  如果各位对命令行不太熟悉或者不太懂上述命令的含义而不敢操作,这里我也提供了Windows的经典开启方式–>图形化界面开启。如下图所示,在微软小娜助手中搜索:设置:启动或关闭Windows功能,然后打开。


  如下图所示,在里面找到”适用于Linux的Windows子系统“选项,打上勾,确定,然后重启电脑。

安装Ubuntu

  在Windows10上点击win图标,打开Microsoft Store,查找到Ubuntu,如下图所示:
  你可以根据自己的需要选择相应的Ubuntu系统版本,可以看到第一个Ubuntu不带版本号并且下载量最多,如果选择这一个其实安装完后默认就是最新版本。
  由于应用商店现在已经下架了ubuntu16.04,所以如果需要安装此版本,请点击下面的链接:ubuntu16.04

配置和运行Ubuntu

  经过上面的步骤后,我们就已经安装好了Ubuntu子系统,安装过程异常简单和快捷。安装过后,点击win图标就可以在“最近添加”或者"U"开头的应用程序列表中找到它,然后点击开启。首次使用我们需要设置自己的用户名和密码。

新环境和新问题

  使用Ubuntu子系统与普通双系统或者虚拟机中的操作系统相比几乎没有任何区别,不过有些内容还是有所区别,下面我就讲讲我在实际操作中发现的不同。PS:我使用的是WSL2,该版本在2020年5月份更新,大家现在默认安装后都使用的是WSL1。

WSL2的开启

  如上面所说,如果需要开启WSL2,Windows10需要更新至目前的最新版本。以往的wsl版本中存在一些问题,比如无法执行32位程序,所以建议直接升级到wsl2。在Windows10 powershell中键入以下命令,如果输入后提示权限不足,就用管理员身份开启。
  查看已经安装的wsl名称

wsl.exe -l

  将已经存在WSL1发行版转换为WSL2版本,注意下面的Ubuntu替换为上面命令查出来的名称

wsl.exe --set-version Ubuntu 2

  将WSL2版本设置为以后安装WSL应用服务的默认版本

wsl.exe --set-default-version 2

Ubuntu子系统的迁移

  Ubuntu子系统默认是安装在系统的C盘中,如果想要迁移的话可以参照这篇文章。

IP地址的问题

  在最开始使用WSL1版本的时候,我查看Ubuntu子系统IP和Windows10 IP发现两者的IP地址是一样,在网络适配器中更改Windows10的IP地址也会改变Ubuntu子系统的地址,所以Ubuntu子系统给人的感觉就是开启的一个Windows下Linux终端而已。
  换用WSL2后,在Ubuntu子系统键入ifconfig,在Windows10 powershell中键入ipconfig,如下图所示:


  我们对比Ubuntu的中eth0和Windows10下的VEthernet(WSL),可以发现在WSL2中已经为子系统和宿主机虚拟出了新的网卡端口。而宿主机中出现的交换机vEthernet(Default Switch),这个是开启Hyper-V才有的。在宿主机中最开始显示的WLAN是电脑无线网的IP地址,连的是手机热点。
  从上面的分析中可以看出,WSL2的IP映射方式类似虚拟机网卡的NAT模式,也就是在宿主机中模拟出新的网卡和子系统相连,而并没有将子系统直接放在宿主机所在的网端上(这种方式在虚拟机中叫桥接模式)。同时Ubuntu子系统/etc/network/目录下已经没有了interfaces文件,该文件是用于Ubuntu系统的网络配置,转而是下面的两个文件夹,在这两个文件夹下都有名叫ethtool的脚本文件:

在子系统中访问Windows10下的文件

  安装完子系统后,我们原来Windows10下的硬盘都被挂在到/mnt/目录下,下面的命令将会依次访问C\D\E盘:

cd /mnt/c/
cd /mnt/d/
cd /mnt/e/

用windows资源管理器访问子系统文件

  在子系统终端中输入下面的命令,注意后面的点号代表当前目录,之后会弹出windows的文件资源管理器:

explorer.exe .

vscode远端访问

  在安装子系统的同时,如果你装了vscode文本编辑器,那么vscode会提示我们安装一个名叫"Remote WSL"的插件。

  该插件可以让你通过子系统直接使用在Windows10系统下的vscode而无需重新安装,并且此时开启的vscode使用的是Linux下的编译环境,比如C语言使用的是/usr/bin/gcc。在终端键入以下命令即可:

code .

  此命令会以Ubuntu子系统下的当前目录作为工作目录打开vscode。

配合wsl-terminal使用效果更佳

  由于WSL自带的终端模拟器存在许多问题,其中最主要的问题就是不好看,所以这里推荐结合wsl-terminal一起使用,会产生更好的效果。具体可以参考这篇博文:WSL – 配合wsl-terminal使用效果更佳。

其它

  我个人觉得子系统带来的巨大好处就是重用,比如上文中提到的vscode,原来Windows10中安装过后,子系统就不需要再重复安装,本来一个软件安装一次便足矣,我们之所以需要在不同系统中使用是因为环境不同,我们实质上用的是环境。所以Ubuntu子系统极大的解决了我们在不同环境下使用同一软件应用的需求。除此之外,在使用Docker、Visual Studio等软件时,我们都只需要在Windows10环境下安装即可,然后在Ubuntu子系统就可以访问使用了。

总结

  其实一开始我也是沉迷于双操作系统不可自拔,后来由于学校的实验操作需要使用虚拟机,又开始搞了一段时间的虚拟机,直到有一天虚拟机说崩就崩了,也不知道出啥问题,反正一觉醒来就打不开了,网上各种方法也都试过了,始终无法恢复。在一气之下就体验了一把Ubuntu子系统,发现还是很香的,人生新世界的大门就此打开。

windows10下使用Ubuntu子系统相关推荐

  1. Windows10下安装Linux子系统

    Windows10下安装Linux子系统 版本说明 版本 作者 日期 备注 0.1 ZY 2019.7.9 初稿 目录 文章目录 Windows10下安装Linux子系统 版本说明 目录 一.初衷 二 ...

  2. Windows 10 下安装Ubuntu子系统 编译Android源码问题记录

    一.Ubuntu子系统安装 1.启用WSL Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式) ...

  3. win10下安装Ubuntu子系统

    很有意思,首先 右键选中应用和功能,然后选择程序和功能 点击启用或关闭Windows功能,然后在"适用于Linux的Windows子系统"前面打勾",可能会让你重启系统, ...

  4. win10下linux子系统6,Windows10下安装Linux子系统2020年7月最新版

    作为数据分析的必备工具,Linux系统已经成为不可缺少的系统工具.如今Windows10开始可以安装Linux子系统(Windows Subsystem for Linux,WSL),直接在Windo ...

  5. 联想拯救者Y7000P-2019在windows10下安装ubuntu 20.04双系统操作指南

    前言:工作很多时候会遇到Linux操作系统,使用过docker镜像和vm虚拟机,但总感觉不是很好,就自己安装了ubuntu 20.04,安装过程中遇到很多问题记录一下,方便自己以后浏览. 一.安装指南 ...

  6. 如何在Windows10下安装ubuntu双系统(无U盘)

    前言 最近想在linux环境中对无线网卡进行测试,但是暑假放假回家忘了带上U盘了,所以在网上搜索了无U盘安装双系统的教程,成功安装了win10+ubuntu18.04LTS双系统(安装ubuntu20 ...

  7. 在windows下安装ubuntu子系统笔记

    介绍了Microsoft Store 应用不可用时该如何处理 https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4-do ...

  8. Win10安装Ubuntu子系统教程(附安装图形化界面)

    MS酋长之前曾经分享过借助EasyBcd安装Win10/Ubuntu双系统的教程,但其实从Build 14393版本开始,Windows10已经原生支持Linux了,在控制面板的"启用或关闭 ...

  9. 在windows10中安装 linux ubuntu 子系统

    在windows10中安装 linux ubuntu 子系统 文章目录 在windows10中安装 linux ubuntu 子系统 打开开发者模式 windows子系统功能 重启计算机 Micros ...

最新文章

  1. DPI — nDPI — Overview
  2. 分析和解析PHP代码的7大工具
  3. CentOS 初体验十二:wget下载文件
  4. 「递归」第3集 | 向善的信念,让技术自带光芒
  5. JavaOne正在重建动力
  6. mysql中的字段类型
  7. php memcached 设置过期,memcached过期时间无效
  8. java大数据组件Kafka
  9. asp调用数据库汉字显示乱码解决方案
  10. 排序算法专题-希尔排序
  11. (PTA)java基础编程题汇总
  12. deepfacelab实践笔记
  13. 汉字编码 拼音输入法
  14. 微信公众号文章阅读数和点赞数采集接口
  15. 调整bandizip压缩参数获得最大压缩效果
  16. 系统——Linux服务器
  17. 如何删除字符串中的数字
  18. 【你好,windows】windows7 x64x86旗舰纯净终结版(usb3.0_nvme)2020.1.19
  19. Web前端Table中的tr和td按百分比设定宽度和高度,当内容超出时Table变型解决
  20. div设置下拉滚动条以及翻滚到底部

热门文章

  1. 外部Portal认证系统 对接 华为 H3C 等设备实现 LDAP AD域 网络准入实名认证
  2. (二)jenkins+bonobo git server+windows系统自动化部署springboot项目(自动化部署)
  3. 获取有道词典在线翻译结果 及 Windows下配置运行ASP
  4. 材料专业毕业生的真实工作状况
  5. #874358#基于django/neo4j的电视剧浏览数据推荐系统
  6. Linux系统安装rpm文件:error: can‘t create transaction lock on /var/lib/rpm/.rpm.lock
  7. 走进麻省理工Media Lab,看AR技术如何改变课堂教育?
  8. 互斥事件 独立事件 两两独立 相互独立 的理解
  9. 《O N E 影视厅》管理系统——WAMP架构win10+apache+mysql+php
  10. 小伙因家人“催催催” 欲轻生 民警苦劝将其救下