![虚拟安装的驱动程序支持](https://linux22.com/image/950645/%E8%99%9A%E6%8B%9F%E5%AE%89%E8%A3%85%E7%9A%84%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81.png)
这个问题是关于安装 F2FS,Ubuntu 通过版本 22.04 的默认内核中的模块支持该功能。但是,我们发现该问题与 WSL2 安装有关,它使用不同的内核,似乎不包含 F2FS 支持(从我的角度来看这是有道理的)。
当 Ubuntu 虚拟化时,会使用主机的硬件驱动程序。某些驱动程序(例如 WiFi 和文件系统)是否仅在非虚拟化安装中受支持?
答案1
在编辑你的问题时,我无法确定你是在专门询问 WSL2(基于引用的问题),还是在询问一般的虚拟化系统。答案是轻微地对于两个不同的环境来说有所不同。
虚拟机
在虚拟机 (VM) 中运行 Ubuntu 时,Ubuntu 的内核。这意味着 Ubuntu 内核中的任何文件系统和驱动程序至少已启用。但是,是的,硬件本身可能无法直接访问,因此设备驱动程序甚至可能无法访问该设备。
然而,许多虚拟机系统提供了某种类型的直通肯定硬件接口,例如 USB。因此,通常可以“间接”访问闪存驱动器之类的东西,而无需进行额外配置。
同样,也可以使用基于 USB 的 WiFi 设备,大多数驱动程序已经在 Ubuntu 内核中可用(或可通过模块安装)。
一些虚拟机支持 PCI 直通来访问显卡(尤其是 GPU)。在这些系统上,可以直接安装和访问 GPU 驱动程序。
WSL2
在 WSL2 中运行时,Ubuntu 实际上并不是在虚拟机中运行。而是在容器在虚拟机内运行。这就是为什么 Ubuntu 内核(及其内置功能和驱动程序)实际上并未在 WSL2 中使用的原因。
WSL2 使用自己的内核。这个内核是:
- 在 WSL2 中运行的所有发行版之间共享
- 在 Ubuntu 容器正在运行的“托管主机 VM”(Hyper-V VM)中运行。
- 标准 Linux 内核,针对 WSL2/Hyper-V 进行了一些特定优化
- 开源(回购这里)
- 从上游内核定期更新。
优化的一部分是,WSL2/Hyper-V 环境中不一定有用(或经过测试)的模块可能无法启用,这就是为什么你默认在那里找不到 F2F2 的原因。
也就是说,完全可以从 WSL2 源代码构建自己的内核并添加对所需设备的支持,只要这些驱动程序可以访问硬件在 WSL2 中。
而且,与 VM 一样,WSL2 提供:
USB 直通,通过 USB/IP,可以允许硬件访问通过 USB 连接的设备。
可以通过此方法将 WiFi 驱动程序用于 USB WiFi 设备。
安装、创建文件系统以及访问原始驱动器的能力。
考虑到这一点,我确实发现这条 Hacker News 评论提到 F2FS 支持在编译时有效。除此之外,我没有任何详细信息。它可能是在已安装的驱动器上测试的,也可能是通过 USB/IP 访问的设备。
请注意,WSL2 需要一点GPU 支持的不同方法据我所知,PCI 直通未被使用。相反,WSL2 使用了视窗GPU 驱动程序具有可与 Windows 驱动程序通信的内核模式驱动程序。
最后,请记住,这很少只是一必须在 WSL2 内核中启用的附加驱动程序才能使新设备正常工作。通常需要启用多个依赖项。挑战在于找到正确的模块组合。