从 Kali WSL 访问 Ubuntu WSL 文件,反之亦然

Inf*_*ent 4 windows kali windows-10 windows-subsystem-for-linux

我的电脑上运行着 2 个 wsl 发行版:Ubuntu 和 Kali Linux。我在 kali Linux 系统上安装了一些程序和一些文件,我想通过 Ubuntu 发行版访问或编辑它们。我该怎么做?这些文件是否位于我可以通过 Ubuntu 访问的文件系统中的某个位置?

谢谢你!任何帮助表示赞赏。

Not*_*1ds 8

这有点奇怪:

从 Windows 访问 WSL 文件非常简单,并且内置于 WSL 中 - 只需使用\\wsl$\<distro>驱动器共享即可。

从 WSL 访问 Windows 文件也很容易——只需使用/mnt/<drive_letter>挂载点即可。

从一个 WSL 实例中访问另一个实例中的文件不是“内置的”,但可以通过使用每个发行版中的共享/mnt/wsltmpfs 挂载的绑定挂载来完成。

只需在 Ubuntu 和 Kali 中执行以下命令:

echo "/ /mnt/wsl/instances/$WSL_DISTRO_NAME none defaults,bind,X-mount.mkdir 0 0" | sudo tee -a /etc/fstab
Run Code Online (Sandbox Code Playgroud)

然后退出每个命令,wsl --shutdown从 PowerShell 或 CMD 发出 a(--terminate每个命令一个也足够),然后重新启动。

您现在将在各自的绑定安装中找到每个文件/mnt/wsl/instances/<distroname>1

这是通过创建一个条目来实现的,该条目在实例启动时/etc/fstab使用分发名称创建绑定安装。/mnt/wsl/instances/$WSL_DISTRO_NAME允许创建所需的父目录X-mount.mkdirmount如果它们不存在),类似于mkdir -p.

/mnt/wsl目录是tmpfs自动的:

  • 由 WSL 首次启动时创建
  • 适用于所有 WSL2 发行版

补充笔记:

  • 1如果/mnt/wsl/instances执行此操作后为空或丢失,则您可​​能正在运行最新的 WSL 版本,并更改​​了安装顺序。请参阅此超级用户答案中的选项 1.5以获取解决方法。

  • 请注意,这不适用于 WSL1 发行版

  • 另请注意,此方法需要两个发行版都在运行。对于某些不需要运行第二个发行版的方法,请参阅此超级用户答案中的旧方法。即使第二个发行版未运行,选项 2 和 3 也将起作用。