@WSL2 从零开始配置WSL2

WSL简介

WSL

WSL全称Windows Subsystem for Linux,官方翻译“适用于Linux的Windows子系统”(个人觉得翻译成Windows的Linux子系统更符合国人语言习惯)。以下是微软官方对WSL的描述

适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

您可以: 在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。 运行常用的命令行软件工具(例如 grep、sed、awk)或其他 ELF-64 二进制文件。 运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括: 工具:vim、emacs、tmux 语言:NodeJS、Javascript、Python、Ruby、C/ C++、C# 与 F#、Rust、Go 等。 * 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。 使用自己的 GNU/Linux 分发包管理器安装其他软件。 使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。 在 Windows 上调用 GNU/Linux 应用程序。

WSL 2

WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。

这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。

单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。

简单来说WSL2是WSL的加强版,其实现方式与WSL不同,并且WSL 2拥有完整的Linux内核、更贴近真实Linux的使用场景。

为什么要使用WSL&WSL 2 ?

我们日常工作学习中有很多涉及与Linux系统的交互,学院的课程中也有大量的以Linux为基础的知识和命令,如果我们日常工作与使用环境就是Linux那还好,无需切换就可无缝对接。但Windows毕竟是市场占有率最高的操作系统,有大量的人群办公\日常环境需要Windows,而开发环境需要Linux。这就产生了一些在Windows环境下使用Linux的需求。面对这个需求目前有如下集中常用解决方案:目前我们可选择的解决方案:
image.png
WSL方案是微软近两年拥抱开源后推出的一个非常棒的解决方案;使用WSL,Windows与Linux子系统将共用同一文件系统,Windows创建的文件Linux子系统也可以访问并修改,反之亦然。我们可以在WSL中使用三剑客命令查询分析windows文档、日志、使用shell命令或者bash脚本运行存储在windows中的linux程序、甚至在WSL中创建docker容器,在windows下使用docker desktop进行可视化管理。特别方便有双系统环境来回切换需求的人。总之使用WSL既可以使用windows的图形化操作界面又可以使用Linux便捷的命令行工具,很好的满足了我在windows下使用linux的需求。接下来我将介绍如何打造及使用Winux系统。

WSL与WSL 2差异

image.png

为什么要升级到WSL2

用过 WSL 第一代的朋友一定都遇到过一些比较蛋疼兼容性的问题,这些问题是由于 WSL 并不“完整”导致的。说到底 WSL 还只是一个用于访问 Linux 环境的兼容层,并没有实现 Linux 内核的完整功能。比如,我遇到了这些情况:

  • 无法启动Go的 Debug 进程,导致调试Go程序很麻烦
  • 需要在 WSL 下单独安装一套 Docker 引擎,并进行额外配置
  • 在 WSL 下启动 VS Code 后,会出现目录中文件被占用的情况,导致无法重命名,必须要先退出 VS Code
  • 无法正常使用 Linux 下全部命令,比如netstat

而 WSL2 基于Hyper-V功能的子集提供了“真正的 Linux 内核”,因此上述问题也被解决了。同时,WSL2 也 支持 Windows 10 家庭版,因此之前家庭版不能用 Docker Desktop 的情况也已经成了历史。 这对于习惯使用 Linux 开发,但是又需要 Windows 玩游戏,同时不希望用盗版的有志青年们来说简直是天大的福音。

安装WSL 2

WSL2官方安装指南

只有 Windows 10 版本 2004 的内部版本 19041 或更高版本中才提供 WSL 2。如果是更早期的版本,需要参照官方文档手动安装

配置WSL 2

WSL2官方配置指南

wsl.conf/.wslconfig 配置参考

[automount]
enabled = true
root = /mnt/
## metadata 是否将元数据添加到 Windows 文件以支持 Linux 系统权限
options = "metadata,umask=22,fmask=111"
mountFsTab = true
[filesystem]
## 要对所有文件和目录排除的权限的八进制掩码
umask = 022
## 不加载Windows中的PATH内容
[interop]
appendWindowsPath = false
## 注意,WSL2默认/etc/hosts每次重启会自动改变,需要添加/etc/wsl.conf,内容如下
# 192.168.50.88 win
#[network]
## true 将 WSL 设置为生成 /etc/hosts。 hosts 文件包含主机名对应的 IP 地址的静态映射。
#generateHosts = false
## true 将 WSL 设置为生成 /etc/resolv.conf。 resolv.conf 包含能够将给定主机名解析为其 IP 地址的 DNS 列表。
#generateResolvConf = false
## Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
systemd=true
#command = service docker start

异人文录
只谈技术,不谈未来,路口的选择仅仅决定的是风景。

我创造,所以我生存。

24 声望
2 粉丝
0 条评论
推荐阅读
@docker gitlab部署配置参考
官方参考地址docker-compose.yml {代码...} gitlab.rb {代码...} root_password.txt {代码...}

Blueye阅读 810

使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...

李朝阳4阅读 781

Python实现Windows弹出微信消息通知(可显示发送人和消息内容)
Mac微信是有一个消息通知的,这一点就挺好的,有时候根本不用点开开看就能看到消息内容。而Windows电脑版是没有这个消息通知的,只有右下角图标闪烁。

TANKING3阅读 3.9k评论 1

封面图
麒麟操作系统 (kylinos) 从入门到精通 - 故障排查篇
OS平台:银河麒麟桌面操作系统(飞腾版)V10 SP1操作系统镜像:Kylin-Desktop-V10-SP1-General-Release-2203-ARM64

Oulaa3阅读 1.6k

封面图
linux中用户登录加载配置文件的过程
shell的类型(站在用户登录登录的角度)登录式shell正常通过某终端登录su - USERNAMEsu -l USERNAME非登录式shellsu USERNAME图形终端下打开命令窗口自动执行的shell脚本用户登录时相关的bash配置文件全局配置文件/...

Dabric阅读 5.3k评论 3

在Linux上查看活跃线程数与连接数
现如今,有两种常见的软件资源几乎成了Java后端程序的标配,即线程池与连接池,但这些池化资源非常的重要,一旦不够用了,就会导致程序阻塞、性能低下,所以有时我们需要看看它们的使用情况,以判断这里是否是瓶颈。

扣钉日记3阅读 1k

封面图
Ubuntu 20.04 搭建 Elasticsearch 7.x 小集群(qbit)
环境ES 节点硬件:3 台 AWS m5.4xlarge(16 vCPU/64GB 内存)Kibana 硬件:1 台 AWS m5.large(2 vCPU/8GB 内存)操作系统:Ubuntu 20.04 LTSElasticsearch 7.9.3Kibana 7.9.3机器示意图操作系统这里主要讲 EBS ...

qbit阅读 3.8k

我创造,所以我生存。

24 声望
2 粉丝
宣传栏