WSL(Windows Subsystem for Linux)已经装在电脑上好一阵子了,谁如果还没装的,可以看看本文,至少知道个大概,觉得有用的话知道该如何做。

简介

WSL简单说就是一个能让你在Windows上跑Linux程序的子系统,什么是子系统?贴个图:

其实我们一直在用子系统,它就是Windows子系统,它提供了一系列我们的Windows应用程序所需要的接口,是子系统将对这些接口的调用转变为对Windows内核的调用,才使得我们的应用程序能够正常运行,现在多了一个WSL,它能把Linux程序对各系统接口的调用转变为对Windows内核的调用,因此,Linux应用程序可以在Windows系统里跑起来了。Cool!反过来,我能不能在Linux系统里弄一个类似的东西跑Windows程序呢?其实这东西早就有了,叫“Wine”,自己去查。

是虚拟机吗?

不是,说了,是子系统,Linux程序与原生Windows程序是并列的。虚拟机与系统彼此隔离,而子系统并不隔离,文件系统可以互访,共用IP地址。还有一点很重要:WSL的资源消耗比虚拟机小得多,你装上了也不会觉得系统变慢。

是真正的Linux吗?

Linux的定义是什么?Mac OS X是不是Linux?其实我个人觉得不用太纠结这种问题,WSL用的显然是Windows内核,但它具有相当完整的Linux系统的功能,能够运行几乎所有的Linux程序,它肯定是*真正*的Linux,你甚至可以选择不同的发行版,呃,所谓发行版就是Ubuntu,CentOS,Fedora之类的。

用它干点啥?

当然是可以使用Linux上各种强大的工具了,比如ssh,你不用再纠结去哪里下个Windows版之类的了,各种牛X的工具,想要什么,apt-get一下,信手沾来,Linux下那些酷炫的shell命令,现在全都供你差遣,当然你还可以轻轻松松用几个命令搭建一台Web服务器,总而言之,比Windows的命令行界面(现在还有人称之为DOS)高不知哪去了。

没什么限制吗?

有,由于它用的是Windows内核,我第一反应就是依赖于Linux内核的CGroups功能的Docker应该是没戏(但也不排除以后会支持,微软daddy太强大),Windows下搞Docker还是老老实实用虚拟机吧。另外,微软官方说了,WSL不太适合用来当生产环境的服务器,因为它本来就不是为这个设计的,生产环境的服务器还是用Linux虚拟机吧。

如何开始?

哈,想行动了吧?我才不会再写一套“教程”呢,目前网上一搜一大把了。不过我还是推荐一下:你在应用商店里搜“WSL Guideline”,这个是一个不错的向导,你看这个好了。

选什么发行版?

目前应用商店有以下这些发行版:

我工作用的Linux发行版是CentOS7.4,这里居然没有,网上有攻略如何安装任意发行版的Linux,但我懒得折腾了,直接选了个Ubuntu,其实大同小异,不同发行版无非就是一些目录及软件包的区别,习惯以下就好了,比如我习惯用yum,Ubuntu默认没有安装,用apt-get装上就行了,其它同理。

跟Windows如何互访?

Linux访问Windows很简单,Windows的C盘会挂到“/mnt/c”去,同理还有“/mnt/d”和“/mnt/e”等,这里面的文件可以直接读写;反过来就有点麻烦,Linux的文件其实是在这个目录下:

%LOCALAPPDATA%\Packages\{Linux发行版}\LocalState\rootfs

(Linux发行版在我这里是CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc)

这个目录一来藏得比较深,二来你尝试直接在Windows里把文件复制到这个目录的话,Linux是读不出来的,所以要共享文件的话还是用Windows的文件系统吧。

root密码是什么?

默认用户是你自己windows的账号,root用户默认没有密码,你来改一下吧:sudo passwd

下一步

其实我也不知道,我只知道它好用,至于要玩得多酷炫我并不在行。比如图形界面,这个是很酷啊,但我觉得图形界面还是Windows的好,Windows图形界面甩KDE/Gnome N条街。再说了,这并不作为我们工作的内容,所以接下来你自己看着办。

使用WSL吧的更多相关文章

  1. Bash On Win10 (WSL) 安装 Odoo 开发环境

    前段时间微软发布了Bash On Win10,虽然目前还是Beta阶段,但是一想到再也不用折腾虚拟机上跑odoo了,就忍不住手痒,尝试在WSL上安装了一下odoo,结果比较惊喜,感觉可以抛弃Vitru ...

  2. 推荐一款好用的WSL终端模拟器

    Windows 10 中包含了一个 WSL(Windows Subsystem for Linux)子系统,我们可以在其中运行未经修改过的原生 Linux ELF 可执行文件.利用它我们可以做很多事情 ...

  3. Win10 Bash/WSL调试Linux环境下的.NET Core应用程序

    一.简介 使用过Mac OS的程序员都知道,在Mac Book Pro上写程序是一件比较爽的事儿,作为dotneter,我们都比较羡慕Mac系统的环境,比如命令行,当然设备也是挺漂亮的. 在新的Win ...

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

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

  5. 利用 WSL 在 Windows下打造高效的 Linux 开发环境

    WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...

  6. 微软为.NET程序员带来了最优的跨平台开发体验-WSL

    前言 在前几个Visual Studio Code更新中发现有一个重要得特性,就是nodejs可以使用VS Code在WSL中进行Debug了(WSL是指Win10中的Linux子系统),之前写过一篇 ...

  7. Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境

    0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...

  8. Windows Subsystem for Linux (WSL)挂载移动硬盘U盘

    WSL想通过移动硬盘处理一些数据,结果进去了无法发现移动硬盘,于是搜了好久也没有一个正确的解决办法,终于找到一个,现在贡献出来与大家共享. WSL比起linux挂载硬盘简单一些.而且windows本身 ...

  9. WSL与Windows交互实践

    1. WSL是什么 2. WSL新特性 3. WSL管理配置 4. WSL交互 5. 解决方案  * 5.1 使用别名  * 5.2 多复制一份  * 5.3 重定向  * 5.4 symlink 6 ...

  10. WSL Windows Subsystem for Linux安装指南

    见官方文档: https://msdn.microsoft.com/en-us/commandline/wsl/install_guide

随机推荐

  1. Centos下的apache2练习

    前言: 我上星期一直在写代码忘记写博客了,明天回去补回来.脚本主要用于收集信息 今天刚刚学完apache.来做个总结,写的不好请多多指指出. 目标: Centos6.5的IP:192.168.1.21 ...

  2. 多进程Multiprocessing模块

    多进程 Multiprocessing 模块 先看看下面的几个方法: star() 方法启动进程, join() 方法实现进程间的同步,等待所有进程退出. close() 用来阻止多余的进程涌入进程池 ...

  3. JavaScript 异步开发全攻略(转)

    写了一本介绍 JavaScript 异步开发的小书: https://meathill.gitbooks.io/javascript-async-tutorial/content/ 除了比较详细的介绍 ...

  4. nagios监控mysql主机,nginx,磁盘IO,网卡流量

    http://blog.chinaunix.net/uid-28685162-id-3506260.html nagios安装完成,打开/usr/local/nagios/etc/nagios.cfg ...

  5. python 文件的写删改

    # coding=utf-8 # !/usr/bin/python # -*- coding: UTF-8 -*- import io import os def file_chance(): #修改 ...

  6. Java 读书笔记 (五) 目标数据类型转换

    数据类型转换必须满足如下规则: 不能对boolean类型进行类型转换 不能把对象类型转换成不相关类的对象  //那不同类的对象可以用同一个名字命名吗?根据作用域原则,可以吧? 把容量大的转换为容量小的 ...

  7. bolt_storage.go

    package, * time.Second})     if err != nil {         return nil, err     }     err = db.Update(func( ...

  8. plugin.go 源码阅读

    , nil)             }             if c.client != nil {                 c.client.Close()             } ...

  9. tomcat设置直接通过域名访问项目(不需要接 /项目名)

    本文转自 : https://blog.csdn.net/qq_33647275/article/details/52585489 效果图 打开 tomcat - ->conf- ->se ...

  10. 使用 NLog 给 Asp.Net Core 做请求监控

    为了减少由于单个请求挂掉而拖垮整站的情况发生,给所有请求做统计是一个不错的解决方法,通过观察哪些请求的耗时比较长,我们就可以找到对应的接口.代码.数据表,做有针对性的优化可以提高效率.在 asp.ne ...