Windows10下使用Ubuntu子系统

作者:__lifanxin
链接:https://blog.csdn.net/A951860555/article/details/110038308
来源:CSDN
著作权归作者所有,任何形式的转载都请联系作者。

Ubuntu子系统概述

什么是子系统

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


Ubuntu子系统

  每天的第一次开启会展示此系统的详细信息,比如进程数,硬盘使用情况,内存使用情况,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终端:


开启powershell

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

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

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

微软小娜

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


启动或关闭Windows功能

安装Ubuntu

  在Windows10上点击win图标,打开Microsoft Store,查找到Ubuntu,如下图所示:
Micrsoft Store

  你可以根据自己的需要选择相应的Ubuntu系统版本,可以看到第一个Ubuntu不带版本号并且下载量最多,如果选择这一个其实安装完后默认就是最新版本。

配置和运行Ubuntu

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

Ubuntu用户配置

新环境和新问题

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

WSL2的开启

  在Windows10 powershell中键入以下命令,如果输入后提示权限不足,就用管理员身份开启。
  将已经存在WSL1发行版转换为WSL2版本

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 IP

Windows10 IP

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


/etc/network/目录

ethtool

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

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

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

vscode远端访问

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

Remote WSL

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

code .

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

其它

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

总结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容