首页 > linux编译内核模块缺失

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: 安装重启之后不能上网,很多功能没有!


自己动手,丰衣足食。

上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

【热门文章】
【热门文章】