Linux树莓派开发——配置树莓派内核源码,内核编译,更换树莓派Linux内核

目录

一、树莓派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、内核源码的下载

 下载地址:https://github.com/raspberrypi/ 

 

下载好后传送到Ubuntu 即可。

二、树莓派内核编译 

        对树莓派内核源码进行配置后,下一步要进行树莓派Linux内核的编译,需要树莓派交叉编译工具、树莓派内核

交叉编译的下载和使用可以点交叉编译

需要用到的库

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

1、树莓派的编译

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
j4指定用多少电脑资源进行编译 (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/data1
cp arch/arm/boot/dts/overlays/.*dtb* /home/lwl/data1/overlays/
cp arch/arm/boot/dts/overlays/README /home/lwl/data1/overlays/

9、断开读卡器连接,取下SD卡,插上树莓派

先看一下我树莓派以前的内核版本

再来看一下更换后的内核版本

可以看到已经成功更换了树莓派的内核。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值