在设计之初,微软就允许类似于Win32这种子系统运行于windows NT内核之上,它可以为上层应用提供编程接口,同时避免应用去实现内核里的一些调用细节。NT内核的设计在最开始就可以支持POSIX,OS/2和win32子系统。

早先的子系统是用户态模块的实现,它封装了NT系统的系统调用为应用程序提供编程接口。所有的应用程序都是PE/COFF(一些为子系统封装NT系统调用的库和服务)可执行的。当一个用户态的程序启动的时候,启动器就会基于可执行的头部去引用适当的子系统来满足应用程序的依赖。

后来版本的子系统替换掉了POSIX层,由用户态组件提供了Subsystem for Unix-based Applications (SUA),满足:

  1. 进程和信号管理

  2. 终端管理

  3. 系统服务请求和进程间通信

SUA的主要目的是为了鼓励应用程序移植到Windows上能尽量少的重写。这已经通过实现POSIX用户态API达到了。考虑到这些组件是用户态实现,很难跟内核态的系统调用(比如fork())在语义上和效率上完全相对应。因为这种模式需要程序重新编译,它需要持续的功能移植,维护也是负担。

随着时间的演变,这些早先的子系统都退出历史舞台了。但是因为WIndows NT内核的架构允许新的子系统环境,我们就基于这领域的原始积累进行扩展,发展Windows Subsystem for Linux。

对开发者而言,Linux的命令行操作在生产环境必不可少,毕竟服务器系统基本上是Linux系统,而在我天朝使用Windows开发或者工作又是很普遍的,公司甚至有人特意买Mac特意装Windows系统,而win10这个升级让你不用再麻烦的去使用优盘什么装个双系统,也不用搞个耗内存又慢的虚拟机,由于Linux系统众多优良特性,微软终于舍得开放一点了,在他的win10 系统中加入了Linux子系统,详细教程如下!

 Windows 10是微软第三代NT团队的力挽狂澜之作,大刀阔斧地改造革新,目标是重塑Windows(Reinvent Windows)!在众多新特征中,Linux环境子系统(WSL)无疑是最具开创性和最拉风的一个。

下面教程亲测可用


1启用WSL

2通过“Turn Windows features on or off”打开WSL功能



方法2:使用管理员方式打开Powershell然后运行如下命令,完成之后根据提示 重启电脑:

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

3启用windows bash

4安装ubuntu

有了上面的基本运行环境就可以运行Linux应用程序了么?不是的,还需要安装Linux系统,包括系统程序、库文件和必要的工具程序。不过不用担心,微软已经和Canonical(Ubuntu背后的公司)合作准备好了一个特殊版本的Ubuntu,称为Ubuntu On Windows(以下简称UoW)。第一次启动Bash Launcher时,它就会提示安装UoW,安装完成后,你可以设置Linux系统用户和密码,这和你的Windows系统密码没有半毛钱关系。



方法2:你也可以在Windows store中免费获取你想要的Linux系统,前提是你的Windows build 在16215及以上,给出2个链接

ubuntu

OpenSUSE

SLES

安装可能问题: Installation failed with error 0x80070003

The Windows Subsystem for Linux 只能在你的C盘上运行,你需要设置Settings -> Storage -> More Storage Settings: Change where new content is saved

5安装其它应用

6这是我自己配好的仅供参考!

安装完成的ubuntu

启动可能问题:Installation failed with error 0x8007007e,检查你的Windows版本确保在16215或者更高,其次检查WSL是否已经开启。

安装完成的Linux目录在window下的目录!

7 新增:如果不能安装 请使用VPN 去下载,不然很大几率会在下载界面不动一直下载失败

8 安装完成后进入WSL环境 win+R(Windows 运行命令) 输入 bash然后如图 或者直接cmd输入 bash如图



微软升级 WSL Window Subsystem for Linux Win10系统自带Linux的更多相关文章

  1. Win10系统自带输入法的人机交互设计

    过了寒假回校以后,我的电脑重装了系统,为了提升系统运行的速度,自己装了一个内存条同时对硬盘进行了重新的分区,对电脑内的文件也进行了重新的整理,电脑的运行速度提高了很多.老多同学都说win10系统好用, ...

  2. 酷!微软发布新终端工具,Win 10 将自带 Linux 内核

    原创:技术最前线(id:TopITNews) 北京时间 5 月 7 日,2019 年微软 Build 开发者大会在雷德蒙德召开.今年大会上亮点很多,本文汇总一些和开发者相关的内容. 1. Window ...

  3. Win10系统如何安装Linux Mint

    导读 随着windows10系统免费升级期限的靠近,越来越多朋友都将自己的电脑系统升级到了win10正式版.今天,小编就要在这里为大家分享Windows10系统安装Linux Mint的方法,希望能够 ...

  4. 如何在win10系统上安装linux子系统

    对于软件开发人员来说,linux基本上是一个绕不过去的槛. 因为工作经常要用到linux,电脑用纯linux还是windows + 虚拟机装linux,我一直纠结. 如果装个纯linux,则一些win ...

  5. 关于win10系统自带浏览器IE11的JQuery使用问题

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&quo ...

  6. 【解决方法】安装Win7和linux双系统后,linux报错“无法分配所提交的分区 not enough free space on disks”问题,以及win7无法启动“BootMGR image is corrupt....”问题

    近日,在笔记本上重装了Win7 企业版(64位)后,想装个linux双系统,于是开始安装 centOS 6.2(光盘安装) 硬盘分了一个主分区(c盘),一个扩展分区(3个逻辑分区:d,e,f盘),然后 ...

  7. win10系统自带的浏览器ME如何将网页转成PDF

    不多说,直接上干货! 很多用户都已经开始玩上win10了,补充玩玩一些技巧,当作小灶. 不多废话,在windows 10网页是可以保存为pdf格式.具体如下: 欢迎大家,加入我的微信公众号:大数据躺过 ...

  8. Linux卸载系统自带的JDK

    安装Linux后,一般系统都会自带openjdk,我们开发中都需要自己安装,所以需要卸载之前的,以CentOS为例,卸载方法如下: 首先执行命令查看存在哪些已安装的包 rpm -qa | grep j ...

  9. linux修改系统时间和linux查看时区、修改时区的方法

    一.查看和修改Linux的时区 1. 查看当前时区命令 : "date -R" 2. 修改设置Linux服务器时区方法 A命令 : "tzselect" 方法 ...

随机推荐

  1. [IMX6DL] CPU频率调节模式以及降频方法

    本文转自http://blog.csdn.net/kris_fei/article/details/51822435 Kernel branch: 3.0.35 CPU的频率调节模式:1. Perfo ...

  2. python @abstractmethod

    1.写在前面 由于python 没有抽象类.接口的概念,所以要实现这种功能得abc.py 这个类库 2.@abstractmethod特点 @abstractmethod:抽象方法,含abstract ...

  3. vue elementUI 表单校验(多层嵌套)

    <template> <el-form :model="formData" :rules="formRule" ref="formD ...

  4. osg model

    osg::ref_ptr<osg::Node> MyOSGLoadEarth::CreateNode() { osg::ref_ptr<osg::Group> _root = ...

  5. Paper reading: High-Fidelity Pose and Expression Normalization for Face Recognition in the Wild(HPEN)

    1. Introduction 人脸识别受到各种因素影响,其中最重要的两个影响是 pose 和 expression, 这两个因素会对 intra-person 变化产生极大的影响, 有时候甚至会超过 ...

  6. sql server 查看索引碎片大小,并定期重建索引

      查看碎片情况使用  dbcc showcontig 函数来进行 代码: --改成当前库 use DB_Name --创建变量 指定要查看的表 declare @table_id int set @ ...

  7. 写一个java常用的加密工具类

    1.叙述 java security包下有很多加密算法类,我们可以很简单的调用它们.他们虽然功能很全,但是使用起来步骤有些繁琐.我在这里封装来一些常用的加密算法及他们常用的一些方法,来简化代码. 工具 ...

  8. 使用PowerCLI给ESXi批量设置时间和配置NTP

    在现代的各种业务系统中,时间同步很重要.现在VMware的虚拟化解决方案应用非常广泛,给ESXi宿主机一个统一准确的时间,也给客户机系统一个准确的时间. 生产环境中主机数量少的话倒是可以手动设置,但是 ...

  9. 离线安装docker,并导入docker镜像

    将docker离线安装包导入到系统中,解压并进入文件夹,使用下述命令进行安装: rpm -ivh *.rpm --nodeps --force 安装完成功使用,docker info 查看docker ...

  10. 强制执行父类下的__init__

    两种方式: 1.super(子类,self)__init__() 2.子类.__init__(self) 推荐使用super