【问题标题】:Is it possible to make distro.exe by "wsl --import"?是否可以通过“wsl --import”制作distro.exe?
【发布时间】:2021-03-25 07:34:12
【问题描述】:

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

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

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

已编辑:Windows 是 v.1909(操作系统版本 18363.592),我尝试https://winaero.com/blog/export-import-wsl-linux-distro-windows-10/

【问题讨论】:

  • 发行版可以使用wsl.exe --distribution <Distro Name> 命令运行。请参阅wsl.exe --help 了解更多信息。
  • @Biswapriyo 感谢您的回复。但是我使用的是导入的 WSL(例如,我还通过将其添加到右键单击上下文菜单中,将其用作 cmd 和 Powershell 的替代品)。问题是JetBrain IDE使用distro.exe文件如ubuntu.exekali.exe来引用WSL。这就是为什么我想知道wsl --import 是否允许我创建一个distro.exe 文件,就像Windows Store Linux Distro Installation 一样。
  • 您在这里使用的是哪个 Jetbrains IDE?其中有many

标签: windows-subsystem-for-linux jetbrains-ide


【解决方案1】:

我找到了解决方案。(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>

只需将&lt;descriptor&gt; 添加到&lt;set&gt;

4。重启 JetBrains IDE

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

【讨论】:

  • 我在最后一步遇到了问题。我的配置文件位于 AppData/Roaming 下,更改文件后似乎没有添加。
  • 通过将完整路径添加到 exe 来使其正常工作。但现在我收到“凭据对此 WSL 分发无效”错误。
【解决方案2】:

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

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

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

就我而言,现在一切都运行良好且顺利 :)

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 2014-08-05
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2019-01-17
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多