命令“制作模块”不会构建所有模块
Posted
技术标签:
【中文标题】命令“制作模块”不会构建所有模块【英文标题】:Command 'make modules' doesn't build all modules 【发布时间】:2011-06-10 13:45:08 【问题描述】:我正在运行 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 Kernel Development 书中遵循了这个)并尝试再次编译,它编译内核很好,但是当我发出:
[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),经过上述步骤后,同样的事情发生了。这很奇怪。也许我系统中的某些东西搞砸了:(希望有人遇到过这个问题并有所启发。
【问题讨论】:
让人们知道您找到了解决方案,进行第三次编辑,将其粘贴为答案,然后点击“接受”复选标记。 会做的,谢谢你的帮助! 【参考方案1】:好的,在喝了几杯咖啡和大量的谷歌搜索之后,我还不知道这一切是如何工作的,但看起来当我第一次升级内核时,.config 是基于正在运行的内核的配置,它包括所有所需的模块,因此它运行良好?然后不知何故,在随后的编译中,几乎所有的模块都没有在 .config 中配置(除了上面提到的 4 个)。长话短说,我使用旧的 .config 并运行 menuconfig 进行额外的更改,这似乎解决了我的问题。谢谢!
【讨论】:
【参考方案2】:如果不做“make clean”,之前的编译结果还在。只有受您更改的代码影响的模块才会被重建。
【讨论】:
对不起,我应该提到我确实做了 make clean,结果相同。 你在哪里解压新下载的内核? 您好,我在我的下载文件夹中解压,它是/home/wliao/Downloads/linux-2.6.39.1,但位置应该无关紧要? 只是想确保您没有在存在此问题的现有内核构建之上解压它。【参考方案3】:也许只有这四个模块依赖于您接触的文件。如果您想确认这一点,请执行make clean
,然后再次尝试构建,看看您是否没有重新编译所有模块。当然,这需要更长的时间!
【讨论】:
嗨,是的,我做了一个 make clean 但没有帮助【参考方案4】:尝试make V=1 ...
以获得详细输出。
甚至V=2
。
【讨论】:
【参考方案5】:我遇到了同样的问题,按照wliao的建议解决了。
问题描述:
-
几天前我将内核从 3.x.x(CentOS7 内置)升级到 5.0.0;
今天我要升级到5.3.0-rc6+;
升级前,我通过
make distclean
进行了全面清理;
在make
、make modules_install
和make install
之后,我尝试使用新内核重新启动;
但启动失败:error: /vmlinuz-5.3.0-rc6+ has invalid signature.
在谷歌上搜索了半天,我来到了这里,谢天谢地!
解决步骤:
-
从 /boot 复制现有的配置文件
cp -p /boot/config-3.10.0-957.27.2.el7.x86_64 .config
通过menuconfig
配置附加设置
make menuconfig
构建
make -j $(nproc)
sudo make modules_install
sudo make install
显示您的新内核版本
sudo grep ^menuentry /boot/efi/EFI/centos/grub.cfg | cut -d "'" -f2
设置默认启动内核
sudo grub2-set-default 'CentOS Linux (5.3.0-rc6+) 7 (Core)'
启动成功!
【讨论】:
以上是关于命令“制作模块”不会构建所有模块的主要内容,如果未能解决你的问题,请参考以下文章