windows开发神器-WSL2

2020-08-31 11:59:53 查看 2892 回复 0

因为在windows平台上开发的种种优(bi)势(duan).。
开发完以后我们需要再以服务器的平台测试一下。
以前我的选择是 虚拟机 或者 Docker。
本地安装linux环境,但是效率很感人。。。
最近发现微软6月份更新了wsl(以前也看过,但是限制很大)。
网上查看资料发现,这次更新还是很巨大的。基本上可以windows上实现linux运行代码的要求了。
下面开始记录安装过程。
1.先打开微软文档

https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
安装wsl2是有要求的。
要求如下:

至于wsl1 和 wsl2的区别请查看 https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions

2.安装适用于 Linux 的 Windows 子系统

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。

以管理员身份打开 PowerShell 并运行:

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

重新启动计算机,以完成 WSL 安装并更新到 WSL 2。

3.启用“虚拟机平台”可选组件

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动计算机,以完成 WSL 安装并更新到 WSL 2。

4.将 WSL 2 设置为默认版本

wsl --set-default-version 2

运行该命令后,你可能会看到此消息:WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel。 跟随链接(https://aka.ms/wsl2kernel),在文档中安装来自该页面的 MSI,以便在计算机上安装 Linux 内核供 WSL 2 使用。 安装内核后,请再次运行该命令,该命令应会成功完成而不显示消息。

其实总结就是需要更新一个驱动,打开 https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel 下载内核包,安装就好了。

5.安装所选的 Linux 分发版

打开 Microsoft Store,并选择你偏好的 Linux 分发版。

store

单击以下链接会打开每个分发版的 Microsoft Store 页面:

在分发版的页面中,选择“获取”。

ubuntustore

6.设置新分发版

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码

ubuntuinstall

如果你上面设置了默认wsl执行版本的话,它会默认用wsl2执行子系统。

如果没设置默认版本或者先安装的wsl1,这里可以将分发版版本设置为 WSL 1 或 WSL 2。

可以打开 PowerShell 命令行并输入以下命令(仅在 Windows 内部版本 19041 或更高版本中可用),来检查分配给每个已安装的 Linux 分发版的 WSL 版本:

wsl -l -v

aaaaa

若要将分发版设置为受某一 WSL 版本支持,请运行:

wsl --set-version <distribution name> <versionNumber

请确保将 <distribution name> 替换为你的分发版的实际名称,并将 <versionNumber> 替换为数字“1”或“2”。 可以随时更改回 WSL 1,方法是运行与上面相同的命令,但将“2”替换为“1”。

7.WSL 子系统的启动与关闭

此时,输入命令 wsl 或者 wsl  -d <distribution name> 即可启动。

停止WSL子系统命令:wsl --shutdown -n 系统名称,如果直接输入 wsl --shutdown ,会停止所有已启动的 WSL 子系统。

在管理员权限的 PoweShell 中输入命令:net stop LxssManager ,也可以停止 WSL 子系统。

8.使用 Windows Terminal

当然,为了更好的配合 WSL ,建议安装 Windows Terminal。

有了 Terminal ,可以直接打开所有已安装的 WSL 发行版:

dddd

Terminal 的配色方案,可以参考:https://iterm2colorschemes.com/

9.目录设置

在 WSL2 系统中可以直接访问 windows 磁盘文件,因此为了不增加 WSL系统 VHD 虚拟磁盘空间,我个人打算将一些安装软件包放在 F:\wsl 目录下,将网站web程序放在 E:\wwwroot 目录中。而在 wsl 系统中的访问路径分别是 /mnt/f/wsl 和 /mnt/e/wwwroot ,当然 WSL 这样直接访问 windows 磁盘会有很大的性能问题。后续使用中如果性能的降低超过了可忍受的程度,再考虑将这两个目录移动到 wsl 的虚拟磁盘。

打开 Windows 安全中心,病毒和威胁防护设置,管理设置,添加或删除排除项,添加排除项,将上述两个目录排除,这样会减少 windows 的系统性能占用。

fff

写到这里,就可以在wsl里安装需要的软件了。进行愉快的开发!
这里附加一些东西

微软商店里的wsl子系统里面的centos是收费的,但是我最喜欢centos怎么办呢?万能的github会满足你的,请看下面。

1、安装 Chocolatey

NuGet(读作New Get)是用于微软.NET开发平台的软件包管理器,是一个Visual Studio的扩展。Chocolatey 是基于 NuGet 的一个软件包管理器,就像 Linux 中的 yum 或 apt 一样,在 Windows10 中也可以用命令行安装程序了。

右键单击开始菜单,选择 Windows PowerShell(管理员),打开一个具有管理员权限的 PowerShell 窗口,输入命令并回车:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

完成后,输入命令:choco ,如果能正确显示版本号,说明安装成功。

官网文档:https://chocolatey.org/docs/installation

2、安装 LxRunOffline

LxRunOffline 是非常实用的 WSL 管理软件,可以备份、创建、恢复、导出WSL子系统,也可以安装适配 WSL 的任何 Linux 发行版,可以将 WSL 子系统安装到任意目录中。

在 PowerShell 窗口中输入命令安装LxRunOffline,安装完成后重启 PowerShell。

choco install lxrunoffline -y

bbbb

3、下载 CentOS 镜像

GitHub 上有开源的适用于 WSL 的 CentOS 系统安装镜像,打开项目页面,选择 CentOS8 分支,进入 docker 目录,下载文件 centos-8-x86_64.tar.xz ,假如下载后保存在 D 盘下。

https://github.com/CentOS/sig-cloud-instance-images/tree/CentOS-8-x86_64/dockergithub.com

4、安装 CentOS 镜像

安装WSL子系统的命令行格式为:

LxRunOffline install -n 自定义系统名称 -d 安装目录路径 -f 安装包路径.tar.xz

重新启动 PowerShell,输入命令安装 CentOS 镜像:

LxRunOffline install -n centos -d C:/centos -f D:\centos-8-x86_64.tar.xz

表示将 CentOS 系统安装到 C 盘的 centos 文件夹下,并且命名为 centos。注意:Windows 系统命令行中的文件路径和 Linux 系统不同,这里安装目录 C:/ 要用 Linux 方式的反斜线表示,是为了 WSL 使用;而安装包路径 D:\ 是为了 LxRunOffline 使用,是 Windows 下的路径。

cccc1

查看所有已安装镜像,能够显示已安装的 centos ,表示安装成功。

LxRunOffline.exe list

如果安装失败也会出现 centos 目录,安装失败重新安装时需要卸载镜像,另外安装目录在 C 盘在卸载时可能存在权限问题,卸载后如果目录没有删除可以手动删除目录。

卸载 WSL 系统镜像命令:

LxRunOffline.exe uninstall -n centos

本文参考:

https://zhuanlan.zhihu.com/p/188505502