15 Star 0 Fork 2

openKylin / openkylin-wsl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

介绍

使用 Multistrap 工具制作根文件系统,Multistrap是一个工具,可以用来构建一个完整的、可启动的、根文件系统。这个根文件系统可以被 Docker 和 WSL 使用。

使用

安装

首先需要下载 Linux 内核更新包,参考:旧版 WSL 的手动安装步骤 | Microsoft Learn

1696769473237

将 WSL 2 设置为默认版本

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

wsl --set-default-version 2

方法一

yangtze.multistrap 是配置文件。

bash build.sh
sudo tar -cf ok.tar.gz -C /yangtze-rootfs .

方法二

在新位置导入WSL。 选一个存放虚拟磁盘的文件夹,起名为openkylin。
openkylin-docker中下载的ok.tar.gz复制到上面的文件夹里面,比如复制到了d:\openkylin,然后执行下面的命令:

cd d:\openkylin
wsl --import openkylin .\ .\ok.tar.gz --version 2

上面的openkylin是容器名,可以自定义,但是自己改完之后后面修改默认用户会比较麻烦。

默认用户为xxx,密码:35785214
Root密码:35785214

新增用户

可以使用wsl -d openkylin进入系统中,此时进入的是root账户。

  1. 使用passwd root可以修改root账户密码。
  2. 新增用户xxxx到sudo组:useradd -g sudo xxxx
  3. 修改xxxx密码:passwd xxxx
  4. 添加家目录:mkdir /home/xxxx
  5. 设置家目录权限:chmod 777 -R ~(本来应该设置755,但一些程序运行不对劲,所以这里改777了)

设置默认登陆用户

方法一

现在已经有了账户,但默认登陆还是root。
如果想改成上面的xxxx,可以随便找一个wsl的安装程序,比如deepin.exe,用他来快速配置:

  1. deepin.exe拷贝到c:\openkylin并改名成openkylin.exe
  2. 执行.\openkylin.exe config --default-user xxxx如果不报错,默认用户就变成xxxxx了

上面的方法可以用,但是不建议;可参考下面的方法二设置默认用户:

方法二

使用 wsl.conf 进行配置,进入 wsl ,编辑 wsl.conf 配置文件:

sudo vim /etc/wsl.conf

添加如下内容:

[user]
default = xxx   #xxx 是你想要设置的用户名、前提是已经创建并配置好了

保存配置并退出,同样在关闭 wsl 之后重新进入,便会发现默认用户已经修改了。

wsl --list --running
wsl --shutdown
wsl 

wsl.conf 配置优先级 较高,更安全一些。

迁移wsl

方法一

注册表丢失的情况 笔者在重装系统之前, 是通过 Microsoft Store 安装的 Ubuntu 发行版. 应用商店中的数据一般在以下目录:

%LocalAppData%/Packages

重置系统 (选择保留个人数据) 后, 数据文件会被 迁移 到 Windows.old 中, 也就在以下目录:

C:/Windows.old/Users/%UserName%/AppData/Local/Packages 

其中, 商店里安装的 Ubuntu 发行版对应的包名会以 CanonicalGroupLimited.Ubuntu 开头, 打开对应的目录后, 在 LocalState 中就能找到 .vhdx 文件

事实上, 重装系统后, 许多其他软件的数据也能从 Windows.old 中恢复. 为了防止 Windows.old 在一段时间后被清清除, 建议及时备份 Windows.old 中的用户文件

可以将 .vhdx 文件剪切出来, 放在某个目录下, 比如 D:/wslinstall/ubuntu20.04

之后, 根据下面的文件模板编写一个 REG 文件(用TXT写完之后改为REG即可), 重建安装信息, 再导入注册表即能恢复 WSL 安装:

Windows Registry Editor Version 5.00

[HKEY_USERS\[SID]\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{[UUID]}]
"State"=dword:00000001
"DistributionName"="[DISTRO_NAME]"
"Version"=dword:00000002
"BasePath"="\\\\?\\[VHDX_PATH]"
"Flags"=dword:0000000f
"DefaultUid"=dword:000003e8
替换说明
[SID] 打开 “命令提示符”, 使用 whoami /user 命令获取到自己 (当前用户) 的 SID
[UUID] 可以去[UUID 生成网站]随机生成一个 UUID
[DISTRO_NAME] 指定发行版的名称, 比如 Ubuntu
[VHDX_PATH] 发行版所在的路径, 并将反斜线转义, 比如 D:\\WSL\\Ubuntu

比如, 在上文中我们假设文件存储在了 D:/wslinstall/ubuntu20.04 目录下, 那么一个可用的 REG 文件就类似如下所示:

Windows Registry Editor Version 5.00

[HKEY_USERS\<你的 SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{8ebf13b4-6ce3-4027-a2c7-f84ab4dad111}]
"State"=dword:00000001
"DistributionName"="Ubuntu 20.04"
"Version"=dword:00000002
"BasePath"="\\\\?\\D:\\wslinstall\\ubuntu20.04"
"Flags"=dword:0000000f
"DefaultUid"=dword:000003e8

将内容保存成后缀名为 reg 的文件, 比如一个名为 wsl-info.reg 的文件, 这样在 Windows 资源管理器中双击就可以完成导入.

导入完成后, 就可以在 Windows Termial 或者 wsl 命令中找到这个发行版了.

需要迁移 WSL 2 的情况:

类似的, 只需要有 WSL 的 VHDX 文件, 重新建立注册表即可. 注意使用对应用户的 SID

1702617692624

方法二

将wsl导出成tar文件

wsl --export ok D:\ok-wsl\ok.tar

如果想压缩成gz,那就再在wsl下加一行:

gzip ok.tar

将 tar 文件导入 WSL

准备好 tar 文件后,可使用以下命令导入它:wsl --import <Distro> <InstallLocation> <FileName>

导入 CentOS 示例

将 CentOS 发行版 tar 文件导入 WSL:

  1. 打开 PowerShell,并确保已创建一个要存储发行版的文件夹。

    PowerShell复制

    cd C:\temp
    mkdir E:\wslDistroStorage\CentOS
  2. 使用命令 wsl --import <DistroName> <InstallLocation> <InstallTarFile> 导入 tar 文件。

    PowerShell复制

    wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar
  3. 使用命令 wsl -l -v 检查已安装的发行版。

    run-any-distro-import

  4. 最后,使用命令 wsl -d CentOS 运行新导入的 CentOS Linux 发行版。

声明

空文件

简介

暂无描述 展开 收起
取消

发行版 (1)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/openkylin/openkylin-wsl.git
git@gitee.com:openkylin/openkylin-wsl.git
openkylin
openkylin-wsl
openkylin-wsl
master

搜索帮助