树莓派Linux源码配置

本文详细介绍了如何配置和编译树莓派的Linux内核。首先,解释了配置内核的原因是为了编译驱动代码,并提供了两种配置方法:使用厂家配置或通过makemenuconfig逐项设置。接着,详细阐述了配置过程,包括指定架构、编译器和内核版本,以及使用make命令进行编译。此外,还讲解了如何安装必要的库文件,将编译后的内核镜像打包,并安装到树莓派SD卡中。最后,提到了修改配置文件和启动文件,以确保新内核的成功启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.为什么要进行树莓派源码的配置呢?

因为如果我们要从事驱动代码的编写的话肯定要对编写的代码进行编译,如果要对驱动代码进行编译的话就必须要一个提前编译好的内核,因此编译内核就必须配置。
配置的最终目标生成一个.config文件,改文件指导Makefile去把有用的东西组织成内核。
配置方式:

1,厂家配置Linux内核源码
2,make menuconfig 一项项配置,通常是基于厂家的config配置
3,cp 厂家.config .config

二、如何配置树莓派Linux内核?

第一种方式:(推荐使用)

1.厂家配linux内核源码,比如说买了树莓派,树莓派linux内核源码
cp 厂家.config .config (树莓派1的工程是bcmrpi_defconfig,树莓派2、3的工程是bcm2709_defconfig)

ARCH=arm  CROSS_COMPILE=arm-linux-gnueabihf-  KERNEL=kernel7  make bcm2709_defconfig
指定ARM架构               指定编译器                 树莓派内核        主要核心指令

ARCH=arm:指定为RAM架构
CROSS_COMPILE=arm-linux-gnueabihf- :指定编译器
KERNEL=kernel7:指定内核版本
配置成功:
在这里插入图片描述

第二种:
make menuconfig 一项项配置,通常是基于厂家的config来配置 (需要安装ncurse库,下面有介绍)

ARCH=arm       CROSS_COMPILE=arm-linux-gnueabihf-   KERNEL=kernel7     make menuconfig
#指定ARM架构         指定编译器                        树莓派内核           主要核心指令

ARCH=arm:指定为RAM架构
CROSS_COMPILE=arm-linux-gnueabihf- :指定编译器
KERNEL=kernel7:指定内核版本
在这里插入图片描述
安装相关库文件:

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

在这里插入图片描述

  • 上下左右键进行操作
  • Enter进入下一个子菜单(末尾带箭头的会有子菜单)
  • " M " 模块方式生成驱动文件xxx.ko 系统启动后,通过命令inmosd xxx.ko 加载
  • " * " 编译进内核 zImage包含了
开始编译:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
  • ARCH=arm:指定为RAM架构
  • CROSS_COMPILE=arm-linux-gnueabihf- :指定编译器
  • KERNEL=kernel7:指定内核版本
  • -j4:四核处理器来编译(可根据虚拟机的硬件来更改)
  • zImage:生成内核镜像 modules:生成的驱动模块
  • dtbs:生成配置文件

在这里插入图片描述
我电脑编译了24分钟。
在这里插入图片描述
表示编译成功了。失败则无此文件。zImage为目标文件

成功后打包zImage成树莓派可用的xxx.img

./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

在这里插入图片描述
表示打包成功。

dmesg :表示查看内核信息

在这里插入图片描述
把sdb1和sdb2挂到我们的Ubuntu这边来
把树莓派的sd卡插入ubuntu系统电脑,树莓派的sd卡有两个分区:

一个fat分区,是boot相关的内容,kernel的img文件就放在这个分区里;
一个是ext4分区,也就是系统的根目录分区。

1.创建两个文件夹
data1–>fat分区–>放置镜像文件
data2–>ext4分区–>放置根目录文件
在这里插入图片描述
2.挂载sdb1和sdb2 到 data1 data2

sudo mount /dev/sdb1 data1
sudo mount /dev/sdb2 data2

此时data1和data2就有数据了(data1:(fat分区) 放置内核镜像 data2(ext4分区):存放存放根目录)
在这里插入图片描述
3、安装modules(设备驱动文件: hdmi usb wifi io …)
modules安装在ext4分区也就是我们的data2分区
安装modules的路径是我们源码的路径
在树莓派的知识包路径下运行这个指令。

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/mr_qin/system/data2 modules_install

4、安装更新 kernel7.img
4.1.避免刷机失败我们把kernel7.img备份一下
在这里插入图片描述
4.2.复制编译好的kernel_new.img到挂载的u盘里面。
.mr_qin@season:~/system/linux-rpi-4.14.y$ cp kernel_new.img ../data1/kernel7.img
4.3.我们可以看一下相关信息:
du xxx -h 可以查看文件大小
在这里插入图片描述
再用md5sum可以查看一个文件的值,这个值是唯一的,通过查看拷贝过程中的两个文件的值就可以知道是否拷贝错误。
在这里插入图片描述
拷贝成功。
4.4.拷贝配置文件

cp arch/arm/boot/dts/.*dtb* /home/mr_qin/system/data1
cp arch/arm/boot/dts/overlays/.*dtb* /home/mr_qin/system/data1/overlays/
cp arch/arm/boot/dts/overlays/README  /home/chenlc/data1/overlays/

在这里插入图片描述
这下我们的准备工作就做好了。

5.断开SD开的连接 把SD开的连接接到电脑上
6.修改codline.txt文件

dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

7.修改config.tex文件

dtoverlay=pi3-miniuart-bt

最后接上串口钱然后上电,成功!查看我们的树莓派版本号,与之前的哦不一样了,说明我们内核编译成功了!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值