"wsl --import" 有可能变成 distro.exe 吗?

Is it possible to make distro.exe by "wsl --import"?

我通过wsl --import从另一台机器导入了通过wsl --export制作的wsl备份文件。

但与我在 Window Store 上安装 WSL Ubuntu 时不同,未创建 distro.exe 文件,例如 ubuntu.exe(在“开始”菜单中找到)。因此,从 JetBrain IDE 获取 WSL 支持时出现问题。这是因为 JetBrain IDE 通过 distro.exe 文件识别 WSL 的路径。

如果有人解决了这个问题,我想得到一些帮助。感谢您阅读。

已编辑:Windows 是 v.1909(OS build 18363.592),我尝试 https://winaero.com/blog/export-import-wsl-linux-distro-windows-10/

我找到了解决方案。(Windows 10 build 18363.592)

1。导出您的 WSL 发行版

wsl --export {your_distribution_name} rootfs.tar.gz 导出您的 wsl 发行版。 (您的发行版将保存到 tarball 中。)

2。通过 Distro-Launcher

安装你的发行版

我用了Yuk7's version。首先,下载 Launcher.exe,并重命名 your_distro_name.exe 然后创建目录以定位 WSL 发行版。将 your_distro_name.exerootfs.tar.gz 放在那里。

现在您只需 运行 your_distro_name.exe 即可安装发行版。安装后,您可以在 powershell 中 运行 您的发行版。 PS > your_distro_name

3。塞蒂格 wsl.distributions.xml

C:\users\{user_name}\.{jetbrains_ide_name_version}\config\options\wsl.distributions.xml

Jetbrains IDE 通过 wsl.distributions.xml 支持 WSL,您应该将 distro.exe 添加到其中以在 Jetbrains IDE.

上使用 WSL
<application>
  <component name="WslDistributionsService" version="1">
    <descriptors>
      <set>
        <descriptor>
          <id>DEBIAN</id>
          <microsoft-id>Debian</microsoft-id>
          <executable-path>debian.exe</executable-path>
          <presentable-name>Debian GNU/Linux</presentable-name>
        </descriptor>
        <descriptor>
          <id>KALI</id>
          <microsoft-id>kali-linux</microsoft-id>
          <executable-path>kali.exe</executable-path>
          <presentable-name>Kali Linux</presentable-name>
        </descriptor>
        ...
      </set>
    </descriptors>
  </component>
</application>
<!-- DESCRIPTOR FOR YOUR DISTRO -->
<descriptor>
  <id>YOUR_DISTRO_NAME</id>
  <microsoft-id>Your-distro-name</microsoft-id>
  <executable-path>your_distro_name.exe</executable-path>
  <presentable-name>your_distro_name</presentable-name>
</descriptor>

只需将 <descriptor> 添加到 <set>

4。重启你的 JetBrains IDE

终于,我可以在另一台机器的 WebStorm 中使用我导出的 wsl 发行版了:)

不幸的是,最新的解决方案似乎不再有效,至少对我和 03/2021 是这样。也许 Phpstorm 不再使用 xml 并且它查询注册表(在我看来,在这种情况下最好不要弄乱注册表) 我想与您分享我是如何让它工作的(不仅是 wsl$ 路径,还有 phpstorm 中的 php 和 git 可执行文件)。

  • 按照上面的说明进行操作,直到第 2 点:发行版已安装,并在同一目录中创建了包含 vm 磁盘的文件 ext4.vhdx。用 wsl -l -v
  • 检查一下
  • 从 Microsoft Store 安装您选择的发行版,并使用与您导入的发行版相同的版本。
  • 运行新发行版一次,然后关掉它wsl --shutdown <YOUR_DISTRO_NAME>
  • 转到%LOCALAPPDATA%\Packages\CanonicalGroupLimited.<YOUR_DISTRO_NAME>\LocalState并将ext4.vhdx重命名为ext4.vhdx.old(为了安全起见,以后可以删除它)
  • 将之前生成的ext4.vhdx复制到上面的LocalState路径
  • 使用 wsl --set-default <YOUR_DISTRO_NAME>
  • 将新发行版设置为默认发行版
  • 取消注册之前导入的发行版wsl --unregister <IMPORTED_DISTRO>

现在商店中的新安装将使用您导入的 vhdx 磁盘。您可以删除 ext4.vhdx.old.

在我的例子中,现在一切都很好很顺利:)