【发布时间】:2020-11-18 09:40:28
【问题描述】:
我目前正在努力在 WSL2 上安装 v4l2loopback。
一些上下文:
最近,我读到了create a virtual video device in Linux,然后从图像或视频文件中模拟了它的输出。
这对于测试或开发目的非常重要,例如为了附加一个虚拟网络摄像头,将视频文件作为循环复制到 android 模拟器。
经过一些研究,我得出的结论是我不想使用桌面应用程序,即使在 CI 或类似的环境中运行它也可能很容易,因此v4l2loopback 看起来不错,但我目前是 Windows 用户。
我在我的机器上启用了 WSL2,下载了 repo,并尝试像 repo 描述中那样执行 make 命令。
Building v4l2-loopback driver...
make -C /lib/modules/`uname -r`/build M=/home/angel/v4l2loopback modules
make[1]: *** /lib/modules/4.19.84-microsoft-standard/build: No such file or directory. Stop.
make: *** [Makefile:43: v4l2loopback.ko] Error 2
我用谷歌搜索了一下,我在 GitHub 上发现了 issue,其中提到了类似的输出(用于另一个工具)。 在那里,有人提到可以调整 WSL2 Kernel Config 以添加更多模块(也许并希望其中一个可以使 v4l2-loopback 工作 ???? 或至少我认为)。
我也用谷歌搜索了custom WSL builds,但我不确定我需要什么才能让它工作,或者即使我朝着正确的方向前进。
为了使v4l2loopback 工作,我是否遗漏了什么?
如果只有自定义 WSL2 构建可以工作,我应该如何进行?
提前谢谢????
【问题讨论】:
-
您至少还需要内核开发头文件。
-
嗨@Roadowl,感谢您的回答,您的意思是我应该在 WSL2 实例中安装其他东西吗?你能扩展一点你的答案吗?我不熟悉 Linux 内核的东西。
-
我对 WSL 不熟悉,但也许这对你更有启发:github.com/microsoft/WSL/issues/4128, docs.microsoft.com/en-us/windows/wsl/wsl2-kernel。
-
首先你需要知道你正在运行的linux版本。在 cli 上,执行
uname -a。对于该内核版本,您需要内核开发头文件。在您的包管理器中,搜索“内核开发标头”(或“内核开发”)。然后尝试构建 v4lloopback 模块。 -
啊——看来 WSL 根本没有 linux 内核:见 unix.stackexchange.com/questions/594470/… 。所以构建 v4lloopback mod 是没有用的,因为即使你能够构建它,也没有什么可以加载它的。也许您的替代方案可能是在您的 Windows 机器上运行 virtualbox,并在其中加载您自己选择的真正的 linux 发行版。然后构建模组(安装内核开发头文件后)。
标签: windows-subsystem-for-linux wsl-2 v4l2loopback