背景介绍:
Sugar 常用的笔记本昨天被推送了 Windows 2004 更新。
借此试用了一下 WSL2,简直太好用!
本文记录操作方法和一些细节,作为更多人的上车参考。

以 ardupilot 这个开源项目的编译时间为测试标准,WSL2 的成绩很出色。

这个速度基本与 Sugar 做的 Linux2Go 一样,这可是在 Windows 上的哦!

启用 Windows 功能

下面两种方法,二选一。

方法一、以管理员身份打开 PowerShell 执行如下命令

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

方法二、

完成后重启电脑。

下载内核包

适用于 x64 计算机的 WSL2 Linux 内核更新包

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

设置默认 WSL2

wsl --set-default-version 2

安装 Linux 系统

在 Windows 商店中搜索 linux 选择一个操作系统进行安装。

其他操作

1、转换版本

wsl --set-version Ubuntu-18.04 2

2、查看版本

wsl -l -v

3、关机

直接在 WSL2 的窗口上点红叉并不会把 WSL2 关机。

wsl -t Ubuntu-18.04

wsl --shutdown

网络访问

参考《WSL2 的一些网络访问问题》
https://lengthmin.me/posts/wsl2-network-tricks/

比较关键的是 Windows 10 上 wsl2.ps1 文件的内容,如下:

# [Config]
$wsl_hosts = "wsl.local"
$win_hosts = "win.local"
$HOSTS_PATH = "$env:windir\System32\drivers\etc\hosts"# [Start]
$winip = (bash.exe -c "ip route | grep default | awk '{print \`$3}'")
$wslip = (bash.exe -c "hostname -I | awk '{print \`$1}'")
$found1 = $winip -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
$found2 = $wslip -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';if( !($found1 -and $found2) ){echo "The Script Exited, the ip address of WSL 2 cannot be found";exit;
}# [Ports]
# control whether forward port from windows to wsl
$redirect_port = $FALSEif ($redirect_port) {# All the ports you want to forward separated by coma$ports=@(80,443,8080);# [Static ip]# You can change the addr to your ip config to listen to a specific address$addr='0.0.0.0';$ports_a = $ports -join ",";# Remove Firewall Exception Rulesiex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' " | Out-Null# Adding Exception Rules for inbound and outbound Rulesiex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP"  | Out-Nulliex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP"  | Out-Nullfor( $i = 0; $i -lt $ports.length; $i++ ){$port = $ports[$i];iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr"  | Out-Nulliex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$wslip"  | Out-Null}
}# [Hosts]
# Get hosts file Content
$HOSTS_CONTENT = (Get-Content -Path $HOSTS_PATH) | ? {$_.trim() -ne "" } | Select-String -Pattern '# w(sl)|(in)_hosts' -NotMatch
# add custom hosts into hosts content
$HOSTS_CONTENT = $HOSTS_CONTENT + "`n$wslip $wsl_hosts # wsl_hosts`n$winip $win_hosts # win_hosts"
# write file
Out-File -FilePath $HOSTS_PATH -InputObject $HOSTS_CONTENT -Encoding ASCIIipconfig /flushdns | Out-Null

wsl2.ps1 文件的使用方法如下:









搞定之后测试一下,如下图:

WinSCP(Putty)访问 WSL2

1、卸载、重装 WSL2 里的 openssh-server

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

2、在sshd_config里把PasswordAuthentication这一项后面改为“yes”

sudo vi /etc/ssh/sshd_config

3、重启 ssh

sudo /etc/init.d/ssh restart

4、输入 ifconfig 查询 Windows10 用的 IP 地址

5、用 WinSCP 通过用户名密码连接

注:每次启动 WSL2 后要手动开启 ssh 服务。开启命令如下:

sudo /etc/init.d/ssh start

或者

sudo service ssh start

127.0.0.1 配置域名

WSL2 随 Windows 自动启动

一、wsl2 Ubuntu-18.04 里的操作
1、新建 init.wsl 文件

sudo vim /etc/init.wsl

2、init.wsl 文件的内容

#! /bin/sh
service docker start
# 自动加载 ssh 服务
service ssh --full-restart

ESC 然后 :wq 保存退出。
3、授权

sudo chmod +x /etc/init.wsl

二、在 Window 10 里的操作
1、新建 linux-start.vbs 文件,内容如下:

Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d Ubuntu-18.04 -u root /etc/init.wsl"

2、开机启动 linux-start.vbs
(1) Win+R 输入 shell:startup
(2) 将 linux-start.vbs 放到这里。

重启

在 Windows 10 中新建 reboot.bat,内容如下:

net stop LxssManager
net start LxssManager

需要的时候执行,然后再手动打开 Ubuntu-18.04 就可以了。

Windows 下看 WSL2 里的文件

打开文件夹,输入:\\wsl$ 即可。

WSL2 图形界面

完整参考知乎《WSL2中使用VcXsrv实现xfce4图形界面+声音传输》

这里对上面知乎中export DISPLAY部分的内容修改一下(自动获取 IP):

$ cd ~
$ vim .bashrcexport DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

安装配置好之后,在 Ubuntu-18.04 下通过如下命令启动 xfce4 就可以看到图形界面了:

startxfce4

退出图形界面在 Ubuntu-18.04 里按 Ctrl+C 就可以。

备份与还原

一、备份

一条命令即可备份,如下:

wsl --export Ubuntu-18.04 d:\wsl_backup\Ubuntu-18.04.tar

注意:要先在 D 盘建好 wsl_backup 文件夹。

二、还原

将 Ubuntu-18.04 的备份还原并重命名成 Ubuntu

wsl --import Ubuntu D:\wsl D:\wsl_backup\Ubuntu-18.04.tar

注意:要先在 D 盘建好 wsl 文件夹。

三、更多操作

1、删除

wsl --unregister Ubuntu

2、启动与关闭
1、启动Ubuntu
(1) wsl -d Ubuntu 以 root 身份登陆。
(2) wsl -d Ubuntu -u sugar 通过 -u 指定登陆用户。
2、关闭Ubuntu: wsl -t Ubuntu

PS

WSL2 太适合 Linux 入门了,推荐的最大原因是“抗造”,新手玩 Linux 一不小心就搞错点什么东西弄坏了系统造成麻烦。WSL2 不怕造坏了,因为就算坏了恢复也就几分钟的事。

WSL2 从性能来说,已经完全可以当作很多老鸟的生产力工具了。

从便携角度讲,老鸟出差工作还是推荐 Linux2Go + git 这样的不带笔记本组合(在这个电脑随处有的时代随便找个电脑插上就用,工作成果提交 git 远程库不怕丢)。新手用 Sugar 的 Linux2Go 有点奢侈,但硬件不坏的情况下 Sugar 可以终生免费恢复(运费自理),奢侈的做法适合有大志向的新手。

关注作者

欢迎扫码关注我的公众号MultiMCU EDU

提示:在公众号“关于我”页面可加作者微信好友。

喜欢本文求点赞,有打赏我会更有动力。

WSL2 真香!跟 Sugar 一起搞定 Windows 10 最佳 Linux 伴侣相关推荐

  1. 真香!一行代码搞定微信支付回调

    前言 微信支付成功之后,会对商户系统发送异步回调请求,来通知商户支付成功. 需要注意的是: 同样的通知可能会多次发送给商户系统,商户系统必须能够正确处理重复的通知 后台通知交互时,如果微信收到商户的应 ...

  2. win10php测试,window_Win10对决Win8:测试表明两者相比没有性能优势,目前,要搞清楚Windows 10性能相 - phpStudy...

    Win10对决Win8:测试表明两者相比没有性能优势 目前,要搞清楚Windows 10性能相当困难.要对这款计划于7月29日发布的操作系统进行测试并非易事,因为公众还不能安装RTM版本.微软一直没有 ...

  3. 第二天,终于搞定 —— 2014.10.28

    npm install 报错 bower ENOGIT git is not installed or not in the PATH 的问题终于搞定. 在angular-phonecat文件夹打开n ...

  4. 500块搞定Windows下NAS和高清播放平台

    本周五晚上自提了一套ION的离子平台准系统,虽说地儿在北京,但是真心有点远.幸好很快就把机器搞定,用起来不错,算是对得起这价格. 首先是主板,可以看到这家伙很小吧,当然这么小你就不要指望他的性能多逆天 ...

  5. hadoop启动页面_轻松搞定Windows下的Hadoop环境安装

    Hadoop集群肯定还是要在linux下使用好些,但是对于想尝鲜的开发者或者上层应用开发来说,在windows下搭建一个单节点的应用也是蛮有必要的,当然只作为开发测试环境. 一.环境准备 JDK安装 ...

  6. 几招搞定Windows 7累计补丁包的安装

    最近,有些用户在尝试安装微软Windows 7和Windows Server 2008 R2的累计补丁包时发现,其步骤并不是那么便利. 本文中谈到的一些小技巧可能对有些人会有帮助,这些小技巧源自微软的 ...

  7. 搞定windows server 2008 R2 中IE8的增强安全配置功能

    windows server 2008 R2 RTM 英文版 发布一段时间了 很多朋友都给自己的本本安装了,并启用了theme 效果和windows 7一样很舒服,还可以用 hyper-v 很爽的桌面 ...

  8. Windows - 30元搞定Windows Hello人脸解锁

    近些天,闲逛论坛的时候,发现一个让我眼前一亮的文章--使用红外镜头解锁Windows Hello解锁 对于我这个动手爱好者来说,实在是忍不住手痒痒. 说得好不如做的好,当天就在淘宝下单

  9. 录ppt的时候录光标_使用 PowerPoint 轻松搞定 Windows 电脑录屏丨一日一技

    此前给大家介绍过许多 在移动设备上录制屏幕 的方法,却很少提及桌面端的屏幕录制.但实际上在学习和工作中偶尔还是会碰到需要进行桌面端屏幕录制的情况.而近日我无意中发现了一个简便的录制 PC 电脑桌面的方 ...

  10. 两行代码教你搞定Windows系统微信双开

    第一步:桌面新建文本文档 第二步:输入以下内容 ,@echo off start "" "你的微信目录位置" start "" " ...

最新文章

  1. 一次 HashSet 所引起的并发问题
  2. Pthon JSON
  3. Tornado,展示一下模板渲染
  4. golang 切片 接口_Golang简单入门教程——函数进阶使用
  5. iphone4基本操作
  6. 私有属性和方法-伪私有属性和方法
  7. centos 杀死进程命令kill
  8. 周易Java_周易API接口_免费数据接口 - 极速数据
  9. 微信小程序组件知识点GET
  10. 用Scala实现简单的Web和API服务器
  11. Mac文件管理技巧:灵活的颜色标记,更好地分类
  12. MySQL表中部分字段生成视图_MySQL学习笔记之视图
  13. 【台大李宏毅机器学习】机器学习基本概念
  14. 2sum/3sum/ksum 问题
  15. wmb 开发的几个坑
  16. 判断char*是否为utf8编码
  17. hexo+gitHub 个人博客搭建及更换主题历程(特适合入门小白)
  18. 【看表情包学Linux】环境安装 | 安装XShell | 基本的账号管理
  19. 【java】json字符串转json文件
  20. 声音定位系统中一些问题

热门文章

  1. python里hist_python matplotlib模块: hist(直方图)
  2. Fabric实战(12)Fabric CA-账号服务器
  3. Java 设计模式最佳实践:四、结构模式
  4. 学了C语言想装x能干点啥?手把手教你写个聊天软件来玩玩
  5. 怎样用计算机玩CS,电脑建立局域网玩cs的三种方法
  6. chromecast投屏_Google的初代投屏神器Chromecast上手体验
  7. AOP应用(Transactions 事务)
  8. AD Migration Project
  9. 芭蕉树上第二十一根芭蕉-- matlab2017b安装的出现问题
  10. 经典论文阅读笔记——VIT、Swin Transformer、MAE、CILP