# openkylin-wsl **Repository Path**: openkylin/openkylin-wsl ## Basic Information - **Project Name**: openkylin-wsl - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2023-07-19 - **Last Updated**: 2025-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 介绍 使用 Multistrap 工具制作根文件系统,Multistrap是一个工具,可以用来构建一个完整的、可启动的、根文件系统。这个根文件系统可以被 Docker 和 WSL 使用。 # 使用 ## 安装 首先需要下载 Linux 内核更新包,参考:[旧版 WSL 的手动安装步骤 | Microsoft Learn](https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package) ![1696769473237](README.assets/1696769473237.png) ## 将 WSL 2 设置为默认版本 打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本: ``` wsl --set-default-version 2 ``` ### 方法一 yangtze.multistrap 是配置文件。 ```bash bash build.sh sudo tar -cf ok.tar.gz -C /yangtze-rootfs . ``` ### 方法二 在新位置导入WSL。 选一个存放虚拟磁盘的文件夹,起名为openkylin。 将[openkylin-docker](https://gitee.com/openkylin/openkylin-docker)中下载的ok.tar.gz复制到上面的文件夹里面,比如复制到了`d:\openkylin`,然后执行下面的命令: ```powershell cd d:\openkylin wsl --import openkylin .\ .\openkylin-rootfs-amd64.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](README.assets/1702617692624.png) ### 方法二 ## 将wsl导出成tar文件 ``` wsl --export ok D:\ok-wsl\ok.tar ``` 如果想压缩成gz,那就再在wsl下加一行: ``` gzip ok.tar ``` ## 将 tar 文件导入 WSL 准备好 tar 文件后,可使用以下命令导入它:`wsl --import `。 ### 导入 CentOS 示例 将 CentOS 发行版 tar 文件导入 WSL: 1. 打开 PowerShell,并确保已创建一个要存储发行版的文件夹。 PowerShell复制 ``` cd C:\temp mkdir E:\wslDistroStorage\CentOS ``` 2. 使用命令 `wsl --import ` 导入 tar 文件。 PowerShell复制 ``` wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar ``` 3. 使用命令 `wsl -l -v` 检查已安装的发行版。 ![run-any-distro-import](README.assets/run-any-distro-import.png) 4. 最后,使用命令 `wsl -d CentOS` 运行新导入的 CentOS Linux 发行版。 # 声明 - 参考 deepin-docker 制作[deepin-docker](https://github.com/BLumia/deepin-docker) - 参考[WSL 修改默认用户_wsl 设置默认用户-CSDN博客](https://blog.csdn.net/qq_37085158/article/details/131041223) 设置默认用户 - 参考 [导入要与 WSL 一起使用的任何 Linux 发行版 | Microsoft Learn](https://learn.microsoft.com/zh-cn/windows/wsl/use-custom-distro#obtain-a-tar-file-for-the-distribution) 导入wsl - 参考[从 VHDX 文件恢复 (导入) WSL 2 安装_wsl vhdx-CSDN博客](https://blog.csdn.net/henry_23/article/details/125326266) 恢复wsl