我买了一个 Edimax USB wifi 棒,它需要编译树外(即第 3 方)内核模块才能在 Linux 上运行。然而,Qubes OS 与普通的 Linux 发行版有点不同,所以我很难理解如何做到这一点。我已经知道,要使用 NetVM 中的 USB 设备,我必须将两个 USB 控制器之一分配给 NetVM,并且我可以在我的旧 USB WiFi 设备上成功使用该控制器。从这里我了解到树外模块需要一个具有自定义内核的独立 NetVM,因此我创建了一个,并在这里我读
有一种特殊情况,虚拟机可以有自定义内核——当它是可更新的(StandaloneVM 或 TemplateVM)并且内核设置为“none”(通过 qvm-prefs)时。在这种情况下,VM 使用“kernels”VM 子目录中的内核,并且 module.img 作为 R/W 设备附加。 FIXME:“无”应重命名为“自定义”。
“VM 使用“kernels”VM 子目录中的内核”是什么意思?我需要做什么?
答案1
这意味着 VM 目录/var/lib/qubes/servicevms
会获得一个新的kernels
子目录,该子目录会自动填充现有的 Qubes 内核之一和关联的模块映像文件 - 至关重要的是,后者被安装为可写的在虚拟机内部,这就是我们所需要的。自定义内核本身,您可以替换该vmlinuz
文件 - 但由于我不需要这样做,所以我没有这样做。因此,我不需要做任何特殊的事情来为自定义内核模块安装准备虚拟机 - 我只需:
- 关闭所有其他 VM,最后关闭现有的 NetVM,以便新 VM 可以声明 USB 控制器 PCI 设备
- 启动新的VM
- 在新虚拟机中打开终端
- 打字的
sudo yum-deprecated install kernel-devel-$(uname -r) dkms
- 按照 README 文件中的说明安装内核模块
- 右键单击我的 FirewallVM,选择“设置”并将新 VM 设置为其 NetVM