乘风破浪,遇见最美Windows 11之现代Windows开发运维 - 探索在WSLg中安装和运行国产操作系统统信(UOS)
前言
之前一直使用虚拟机 (Vmware) 来安装和运行 UOS,本地一直通过 WSL 挂着 Docker Desktop,两个同时开得话,性能实在不咋地,那么有没有办法在 WSLg 上直接安装和运行 UOS 呢,这样可以减少一个虚拟机开销?具体性能表现是否优于虚拟机 (Vmware) 呢?
这里准备探索的一个方案是,先通过虚拟机安装和运行一个 UOS 最新版本,然后把整个系统做个 tar 备份打包,接下来去 WSL 里面通过指定这个 tar 来导入。
准备
虚拟机安装和运行 UOS
这里就不罗嗦了,直接引用另外一篇博文:VMware Workstation Player/VMware Workstation Pro 虚拟机安装统信 OS(UOS)
建议就拿最新的 ISO 装一个纯净的出来。
因为后面备份整个系统,实际上需要 root 权限,但是 UOS 上需要开启开发者模式才能有 root,所以还需要激活下开发者模式。
备份系统之后,我们还需要将其转移到虚拟机之外,所以还要开启和 Windows 之间的目录共享。
查看 UOS 版本
cat /etc/os-version
在 Windows 10/11 上启用 WSLg
这里也不啰嗦,引用另外一片博文:两种开启姿势 (商店安装 + 内置启用) 并运行 GUI
备份 UOS
通过 tar 备份整个系统
这里使用tar
命令来针对/
目录来创建一个备份文件,并且我们将其保存到共享文件夹中,同时我们还要排除一些文件夹。
sudo tar --exclude=/proc --exclude=/lost+found --exclude=/tmp --exclude=/sys --exclude=/home --exclude=/mnt --exclude=/recovery -cvpzf /mnt/hgfs/outputSpace/uos105020.tgz /
这里注意,这个顺序还挺重要的,先要把
--exclude
写在前面。
这里-cvpzf
是五个tar
的命令选项,其中c
代表--create
创建,v
代表--verbose
显示执行过程,p
代表--same-permissions
保留所有东西原来的权限,z
代表--gzip
通过 gzip 指令处理备份文件,f
代表--file
指定备份文件。
紧接着的/mnt/hgfs/outputSpace/uos105020.tgz
代表存储位置,/
代表备份的目录,这里使用/
就代表 Linux 系统的根目录了。
接下来就是通过--exclude
指定一些需要排除的目录,包括很多临时文件目录 (/proc
、/lost+found
、/tmp
、/sys
),这里多排除了下/home
防止出错,排除了存储备份文件的目录/mnt
。
配置 Wslg
导入备份
通过使用 tar 文件导入任何 Linux 发行版,可在适用于 Linux 的 Windows 子系统 (WSL) 中使用该发行版(即使它不在 Microsoft Store 中提供)。
wsl --import $DistroName $InstallLocation $FileName
先创建一个存储导入系统的目录,比如G:\WslSpace\UOS
,作为$InstallLocation
的值。
然后$FileName
就是刚才那个 tar 备份目录的文件名,比如H:\outputSpace\uos105020.tgz
这里的$DistroName
我们可以自定义一个名字,比如就叫UOS
,这样好记忆。
执行导入命令即可:
wsl --import UOS G:\WslSpace\UOS H:\outputSpace\uos105020.tgz
验证导入
wsl -l -v
运行系统
wsl -d $DistroName
接下来通过-d
来运行UOS
这个新导入的发行版。
wsl -d UOS
有点遗憾,看来图形界面没有驱动起来。
添加用户
默认运行这个导入系统,是以root
用户运行的,如果需要切换到其他用户。
关闭系统
wsl --terminate $DistroName
接下来,关闭这个系统
wsl --terminate UOS
卸载系统
wsl --unregister $DistroName
接下来,卸载并注销系统
wsl --unregister UOS
启用普通用户
sudo apt update && sudo apt upgrade
sudo apt install passwd -y