binfmt_misc 未使用内核模块

binfmt_misc kernel module not used

我正在评估基于 NXP iMX.8(即 arm64v8)的开发板。评估套件带有 5.10.72 Linux 内核,但没有 binfmt_misc 内核模块。联系供应商后,他们提供了与内核版本匹配的所需模块。我把它放在 /lib/modules/$(uname -r)/kernel/drivers/fs/binfmt_misc.ko 然后 echo binfmt_misc >> /etc/modules && /sbin/depmod && systemctl reboot.

重新启动后,lsmod | grep binfmt 显示模块现在已加载,但“Use By 0”。此外,journalctl -u proc-sys-fs-binfmt_misc.mount 出现 mount: /proc/sys/fs/binfmt_misc: mount point does not exist. 错误,我通过 ls -al /proc/sys/fs/binfmt_misc.

确认不存在

由于我无法在 /proc 中创建任何目录,缺少什么魔法才能让它工作?

似乎模块是单独编译的,内核本身不是在启用 CONFIG_BINFMT_MISC 的情况下构建的,因此应该创建此挂载点的代码仍然被排除在外:https://elixir.bootlin.com/linux/v5.10.72/source/kernel/sysctl.c#L3304

也许可以将 binfmt_misc 挂载到其他位置并从那里使用它?或者向 Teh Vendor 索要更新的内核镜像?

如果未定义CONFIG_BINFMT_MISC,kernel/sysctl.c 将不会在procfs 中创建挂载点。拥有模块没有帮助,因为它不会创建安装点。您将需要使用 CONFIG_BINFMT_MISC=m(或 Y)重建内核。

参见:https://elixir.bootlin.com/linux/v5.16.18/source/kernel/sysctl.c#L3367