WSL2安装

WSL2在今年5月份Microsoft Build大会上发布了,但至今Windows10一直没收到更新推送,我想这么久过去就算没进入正式,至少也到了RC版了吧,于是开始折腾准备体验一把。

WSL2需要Windows10的18917或以上版本的支持,截止至2019-08-22,这个版本仍然处于内部预览的状态,如需要,得把系统设置的“Windows预览体验计划”作相应的修改,加入这个预览体验计划,然后就可以接收到Windows预览版的更新内容了。——具体过程略,特别要注意的就是这个更新过程比较漫长,找个空闲时间来做吧。

在“启用或关闭Windows功能”里打开这两个功能

  1. 执行Linux程序的Windows子系统 (这个就是WSL了)
  2. 虚拟机平台 (WSL2需要这个,WSL1是不需要的,记得打开BIOS设置里的CPU虚拟化技术)

或者以管理员身份运行Powershell,然后执行:

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

在Windows10的应用商店里装个Ubuntu,或Ubuntu 18.04 LTS,或者别的发行版也行(咋没有我熟悉的CentOS呢?)。然后在开始菜单上点击运行,第一次运行会很慢,因为有个安装的过程,耐心等待,完成后提示你输入用户名密码,这个用户名密码和Windows的是无关的。

WSL2使用

打开命令行界面(cmd.exe),现在来熟悉几条WSL2相关的配置命令:

>wsl -l --verbose

这条命令能列出当前安装的的Linux发行版的名称、状态及其使用的WSL的版本,如:

NAME         STATE      VERSION
*Ubuntu Running 1
Ubuntu-18.04 Running 2

前面的*表示wsl的默认发行版,从这还能看出Ubuntu使用的WSL为第一版,要将Ubuntu转为使用WSL2可以使用这个命令:

>wsl --set-version Ubuntu 2

设置将来安装的发行版都使用WSL2

>wsl --set-default-version 2

另外有wslconfig命令也可以控制发行版的运行,具体直接敲这个命令就能看到帮助信息。

WSL2和WSL的一个很大的不同点就是使用了虚拟磁盘,并不是像WSL那样直接把文件存在Windows的文件系统中,WSL的磁盘的默认存放地方在:

%localappdata%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState

这个目录下有个扩展名为vhdx的大文件,这就是虚拟磁盘镜像文件了。

之前的WSL,要在Windows访问Linux是有些问题的,虽然使用的是同一个文件系统,但直接往Linux的文件目录里扔文件似乎没用,可能跟刷新有关,并且也不建议这么做,而现在方便了,在WSL里敲explorer.exe .,即可用Windows的资源管理器打开当前WSL的目录,注意这个功能只能在WSL的窗口里执行,如果是SSH终端,那会提示explorer.exe找不到命令。

在部署完WSL之后,我发觉VMWare Workstation Pro已经不能用了,提示“VMware Workstation 与 Device/Credential Guard 不兼容”,搜索解决方案,在Windows组策略中关闭了“Device/Credential Guard”之后问题依旧。经过查阅资料,了解到WSL2的架构发生了较大的变化,它使用了一些虚拟化技术(但又不完全等同于VM,它启动速度要比VM快得多,具体等我有了更多了解后再做分享),所以不难理解为什么WSL需得开启“虚拟化平台”这个功能方可使用,WSL2也因此支持了Docker,这都说明了它已经是一套纯正的Linux了,然而Windows的虚拟化技术跟VMWare所使用的虚拟化技术有很大不同,互不兼容,如果你之前使用过Hyper-V的话一定知道这事情。现在怎么办呢?我的解决方案就是放弃VMWare,把原先的VMWare磁盘镜像文件转为Hyper-V磁盘镜像的格式,使用Hyper-V虚拟机……呃,其实也算不上解决方案,VMWare的爽,谁用谁知道,所以我觉得这是WSL2最大的一个坑。

这里又引出一个问题了:WSL2还能称得上WSL么?我觉得它更接近于一个运行在Windows环境下的经过了特殊优化的Linux虚拟机,而不再是一个Subsystem了。

如今的WSL2可以看做是一个独立的虚拟机了(虽然技术上仍有些区别),它具有自己独立的IP地址,通过虚拟路由器与Windows连接,虽然你在WSL2中部署的服务在Windows中也能用localhost访问,但是我猜这是用了一些特殊的内部链路技术来实现的,不信你可以做这么一个简单试验:假如你在WSL2中部署并运行了redis,如果配置文件中仅仅bind到了127.0.0.1的话,Windows是无法用localhost或127.0.0.1来访问WSL2中的redis服务的。要查看WSL2的ip地址,可以在WSL2中用ip addr命令或者ifconfig命令。另外我在使用中还发现用localhost这个地址无法访问WSL2的ssh服务,我尝试过关闭Windows防火墙,用netstat检查过端口打开及绑定状态,都是没问题的,且只要把localhost换成WSL2的IP地址(通常是172.x.x.x)就可以了,与此同时,利用localhost地址访问WSL2中的redis服务及PostgreSQL服务都是没问题的,感觉挺奇怪。

还有值得注意的一点是:WSL2的IP地址是动态的,每次启动后都会不一样,所以也不好直接用指定IP地址的方式来访问WSL2的ssh服务。

我还发现WSL1中的无法自动启动sshd等问题如今仍然存在,虽然我可以通过一些小手段来解决,网上也有人给出了一些workaround,但总归觉得不够工整。

总结

现在其实一切都还没最终发布,如果精力有限,我觉得还是先不要入这坑的好,我这么一番折腾下来,感觉不太值得……

2019-08-26更新:早上Windows更新至18965.1005,发觉WSL2联网都成问题了,暂时没空找解决方案,于是将WSL2降回WSL1继续用,想想还是等它正式上线了再用比较好,太坑了。

WSL2(预览版)体验笔记的更多相关文章

  1. VS2015预览版体验

    .NET开源了,JAVA颤抖吧... 据说VS2015可以开发android,ios,wp应用程序了,还可以开发能运行在mac,linux上的ASP.NET网站,如果真是这样就太爽啦,上微软官网下载了 ...

  2. ASP.NET Core 3.0预览版体验

    目前.NET Core 3.0的版本为.NET Core 3.0 Preview 3,对应ASP.NET Core 3.0 Preview 3. ASP.NET Core 3.0 之后将不再支持.NE ...

  3. 20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于IDEA的预览版 IDEA会启用新的UI,这事情之 ...

  4. Windows 10简体中文最新预览版Build 9926

    Windows 10 消费者预览版全新特性: • 全新的开始菜单Win 10的开始菜单产生了较大改变,磁贴界面在原有磁贴概念的基础上进行了大幅度的调整,新的磁贴界面开始支持纵向滚动,并可以利用开始按钮 ...

  5. .NET 6 预览版 5 发布

    很高兴.NET 6 预览版5终于跟大家见面了.我们现在正处于.NET 6 的后半部分,开始整合一些重要的功能. 例如.NET SDK 工作负载,它是我们.NET 统一愿景的基础,可以支持更多类型的应用 ...

  6. Win10桌面预览版14316更新内容大全

    下载更新: 安装之后右下角: Win10桌面预览版14316更新内容:       Windows上运行乌班图Bash:通过设置开启开发者模式,更新和安全>面向开发人员.然后搜索"Wi ...

  7. .NET 4.5.1 预览版新特性

    上个月的微软Build大会上宣布了.NET 4.5.1的推出,Heydarian的这个演讲题为".NET开发中的新内容",涵盖了.NET Framework中一些重要的新特性. H ...

  8. 【译】Visual Studio 15 预览版更新说明

    序:恰逢Build2016大会召开,微软发布了VS2015的update2更新包和VS2016预览版.本人正在提升英文水平中,于是在这里对VS2016预览版的官方文档进行了部分翻译.因为VS有些功能使 ...

  9. WP8没有开发者账号升级GDR3预览版的方法

    很多希望尝鲜WP8 GDR3的朋友一样希望提前体验GDR3的效果,但苦于没有开发者账号而不得其门!今天为大家带来普通账号升级GDR3的方法! 工具/原料 WP8智能手机 可用wifi热点 方法/步骤 ...

随机推荐

  1. Elasticsearch系列---增量更新原理及优势

    概要 本篇主要介绍增量更新(partial update,也叫局部更新)的核心原理,介绍6.3.1版本的Elasticsearch脚本使用实例和增量更新的优势. 增量更新过程与原理 简单回顾 前文我们 ...

  2. mybatis的@Options的使用

    1.问题: 我采用的是mybatis的注解方式,打算插入一条数据之后返回主键,但是试了好几次都是返回的影响的记录数:1, @Insert(****) @Options(useGeneratedKeys ...

  3. 【10分钟学Spring】:(一)初识Spring框架

    简介 Spring是一个轻量级的企业级的Java开发框架.主要是用来替代原来更加重量级的企业级Java技术,比如EJB(Enterprise JavaBean).Java数据对象(Java Data ...

  4. R语言学习笔记(2)——数据结构与数据集

    一.数据集 数据集的概念 数据集是由数据组成的矩阵数组,行表示观测(observation),列表示变量(variable) 数据类型 数值型变量 PatientID.AdmData.Age 为数值型 ...

  5. Beautifulsoup模块基础详解

    Beautifulsoup模块 官方中文文档 Beautifulsoup官方中文文档 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的 ...

  6. 网络OSI七层模型以及数据传输过程

    网络OSI七层模型 模型图 国际标准化组织(ISO)制定了osi七层模型,iso规定了各种各样的协议,并且分了7层 每一层的详细信息 具体7层 数据格式 功能与连接方式 典型设备 应用层 Applic ...

  7. 4k图片爬取+中文乱码

    4k图片爬取+中文乱码 此案例有三种乱码解决方法,推荐第一种 4k图片爬取其实和普通图片爬取的过程是没有本质区别的 import requests import os from lxml import ...

  8. 大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#

    上集回顾 昨天说简单介绍了什么是selenium,它能干what,和发展史与梗概.当的是python如何通过pip安装selenium,并下载对应浏览器的webdriver. 最后简单通过一个Demo ...

  9. iOS RSA加解密签名和验证

    转自:http://www.jianshu.com/p/81b0b54436b8 Pre:在公司负责了一个项目,需要用到iOS RSA验证签名的功能.后台给我的仅仅是一个公钥的字符串.经过起初的一段时 ...

  10. 数据库Oracle的子查询练习

    1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 last name和 hire date,结果中不包括 Zlotkey --1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 ...