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

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

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

谢谢!任何帮助我都感激不尽。

答案1

这有点奇怪:

从 Windows 访问 WSL 文件很容易,并且内置于 WSL 中——只需使用\\wsl$\<distro>驱动器共享即可。

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

从另一个 WSL 实例访问一个 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

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

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

它的工作原理是创建一个条目,该条目在启动实例时/etc/fstab使用分发名称创建一个绑定挂载。如果不存在,则允许创建所需的父目录,类似于。/mnt/wsl/instances/$WSL_DISTRO_NAMEX-mount.mkdirmountmkdir -p

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

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

补充笔记:

  • 1如果/mnt/wsl/instances执行此操作后为空或缺失,则你可能正在运行最新的 WSL 版本,其安装顺序发生了变化。请参阅超级用户回答中的选项 1.5寻求解决方法。

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

  • 另请注意,此方法需要两个发行版都在运行。对于不需要运行第二个发行版的某些方法,请参阅我的旧方法这个超级用户的回答。即使第二个发行版没有运行,选项 2 和 3 都可以工作。

答案2

除了@NotTheDr01d的回答之外,我还需要考虑到 中可能定义了不同的自动挂载根/etc/wsl.conf。 在我的例子中,我将其设置为/,所以/mnt/c实际上是/c,并且/mnt/wsl/wsl

为了使@NotTheDr01d 提到的方法与任何自定义自动挂载点兼容,您可以使用以下命令:

# determine mountpoint
MNT_WSL=$(awk '/\/wsl tmpfs/{print $2}' /proc/mounts)

# config fstab
grep "${MNT_WSL}/${WSL_DISTRO_NAME}" /etc/fstab || echo "/ ${MNT_WSL}/${WSL_DISTRO_NAME} none defaults,bind,X-mount.mkdir 0 0" | sudo tee -a /etc/fstab

# mount for current instance
sudo mount ${MNT_WSL}/${WSL_DISTRO_NAME}

相关内容