本文初衷是想在非默认目录下安装WSL,查阅资料后用LxRunOffline了解并实现了WSL自定义安装
虽说目前的 WSL 在 Windows 10 生态中已经越发成熟,但在实际使用中依旧存在一些不足之处,比如目前 WSL 的 Linux 发行版必须通过 Windows Store 或者旁加载安装包的形式安装到系统中。另外市面上 WSL 发行版也只有寥寥几款,且 WSL 只能默认安装到系统盘中,如果原本系统盘容量较小,就很容易造成 Windows 的系统盘空间不足。虽然可以修改windows应用安装位置,或者使用 wsl --export
和 wsl --import
这两个命令对 WSL 进行打包再自定义目录安装,但依靠本文提到的实用 WSL 管理软件:LxRunOffline,可以实现安装任意发行版到任意目录、转移已安装的 WSL 目录、备份 WSL、设置默认用户和修改环境变量等操作,完全碾压 wsl、wslconfig 这些简陋原生管理命令。
LxRunOffline 与其说是软件,实际上只有两个文件,安装方式可以使用类似 choco 或者 scoop 这样的 Windows 包管理系统进行安装
scoop bucket add extras
scoop install lxrunoffline
choco install lxrunoffline
当然最为简单的安装办法则是直接在其 GitHub 上下载安装,文件下载并解压缩之后,直接拷贝到 C:\Windows\System32
即可,如果需要未来可以通过右键菜单功能执行某些功能操作,则需要以管理员权限打开终端,再执行regsvr32 LxRunOfflineShellExt.dll
,完成功能注册。
值得注意的是,开发者并没有在 GitHub 上给出任何选项参数说明,你需要在终端内直接输入 lxrunoffline
查看。
如果你没有使用过 WSL ,首先以管理员身份运行 PowerShell (WIN+X , A),输入下面的命令开启 “适用于 Linux 的 Windows 子系统” 功能,并重启计算机。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
下载 WSL 官方离线包,你会得到一个后缀为.appx
的文件,改后缀名为.zip
,解压后文件夹中会有名为 install.tar.gz
的文件。
本文安装的是ubuntu2004,其它版本没有实测,但方法会在后面讲到
lxrunoffline i -n <WSL名称> -d <安装路径> -f <安装包路径>.tar.gz
首先我们可以通过 LxRunOffline 的 Wiki 页面来查看如何找到各种发行版的下载路径,实际上 WSL (特指第一代)并非是完整版的 Linux 环境,可以将其理解成一个基于微软订制的 Linux 内核加上各种 Linux 发行版软件的结合体,因此我们想要安装其他发行版,其实就是找到各个发行版推出的基于 Docker 或者 核心版 ,而无需关心 Linux 内核部分。
lxrunoffline i -n <WSL名称> -d <安装路径> -f <安装包路径>.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
里面,并且创建桌面快捷方式。
以此类推,我们也可以就此安装比如 Fedora、ArchLinux 等 Linux 发行版
当修改过 WSL 的名称或目录后就无法通过微软官方提供的方法设置默认用户。这时可以使用 LxRunOffline 进行设置。
使用 LxRunOffline 新安装的 WSL 默认是以 root 用户登录,如果你需要默认以普通用户进行登录,就需要进行下面的操作。
首先运行 WSL ,输入以下命令创建用户:
useradd -m -s /bin/bash <用户名>
然后对该用户设置密码,输入命令后会提示输入两次密码。
passwd <用户名>
授予该用户 sudo 权限。
usermod -aG sudo <用户名>
查看用户 UID
,一般是 1000
。
id -u <用户名>
按 Ctrl+D
退出 WSL ,在 PowerShell
中输入以下命令:
lxrunoffline su -n <WSL名称> -v 1000(UID)
root 用户的 UID 为 0,所以可以直接在 PowerShell 输入以下命令进行设置:
lxrunoffline su -n <WSL名称> -v 0
默认情况下,如果你通过 Microsoft Store 下载发行版安装 WSL 都会默认安装到系统盘,如果你的系统盘较小很容易造成后面的容量紧张,LxRunOffline 的好处在于你可以将 WSL 转移到非系统盘中,从而降低 WSL 对系统盘的空间占用。
LxRunOffline l
类似于
wsl -l
。LxRunOffline 不会显示默认 WSL ,查看默认 WSL 需要使用lxrunoffline gd
命令。
lxrunoffline m -n <WSL名称> -d <路径>
比如我将 Ubuntu 转移到我的 D 盘下的 D:\Linux\Ubuntu中:
LxRunOffline m -n Ubuntu -d D:\Linux\Ubuntu
lxrunoffline di -n <WSL名称>
例如
LxRunOffline di -n Ubuntu
如果终端返回 D 盘的位置表示转移目录成功,这个功能支持所有的 WSL 安装模式,当然包括从 Microsoft Store 安装或者通过 LxRunOffline 安装。
实际上你可以将备份看作是 LxRunOffline 安装 WSL 的「逆操作」,比如我目前电脑中只安装了 Ubuntu 发行版,然后需要将其备份到移动存储或者备份文件服务器中,那么命令就是:
lxrunoffline e -n <WSL名称> -f <压缩包路径>.tar.gz
例如:
lxrunoffline e -n Ubuntu -f D:\dev\backupwsl\ubuntu_back.tar.gz
其中D:\dev\backupwsl\ubuntu_back.tar.gz
为保存的备份文件和对应的路径,并且备份路径下还会生成 xml 格式的配置文件,用于在后面进行还原。
类似但不等同于
wsl --export
。LxRunOffline 备份完会生成一个.xml后缀的同名配置文件,比如<压缩包路径>.tar WSL.tar.gz.xml
。
还原工作就类似安装过程,只不过 LxRunOffline 会读取同目录下的 xml 文件并写入相关的配置:
lxrunoffline i -n <WSL名称> -d <安装路径> -f <压缩包路径>.tar.gz
比如我需要还原我安装的 Ubuntu,那么命令就是:
lxrunoffline i -n Ubuntu -d D:\Linux\ubuntu -f D:\dev\backupwsl\ubuntu_back.tar.gz
其中D:\Linux\ubuntu就是安装的路径,这样之前的备份就会被正式还原了。
类似但不等同于
wsl --import
。LxRunOffline 会读取备份时生成的配置文件并写入配置,前提是同目录且同名。否则你需要加入<安装路径> <压缩包路径>.tar -c
参数指定配置文件。
在 LxRunOffline 管理 WSL 要比原生 WSL 方便快捷的多,当然也包括了原生 WSL 命令行工具的一些功能。
在有多个 WSL 的情况下,可以指定运行某个发行版。
lxrunoffline r -n <WSL名称>
等同于wsl -d
lxrunoffline ur -n <WSL名称>
例如取消注册我安装的 WSL 发行版 CentOS 的命令就是:
lxrunoffline ur -n CentOS
不过取消注册并非删除文件,如果删除文件还需要进入原来的安装目录手动删除。
lxrunoffline s -n <WSL名称> -f <快捷方式路径>.lnk
LxRunOffline 还可以实现一个功能就是生成 WSL 的桌面快捷方式,尤其是安装的 WSL 发行版一多,除非使用类似 Microsoft Terminal 的多标签页终端进行管理启动,否则启动某一个发行版必须要在命令行执行,所以我们可以使用 LxRunOffline 来为某一款发行版生成桌面快捷方式,比如我安装的 Ubuntu 希望生成桌面快捷方式,那么命令就是:
lxrunoffline s -n Ubuntu -f C:\Users\NB-PM\Desktop\Ubuntu.lnk
当然默认快捷方式是没有logo 的,这里你也可以手动在更改发行版的 Logo 文件然后让他看上去更像是一款独立应用。
设置默认 WSL 后,可以在 cmd
和 powershell
中输入 wsl 直接调用默认的 WSL 。
lxrunoffline sd -n <WSL名称>
等同于wsl -s
查看 WSL 名称
wsl -l
查看 WSL 安装目录
lxrunoffline di -n <WSL名称>
导出指定的 WSL 配置文件到目标路径
lxrunoffline ec -n <WSL名称> -f <配置文件路径>.xml
配置信息可以输入lxrunoffline sm -n
查看
取消注册(这个操作不会删除目录)
lxrunoffline ur -n <WSL名称>
使用新名称注册
lxrunoffline rg -n <WSL名称> -d <WSL路径> -c <配置文件路径>.xml
[1]. 想安装更多 Linux 发行版?LxRunOffline 让 WSL 更好用-by化学心情下2
[2]. LxRunOffline 使用教程 - WSL 自定义安装、备份-by P3TERX