是否有一组最小的文件可以保留Linux内核编译,以便以后根据需要编译内核模块?

时间:2016-06-02 02:30:16

标签: linux linux-kernel

编译完linux内核之后,我需要在我的磁盘中保留一个巨大的源目录,以便进一步编写外部模块。

我不能简单地运行 make clean ,因为当我以这种方式编译某些模块时,这会让我失望:

$ make -C /lib/modules/`uname -r`/build

我粗略地阅读了内核源码的Makefile,但似乎没有目标可以完成这项工作。

问题:

我应该从工作的linux源目录中复制哪些文件有价值,以便进一步使用编译外部模块?

1 个答案:

答案 0 :(得分:2)

通过尝试针对干净的内核源构建外部模块,很容易弄明白。您可以注意到下一个错误:

  

错误:内核配置无效。

     

include/generated/autoconf.hinclude/config/auto.conf缺失。

     

在内核src上运行make oldconfig && make prepare来修复它。

  

警告:符号版本转储./Module.symvers

     

缺失;模块没有依赖关系和modversions。

要确保所有需要的文件到位,请执行下一步:

  1. 保存内核版本中的Module.symvers.config个文件。
  2. 现在你可以清理内核了:

    $ make distclean
    
  3. 将存储的.config文件复制回内核源目录并执行下一步:

    $ make modules_prepare
    

    修复了第一个错误。

  4. 将存储的Module.symvers文件复制回内核源目录。这修复了第二个错误。

  5. 就是这样。您已准备好在内核源代码中使用最少的构建文件构建外部模块。

    您实际上并不需要所有内核源文件来构建外部模块。您只能留下下一个文件:

    .
    ├── arch
    │   └── x86/*
    ├── include/*
    ├── scripts/*
    ├── Makefile
    └── Module.symvers