想要编写自己的Linux
驱动(driver),第一步是要先构建Linux内核进程树
。
1. 内核版本的选择
如何选择将要构建的内核进程树的版本,要看编写的驱动想要运行在哪个版本的Linux内核
上。
比如,我想编写一个能运行在我的内核上的驱动(driver),首先要做的是查看自己的内核版本。
方法是运行uname
命令
uname -r
这里显示的5.11.0-40-generic
说明我要build的内核版本应为5.11.0
。
2. 下载源码
在这里的官网下载源文件。
https://mirrors.edge.kernel.org/pub/linux/kernel/
(注意,要下载linux
开头的,而不是ChangeLog
开头的)
首先,确保已经安装这些包(这是为了下一步的menuconfig
所准备的,如果使用不同的config
方法,需要的包可能有所不同)。
ncurses-dev
,flex
,bison
,libelf-dev
,libssl-dev
(注意:这里列出的是Ubuntu系统中包的名字。在其它系统中,这些包可能有不同的名字,请各位自行检索。)
正式构建前,需要先生成配置文件,来指定构建出的系统的各项属性。
这里使用menuconfig
。
make menuconfig
(还有很多其他的生成配置文件的方法,如oldconfig
,menuconfig
,xconfig
。每种需要另外安装的包可能有所不同。)
如果出现任何报错,安装对应的包即可。
如果没有任何问题,将显示下面的UI
。
不用做改变,按两下Esc
退出即可。(如果弹出提示框选择Yes
即可。)
(如果想了解每种选项的作用,可以参照这篇文章:Make Menuconfig详解 (配置内核选择)- CSDN)
输入
make
等待构建完成(过程可能持续1到多小时)。
报错信息:
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
解决方法
打开.config
文件
vim .config
把CONFIG_SYSTEM_TRUSTED_KEYS
的值改为空字符串""
。
(感谢@王小多在这篇文章下的评论:如果文件中这一行被注释了:# CONFIG_SYSTEM_TRUSTED_KEYS not set
,也需要解除注释,手动设为空字符串才行。否则sysnconfig
仍会问你要不要设置。)
CONFIG_SYSTEM_TRUSTED_KEYS=""
设置的结果如下
(有的小伙伴问我这里的vim是怎么设置的,具体的配置我放在了这篇文章里【vim】个性化配置vim(.vimrc))
然后重新运行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 内核源码树的建立