前言
Linux内核支持多种架构。该篇小记是笔者第一次针对已有的内核配置文件来编译内核的,比如arm系列的博通bcm,海思HISI,恩智浦i.MX6ULL…本次是针对博通bcm2709_defconfig来编译内核的。
本次是针对博通bcm2709_defconfig来编译内核
一.编译之前的准备
- 安装交叉编译工具链https://blog.csdn.net/anmo_moan/article/details/108740807
- 安装ncurses库
sudo apt-get install libncurses5-dev libncursesw5-dev
二.生成.config配置文件
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
三.编译内核
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
编译时间较长,编译成功之后:
在编译的当前目录下会生成vmlinux和vmlinux.o文件 |
---|
在arch/arm/boot目录下生成ZImage文件 |
---|
这些都是Linux内核编译成功的标志。
四.替换内核
- 插入SD卡,将sd卡挂载到ubuntu
(1)查看sd卡挂载点
sudo fdisk -l
会查看到两个挂载点sd1和sd2
(2)在工作目录下创建两个文件夹
mkdir data1 data2
(2)分别将sd卡的两个分区挂载到创建的目录下
sudo mount /dev/sdb1 ./data1
sudo mount /dev/sdb2 ./data2
sdb1一般为fat文件系统
sdb2一般为ext4文件系统
挂载之后就可以查看到分区的内容了
2. 向对应分区载入必要的设备驱动模块modules,内核镜像,设备树等
2.1 安装modules
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make
INSTALL_MOD_PATH=./data2 modules_install 操作ext4分区,需要root权限。
2.2 更新 kernel.img 文件
前面已经用 mkknlimg 工具打包了kernel_new.img文件了,把它复制到boot分区并配置使用即可:
cp kernel_new.img [fat]/
编辑 [fat]/config.txt 文件,在最后加入一行:
kernel=kernel_new.img
2.3 复制其他相关文件
cp arch/arm/boot/dts/.dtb [fat]/
cp arch/arm/boot/dts/overlays/.dtb* ./data1/overlays/
cp arch/arm/boot/dts/overlays/README ./data1/overlays/
更新完成后插回开发板即可开机,开机后可以用 uname -a 命令查看kernel信息已经改变。