wsl子系统安装位置修改
wsl命令说明(wsl --help):
用法: wsl.exe [Argument] [Options...] [CommandLine] 运行 Linux 二进制文件的参数: 如果未提供命令行,wsl.exe 将启动默认 shell。 --exec, -e <CommandLine> 在不使用默认 Linux Shell 的情况下执行指定的命令。 -- 按原样传递其余命令行。 选项: --cd <Directory> 将指定目录设置为当前工作目录。 如果使用了 ~,则将使用 Linux 用户的主页路径。如果路径 以 / 字符开头,将被解释为绝对 Linux 路径。 否则,该值一定是绝对 Windows 路径。 --distribution, -d <Distro> 运行指定分发。 --user, -u <UserName> 以指定用户身份运行。 管理适用于 Linux 的 Windows 子系统的参数: --help 显示用法信息。 --install [选项] 安装额外的适用于 Linux 的 Windows 子系统分发。 要获得有效分发列表,请使用“wsl --list --online”。 选项: --distribution, -d [参数] 按名称下载并安装分发。 参数: 有效分发名称(不区分大小写)。 示例: wsl --install -d Ubuntu wsl --install --distribution Debian --set-default-version <Version> 更改新分发的默认安装版本。 --shutdown 立即终止所有运行的分发及 WSL 2 轻型工具虚拟机。 --status 显示适用于 Linux 的 Windows 子系统的状态。 --update [选项] 如果未指定任何选项,则 WSL 2 内核将更新 到最新版本。 选项: --rollback 还原到 WSL 2 内核的先前版本。 用于管理适用于 Linux 的 Windows 子系统中的分发的参数: --export <Distro> <FileName> 将分发导出到 tar 文件。 对于标准输出,文件名可以是 –。 --import <Distro> <InstallLocation> <FileName> [Options] 将指定的 tar 文件作为新分发导入。 对于标准输入,文件名可以是 –。 选项: --version <Version> 指定要用于新分发的版本。 --list, -l [Options] 列出分发。 选项: --all 列出所有分发,包括 当前正在安装或卸载的分发。 --running 仅列出当前正在运行的分发。 --quiet, -q 仅显示分发名称。 --verbose, -v 显示所有分发的详细信息。 --online, -o 显示使用“wsl --install”进行安装的可用分发列表。 --set-default, -s <分发> 将分发设置为默认值。 --set-version <分发> <版本> 更改指定分发的版本。 --terminate, -t <分发> 终止指定的分发。 --unregister <分发> 注销分发并删除根文件系统。
子系统的备份还原(修改子系统的位置):
- Step1: 通过 wsl -l --running 查看正在运行的子系统
- Step2: 若有正在运行的子系统,则通过 wsl -t <DistributionName> 来终止其运行
- Step3: 利用 wsl --export <DistributionName> <FileName> 来备份子系统,结果会得到一个tar归档文件。假设有名为Ubuntu-20.04的子系统, 想要将结果文件保存为Ubuntu2004.tar(同时指定其路径即为F:\Ubuntu2004.tar),则调用的命令为 wsl --export Ubuntu-20.04 F:\Ubuntu2004.tar
- Step4: 然后利用 wsl --import <DistributionName> <InstallLocation> <FileName> 来恢复子系统。例如: wsl --import Ubuntu2004 F:\Ubuntu2004\ F:\Ubuntu2004.tar (新恢复的子系统命名为Ubuntu,不能与已有的子系统相同)
- Step5:使用 wsl --unregister Ubuntu-20.04 注销原始子系统。(卸载原先的子系统)
关于默认登录用户:
还原完的子系统默认登录用户为root,如果需要修改的话,可以在注册表修改,修改位置:
计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{9a125916-2f84-413b-aac7-26ef934a83fd}/DefaultUid
其中“{9a125916-2f84-413b-aac7-26ef934a83fd}”可能不一样,该注册表存着的是Ubuntu默认用户的uid值(16进制),可以登录子系统通过命令 id <username> 获取。