树莓派Linux内核编译

首先我们来讲一下为什么要配置树莓派的linux内核
因为要进行驱动代码的编写需要一个提前编译好的内核,编译内核就必须配置,配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核。
一般有这三种方法
第一种方式:
cp 厂家.config .config
第二种方式:
make menuconfig 一项项配置,通常是基于厂家的config来配置
第三种方式:
完全自己来

如何配置树莓派的Linux内核
1.把树莓派的Linux内核源码,交叉编译工具拷贝到Linux虚拟机
(资源下载: github.com/raspberrypi)
注意要修改环境变量:
vi .bashrc
最后一行加上
export PATH=$PATH:/home/ck/pi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
(根据自己目录自行修改)
在这里插入图片描述

2.配置config文件
因为Linux支持多平台,多架构,所以编译之前要配置,配置成适合的目标平台来用。树莓派3对应的是bcm2709_defconfig
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig

3.编译内核
在这之前我们安装必要的库(比如ncurse等)
sudo apt-get install bc
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
然后执行
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig

最后我们编译内核
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
/*
-j4 指定用多少电脑资源进行编译
zImage 生成内核镜像
modules 要生成驱动模块
dtbs 生成配置文件
*/

然后就是持续大概10-30分钟的内核编译过程,怎么判断编译有没有完成
1.没有报错
2.编译结束生成vmlinux这个文件
在这里插入图片描述
4.Linux内核镜像拷贝至树莓派
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

拔出树莓派的SD卡,用读卡器映射到虚拟机
输入dmesg可以看到
在这里插入图片描述先创建两个文件夹 然后拷贝SD卡的两个分区到两个文件夹
mkdir data1
mkdir data2

sudo mount /dev/sdb1 data1
//fat分区,是boot相关的内容,kernel的img
sudo mount /dev/sdb2 data2
//ext4分区,也就是系统的根目录分区
在这里插入图片描述
然后我们安装modules (包含设备驱动文件: hdmi usb wifi io口…)
要挂载到ext4的分区,也就是data2
到树莓派源码目录下执行
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/ck/data2 modules_install
在这里插入图片描述
安装更新 kernel.img 文件,注意镜像名字是kernel7.img
先备份,避免刷机失败
cd /home/ck/data1
cp kernel7.img kernel7OLD.img

再把编译新生成的拷贝到data1,起名kernel7.img
cp kernel_new.img /home/ck/data1/kernel7.img
因为有备份 直接覆盖他就行
在这里插入图片描述
看一下两个文件的md5值,一样说明拷贝成功。

拷贝配置文件
cp arch/arm/boot/dts/.* dtb* /home/ck/data1(这句话dtb前面打了空格不然显示不了*,实际操作去掉)
cp arch/arm/boot/dts/overlays/.* dtb* /home/ck/data1/overlays
cp arch/arm/boot/dts/overlays/README /home/ck/data1/overlays/

然后把SD卡插回去就可以了 这时候树莓派的内核信息已经改变了
在这里插入图片描述

以上就是关于树莓派Linux内核编译,尚有不足之处,请各位大神指正。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值