在侧载发行版的 Linux/WSL 中设置默认用户

rwi*_*ams 0 linux windows-subsystem-for-linux

使用 Microsoft 商店的 WSL Distros,它们捆绑了一个实用程序来设置默认用户ubuntu config --default-user new_user_name。如果我旁加载发行版图像,则该选项不存在。没有它如何设置默认用户?

Windows 10 专业版 19033.1

至于安装发行版,我会从这里下载 tar.gz并使用wsl --import <Distro> <InstallLocation> <FileName>来安装它。

Bis*_*iyo 6

警告:以下注册表方法未记录在案,可能会更改。

  • 方法1,简单但未记录。打开注册表编辑器。转到此键 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss。双击展开它。花括号中会有一些随机字符串,称为GUID。逐一检查,直到找到与DistributionName注册表匹配的分发名称。现在双击 DefaultUidDWORD 注册表并将值更改为将设置为默认值的用户 ID。例如,root 用户 ID 为 0(零),普通用户 ID 为 1000(十六进制为 0x3e8)。以下是注册表中 WSL 分发条目的示例:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{73d04361-eda8-4c3a-9c74-1eb25937ba99}]
"State"=dword:00000001
"DistributionName"="Debian"
"Version"=dword:00000002
"BasePath"="F:\\Debian"
"Flags"=dword:00000007
"DefaultUid"=dword:000003e8
Run Code Online (Sandbox Code Playgroud)
  • 方法2,复杂但有据可查。这需要一些C语言编程。使用该WslConfigureDistribution函数设置默认用户 ID。这些WSL APIwslapi.h在 Windows 10 SDK 的头文件中。例如,要在 Ubuntu 发行版中将普通用户 (uid = 1000 ) 设置为默认值,请使用以下命令:
WslConfigureDistribution(L"Ubuntu", 1000, WSL_DISTRIBUTION_FLAGS_DEFAULT);
Run Code Online (Sandbox Code Playgroud)

此方法用于WSL 分发启动器,该启动器与 Windows 应用商店中的每个 WSL 分发捆绑在一起。