我知道运行 时localmodconfig
,只有已加载的模块才会复制到新配置文件中,这就是我的问题。
例如,声卡在大约 30 秒后进入休眠状态,因此声卡的模块会被卸载,而不会复制到新配置文件中,但也有其他模块会被卸载,而不会复制到新配置文件中。
我如何将所有需要的模块转移到配置中?
我已经尝试了以下方法:
将输出导出lsmod
到文件(mylsmod
)
lsmod > /tmp/mylsmod
并使用命令执行它
make LSMOD=/tmp/mylsmod localmodconfig
但是,模块仍然缺失,因为运行时lsmod
并非所有模块都已加载。我多次运行 lsmod,每次都得到不同的结果(文件中的行数),有时是 144 行,有时是 119 行。
如何让 lsmod 将卸载的模块包含在文件中?
答案1
例如,声卡在大约 30 秒后进入睡眠状态,因此声卡的模块被卸载
不是。模块卸载是不是在 Linux 上是自动的 – 一旦加载了某些东西,它就会保持加载状态直到重新启动,无论是否移除物理设备。
(更重要的是,声卡的驱动模块是让声卡进入睡眠状态并首先将其唤醒的东西。并且睡眠状态的声卡仍然在线 - 如果它进入睡眠状态意味着声卡完全消失,那就意味着您的程序将无法与它交互。因此,即使处于省电模式的设备仍然需要加载驱动程序模块。)
rmmod
只有在您明确运行某些东西或modprobe -r
由于某种原因,或者当然您重新启动时,模块才会被删除。
如何让 lsmod 将卸载的模块包含在文件中?
你不知道,事实并非如此知道之前卸载了哪些模块。模块要么已加载,要么未加载;不存在“之前已加载”状态,原因在答案的第一部分。