如果我们有 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 相同的硬件访问权限。