ITPub博客

首页 > 数据库 > 数据库开发技术 > Windows就是Linux:WSL带来全新Linux开发体验

Windows就是Linux:WSL带来全新Linux开发体验

原创 数据库开发技术 作者:云原生AI百宝箱 时间:2024-04-29 21:40:16 0 删除 编辑

作为Windows系统内置的一个革命性新功能,Windows Subsystem for Linux(WSL)让开发者在Windows环境中直接体验Linux的强大功能。你可以在Windows上一键安装各种Linux发行版,运行命令行工具、编程语言环境、数据库和服务器等,还能运行Linux GUI应用程序并与Windows桌面无缝集成。最新的WSL 2版本更是在文件系统、GPU利用、系统集成等多方面有突破性提升,成为Windows开发者高效使用Linux,提高跨平台开发效率的最佳拍档。

WSL

WSL是适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

  • • 使用 WSL 安装和运行各种 Linux 发行版,例如 Ubuntu、Debian、Kali 等。 安装 Linux 发行版[1]并从 Microsoft Store[2] 接收自动更新、导入 Microsoft Store 中不可用的 Linux 发行版[3],或构建你自己的客户 Linux 发行版[4]。

  • • 将文件存储在独立的 Linux 文件系统中,具体取决于安装的发行版。

  • • 运行命令行工具,例如 BASH。

  • • 运行常用的 BASH 命令行工具(例如 grep、sed、awk)或其他 ELF-64 二进制文件。

  • • 运行 Bash 脚本和 GNU/Linux 命令行应用程序,包括:

    • • 工具:vim、emacs、tmux

    • • 语言:NodeJS[5]、JavaScript、Python[6]、Ruby、C/C++、C# 和 F#、Rust、Go 等。

    • • 服务:SSHD、MySQL[7]、Apache、lighttpd、MongoDB[8]、PostgreSQL[9]。

  • • 使用自己的 GNU/Linux 分发包管理器安装其他软件。

  • • 使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。

  • • 在 Windows 上调用 GNU/Linux 应用程序。

  • • 运行直接集成到 Windows 桌面的 GNU/Linux 图形应用程序[10]

  • • 使用你的设备 GPU 加速 Linux 上运行的机器学习工作负载[11]。

WSL 有着不同的版本,其中 WSL 2 现在是默认版本

比较 WSL 1 和 WSL 2

功能 WSL 1 WSL 2
Windows 和 Linux 之间的集成 ✅ ✅
启动时间短 ✅ ✅
与传统虚拟机相比,占用的资源量少 ✅ ✅
可以与当前版本的 VMware 和 VirtualBox 一起运行 ✅ ❌
托管 VM ❌ ✅
完整的 Linux 内核 ❌ ✅
完全的系统调用兼容性 ❌ ✅
跨 OS 文件系统的性能 ✅ ❌
systemd 支持 ❌ ✅
IPv6 支持 ✅ ✅

WSL和VirtualBox,VMware对比

特性 VMware VirtualBox WSL
类型 基于 Hypervisor 的虚拟化 基于 Hypervisor 的虚拟化 操作系统级虚拟化
虚拟化 在主机操作系统上运行虚拟机 在主机操作系统上运行虚拟机 在 Windows 内核上运行 Linux
客操作系统支持 广泛的操作系统支持(Linux、Windows、macOS) 广泛的操作系统支持(Linux、Windows、macOS) 仅限于 Linux 发行版
资源使用 高 中等 低
复杂度 复杂的设置和管理 复杂的设置和管理 易于设置和管理
高级功能 快照、克隆、VMotion 快照、克隆、USB 设备支持 无
与 Windows 集成 有限的集成 有限的集成 无缝集成
使用场景 运行非 Linux 操作系统、资源密集型工作负载 运行非 Linux 操作系统、资源密集型工作负载 运行 Linux 环境、DevOps、测试

接下来,我们说说WSL的安装使用。

windows 设置

1. 打开控制面板 点击程序

2. 点击启用或者关闭windows功能

3. 开启下面红框选项

4.之后确定并且重启

配置好了,然后可以安装 ubuntu.

安装Ubuntu20.04到C盘

安装在 C 盘安装比较简单,直接在 Windows 应用商店 下载 Ubuntu 20.04 安装即可。

你可以从 打开 microsoft store安装, 快捷键 win + q 输入 microsoft Store 打开微软商店 搜索 ubuntu 点击获取。ubuntu 有很多的版本,建议选择较新的版本,版本之间的差距不是很大。

如果你是中国用户,因为网络原因 无法打开microsoft store 可以去官网上安装。

https://learn.microsoft.com/en-us/windows/wsl/install-manual

下载完成后一路点击next 安装就可以, 安装成功就你就可以在你的电脑中看到你的Linux子系统了。

安装Ubuntu20.04到D盘

下面是将 Ubuntu20.04 安装在D盘的部分:

首先先在你喜欢的盘创建一个文件夹,比如D:\wsl\ubuntu20.04,我比较喜欢D盘,因为这样即便是重装系统我也不用重新装软件。

然后进到这个文件夹 下载ubuntu20.04

Invoke-WebRequest -Uri https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx -OutFile Ubuntu20.04.appx -UseBasicParsing

我演示用的是D:\wsl\ubuntu20.04,等他下载完即可,文件有432M多,等一会是正常的

然后执行下面四条命令。如下图

Rename-Item .\Ubuntu20.04.appx Ubuntu.zip
Expand-Archive .\Ubuntu.zip -Verbose
cd .\Ubuntu\
.\ubuntu2004.exe

这个图我是直接进了wsl,因为我已经安装过了。你们第一次安装的话会弹出一个黑框框等几分钟这样,然后输你想要的入用户名和密码就行

最后可以在powershell里面 , 看看自己安装的版本

$ wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2

Ubuntu20.04:apt换源

因为我们国内访问外网比较慢,所以我一般是会换成清华源,另外请注意,wsl的Ubuntu证书是过期的,如果你想手动换源的话请记得先更新证书

不过我已经写好脚本了

直接在Linux里执行,即可换成清华源

wget https://gitee.com/lin-xi-269/tools/raw/master/os/QHubuntu20.04 && bash QHubuntu20.04

apt换源脚本

# https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
VERSION=QH20.04
sudo apt-get install --only-upgrade ca-certificates  
wget https://gitee.com/lin-xi-269/tools/raw/master/source/$VERSION
sudo mv /etc/apt/sources.list /etc/apt/sources.list.back
sudo mv $VERSION /etc/apt/sources.list
sudo apt-get update 
sudo apt-get upgrade 

apt源内容

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

WSL高级用法

1. 限制内存

当计算机在使用时,CPU会将需要操作的数据传输到内存中进行操作,然后在操作完成后传递结果。 WSL2(Linux 的 Windows 子系统)即使在不需要时也会保留大量RAM。它可以消耗 Windows 上总内存的 50% 或 8GB,以较小者为准;在 20175 之前的版本上:Windows 上总内存的 80%。 Vmmem 负责虚拟机进程和内存管理。这意味着进程是虚拟机跳动的心脏,Vmmem 的所有活动和应用程序都在此发生。 用户设置具有大量内存和 CPU 的虚拟机是 Vmmem 需要大量内存的主要原因,因为这通常会导致他们消耗所有可用资源。

解决方法

按下Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹

新建文件 .wslconfig ,如果存在就覆盖,重新配置一个,然后记事本编辑:

# Settings apply across all Linux distros running on WSL 2
[wsl2]
memory=4GB
swap=2GB
localhostforwarding=true

参数解释:

  • • memory:分配给WSL的内存,根据自己的内存去分配哦,我的内存是16G的,我分配了4G

  • • swap:设置交换分区的容量

  • • localhostForwarding:用于指定绑定到 WSL VM 中的通配符或 localhost 的端口是否应可通过 localhost:port 从主机连接。

WSL 将检测这些文件是否存在、读取内容,并在每次启动 WSL 时自动应用配置设置。

保存文件后,重启 WSL

wsl --shutdown

或者重启计算机也行

查看 linux 内存,进入 linux 输入如下:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          3.8Gi        79Mi       3.7Gi       0.0Ki        35Mi       3.6Gi
Swap:         2.0Gi          0B       2.0Gi

wsl.conf[12] 和 .wslconfig[13] 文件用于针对每个发行版 (wsl.conf) 和全局跨所有 WSL 2 发行版 (.wslconfig) 配置高级设置选项。 本指南将介绍每个设置选项、何时使用每种文件类型、存储文件的位置、示例设置文件和提示。

wsl.conf 和 .wslconfig 之间有什么差别?

参考:WSL 中的高级设置配置[14]

可以为已安装的 Linux 发行版配置设置,使它们在你每次启动 WSL 时自动应用,有两种方法:

  • • .wslconfig[15] 用于在 WSL 2 上运行的所有已安装发行版中配置全局设置。

  • • wsl.conf[16] 用于为在 WSL 1 或 WSL 2 上运行的每个 Linux 发行版按各个发行版配置本地设置。

这两种文件类型都用于配置 WSL 设置,但存储文件的位置、配置的范围、可配置的选项类型,以及运行发行版的 WSL 版本都会影响应选择的文件类型。

WSL 1 和 WSL 2 使用不同的体系结构运行,并会影响配置设置。 WSL 2 作为轻型虚拟机 (VM) 运行,因此请使用让你能够控制内存或处理器使用量的虚拟化设置(使用 Hyper-V 或 VirtualBox 的话可能会比较熟悉)。

2. Xshell连接wsl2下的Ubuntu

卸载ssh,再安装ssh

sudo apt-get remove --purge openssh-server   ## 先删ssh
sudo apt-get install openssh-server          ## 在安装ssh  
sudo rm /etc/ssh/ssh_config                  
sudo service ssh --full-restart

修改配置文件

sudo vim /etc/ssh/sshd_config

更改以下配置项

Port 6666
ListenAddress 0.0.0.0
PasswordAuthentication yes
PermitRootLogin yes

给wsl设置root密码

sudo passwd root

连接xshell

主机号设置为127.0.0.1,端口号设为刚刚设置的6666,即可连接

3. Windows和Linux文件互访

windows访问Linux目录

wsl2的套路变了,linux的文件系统整个是个镜像文件,启动系统后,这个文件系统映射到了 \\wsl$\系统名 下面

\\wsl$\Ubuntu-20.04\

Linux访问windows文件

windows的磁盘被挂载到了/mnt下,可以直接访问

$ ll /mnt
total 8
drwxr-xr-x  5 root root 4096 Apr 27 13:51 ./
drwxr-xr-x 19 root root 4096 Apr 28 11:03 ../
drwxrwxrwx  1 fly  fly  4096 Apr 27 14:23 c/
drwxrwxrwx  1 fly  fly  4096 Apr 27 13:51 d/
drwxrwxrwt  2 root root   60 Apr 28 11:03 wsl/

4. WSL常用命令

https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

wsl --status //检查 WSL 状态
wsl //进入默认的发行版本,退出执行 exit
wsl -l -v //列出已安装的 Linux 发行版
wsl --terminate //终止指定的发行版或阻止其运行
例:wsl --terminate Ubuntu-18.04
wsl --shutdown //重启wsl服务
wsl --set-default //设置默认 Linux 发行版
wsl --set-version //将WSL版本设置为1或2
wsl --set-default-version //设置默认 WSL 版本
wsl --distribution --user //运行特定的Linux发行版
wsl -u , wsl --user //以特定用户的身份运行
wsl config --default-user //更改发行版的默认用户
wsl --unregister //注销或卸载 Linux 发行版

window terminal

如果你在你的window电脑中有多个window子系统, 你可以下载 window terminal 来进行管理 。

使用 Windows 终端可以打开多个标签页或窗口窗格,显示并快速切换多个 Linux 发行版或其他命令行(PowerShell、命令提示符、Azure CLI 等)。你可以使用独特的配色方案、字体样式、大小、背景图片和自定义键盘快捷键完全自定义你的终端。

下载地址: https://learn.microsoft.com/en-us/windows/terminal/install

常见问题

1. Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel

如果你安装过程出现了错误, 可能需要你把wsl升级到wsl2

 .\ubuntu2004.exe
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel

Press any key to continue...
  1. 1. 复制并访问地址https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

  2. 2. 下载并安装 wsl 2 的升级软件

    1. 1. Linux 内核更新包会安装最新版本的 WSL 2 Linux 内核[17],以便在 Windows 操作系统映像中运行 WSL。 (若 要运行 Microsoft Store 中的 WSL[18] 并更频繁地推送更新,请使用 wsl.exe --install 或 wsl.exe --update。)

    2. 2. 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

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

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

wsl --set-default-version 2

4.然后重新打开 ubuntu,显示正在安装就没有问题了

2. Windows下WSL Ubuntu中登录root账号的密码

今天刚从Microsoft Store中下载了Ubuntu 20.04 LTS,使用的时候发现只能注册自己的个人账户,而不是root账户,那也就是说自己一开始设置的账户密码无法登录root账户,因此想到可能是系统有默认的密码,后面上网查看才知道,原来是这样的:

Ubuntu 的默认 root 密码是随机的,即每次开机都有一个新的 root 密码。

我们可以在终端输入命令 sudo passwd,然后输入当前用户的密码,终端会提示我们输入新的密码并确认,此时的密码就是 root 新密码。

修改成功后,输入命令 su root,再输入新的密码就 ok 了。

引用链接

[1] 安装 Linux 发行版: https://learn.microsoft.com/zh-cn/windows/wsl/install
[2] Microsoft Store: https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions#wsl-in-the-microsoft-store
[3] 导入 Microsoft Store 中不可用的 Linux 发行版: https://learn.microsoft.com/zh-cn/windows/wsl/use-custom-distro
[4] 构建你自己的客户 Linux 发行版: https://learn.microsoft.com/zh-cn/windows/wsl/build-custom-distro
[5] NodeJS: https://learn.microsoft.com/zh-cn/windows/nodejs/setup-on-wsl2
[6] Python: https://learn.microsoft.com/zh-cn/windows/python/web-frameworks
[7] MySQL: https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-database
[8] MongoDB: https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-database
[9] PostgreSQL: https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-database
[10] GNU/Linux 图形应用程序: https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps
[11] GPU 加速 Linux 上运行的机器学习工作负载: https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gpu-compute
[12] wsl.conf: https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconf
[13] .wslconfig: https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconfig
[14] WSL 中的高级设置配置: https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config
[15] .wslconfig: https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconfig
[16] wsl.conf: https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconf
[17] WSL 2 Linux 内核: https://github.com/microsoft/WSL2-Linux-Kernel
[18] Microsoft Store 中的 WSL: https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions#wsl-in-the-microsoft-store



- END -




推荐阅读




原文作者:云原生AI百宝箱;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-06-25

  • 博文量
    70
  • 访问量
    34368