在 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[参数][选项...][命令行]
参数 | [选项...][命令行] |
---|---|
不带参数 如果未提供命令行,wsl.exe 将启动默认的 shell。 | |
--exec,-e <命令行> 执行指定的命令而不使用默认的 Linux shell。 |
|
-- 按原样传递剩余的命令行。 |
参数 | [选项...][命令行] |
---|---|
--export <分发版><文件名> 将分发导出到 tar 文件。对于标准输出,文件名可以是-。 | |
----import <分发版><安装位置><文件名>[选项] 将指定的 tar 文件作为新分发进行导入。对于标准输入,文件名可以是-。 | |
--list,-l[选项] 列出分发。 |
|
--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,点击“卸载”