构建Linux内核进程树

目录


前言

想要编写自己的Linux驱动(driver),第一步是要先构建Linux内核进程树


下载内核源码

1. 内核版本的选择
如何选择将要构建的内核进程树的版本,要看编写的驱动想要运行在哪个版本的Linux内核上。

比如,我想编写一个能运行在我的内核上的驱动(driver),首先要做的是查看自己的内核版本。

方法是运行uname命令

uname -r

构建Linux内核进程树
这里显示的5.11.0-40-generic说明我要build的内核版本应为5.11.0

2. 下载源码
在这里的官网下载源文件。
https://mirrors.edge.kernel.org/pub/linux/kernel/

(注意,要下载linux开头的,而不是ChangeLog开头的)

开始构建

1. 安装必须的包

首先,确保已经安装这些包(这是为了下一步的menuconfig所准备的,如果使用不同的config方法,需要的包可能有所不同)。
ncurses-devflexbisonlibelf-devlibssl-dev

(注意:这里列出的是Ubuntu系统中包的名字。在其它系统中,这些包可能有不同的名字,请各位自行检索。)

2. 生成配置文件

正式构建前,需要先生成配置文件,来指定构建出的系统的各项属性。

这里使用menuconfig

make menuconfig

(还有很多其他的生成配置文件的方法,如oldconfigmenuconfigxconfig。每种需要另外安装的包可能有所不同。)

如果出现任何报错,安装对应的包即可。

如果没有任何问题,将显示下面的UI
构建Linux内核进程树
不用做改变,按两下Esc退出即可。(如果弹出提示框选择Yes即可。)

(如果想了解每种选项的作用,可以参照这篇文章:Make Menuconfig详解 (配置内核选择)- CSDN

3. 开始构建

输入

make

等待构建完成(过程可能持续1到多小时)。
构建Linux内核进程树


附录:可能的错误

报错信息:
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.

解决方法

  1. 打开.config文件

    vim .config
    
  2. CONFIG_SYSTEM_TRUSTED_KEYS的值改为空字符串""

    (感谢@王小多这篇文章下的评论:如果文件中这一行被注释了:# CONFIG_SYSTEM_TRUSTED_KEYS not set,也需要解除注释,手动设为空字符串才行。否则sysnconfig仍会问你要不要设置。)

    CONFIG_SYSTEM_TRUSTED_KEYS=""
    
  3. 设置的结果如下
    构建Linux内核进程树
    (有的小伙伴问我这里的vim是怎么设置的,具体的配置我放在了这篇文章里【vim】个性化配置vim(.vimrc))

  4. 然后重新运行make命令即可。

解决方法二

也可在终端中运行下面的命令来达到相同的效果。

scripts/config --set-str SYSTEM_TRUSTED_KEYS ""

参考链接

内核错误: No rule to make target ‘debian/canonical-certs.pem‘, needed by ‘certs/x509_certificate_list‘ - CSDN

Compiling the kernel 5.11.11 - askubuntu

linux 内核源码树的建立

上一篇:linux快速开发c程序的方法make


下一篇:xv6实验0-环境搭建