"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.exe
和 rootfs.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
.
在我的例子中,现在一切都很好很顺利:)
我通过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.exe
和 rootfs.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.
<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
.
在我的例子中,现在一切都很好很顺利:)