在 WSL 中使用非官方发行版是否会有性能损失?

在 WSL 中使用非官方发行版是否会有性能损失?

从 tar 文件安装 Arch 之类的发行版是否会比使用 Microsoft Store 中的 Ubuntu 之类的发行版更慢或导致任何问题?

答案1

让它变慢...?

一般来说,没有——没有区别。

当你从 Microsoft Store 安装像 Ubuntu 这样的发行版时,它实际上使用相同的机制。你可以启动管理 PowerShell(或 CMD)shell 并运行以下命令来查看(甚至使用)来自 Store 安装的发行版的 tarball:

Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Where-Object {$_.Name -eq 'install.tar.gz' }

例如,当你从 Microsoft Store 安装 Debian 时,它会创建一个.exe名为的应用程序执行别名(“Store/UWP/现代应用程序的假冒”)Debian.exe。运行它有几个功能:

  • 如果它检测到没有debian发行版,它将(基本上)使用 WSL 功能导入 tarball 并创建发行版。然后它会要求输入用户名/密码并 (a) 在发行版中创建它,(b) 使用 WSL 功能在发行版启动时将该用户注册为“默认”用户。

  • 如果发行版已经安装,它会启动它。

还有一些其他历史功能<distribution>.exe,但它们大多已被wsl.exe命令本身取代。

或造成任何问题?

--importing 确实有一个实质性的区别。如上所述,安装程序设置用户名。 --import当然,ing 不会。因此,默认用户名永远不会被设置。

创建默认用户(最好为 UID 1000)后,您可以按照以下步骤将其设置为默认用户我对这个话题的回答

但总的来说,我--import认为优于并且比使用安装程序创建的发行版更不容易出错。原因如下:

  • 使用--import,您可以控制分发的目录(甚至驱动器)。从商店安装的分发位于 下的包指定名称中%userprofile%\AppData\Local\Packages\

  • 至少在 Windows 10 下,卸载 Store 应用也会删除发行版本身。这也可能是影响 Store 安装应用的任何类型的 Windows 重置的问题。ed--import发行版不会出现这种情况。

任何其他被视为“问题”的差异通常都是发行版本身所固有的,而不是其安装方式所致。

例如,在 Arch 下,您仍然会面对基于 Systemd 的发行版。Systemd 坚持将其进程监督作为 PID1 运行,这与 WSL 的 init(也是 PID1)相冲突。

Ubuntu 也是一个主要基于 Systemd 的发行版,它至少提供了许多服务作为遗留的 SysVInit 脚本,以便您可以在 WSL 下启动它们service <service_name> start。如果我没记错的话,Arch 没有这个后备功能。

但是从商店安装 Debian 时也不会这样,这就是为什么我说这是一个“分发限制”而不是“安装方法”的限制。

个人建议——因此,在 WSL 下,您可能需要考虑Artix Linux。这是一个基于 Arch 的发行版,可让您选择替代进程管理器(例如 Dinit 或 OpenRC)。最棒的是,绝大多数软件包都有服务脚本每一个受支持的进程管理器之一。例如,如果您安装 MariaDB,则有以下几种选择:

  • mariadb-openrc
  • mariadb-dinit
  • mariadb-runit
  • mariadb-s6

为你的特定主管安装一个将会安装适当的脚本和基础mariadb包。

为了您的方便,我还建议您阅读一些与此问题相关的其他答案:

相关内容