linux-kernel - linux编译内核模块缺失
ringa_lee
ringa_lee 2017-04-17 13:21:15
[Linux讨论组]

不知道什么原因,每次我按照下面的步骤编辑安装内核的时候,编译出来的源码都只有很少几个,球大神帮忙看一下是哪里不对!

bashwget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.30.tar.gz
tar -zxvf linux-3.2.30.tar.gz
cd linux-3.2.30
make menuconfig
# 选择了KVM相关的模块,其他的使用默认选项
make modules

编译结果显示安装了的内核模块只有下面几个:

  Building modules, stage 2.
  MODPOST 7 modules
  CC      arch/x86/kernel/test_nx.mod.o
  LD [M]  arch/x86/kernel/test_nx.ko
  CC      arch/x86/kvm/kvm-intel.mod.o
  LD [M]  arch/x86/kvm/kvm-intel.ko
  CC      arch/x86/kvm/kvm.mod.o
  LD [M]  arch/x86/kvm/kvm.ko
  CC      drivers/hid/hid-logitech-dj.mod.o
  LD [M]  drivers/hid/hid-logitech-dj.ko
  CC      drivers/scsi/scsi_wait_scan.mod.o
  LD [M]  drivers/scsi/scsi_wait_scan.ko
  CC      drivers/vhost/vhost_net.mod.o
  LD [M]  drivers/vhost/vhost_net.ko
  CC      net/netfilter/xt_mark.mod.o
  LD [M]  net/netfilter/xt_mark.ko

请问这是什么原因?
ps: 安装重启之后不能上网,很多功能没有!

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
高洛峰

自己动手,丰衣足食。

上StackOverflow上搜了下,发现确实有人遇到过跟我一样的问题啊:

http://stackoverflow.com/questions/6307206/command-make-modules-doesnt...

原因跟我预想的一样,在执行make menuconfig的时候,config程序会根据当前系统的模块选项来生成.config中的配置选项,也就是说,将当前系统的配置作为新系统的默认配置。而当前系统安装了xen,所以可能导致config程序无法识别当前系统的配置情况,导致生成的默认配置中,所有的模块都没有被选中。

执行make modules的时候自然也不会被编译。

解决办法:
1. 下载同样的源码到一台纯净的linux服务器上,执行make menuconfig,使用默认的配置,然后退出保存;
2. vim .config查看生成的配置文件,新的有5000+行配置,而有问题的配置文件只有2000+行;
3. 将生成的.config文件拷贝到要编译内核的机器上,替换linux源码目录的.config文件,重新make menuconfig,添加需要的模块选项,再make all

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号