• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 windows10上使用 WSL2 安装 ubuntu 系统(支持 systemd)

    Windows子系统 WSL

    作为一名程序员,很多时候需要 Linux 环境,WSL 就是 win10 推出的新功能:Linux 子系统,全称Windows Subsystem for Linux,和虚拟机一样,可以安装特定的 Linux,可让开发人员按原样运行 GNU/Linux 环境,包括大多数命令行工具、实用工具和应用程序,且不会产生传统虚拟机或双启动设置开销。

    简单来说,以前在 windows 中使用 Linux,需要安装 vmware 等虚拟机,现在则不比这么麻烦了,直接安装使用微软 Linux 子系统,毕竟是 Windows 原程序,兼容性好,运行稳定,速度又快。2019 年又发布了第二代(WSL2),性能进一步提升。WSL2 的主要目标就是运行一个完整的 Linux 内核,所以在架构上与 WSL1 完全不同。

    微软官方使用说明:
    WSL 文档
    安装 WSL
    设置 WSL 开发环境

    2022 年 9 月微软官方发布声明,wsl 已经支持 systemd

    启用 WSL2 条件

    安装 WSL,需要Windows 10版本 2004+(内部版本 19041+)或Windows 11

    若要检查 Windows 版本及内部版本号,选择Windows 徽标键+R,然后键入winver,然后回车。

    若您的电脑是最新版本的 Windows(内部版本 20262+),那么可以在使用PowerShell命令行工具中,使用安装命令:

    wsl --install
    

    命令执行以下操作:

    • 启用可选的 WSL 和虚拟机平台组件。
    • 下载并安装最新 Linux 内核。
    • 将 WSL 2 设置为默认值。
    • 下载并安装 Ubuntu Linux 发行版(可能需要重新启动)。

    在此安装过程中,你将需要重启计算机。


    手动安装 WSL2

    本文是手动安装,不使用命令式安装。

    安装 WSL 2,需要Windows 10版本 2004+(内部版本 19041+)或Windows 11

    启用“虚拟机平台”和“WSL子系统”可选组件

    安装使用 WSL 2,必须启用“虚拟机平台”功能。计算机需要虚拟化功能才能使用 WSL 子系统。

    控制面板->卸载程序->启用或关闭Windows功能
    勾选上“适用于 Linux 的 Windows 子系统”、勾选上“虚拟机平台”。windows自动安装组件,然后重启电脑。



    安装Linux分发版本 Ubuntu 20

    打开Microsoft Store,搜索Ubuntu,点击 Ubuntu 20,然后点“获取”。

    首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。然后安装,需要为新的 Linux 分发版创建用户帐户和密码。

    祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

    检查分配给每个已安装的 Linux 分发版的 WSL 版本:

    wsl -l -v
    或者
    wsl wsl --list --verbose
    

    关闭WSL2命令

    wsl --shutdown
    


    开启 systemd 支持

    登录刚安装分发版 Ubuntu,执行命令:

    echo -e "[boot]\nsystemd=true" | sudo tee -a /etc/wsl.conf
    

    此命令会创建/etc/wsl.conf文件,并且写入设置:

    [boot]
    systemd=true
    

    然后,关闭 WSL 分发版 Ubuntu,再重启 WSL 实例,登录 Ubuntu。判断 wsl 是否已启用 systemd,可通过以下命令查看:

    ps --no-headers -o comm 1
    

    如果命令返回的是 init 说明 systemd 未启用,如果是 systemd 那么你的 systemd 已启用成功了。

    查看已启用的 systemd service

    systemctl list-unit-files --type=service
    


    安装 Windows 终端

    • cmd 是和 Powershell 都可以做命令行交互,批处理和 powershell 脚本功能也相当。Windows PowerShell 是专为系统管理员设计的新 Windows 命令行 shell。PowerShell 兼容原来的 cmd,命令统一使用 cmdlet 命令格式(动词-名词)。Windows PowerShell 包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。此外,使用 Windows PowerShell 提供程序还可以访问其他数据存储,如注册表和数字签名证书存储,就像访问文件系统一样容易。
    • Window Terminal(Windows终端)是微软在Build 2019大会上发布的面向Windows10的新命令行程序,terminal集成了Windows上的PowerShell、cmd、Windows Linux子系统(WSL)三大环境。可以设置为默认启动Ubuntu。

    打开 Microsoft Store,搜索Window Terminal,然后点“获取”。然后等待下载安装。

    安装后打开终端时,它会在打开的选项卡中通过 PowerShell 作为默认配置文件启动。

    打开开始菜单,拖动Windows Terminal图标到桌面,可得到一个桌面快捷方式,这个快捷方式需要一直保留。从中使用Ubuntu。

    Windows Terminal 快捷键

    终端操作

    • Ctrl + d/exit 退出当前Termina1
    • Ctrl + l/clear 清除屏幕
    • Ctrl + Alt + t/Ctrl + shift+n 打开新终端窗口
    • Ctrl + shift + t 打开新终端标签页
    • Ctrl + shift + c 复制
    • Ctrl + shift + v 黏贴
    • Ctrl + Pageup/Pagedown 左右切换标签页
    • Ctrl + s 暂停屏幕输出
    • Ctrl + q 继续屏幕输出
    • Ctrl + k 删除当前光标位置至末尾的所有内容
    • Ctrl + u 删除当前光标位置至开头的所有内容
    • Shift + Pageup/Pagedown 上下滚动屏幕
    • Ctrl + win +上下键切换console控制台的最大化
    • F11 全屏切换

    光标移动

    • Ctrl + a 移动到本行开头
    • Ctrl + e 移动到本行结尾
    • Ctrl + p 上一个命令(或者方向键的上箭头)
    • Ctrl + n 下一个命令(或者方向键的下箭头)
    • Alt + b 往回移动一个word(或者Option+Right-Arrow)
    • Alt + f 往前移动一个word(或者Option+Left-Arrow)
    • Ctrl + f 往前移动光标
    • Ctrl + b 往回移动光标
    • Ctrl + xx 选中当前光标字符与本行首字符之间的所有内容

    迁移wsl上的Linux系统

    上述方法,ubuntu默认是安装在C盘下,C:\Users\admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc。其中admin是自己本机电脑上用户名。若哪天重新了C盘系统,web开发数据也会丢失,所以放到其他磁盘会更安全些。在E盘下新建wsl文件夹,把系统迁移过去。

    打开Windows客户端,wsl查看已安装的linux发行版本

    wsl -l -v
    

    导出已安装的发行版本。将已经安装的 Ubuntu-20.04 打包成 Ubuntu-20.04.tar

    wsl --export Ubuntu-20.04 e:\wsl\Ubuntu-20.04.tar
    

    注销已导出的发行版本

    wsl --unregister Ubuntu-20.04
    

    重新安装已导出的发行版本。wsl --import <安装发行版本名称><安装发行版本路径><tar文件>--version <wsl版本>

    wsl --import Ubuntu-20.04 e:\wsl\Ubuntu-20.04 e:\wsl\Ubuntu-20.04.tar --version 2
    

    进入E:\wsl\Ubuntu-20.04目录,能看到ext4.vhdx文件,它就是子系统的虚拟硬盘文件。

    wsl命令

    wsl.exe[参数][选项...][命令行]
    用于运行 Linux 二进制文件的参数
    参数[选项...][命令行]
    不带参数
    如果未提供命令行,wsl.exe 将启动默认的 shell。
    --exec,-e <命令行>
    执行指定的命令而不使用默认的 Linux shell。
    • --distribution,-d <分发版>
      运行指定的分发。
    • --user,-u <用户名>
      以指定用户身份运行。
    --
    按原样传递剩余的命令行。
    用于管理适用于 Linux 的 Windows 子系统的参数
    参数[选项...][命令行]
    --export <分发版><文件名>
    将分发导出到 tar 文件。对于标准输出,文件名可以是-。
    ----import <分发版><安装位置><文件名>[选项]
    将指定的 tar 文件作为新分发进行导入。对于标准输入,文件名可以是-。
    --list,-l[选项]
    列出分发。
    • --all
      列出所有分发,包括当前正在安装或卸载的分发。
    • --running
      只列出当前正在运行的分发。
    • --quiet,-q
      只显示分发名称。
    • --verbose,-v
      显示有关所有分发的详细信息。
    --set-default,-s <分发版>
    将分发设置为默认值。
    --set-default-version <版本>
    更改新分发的默认安装版本。
    --set-version <分发版><版本>
    更改指定分发的版本。
    --shutdown
    立即终止所有正在运行的分发和 WSL 2 轻型工具虚拟机。
    --terminate,-t <分发版>
    终止指定的分发。
    --unregister <分发版>
    注销分发。
    --help
    显示用法信息。

    卸载wsl上安装的Linux系统

    直接使用wsl命令:

    wsl --unregister Ubuntu-20.04
    

    第一步:鼠标左键点击电脑屏幕左下角的 win图标,然后点“设置”

    第二步:然后点“应用”

    第三步:在应用列表中,找到Ubuntu,点击“卸载”