目录
一、树莓派Linux源码配置
1、配置的三种方法
2、内核源码的下载
二、树莓派内核编译
1、树莓派的编译
2、生成vmlinux
三、更换树莓派内核的详细步骤
一、树莓派Linux源码配置
驱动代码的编译需要一个提前编译好的内核,所以就需要进行内核的编译,编译内核就必须完成相关的配置,配置的最终目的是会生成 .config文件,该文件是指导Makefile去把有用东西组织成内核。
1、配置的三种方法
第一种:通常买了开发板厂家会配linux内核的源码,使用厂家的.config文件进行配置
查找厂家 .config 指令
find . -name *_defconfig
树莓派1的工程是bcmrpi_defconfig,2、3的工程是bcm2709_defconfig。
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig指定ARM架构 指定编译器树莓派 主要核心指令
此命令功能是获取bcm2709_defconfig的配置到 .config里。
第二种方式:make menuconfig一项项的进行配置,通常是基于厂家的config来配置。
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig
第三种方式:全靠自己来实现。
2、内核源码的下载
下载地址:/raspberrypi/
下载好后传送到Ubuntu 即可。
二、树莓派内核编译
对树莓派内核源码进行配置后,下一步要进行树莓派Linux内核的编译,需要树莓派交叉编译工具、树莓派内核。
交叉编译的下载和使用可以点交叉编译
需要用到的库
sudo apt-get install bcsudo apt-get install libncurses5-dev libncursesw5-devsudo apt-get install zlib1g:i386sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
1、树莓派的编译
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbsj4指定用多少电脑资源进行编译 (j4表示4核)zImage表示生成内核镜像 modules要生成驱动模块 dtbs生成配置文件
2、生成vmlinux
编译成功后,可以看到源码树目录多了vmlinux这个文件,如果编译失败则没有此文件,成功后,目标zImage镜像在arch/arm/boot目录下(此步ARM架构的芯片都是类似)(vmlinux是未压缩的liunx,zImage是压缩好的liunx)。
三、更换树莓派内核的详细步骤
1、将生成的zImage打包成树莓派可用的xxx.img
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
2、插入装有树莓派系统的内存卡读卡器
连接到虚拟机就可以了。
使用dmesg
指令查看读卡器映射,出现sdb1、sdb2则为连接成功,如果只有一个sdb1,则需要重新往SD刷入系统(有可能是sdc1、sdc2或者sdd1、sdd2)。
3、在根目录新建两个文件夹data1和data2
mkdir data1 data2
4、挂载U盘
sudo mount /dev/sdb1 data1 sudo mount /dev/sdb2 data2
data1是fat分区,是boot相关的内容,kernel的img,data2是ext4分区,也就是系统的根目录分区。
5、安装modules, 用于安装设备驱动文件
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=[ext4] modules_install注意ext4是一个路径 :/home/lwl/data2或者:sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/media/linux/rootfs modules_install/media/linux/rootfs:TF卡设备会自动挂载到/media/${当前用户目录}/下的boot和rootfs目录下,也可以换成/home/lwl/data2
6、更新 kernel.img 文件
前面已经用mkknlimg 工具打包了kernel_new.img文件了,只要把它复制到boot分区(data1)并配置使用即可
ls /home/lwl/data1 //查看原文件
将文件备份,防止失败
cp kernel7.img kernel7OLD.img
7、把打包了kernel_new.img文件拷贝到data1,起名kernel7.img,直接替换为原来的kernel7.img
cp kernel_new.img /home/lwl/data1/kernel7.img
注意:拷贝完成后需要查看 md5的值,如果两文件的md5值不一样则需要重行拷贝,仿真文件却少。
md5sum kernel7.img 查看md5值
8、拷贝其他配置文件
cp arch/arm/boot/dts/.*dtb* /home/lwl/data1cp arch/arm/boot/dts/overlays/.*dtb* /home/lwl/data1/overlays/cp arch/arm/boot/dts/overlays/README /home/lwl/data1/overlays/
9、断开读卡器连接,取下SD卡,插上树莓派
先看一下我树莓派以前的内核版本
再来看一下更换后的内核版本
可以看到已经成功更换了树莓派的内核。
如果觉得《Linux树莓派开发——配置树莓派内核源码 内核编译 更换树莓派Linux内核》对你有帮助,请点赞、收藏,并留下你的观点哦!