适用于 Linux 的 Windows 子系统中的二进制文件与启动物理 Linux PC 时的二进制文件相同吗?

适用于 Linux 的 Windows 子系统中的二进制文件与启动物理 Linux PC 时的二进制文件相同吗?

如果我们有 Windows 10 或 11 并使用 WSL(Linux 的 Windows 子系统)和 Ubuntu 等发行版,我们是否会使用与创建可启动 Linux PC 相同的二进制文件?

例如,当我们使用 WSL Bash 或 Zsh 命令提示符时,如果我们安装:

  • Ruby、gcc 和 cc
  • GPU驱动程序
  • 任何加密挖掘可执行文件,例如 xmrig、t-rex

它是否使用与我们创建可启动 Linux 驱动器或 USB 驱动器并从那里启动相同的二进制文件?

其实Ruby/gcc/cc可能没问题,但是对于Linux GPU驱动来说,会不会和Windows原生GPU驱动冲突呢?

答案1

好吧,是和否(因为您询问了几种不同类型的二进制文件)。

应用程序二进制文件

是的,假设您使用的是 x64 Linux 系统,则两个系统之间的二进制文件是相同的。实际上,您可以直接从物理 Linux 机器中取出驱动器,并且:

  • 创建系统的 tarball,然后将其导入到 WSL 中
  • 或者只是chroot进入该驱动器上的文件系统(以及这个已经完成)。

在这两个任务中,都没有对二进制文件进行“转换”或更改。

引导二进制文件

请注意,当启动WSL2这样,你就跑了最多原始发行版中的二进制文件。然而,实际的内核init是由 WSL2 提供的,因此它可以引导 Windows 集成(例如,运行 Windows.exe的能力、网络集成和更多的)。

值得注意的是,Systemd 不会自动启动。有解决方法对于 WSL2 下的 Systemd 支持,但它需要运行引导后,以便 WSLinit可以首先完成它的工作。

二进制驱动程序

另一方面,不,(大多数)二进制司机期望直接访问物理硬件除非 WSL 提供虚拟等效项,否则通常无法工作。 WSL2 在虚拟化环境中运行。但也有一些例外......

USB 设备驱动程序

不过,可以通过 USB/IP(从 Windows)共享 USB 设备并在 WSL/Linux 中连接到它们,从而在 Windows 中直接硬件访问 USB 设备。对于这些设备,二进制驱动程序将起作用。

最新的 WSL2 内核版本包含 USB/IP 支持,但即使在此之前,也可以在启用该功能的情况下构建您自己的内核。

GPU计算

最近的 WSL2 版本(Windows 11 和 Windows 10 21H2)提供了使用视窗GPU 驱动程序WSL2 GPU 计算任务。这使得利用 GPU 计算架构(例如 TensorFlow)的 Linux 二进制文件能够利用 Windows GPU。

我无法谈论加密货币挖掘(我怀疑微软是否会推动这一点),但我希望现在也可以将这种架构与这些二进制文件一起使用。

答案2

不。WSL 只是 Microsoft 对 Linux 的解释,并且不具有与独立 Linux 相同的硬件访问权限。

相关内容