自从微软在 Windows 10 v1809 中正式引入 Windows Subsystem for Linux (WSL)之后,我们终于可以以非虚拟机的形式在 Windows 上使用 Linux。同样也进一步地扩展了 Windows 10 的生产力优势,使得在 Windows 10 直接针对 Linux 环境进行项目开发也成为可能。
关联阅读:不用装双系统,直接在 Windows 上体验 Linux:WSL
虽说目前的 WSL 在 Windows 10 生态中已经越发成熟,但在实际使用中依旧存在一些不足之处,比如目前 WSL 的 Linux 发行版必须通过 Windows Store 或者旁加载安装包的形式安装到系统中。另外市面上 WSL 发行版也只有寥寥几款,且 WSL 只能默认安装到系统盘中,如果原本系统盘容量较小,就很容易造成 Windows 的系统盘空间不足。再加上羸弱的 WSL 官方命令行管理工具,实际使用起来也非常不方便。显然如果想要在 Windows 10 上让 WSL 可能还真的需要一些「新手段」。
仅仅两个文件,让 WSL 比以往更好用
这个新手段就是 WSL 的第三方工具 LxRunOffline,这个由国人开发的 WSL 工具可以弥补 WSL 官方工具的不足,比如说他可以实现将任何发行版的 Linux 以 WSL 形式安装到 Windows 10 中,增强 WSL 发行版管理功能,甚至可以实现 WSL 系统备份和恢复,这样无论是学习 Linux 还是进行开发工作都要比以往操作更为方便。
LxRunOffline 与其说是软件,实际上只有两个文件,安装方式可以使用类似 choco 或者 scoop 这样的 Windows 包管理系统进行安装:
scoop 安装:
scoop bucket add extras
scoop install lxrunoffline
choco 安装
choco install lxrunoffline
当然最为简单的安装办法则是直接在其 GitHub 上下载安装,文件下载并解压缩之后,直接拷贝到 C:\Windows\System32
即可,如果需要未来可以通过右键菜单功能执行某些功能操作,则需要以管理员权限打开终端,再执行regsvr32 LxRunOfflineShellExt.dll
,完成功能注册。
LxRunOffline 同样也是一个基于命令行的工具,你可以认为是 WSL 内置命令行工具的扩展版,下面我们就实际的使用场景来介绍它的独特之处。
使用 LxRunOffline 安装自定义发行版
现在我们打开 Microsoft Store 搜索 WSL 发行版,除了 Debian、Ubuntu、SuSE 等官方发行版之外,其他就是由第三方开发者推出的「魔改」发行版。显然对于很多习惯于使用特定发行版的朋友而言非常不方便,比如说我在生产环境中习惯使用 CentOS,就无法通过 Microsoft Store 作为 WSL 发行版进行安装,那么使用 LxRunOffline 则可以突破这个限制。
首先我们可以通过 LxRunOffline 的 Wiki 页面来查看如何找到各种发行版的下载路径,实际上 WSL (特指第一代)并非是完整版的 Linux 环境,可以将其理解成一个基于微软订制的 Linux 内核加上各种 Linux 发行版软件的结合体,因此我们想要安装其他发行版,其实就是找到各个发行版推出的基于 Docker 或者核心版,而无需关心 Linux 内核部分。
比如我习惯的 CentOS,如果想要作为 WSL 安装到 Windows 10 中就必须找到针对云环境推出的发行版,这里找到 CentOS 的 Docker 镜像网站 ,在 sig-cloud-instance-images 中切换到希望下载的版本分支,比如这里我找到非常熟悉的 CentOS 7.8,然后下载里面的「centos-7.8.2003-x86_64-docker.tar.xz」。
下载完毕之后,将其保存到一个全英文的目录中,然后接下来就可以执行安装了,这里直接打开终端执行以下的命令:
LxRunOffline install -n CentOS -d D:\linux\centos -f D:\softbackup\centos-7.8.2003-x86_64-docker.tar.xz -s
这里的执行的命令意思是,将位于D:\softbackup\
的 centos-7.8.2003-x86_64-docker.tar.xz
镜像以 WSL 形式安装到 目录D:\linux\centos
里面,并且创建桌面快捷方式。
不过一会儿你就可以看到安装执行情况,当桌面出现快捷方式之后双击就可以启动当前的 WSL 的 Bash 了。
以此类推,我们也可以就此安装比如 Fedora、ArchLinux 等 Linux 发行版,不过考虑到现阶段大部分的 WSL 对于图形化的应用支持很有限,大多数情况下主要和 Shell 界面打交道,所以不同风味的发行版实际体验差别并不大。
使用 LxRunOffline 调整 WSL 的安装位置
默认情况下,如果你通过 Microsoft Store 下载发行版安装 WSL 都会默认安装到系统盘,如果你的系统盘较小很容易造成后面的容量紧张,LxRunOffline 的好处在于你可以将 WSL 转移到非系统盘中,从而降低 WSL 对系统盘的空间占用。
首先我们需要确定安装了哪些 WSL
LxRunOffline l
确定需要转移目录的发行版的名字 ,比如截图中我安装的 Ubuntu。
然后输入一下命令,比如我将 Ubuntu 转移到我的 D 盘下的 D:\Linux\Ubuntu
中:
LxRunOffline m -n Ubuntu -d D:\Linux\Ubuntu
最后查看路径看是否已经完成
LxRunOffline di -n Ubuntu
如果终端返回 D 盘的位置表示转移目录成功,这个功能支持所有的 WSL 安装模式,当然包括从 Microsoft Store 安装或者通过 LxRunOffline 安装。
备份/恢复 WSL 发行版
WSL 就像一个个独立的开发环境,所以当真的将其用于生产环境就必须考虑其安全问题,定时的备份以及数据恢复就必不可少,而这里备份 WSL 也是 LxRunOffline 的一项「必杀技」。
实际上你可以将备份看作是 LxRunOffline 安装 WSL 的「逆操作」,比如我目前电脑中只安装了 Ubuntu 发行版,然后需要将其备份到移动存储或者备份文件服务器中,那么命令就是:
lxrunoffline e -n Ubuntu -f D:\dev\backupwsl\ubuntu_back.tar.gz
其中D:\dev\backupwsl\ubuntu_back.tar.gz
为保存的备份文件和对应的路径,并且备份路径下还会生成 xml 格式的配置文件,用于在后面进行还原。
而还原工作就类似安装过程,只不过 LxRunOffline 会读取同目录下的 xml 文件并写入相关的配置,比如我需要还原我安装的 Ubuntu,那么命令就是:
lxrunoffline i -n Ubuntu -d D:\Linux\ubuntu -f D:\dev\backupwsl\ubuntu_back.tar.gz
其中D:\Linux\ubuntu
就是安装的路径,这样之前的备份就会被正式还原了。
使用 LxRunOffline 运行 WSL
除了上面的那些堪称「大改动」调整,其实在 LxRunOffline 管理 WSL 要比原生 WSL 方便快捷的多,当然也包括了原生 WSL 命令行工具的一些功能,例如取消注册我安装的 WSL 发行版 CentOS 的命令就是:
lxrunoffline ur -n CentOS
不过取消注册并非删除文件,如果删除文件还需要进入原来的安装目录手动删除。
LxRunOffline 还可以实现一个功能就是生成 WSL 的桌面快捷方式,尤其是安装的 WSL 发行版一多,除非使用类似 Microsoft Terminal 的多标签页终端进行管理启动,否则启动某一个发行版必须要在命令行执行,所以我们可以使用 LxRunOffline 来为某一款发行版生成桌面快捷方式,比如我安装的 Ubuntu 希望生成桌面快捷方式,那么命令就是:
lxrunoffline s -n Ubuntu -f C:\Users\NB-PM\Desktop\Ubuntu.lnk
当然默认快捷方式是没有logo 的,这里你也可以手动在更改发行版的 Logo 文件然后让他看上去更像是一款独立应用。
其他的一些诸如修改默认的 WSL 发行版以及使用命令行来启动 WSL 等操作则基本上和 WSL 原生的工具功能基本一致,这里就不详细展开了。
结语
总的来说,虽然和 WSL 的原生命令行工具一样,LxRunOffline 同样基于命令行,但就从使用上而言打破了 WSL 的原本局限,使得 WSL 可以不再局限于某些特定的发行版,可以对安装的多个发行版统一管理,当然 LxRunOffline 目前还不能做到对 WSL 原生工具的完全替代(比如 WSL 转 WSL 2 仍需要官方工具),但如果你有大量接触使用 WSL 的需求,那么 LxRunOffline 绝对值得一试。