学习linux内核构建体系其实有几个原因
- 可以学习很多linux工具的使用,如make,gcc等,这些知识对于学习linux和在linux环境下工作都非常有用;
- 可以学习大型工程是怎么组织的;
- 可以知道linux内核是怎么一步一步的组装好的本身也是一件非常有意思的事情;
虽然深入了解linux内核构建体系有点难度,但是其实构建构建linux内核却是非常简单的。
构建过程
随着linux内核的进步,linux的构建过程现在已经非常简单了
以构建内核4.14.2为例,设内核源代码放在/home/lld/linux-4.14.2目录下
- cd /home/lld/linux-4.14.2
make mrproper
该步骤用于清理以前构建过程产生的文件、配置文件和备份文件
make oldconfig
该命令使用一个已有的.config文件为基础来生成一个新的配置文件。
其实生成配置文件的方法有很多,可以完全从零开始构造一个自己想要的内核,使用make menuconfig命令使用目录形式的构造是我比较喜欢的方式。当然也可以使用linux默认的配置,使用make x86_64_defconfig命令产生x86_64架构下默认的配置文件
make
非常简单,然后只需要等待构建完成即可。
如果想要构建过程更快一些,使用make -j n 使用并行构建,使用n个作业并行构建内核,将n替换为你想要的并行数,如4.make install
将内核安装在默认的位置。
指定构建目录的构建方法
前一节的方法使用和源代码一样的目录作为构建输出目录,当然也可以指定构建目录,设源代码在/home/lld/linux-4.14.2,构建目录在/home/lld/build/kernel
- cd /home/lld/linux-4.14.2
- make O=/home/lld/build/kernel menuconfig
- make O=/home/lld/build/kernel
- make O=/home/lld/build/kernel install
注意
如果配置某些组件选用了以module方式生成,则需要将这些module进行安装,将最后一步安装改为
make modules_install install
和make modules_install install