1、下载linux内核
此处运用linux-5.4.91
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.91.tar.gz
2、安装arm的交叉编译工具链
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install gcc-arm-linux-gnueabihf
这里有两种交叉编译工具链,目前还没有去了解两种的不同与使用情况,此处使用的是第一种(好像是有一种可以编译浮点型)
3、安装词法分析器flex和语法分析器bison与相关库
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install libncurses5-dev
有的linux系统有可能自带这两个分析器与库
4、编译内核
将linux内核文件解压后进入文件夹。
清理工程
make distclean
使用默认配置文件配置工程
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
其中CROSS_COMPILE为指定交叉编译工具,ARCH为指定芯片架构 vexpress_defconfig为编译输出文件
vexpress_defconfig默认配置文件存储路径为
/home/docp/polemin/linux-5.4.91/arch/arm/configs/vexpress_defconfig
5、修改Makefile的两个变量值,指定芯片与交叉编译器
ARCH ?= arm CROSS_COMPILE ?= arm-linux-gnueabi-
6、进行编译,分别生成,内核镜像、模块以及设备树
make
make modules
编译模块
make dtbs
编译设备树
或者
make all
编译所有
ps:make XXXX.dtb
编译单个设备树文件
内核镜像路径为./arch/arm/boot/zImage
设备树路径为./arch/arm/boot/dts/vexpress-v2p-ca9.dtb
7、注意点
1)此处使用的是vexpress开发板,所以linux内核编译时,默认配置文件、内核及设备树,都是vexpress对应的
2)内核来源:
①、www.kernel.org,linux内核官网,提供各个版本的linux内核
②、芯片厂商,厂商会挑选一个版本的内核,比如4.1.15版本,然后重点维护这个版本,供用户使用
③、开发板厂商,开发板厂商会下载芯片厂商提供的内核,然后在根据自己开发板需要,添加各种驱动,深入定制内核,供用户使用