命令'make modules'不构建所有模块

时间:2011-06-10 13:45:09

标签: linux linux-kernel compilation kernel-module

我正在运行Fedora 14 64位。

我从git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git克隆了内核源代码树

大约一周前,我编译并将内核从2.6.35升级到2.6.39,它运行得非常顺利,我所做的一切非常简单:

make menuconfig
make oldconfig
make -j8
make modules_install && install

然后我添加了一个虚拟系统调用(我正在使用Robert Love的Linux内核开发书),并尝试再次编译,它编译内核很好,但是当我发布时:

[root@xps420 Kernel]# make modules
CHK     include/linux/version.h
CHK     include/generated/utsrelease.h
CALL    scripts/checksyscalls.sh
Building modules, stage 2.
MODPOST 4 modules

它只制作了4个模块,以前有超过2000个模块。

我认为是我的虚拟系统调用引起了问题,我解除了所有的更改并再次尝试,结果相同。

同样,我采取的步骤是:

make menuconfig
make oldconfig
make -j8
make modules ----> suspicious

我不确定是什么导致了这一点。

修改 多一点信息,我在重新编译之前运行make clean,但它仍然只生成了4个模块。 有一次我做了modules_install,并检查了/lib/modules/[ver],只复制了那4个模块。我应该已经停在那里但我继续运行make install无论如何,它安装了内核,但无法启动它。

修改 我刚从kernel.org下载了稳定版本(2.6.39.1),经过上述步骤后,发生了同样的事情。这很奇怪。也许在我的系统中的一些东西搞砸了这个:(希望有人遇到这个并且有所启发。

5 个答案:

答案 0 :(得分:2)

好的,经过几杯咖啡和大量谷歌搜索,我不知道这一切是如何工作的,但看起来就像我第一次升级内核时,.config是基于正在运行的内核的配置,它包括所有所需的模块,因此运行良好?然后以某种方式在随后的编译中几乎所有模块都没有在.config中配置(除了上面提到的4个)。长话短说,我使用旧的.config并运行menuconfig进行其他更改,似乎解决了我的问题。谢谢!

答案 1 :(得分:0)

如果你不做“make clean”,之前的编译结果仍然存在。只会重建受您更改的代码影响的模块。

答案 2 :(得分:0)

也许只有这四个模块依赖于您触摸的文件。如果您想确认这一点,请执行make clean,然后再次尝试构建,并查看是否未再次编译所有模块。当然,这需要更长的时间!

答案 3 :(得分:0)

尝试make V=1 ...以获得详细输出。 甚至是V=2

答案 4 :(得分:0)

我遇到了同样的问题,并按照wliao的建议解决了这个问题。

问题描述:

  1. 我几天前将内核从3.x.x(内置CentOS7)升级到5.0.0;
  2. 今天,我将其升级到5.3.0-rc6 +;
  3. 升级之前,我通过make distclean进行了彻底清理;
  4. makemake modules_installmake install之后,我尝试使用新内核重新启动;
  5. 但是启动失败并显示:error: /vmlinuz-5.3.0-rc6+ has invalid signature.
  6. 在谷歌搜索了很长时间之后,我来到了这里,谢天谢地!

解决步骤:

  1. 从/ boot复制现有配置文件
    cp -p /boot/config-3.10.0-957.27.2.el7.x86_64 .config
    
  2. 通过menuconfig配置其他设置
    make menuconfig
    
  3. 构建
    make -j $(nproc)
    sudo make modules_install
    sudo make install
    
  4. 显示您的新内核版本
    sudo grep ^menuentry /boot/efi/EFI/centos/grub.cfg | cut -d "'" -f2
    
  5. 设置默认启动内核
    sudo grub2-set-default 'CentOS Linux (5.3.0-rc6+) 7 (Core)'
    
  6. 启动成功!