掘金 后端 ( ) • 2024-04-20 09:52

highlight: an-old-hope theme: juejin

cover.jpg

WSL (Windows Subsystem for Linux)

什么是 WSL,这有详细的介绍以及文档

简单总结一下

  • 微软公司开发的一种兼容层;
  • 主要目的是提供一个兼容的 Linux 环境,使开发者可以在 Windows 上使用 Linux 工具和命令行界面,而无需设置和维护虚拟机或双系统启动;
  • 工作原理是将 Linux 内核集成到 Windows 操作系统中,通过虚拟化技术来模拟 Linux 环境。

为什么是 WSL + Docker

在 Winddows 中,运行 Linux 发行版有 WSL、虚拟机、Docker 等多种方式。从启动方式,性能,开发环境(IDE)支持,WSL 都是首选,同样也拥有着广泛的社区资源。

虚拟机的启动时间过长,存储空间过大,以及它需要更多的系统资源等等,将我劝退了。

Docker 有一个巨大的优势:不会出现『在我的机器上可以运行』,这点就足以让我喜欢它了。

WSL 允许用户在 Windows 系统中无缝运行 Linux 发行版,开发环境(IDE)支持,启动速度快,对于系统性能的影响也比较小。

因为开发环境(IDE)的支持 + Dokcer 的支持,可以让我无限的接近于服务器的环境下进行开发,所以选择了 WSL + Docker

简单列了 WSL 和 Docker 的情况,它们各有所长,更重要的还得是你自己的需求与偏好

WSL Docker 在 Windows 环境下直接运行 Linux 发行版 需要开启 Docker 后再开启容器 直接在 Windows 文件系统中访问文件,也可以在 Windows 和 Linux 之间共享剪贴板内容 通过启动时共享文件 想要在除了 Windows 环境下运行相对比较麻烦 可以在不同的环境下进行部署运行,保持一致的运行环境,不需要受到底层操作系统的影响 适合需要在 Windows 环境下直接运行 Linux 命令行工具和应用程序的开发者 适合于微服务架构和复杂的容器编排场景

WSL 和 WSL 2

官方推荐使用 WSL 2,因为它提供更快的性能和 100% 的系统调用兼容性。WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用,还有一个 例外情况(使用 WSL 1 而不是 WSL 2) 。 WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。更详细的对比 可以点开看看。

搭建 WSL 2 环境

一步到位

Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 可以直接运行

wsl --install

此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能,再根据提示进行下一步,最后这个环节就结束了!可以直接进行下一个环节。😄

手动安装步骤

  1. 启用适用于 Linux 的 Windows 子系统

    以管理员身份打开 PowerShell,然后输入以下命令

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

    72shots_so.png

  2. 具体的可以查看链接 检查运行 WSL 2 的要求

  3. 启用『虚拟机平台』功能。

    前面也说过『工作原理是将 Linux 内核集成到 Windows 操作系统中,通过虚拟化技术来模拟 Linux 环境』。运行以下命令,来开启『虚拟机平台』功能:

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

    313shots_so.png

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

  4. 下载 Linux 内核更新包

    如果不确定自己计算机的类型,或许这条命令对你有所帮助:

    systeminfo | find "System Type"
    

    下载完后,别告诉我你忘记运行安装了 😂 。

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

    执行这条命令 wsl --set-default-version 2,设置 WSL 2 为默认版本。

  6. 安装所需的 Linux 发行版

    有多种方式可以进行安装

    • 打开 Microsoft Store,搜索你需要的 Linux 发行版进行安装。
    • 在命令行输入 wsl --list --online,然后再执行 wsl --install -d <Distribution Name>, 是你需要安装的 Linux 发行版

    这里就按照 Ubuntu 进行安装了,因为默认是安装 Ubuntu 发行版,所以直接运行 wsl --install 就可以了。

489shots_so.png

安装完成后会自动启动,这时需要为新安装的 Linux 发行版创建一个账号,然后会以这个账号进行登录。

887shots_so.png

wsl --list --verbose 可以查看你当前已经安装的 Linux 发行版,以及其当前状态是什么,运行的 WSL 版本是多少。

那么到此处就已经搭建好 WSL 2 环境了!

迁移 Linux 发行版到其他位置(可选)

默认情况下,会安装在系统盘(C 盘)中,而你的系统盘(C 盘)的空间有限,随着子系统的使用,占用的空间会越来越大,最后就有可能系统盘(C 盘)空间不足导致子系统崩溃。

  1. 列出所有可用的 Linux 发行版

    wsl -l --all -v
    
  2. 停止运行你要迁移的 Linux 发行版(重要)

    wsl -t <Distribution Name>
    # wsl -t Ubuntu
    

    当 Linux 发行版未停止时,就开始进行导出,那么有可能会导致数据的丢失,或者是产生不可预测的情况发生。

  3. 导出 Linux 发行版

    wsl --export <Distribution Name> <FileName>
    # wsl --export Ubuntu F:\WSL\Ubuntu.tar
    # 以下仅 WSL 2 的情况下支持
    # wsl --export Ubuntu F:\WSL\Ubuntu.vhdx
    

    这两种导出格式都可以,但是 vhdx 仅在 WSL 2 的版本下支持

  4. 卸载 Linux 发行版

    执行这一步一定要注意,已经完整的导出需要卸载的 Linux 发行版,此操作为不可撤销行为!

    wsl --unregister <DistributionName>
    # wsl --unregister Ubuntu
    
  5. 导入 Linux 发行版

    wsl --import <Distribution Name> <InstallLocation> <FileName>
    # wsl --import Ubuntu F:\WSL\Ubuntu F:\WSL\Ubuntu.tar
    # wsl --import Ubuntu F:\WSL\Ubuntu F:\WSL\Ubuntu.vhdx
    
    • <Distribution Name> Linux 发行版的名称
    • <InstallLocation> Linux 发行版数据镜像文件存放的文件夹路径
    • <FileName> 导出的备份文件路径
  6. 设置默认 Linux 发行版

    当你还是想要将这个 Linux 发行版设置为默认启动项时,可以执行此命令

    wsl --set-default <Distribution Name>
    # wsl --set-default Ubuntu
    
  7. 设置登录账号

    当迁移之后,默认会使用 root 账号进行登录,并非是初始安装是设置的账号进行登录的,所以这个时候需要进行修改登录账号

    <DistributionName> config --default-user <Username>
    # Ubuntu config --default-user administrator
    

    此命令仅可设置已存在的账号,否则会被提示 id: ‘admin’: no such user

到此迁移单个 Linux 发行版就结束了

Zsh(Z Shell)是一个强大的替代 Shell(可选)

在 Linux 中,默认的 Shell 是 Bash(Bourne Again Shell),而 Zsh(Z Shell)是作为一种功能强大的替代品,为用户提供了更多特性和定制选项。

Zsh 的出现是为了弥补传统 Unix Shell 的一些不足,并提供更多的功能和改进。

todo: 在此处可以贴一张对比图,bash 的命令行界面和 zsh 安装插件后的命令行界面

安装并使用 Zsh

  1. 使用包管理器安装 Zsh。在大多数 Linux 发行版中,你可以使用以下命令来安装 Zsh:

    sudo apt install zsh   # Ubuntu/Debian
    # sudo yum install zsh   # CentOS/RHEL
    # sudo dnf install zsh   # Fedora
    
  2. 安装完成后,使用以下命令验证是否安装成功

    zsh --version
    
  3. 使用以下命令,设置 Zsh 为默认使用 Shell:

    chsh -s $(which zsh)
    

    设置完成后,就可以重启了。

  4. 重启后,你会发现这个命令行界面,这是告诉你 Zsh 为新用户提供的配置功能,因为你没有 Zsh 启动文件,在这里可以不用管它,因为接下来会使用 Oh My Zsh 进行配置,所以这里直接输入 q 即可。 5.png

Oh My Zsh

Oh My Zsh 是一个开源项目,为 Zsh 提供了一个强大的框架,用于管理 Zsh 的配置和插件。一句话解释就是:它能配置巨强大的插件和巨漂亮的主题!

  1. 安装 Oh My Zsh

    可以执行以下某行命令来进行安装,具体看你的 Linux 发行版安装了哪个网络操作工具

    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    # sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    # sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    

    正常情况都是会超时的,当然会有特殊情况了😜,超时了没关系,以下某行命令可以解决你的问题

    sh -c "$(curl -fsSL https://install.ohmyz.sh/)"
    # sh -c "$(wget -O- https://install.ohmyz.sh/)"
    # sh -c "$(fetch -o - https://install.ohmyz.sh/)"
    

    6.png

    安装完成后,就可以开始配置巨强大的插件和巨漂亮的主题了!

  2. 漂亮的主题

    进入到内置主题目录下 cd ~/.oh-my-zsh/themes,你能查看到如下上百个内置主题

    7.png

    当你想要使用其他主题时,vim ~/.zshrc,从中找到默认值 ZSH_THEME="robbyrussell" 替换成你想要使用的主题,例如: ZSH_THEME="kennethreitz",主题文件名即可,后缀不需要了,替换完成后需要执行 source ~/.zshrc,重新打开 WSL 即可看到配置的主题

    8.png

    看了一下 What’s the best theme for Oh My Zsh? 这个排名,我发现了 TOP 1 是真的不错,强烈推荐🥳

    下载安装使用试试吧!

    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
    
    # 中国用户可以使用 gitee.com 上的官方镜像加速下载
    # git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
    

    然后在 ~/.zshrc 设置 ZSH_THEME="powerlevel10k/powerlevel10k",别忘了 source ~/.zshrc,当执行完这一条命令时,你就需要根据提示进行下一步,就可以配置成功了。

    9.png

  3. 强大的插件

    要使用安装好的插件,需要编辑 vim ~/.zshrc 文件,找到 plugins=(git) 这里是已经开启了 git 插件。当需要增加其他的插件时,将 plugins=(git web-search) 即可,注意『使用空格去区分不同的插件』!

    10.png

    配置完成后记得执行 source ~/.zshrc 让你的配置生效! web-search 这个插件可以使用默认的浏览器进行打开搜索,直接在命令行输入

    baidu 天气预报
    

    11.png

    这里就推荐两个我觉得不错的插件,还有更多的插件可以去 awesome-zsh-plugins 这里看看!

    • zsh-syntax-highlighting

      zsh-syntax-highlighting 是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。

      ~/.oh-my-zsh/custom/plugins 这个是插件的安装目录,输入下面的命令可以直接进行安装:

      git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
      

      看看效果图吧 12.png

    • zsh-autosuggestions

      zsh-autosuggestions 是一个命令提示插件,当你输入命令时,会自动推测你可能需要输入的命令,按下按键 可以快速采用建议。

      ~/.oh-my-zsh/custom/plugins 这个是插件的安装目录,输入下面的命令可以直接进行安装:

      git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
      

      看看效果图吧

      13.png

到这 Zsh 就已经安装完成了,但是要注意,这是你当前登录的用户上存在的,而要在 root 用户或者是其他用户下也使用,那就需要进行重新配置,建议配置不同的主题来区分不同的用户。

Docker

Docker 是一种工具,使用容器进行创建、部署和运行应用程序。 容器使开发人员可以将应用与需要的所有部件(库、框架、依赖项等)打包为一个包一起交付。这就不会造成『在我的机器上可以运行』,非常 nice 👍

安装与配置

下载链接 贴在这里了,下载好后,直接开始安装,按照默认选项就可以了。

14.png 安装完成启动后,打开设置界面 -> 常规,选中使用基于 WSL 2 的引擎

15.png

然后在资源 -> WSL integration,启用已安装的 WSL 2 发行版

16.png

保存后,进入选择的 WSL 2 发行版,输入以下命令,来检测是否安装正常工作

docker run hello-world

看到以下界面就是成功了!

17.png

在命令行中输入 wsl -l -v,你能看到多出来两个 Docker 的桌面发行版,默认是安装在 C:\Users\当前用户名\AppData\Local\Docker\wsl,如果你需要移动到其他位置,可以看看上面的 迁移 Linux 发行版到其他位置(可选)

VS Code

安装与配置

下载链接 贴在这里了,下载好后,开始安装,记得要选中『添加到 PATH』选项,这样就方便在 WSL 中直接使用命令 code . 打开文件夹。

18.png

安装完成后,直接打开这个 链接 进行安装 VS Code 扩展,里面包含了以下扩展

  • Remote - SSH 使用 SSH 打开远程机器/虚拟机上的文件夹,在任何位置处理源代码。
  • Remote - Tunnels 使用 VS Code Tunnel(而不是 SSH)打开远程机器/虚拟机上的文件夹,在任何位置处理源代码。
  • Dev Containers 通过打开挂载到容器中或容器内的任何文件夹,使用单独的工具链或基于容器的应用程序。
  • WSL 通过打开 WSL 中的任何文件夹,从 Windows 中获得舒适的 Linux 开发体验。

18.png

安装完成后,打开方式也有多种

  • 在 WSL 中,使用 code .,将会使用 VS Code 打开当前文件夹

19.png

  • 左下角,点击打开远程窗口,选择『连接到 WSL』

20.png

它是使用默认登录账号进行打开文件夹,所以对于文件的权限需要注意!

到这,整篇就结束啦!