跳至主要内容

WSL从一无所知到略知一二

WSL从一无所知到略知一二

一、简介

微软“爱” Linux

2014 年 10 月 20 日,出任微软公司首席执行官不久的萨提亚 ∙ 纳德拉第一次公开宣示了微软对 Linux 和开源世界的新感情。事实证明,微软的确是付出了真爱。过去两年,从微软智能云 Azure 到 Windows 10,从开发工具到数据库平台,“把 Linux 放在重中之重”,已经成为微软内部人人皆知的准则。
2019 年微软 Build 开发者大会在雷德蒙德召开。继将 Bash shell、原生 OpenSSH、WSL 引入 Windows,以及在微软商店提供 Ubuntu、SUSE Linux 和 Fedora 等发行版,微软又宣布了一个重大的决定 —— 将完整的 Linux 内核引入 Windows 10。
说句题外话
微软越来越拥抱开源了,.net开源,收购github,并且是github上拥有最多开源项目的企业、组织或团体,我个人相比谷歌更喜欢微软,希望微软越办越好
    微软:2.9K
    谷歌:1.6K
    阿里巴巴:291
    腾讯:94
    百度:83

WSL

WSL 全称为Windows Subsystem for Linux,最早与2016年微软就推出了BUG众多的WSL1,经过两年的缝缝补补,于2019年6月推出了BUG众多的WSL2。
WSL1是一个为在 Windows 10 上能够原生运行 Linux 二进制可执行文件(ELF格式)的兼容层,而WSL2是基于 HYPER-V 虚拟化技术。
WSL2目前基于Linux4.19内核修改,并在github上开源
https://github.com/microsoft/WSL2-Linux-Kernel
可惜的是截止目前(2020年1月2日),WSL仍不是真正完整独立的Linux系统。
WSL1没有Linux内核(故无法使用docker),WSL2没有systemd包(故无法使用systemctl等命令)。
但是假以时日,也许WSL能成为最流行、最方便、最好用的Linux桌面发行版。

为什么要用WSL

  • 性能更好
与虚拟机(Virtual Box/VMware)相比,WSL更接近底层,占用也小,WSL是Windows本身自带的一个功能,完全使用计算机自身硬件能力,挂起时仅占用1M内存。
  • 功能强大
在Windows下可直接访问WSL内的路径,调用WSL内的service,sh脚本;在WSL里也可以直接访问Windows内的路径,运行exe程序。
  • 更方便
无需多个设备,无需双系统,无需启动虚拟机,就可以体验和使用Linux,在WSL里面跑一些自己写的脚本日常使用根本感知不到,不会有黑框框命令行窗口不能关,不会占用任务栏、通知栏
并且,作为程序猿,其实一直觉得应该学好Linux,拿Linux作为主力使用的操作系统,但是Windows下有太多Linux没法安装的方便工具又不可能舍弃,之前一直用Windows+虚拟机的方案解决总感觉差那么点意思,现在用WSL就很舒服,完全可以将Windows当做一个Linux的桌面发行版用了。

二、安装

如果只需WSL1,则用最新版本的Windows都有,可直接从 3 开始看

1.确定系统版本

设置-->更新和安全-->Windows更新-->OS内部版本信息-->Windows规格-->操作系统版本
请确保版本号大于等于18917,18917后才有WSL2。
但是该版本下,Windows并不能直接通过localhost:端口号访问WSL内的服务,只能在WSL内通过ifconfig获取本次开机分配的内部ip,Windows再通过这个ip:端口号访问。
所幸这么蠢的错误没有持续太久,18945的版本就更改回去了,WSL1和18945以后的版本都可以通过localhost:端口号访问WSL内的服务,但是保险起见还是建议更新至最新的19536及以后的版本。
注意
不论是WSL的哪个版本(WSL1/18945前、后的WSL2),访问WSL的服务都只能通过localhost,不能通过127.0.0.1,通过127.0.0.1只能访问到Windows对应的服务
如果版本号大于等于19536,可直接从 3 开始看

2.更新系统版本至最新预览版

不出所料的话,大家的电脑系统版本最新不过正式版1909,版本号是18363,只有WSL1,没有WSL2,需要将系统更换至预览版
设置-->更新和安全-->Windows预览体验计划-->选择将账号变更为预览版-->选择更新策略为 FAST

设置-->更新和安全-->Windows更新-->重新检查更新-->安装最新的预览版
注意
这里有可能会更新失败,如果遇到更新失败,并且自己动手能力不够,不会备份和重装系统,手头没有对应工具的话,建议放弃使用WSL2,仍然使用WSL1,用WSL1的话下面的东西大体不变
如果具有动手能力的话,更新失败十有八九是因为,当前的WIN10是通过MBR+UEFI/LEGENCY的方式安装的,所以要将硬盘改为GPT格式,进BIOS更换启动引导方式为单UEFI模式,然后用UEFI引导的U盘重装系统,再更新至最新预览版

3.打开关于WSL的系统相关设置

控制面板-->程序-->启动或关闭Windows功能,在:

Windows虚拟机监控程序平台、适用于Linux的Windows子系统、虚拟机平台
三个功能面前打勾,确定,安装组件后重启电脑

4.下载Linux系统

Microsoft Store-->搜索Ubuntu(Debian,Kali等自己喜欢的子系统)-->下载-->进入子系统后按提示初始化环境-->设置用户名/密码

5.更改默认的WSL1为WSL2

按WIN+X,点击Windows PowerShell(管理员)【有的版本显示为 命令提示符(管理员)】
输入:
wsl --set-default-version 2

wsl -l -v
打印出来的 VERSION 是 2 就对了

6.安装docker

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo service docker start

7.设置docker为开机启动项

不是WSL的开机启动,是会随着Windows开机启动而启动
在WSL里:
sudo vim /etc/init.wsl
输入:
#! /bin/sh
service docker start
保存退出,授权:
sudo chmod +x /etc/init.wsl
在Windows里,创建TXT,输入:
Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d ubuntu -u root /etc/init.wsl"
给TXT重命名为
linux-start.vbs
按WIN+R,输入:
shell:startup
给vbs文件放到这里
注意
由于WSL毕竟只是Windows的一个服务,不是一个真正完整独立的Linux系统,所以想要开机启动必须用这种方法调,在rc.local里也好,systemd目录下写service也好,我试过了都不行(也希望大家如果试出来新方法还请告知我),必须写成service,然后在文件里启动,再在Windows启动里面调用WSL内的文件才可以

8.重启wsl

由于wsl没有systemd这个包,所以没法reboot、shutdown来重启,但是有时候确实要重启
因为实际上WSL是Windows的一个服务,所以给服务关了再开就是了
新建一个txt,输入:
net stop LxssManager
net start LxssManager
给TXT重命名为
reboot.bat
找个地方放就行,需要重启了双击它

9.WSL内执行exe程序

在WSL内切换至
/mnt/
对应目录,运行XXXX.exe,如直接运行explorer.exe

10.Windows下WSL的路径

WSL2是基于 9p(贝尔实验室九号计划的文件协议) 挂载的 Windows 网络驱动器
打开文件夹,输入:
\\wsl$
WSL1是基于 DrvFs 文件系统,直接访问:
C:\Users\用户\AppData\Local\Packages\XXXXXXUbuntuXXXXX\LocalState

WSL2增强,内网穿透方案:FRP与ZeroTier 

评论

此博客中的热门博文

Windows开机启动WSL2(Ubuntu)的启动项

原文链接:https://www.xu.ci/2019/12/windowswsl2ubuntu.html原文作者:博客园--曲高终和寡*******************如果你看到这一行,说明爬虫在本人还没有发布完成的时候就抓走了我的文章,导致内容不完整,请去上述的原文链接查看原文****************在WSL2里装了docker,装了数据库,那自然是希望开机就启动的1.在Ubuntu里执行:sudo vim /etc/init.wsl 2.按 i 输入:#! /bin/sh service docker start 保存退出

3.授权sudochmod +x /etc/init.wsl 4.在Windows创建txt,输入:Set ws = WScript.CreateObject("WScript.Shell") ws.run "wsl -d ubuntu -u root /etc/init.wsl" 5.给txt重命名成:linux-start.vbs 记得给.txt也去掉6.按win+R 输入shell:startup 把刚刚那个vbs文件放进来

Google Voice 保号途径

原文链接:https://www.cnblogs.com/blog5277/p/12255636.html
原文作者:博客园--曲高终和寡
*******************如果你看到这一行,说明爬虫在本人还没有发布完成的时候就抓走了我的文章,导致内容不完整,请去上述的原文链接查看原文****************

官方的回收策略:
https://www.google.com/intl/zh-CN/googlevoice/program-policies.html
根据回收策略来看的话,只接收短信/电话也可以续GV

1. 发短信
可以发送网址到cloudflare查看ipv6(...?应该是ipv6吧,看起来像),编辑网址发送到(833) 672-1001‬



2. 定期收短信
订阅一些大公司的广告短信,如星巴克:发送JOIN到22122,就能看到,星巴克会每个月发两条广告短信到GV


 下面还有两个,不过我没试,我觉得星巴克的就可以了
  527365 先发 join 然后要回复 cc JCP 
  25666 先发 code 然后回复 PROMO

3. 打电话
这个我觉得没有必要。。。浪费公共资源。。。有定期收短信定期接电话就行了,还省心
美国亚马逊免费客服热线:+1(888)280-4331
美国微软激活Windows免费电话:+1(888)571-2048

4. 定期接电话
https://ifttt.com/applets/131839p-keep-google-voice-active
这里选时区,输入电话号,然后接听语音验证码。
这里建议给GV设置成勿扰模式,在GV的设置--勿扰,点成下图就可以了


 然后打来的语音验证电话会自动转成语音邮件,在这里:


 有的时候不会自动识别pin码,或者像上图中pin码压根就是错的(因为pin码是4位,上图识别成了5位。。。),就点下面的播放按钮自己听就行了,英文字母0-9总听得出来吧,多听几遍,一开头的277不是。

5. 30美金转成永久
我觉得没有必要,有觉得有必要的同学可以来这里看
https://www.googlevoice.cn/buy-permanent-use/

免费在线服务器状态监控工具

地址:
https://nodequery.com/

界面:


其他的(如果上面的不能用了):NetData

官网

接Ngnix

接多站点