当前位置: 首页 > Linux

@WSL2ConfigureWSL2fromscratch

时间:2023-04-06 20:55:45 Linux

WSL简介WSLWSL全称WindowsSubsystemforLinux,官方翻译为“WindowsSubsystemforLinux”(个人感觉LinuxSubsystem翻译成Windows更符合中文语言习惯).以下是微软对WSL的官方描述:Linux的Windows子系统让开发人员可以按原样运行GNU/Linux环境——包括大多数命令行工具、实用程序和应用程序——而无需产生传统的虚拟机或双引导设置开销。您可以:在MicrosoftStore中选择您喜欢的GNU/Linux发行版。运行常见的命令行软件工具(例如grep、sed、awk)或其他ELF-64二进制文件。运行Bashshell脚本和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应用程序。WSL2WSL2是WindowsSubsystemforLinux架构的新版本,它使WindowsSubsystemforLinux能够在Windows上运行ELF64Linux二进制文件。它的主要目标是提高文件系统性能,以及添加完整的系统调用兼容性。这种新架构改变了这些Linux二进制文件与Windows和计算机硬件交互的方式,但仍提供与WSL1(当前广泛可用的版本)相同的用户体验。单个Linux发行版可以在WSL1或WSL2架构上运行。每个发行版都可以随时升级或降级,您可以同时运行WSL1和WSL2发行版。WSL2使用全新的架构,受益于运行真正的Linux内核。简单来说,WSL2是WSL的增强版,它的实现与WSL不同,WSL2拥有完整的Linux内核,更接近真实的Linux使用场景。为什么使用WSL和WSL2?我们日常的很多工作和学习都会涉及到与Linux系统的交互。学院的课程中也有很多基于Linux的知识和命令。如果我们日常的工作和使用环境是Linux,那还好,不用切换也能无缝衔接。但Windows毕竟是市场占有率最高的操作系统。有很多人在他们的办公/日常环境中需要Windows,而在他们的开发环境中需要Linux。这对在Windows环境中使用Linux提出了一些要求。面对这种需求,目前有以下几种集中常用的解决方案:目前我们可以选择的解决方案:WSL方案是微软近两年拥抱开源后推出的一个非常好的方案;使用WSL,Windows和Linux子系统将共享同一个文件系统,Windows创建的文件也可以被Linux子系统访问和修改,反之亦然。我们可以使用WSL中的三剑客命令查询分析windows文档、日志,使用shell命令或者bash脚本运行windows中存储的linux程序,甚至可以在WSL中创建docker容器,使用dockerdesktop在windows下进行可视化管理。对于需要在双系统环境中来回切换的人来说尤其方便。总之,使用WSL不仅可以使用windows的图形化操作界面,还可以使用Linux方便的命令行工具,满足了我在windows下使用linux的需求。下面介绍如何搭建和使用Winux系统。WSL和WSL2的区别为什么要升级到WSL2使用过第一代WSL的朋友一定遇到过一些痛苦的兼容性问题。这些问题都是由于WSL的不完善造成的。毕竟WSL只是一个接入Linux环境的兼容层,并没有实现Linux内核的全部功能。比如我就遇到过这些情况:Go的Debug进程无法启动,导致调试Go程序非常麻烦。需要在WSL下安装单独的Docker引擎,并进行额外的配置。在WSL下启动VSCode后,会出现目录下的文件。占用,导致无法重命名,必须先退出VSCode,不能正常使用Linux下的所有命令,比如netstat和WSL2提供了一个基于Hyper-V功能子集的“真正的Linux内核”,所以出现以上问题也都解决了。同时WSL2也支持Windows10家庭版,因此之前家庭版无法使用DockerDesktop的情况已经成为历史。这对于习惯使用Linux开发,但又需要Windows来玩游戏,又不想使用盗版的有志青年来说是一大福音。安装WSL2官方WSL2安装指南WSL2仅适用于Windows10,版本2004,内部版本19041或更高版本。如果是更早的版本,需要参考官方文档手动安装配置WSLLinux系统权限options="metadata,umask=22,fmask=111"mountFsTab=true[filesystem]##Octalmaskofpermissionsto对所有文件和目录进行排除umask=022##不加载Windows中的PATH内容[interop]appendWindowsPath=false##注意,WSL2默认的/etc/hosts会在每次重启时自动更改,需要添加/etc/wsl.conf,内容如下#192.168.50.88win#[network]##true设置WSL生成/etc/hosts。主机文件包含主机名到IP地址的静态映射。#generateHosts=false##true设置WSL生成/etc/resolv.conf。resolv.conf包含能够将给定主机名解析为其IP地址的DNS列表。#generateResolvConf=false##设置在新的WSL实例启动时运行的命令。此示例启动Docker容器服务。[boot]systemd=true#command=servicedockerstart