执行depmod遇fstatat错误:软链接操作后为何提示文件不存在?
咱们一步步拆解你遇到的问题,depmod报错找不到文件,核心原因是你创建的软链接指向了无效目标,或是路径变量出了问题,具体排查和解决方法如下:
先确认源模块文件是否真的存在
你创建软链接的源路径是/lib/modules/$kernel_version/extra/mISDN_core.ko,先验证这个文件是否存在:ls -l /lib/modules/$kernel_version/extra/mISDN_core.ko如果输出提示
No such file or directory,那问题根源就在这——你要链接的原始模块文件根本没在这个位置。这种情况下,你需要重新编译安装mISDN模块,确保它被正确部署到/lib/modules/$kernel_version/extra/目录下。检查
$kernel_version变量是否正确赋值
很多人会直接复制带变量的命令,但忘了给$kernel_version设置有效值。先运行:echo $kernel_version如果输出是空的,或者和当前运行的内核版本不一致(可以用
uname -r查看当前内核版本),那路径就会完全错误。建议直接用$(uname -r)自动获取当前内核版本:kernel_version=$(uname -r)确认目标目录是否存在
如果/lib/modules/$kernel_version/kernel/drivers/isdn/mISDN/这个目录不存在,ln命令会把目标当作普通文件创建,而非在目标目录下生成链接。先创建目录(如果需要的话):mkdir -p /lib/modules/$kernel_version/kernel/drivers/isdn/mISDN/重新创建软链接并验证有效性
执行创建命令后,一定要检查软链接是否有效:ln -sf /lib/modules/$kernel_version/extra/mISDN_core.ko /lib/modules/$kernel_version/kernel/drivers/isdn/mISDN/mISDN_core.ko ls -l /lib/modules/$kernel_version/kernel/drivers/isdn/mISDN/mISDN_core.ko正常情况下,输出会显示软链接指向的源文件路径,且路径是高亮状态(表示链接有效)。如果显示红色或标注
broken,说明源文件依然存在问题。额外提示:ldconfig是多余步骤
顺便说一句,ldconfig是用来更新用户空间共享库缓存的,和内核模块完全无关,这一步你可以直接跳过,不会影响模块的加载和depmod的执行。
完成以上步骤后,再运行depmod -a,应该就不会再出现找不到文件的错误了。
内容的提问来源于stack exchange,提问作者Aleksei Kovaltsuk

