1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Linux树莓派开发——配置树莓派内核源码 内核编译 更换树莓派Linux内核

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

时间:2024-02-11 04:07:53

相关推荐

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

下载地址:/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卡,插上树莓派

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。