我过去经常构建和安装 Linux 内核,所以我对现在看起来如此困难感到惊讶。
故事:我正在尝试为 Debian 12 构建一个lustre客户端;第一步是运行configure
脚本,但失败并显示:
checking if Linux kernel was built with CONFIG_FHANDLE in or as module... no
configure: error:
Lustre fid handling requires that CONFIG_FHANDLE is enabled in your kernel.
这就是为什么我需要编译一个新内核:make deb-pkg
;这一切进展顺利,然后我安装了生成的包,没有错误。但系统仍然以原始内核启动。据我从各种 Debian 文档中看到,我已经拥有了我需要的一切,所以我有点困惑;我一定做错了什么,但是什么?
编辑回复斯蒂芬·基特的评论
root@debian12:~# grep FHANDLE /boot/config-$(uname -r)
CONFIG_FHANDLE=y
我可以在configure
脚本中看到他们似乎检查了这段代码:
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <linux/kernel.h>
#include <linux/module.h>
#if defined(NEED_LOCKDEP_IS_HELD_DISCARD_CONST) \
&& defined(CONFIG_LOCKDEP) \
&& defined(lockdep_is_held)
#undef lockdep_is_held
#define lockdep_is_held(lock) \
lock_is_held((struct lockdep_map *)&(lock)->dep_map)
#endif
#include <$AUTOCONF_HDIR/autoconf.h>
int
main (void)
{
#if !(defined(CONFIG_FHANDLE) || defined(CONFIG_FHANDLE_MODULE))
#error CONFIG_FHANDLE and CONFIG_FHANDLE_MODULE not #defined
#endif
;
return 0;
};