【Linux内核树】五步构建

0. 系统自带的内核树

有时,安装的系统已经自带了Linux内核树,足够用来编译驱动程序了。

自带的内核树通常位于

/lib/modules/<系统内核版本>/build

其中,系统内核版本可以用uname -r来查看

$ uname -r
5.11.0-41-generic

1. 环境配置

初次配置内核树要先安装一些必要的环境

sudo apt-get build-dep linux linux-image-$(uname -r)

(如果报错Error :: You must put some ‘source‘ URIs in your sources.list,请参照这里

除了上面的环境之外,还要安装这些

sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf dwarves

2. 下载源码

sudo apt-get source linux-image-unsigned-$(uname -r)

这一步结束之后,会多出三个文件(可以删除),

linux-hwe-5.11_5.11.0-41.45~20.04.1.diff.gz
linux-hwe-5.11_5.11.0-41.45~20.04.1.dsc
linux-hwe-5.11_5.11.0.orig.tar.gz

以及一个文件夹(内核源码所在的文件夹)

linux-hwe-5.11-5.11.0

(注:文件名称根据不同的系统版本会有所不同)

3. 构建准备

(注:任何时候,运行命令时遇见了permission denied,只需要在命令开头加上sudo后重新运行即可)

进入linux-hwe-5.11-5.11.0文件夹,输入

make menuconfig

稍微加载后,会进入这个页面
在这里插入图片描述
这里什么都不用修改,直接关闭界面即可(方向键选择Exit然后回车,或者连续按两下Esc就能退出),原因见本章节末。

然后,会显示这个对话框
在这里插入图片描述
蓝色框选中Yes后,按下回车键退出即可。

这样会在当前目录下生成一个.config文件(输入ls -a就能找到这个文件),保证稍后的make能够顺利执行。

4. 构建内核

为了防止make中的make modules_install环节失败, 请先运行下面的命令

sudo scripts/config --set-str SYSTEM_TRUSTED_KEYS ""

输入下面的命令开始构建(如遇见permission denied,在命令开头加上sudo后重新运行即可)

make

这里要狠狠地等一会儿,一般要一到数个小时。可以通过-j <最大并发任务数>命令,使用并发来提速。最大并发任务数一般可以是CPU数量的两倍。

(注:通过使用make help进行查阅可以发现,在输入make时,会自动执行 1)make vmlinux(构建原始内核) 2)make bzImage(构建压缩的内核)和 3) make modules(单独构建模块化的驱动)这三个动作)

5. 安装模块

最后,把模块安装到/lib/modules/$(uname -r)目录

sudo make modules_install 

如果遇见No such file or directory之类的错误,说明没有运行第四步开头的那行命令。那么目前的解决办法是:

  1. 运行下面的命令(将config文件里的SYSTEM_TRUSTED_KEYS设为空字符串)
    sudo scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
    
  2. 重新运行make(由于之前make过一次,但由于没输入上面的命令,其实是只完成了1/3的任务。这次的make会完成剩余的部分)
  3. make结束后,再次运行时,就不会出现相同的错误了
    sudo make modules_install
    

附录

编译、使用自己的Linux驱动

参考链接

Error :: You must put some ‘source‘ URIs in your sources.list

分析make config、make menuconfig、make xconfig三个linux内核配置界面的区别

【整理】make config,make menuconfig,make oldconfig,make xconfig,make defconfig,make gconfig

Linux内核剖析(五)Linux内核的构建过程

Makefile语法教学

make modules 和 make modules_install - CSDN

鸟哥的linux私房菜:第二十六章、Linux 核心编译与管理

Linux内核编译生成bzImage的详细方法步骤及错误解决

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值