树莓派3B Linux源码配置和内核编译

[树莓派3B+]&[内核版本6.1]的linux内核编译+替换 (超详细) 虽然Linux内核源码有上万行,但是Linux内核编译出来只有若干个M,其原因是编译的时候是针对一个特定平台,所以不是所有的代码都会参与编译。这也再次解释了为什么Linux的可移植性会如此强大。也正是因为Linux强大的可移植性,针对不同的目标平台(ARM?X86?PowerPC?),在进行内核编译之前,就需要针对性的配置。 内核配置完成后,就可以结合交叉编译工具链进行内核编译了! 阅读详情

一、下载内核源码和交叉编译工具链

内核源码下载网址:https://codechina.youkuaiyun.com/mirrors/raspberrypi/linux/-/tree/rpi-4.14.y
交叉编译工具链下载网址:https://github.com/raspberrypi/tools

注:树莓派里安装的系统镜像版本要和kernel代码对应
因为树莓派系统是在不断开发和升级的,如果你的树莓派使用的是某个时间的系统镜像,那么最好也使用当时的kernel代码。

如何选择内核源码

在树莓派上输入下面的指令来查看树莓派里安装的系统镜像版本

uname -r

对于树莓派3B(使用的镜像版本的时间是2019-04-08):其内核版本是4.14.98-v7+,所以选择4.14版本的代码;只需直接访问上面所给的网址,点击clone下载,即可;

不是该内核版本的,可以通过下图最左边的下拉框来选择
在这里插入图片描述

二、解压和环境的配置

解压

将压缩包拷贝到Ubuntu上,并在压缩包的路径下进行解压

unzip tools-master.zip
unzip linux-rpi-4.14.y.zip

交叉编译工具链环境的配置

进入到home/tao/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin目录下
由于使用的是64位的电脑进行交叉编译,所以需要进入gcc-linaro-arm-linux-gnueabihf-raspbian-x64这个文件里

使用的是该目录下的arm-linux-gnueabihf-gcc指令,进行交叉编译

为了便捷的使用该指令(在使用arm-linux-gnueabihf-gcc时,省去前面home/tao/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin这些冗长的路径,直接arm-linux-gnueabihf-gcc即可),并且使系统能够识别arm-linux-gnueabihf-gcc该指令(能够自动补全),就需要配置环境

配置环境的方法

通过指令 echo $PATH 查看当前的环境变量

在当前的环境变量的后面加上home/tao/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin(路径因人而异,仅供参考)

1、临时有效(换个窗口就无效了)

通过 export 指令进行环境变量的配置

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/tao/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

2、永久有效

	 修改工作目录下的.bashrc 隐藏文件,配置命令终端的
	 vi /home/tao/.bashrc 
	 在文件最后一行加入:
	 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/tao/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
	 source /home/tao/.bashrc 加载配置文件,马上生效配置。

三、Ubuntu上配置config

注:下面的操作都是在linux-rpi-4.14.y/目录下进行的

方法1、使用源码里自带的config

内核配置的指令
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig

ARCH=arm: 指定ARM架构
CROSS_COMPILE=arm-linux-gnueabihf-: 指定编译器为树莓派的交叉编译工具链
KERNEL=kernel7: 主要核心指令
make bcm2709_defconfig: 获取bcm2709_defconfig工程的配置到.config

树莓派1:
KERNEL=kernel
工程是bcmrpi_defconfig

树莓派2、3、3B:
KERNEL=kernel7
工程是bcm2709_defconfig

树莓派4:
KERNEL=kernel7l(是英文“L”的小写字母)
工程是bcm2711_defconfig

方法2、使用当前树莓派的config,以防丢失原来使用的树莓派的配置

加载模块:sudo modprobe configs

把 /proc/config.gz 内容复制到要编译的电脑上

解压,保存为.confg文件。
zcat config.gz > .config
注:必须在linux环境下解压

把此config文件复制到linux源码的根目录


配置的方式有三种
第一种方式:cp 厂家.config .config
第二种方式:make menuconfig 一项项配置,通常是基于厂家的config来配置
第三种方式:完全自己来

驱动两种加载方式:
第一种方式:在make menuconfig配置时,配置为 * 编译进内核 ,使得zImage包含了驱动
第二种方式:在make menuconfig配置时,配置为 M 模块方式生成驱动文件xxx.ko;系统启动后,通过命令 sudo inmosd xxx.ko 进行加载

四、Ubuntu上编译内核

执行以下指令来安装必要的库:
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

注:下面的操作都是在linux-rpi-4.14.y/目录下进行的

1、内核编译

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs

ARCH=arm: 指定ARM架构
CROSS_COMPILE=arm-linux-gnueabihf-: 指定编译器为树莓派的交叉编译工具链
KERNEL=kernel7: 主要核心指令
-j4: 指定用多少电脑资源进行编译,来加快编译的速度
zImage: 生成内核镜像
modules: 生成驱动模块
dtbs: 生成配置文件

2、查看源码树目录是否多了vmlinux

编译成功后,看到源码树目录多了vmlinux,失败则无此文件
成功后,目标zImage镜像在 arch/arm/boot 底下

3、打包zImage成树莓派可用的xxx.img

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

4、数据拷贝到树莓派

创建两个用于挂载树莓派SD卡的文件
mkdir data1 data2

挂载U盘
sudo mount /dev/sdb1 data1 挂载fat分区,包含boot相关的内容,kernel的img
sudo mount /dev/sdb2 data2 挂载ext4分区,也就是系统的根目录分区

安装modules, 设备驱动文件: hdmi usb wifi io …
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/tao/data2 modules_install

安装更新 kernel.img 文件,注意镜像名字是kernel7.img
先备份
进入到data1文件里
cp kernel7.img kernel7OLD.img

再把编译新生成镜像文件拷贝到data1,起名kernel7.img
cp kernel_new.img /home/tao/data1/kernel7.img

拷贝配置文件
cp arch/arm/boot/dts/.dtb /home/tao/data1

拷贝其他文件
cp arch/arm/boot/dts/overlays/.dtb* /home/tao/data1/overlays/
cp arch/arm/boot/dts/overlays/README /home/tao/data1/overlays/

5、检查树莓派内核更新是否成功

更新完成后将SD卡插回树莓派即可开机,开机后可以用 uname -r 命令查看内核版本是否改变

基础——树莓派3B配置 1、树莓派3B(Raspberry Pi 3 型号 B SBC)硬件配置 Broadcom BCM2837 芯片组,运行频率 1.2 GHz 64 位四核 ARM Cortex-A53 802.11 b/g/n 无线局域网 蓝牙 4.1(经典和低能耗BLE) 双核 Videocore IV® 多媒体协处理器 1GB LPDDR2 存储器 支持所有新的 ARM GNU... 阅读详情

相关推荐

树莓派3B+内核编译

获取内核源码,https://github.com/raspberrypi。 选着linux工程代码,https://github.com/raspberrypi/linux,版本分支选择rpi-4.14.y 获取内核配置文件 如果已经有内核配置文件则不需要此步骤。 在当前运行系统中执行如下命令可以获取config.gz配置文件, pi@raspberrypi:~$ sudo modprob...

jqh_111的专栏 4422

树莓派3B 内核编译

树莓派3 编译内核

王建国的专栏 7725

树莓派3B Linux的源码配置和内核的编译讲解

树莓派3B Linux的源码配置和内核的编译讲解

asd25415129591的博客 694

树莓派3B+内核交叉编译

1.准备工作 1.下载内核源码 在树莓派上使用 uname -a 命令查看内核版本 下载相应的内核源码:https://github.com/raspberrypi/linux 下载交叉编译器:https://github.com/raspberrypi/tools 2.安装交叉编译器 将下载的内核和交叉编译工具传输到Ubuntun中(可以通过Smaba,ssh,以及VMware的文...

u011385476的博客 1251

树莓派3b——linux内核更新

闲来无事,试水写个博客,各位大神看看就好 也希望能帮助到别人呗

qq_35297619的博客 8233

使用交叉编译工具进行Linux内核(硬件平台-树莓派3b)编译

安装交叉编译工具链 sudo apt-get install gcc-arm-linux-gnueabihf 下载Linux内核源码 Linux内核源码下载 内核配置 使用厂家提供的config进行配置,树莓派1的工程是bcmrpi_defconfig;树莓派2、3的工程是bcm2709_defconfig。 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig 此命令功能是获取bcm2.

love12fly@sina.com 290

Linux 树莓派 内核多大,为树莓派编译官方版本Linux内核

为树莓派编译Linux内核的文章在网上面有很多,但是大部分文章中记录的是直接从GitHub上面拉取官方的repository,然后用官方的一整套工具链编译生成Linux内核,没有人尝试过直接从Linux Kernel官网下载源码然后编译生成Linux内核的。自己花了点时间编译了kernel官网上的Linux内核源码,并且也成功了,特此来记录一下研究的过程。下面所有的操作全部在/home/test/...

weixin_42523693的博客 521

树莓派3B+变身工业控制器:保姆级IgH EtherCAT主站搭建与实时内核配置避坑指南

本文详细介绍了如何将树莓派3B+改造为工业级EtherCAT主站控制器,涵盖实时内核配置、IgH EtherCAT主站搭建、系统集成与性能优化等关键步骤。通过保姆级教程和避坑指南,帮助开发者低成本实现高实时性工业控制,适用于自动化设备、机器人控制等场景。

weixin_33728268的博客 386

编译自定义的树莓派内核

写在最前面,以前一直想自己做一个系统来玩玩儿,可是苦于找不到资料,外加遇到很多的问题都不知道如何下手,所以。。。才有本博客,避免其他道友和我一样,浪费自己的时间不去撩小姐姐 博客实现的功能:通过自己的电脑 -->交叉编译<-- 树莓派的内核,即定制内核,剪裁系统等等说法,如有不对,欢迎大神指导批评。

miracle 6216

树莓派3B之交叉编译链和内核编译

在Ubuntu上搭建树莓派3B的交叉编译环境和编译内核

u010833052的博客 1万+

SSD性能测试进阶:用fio的io_uring引擎榨干你的NVMe硬盘

本文深入探讨了如何利用fio的io_uring引擎对NVMe SSD进行深度性能测试。通过对比传统libaio引擎,详解了io_uring低开销、高并发的优势。文章提供了从测试矩阵设计、队列深度分析到写入放大观察和尾延迟可视化的完整进阶方法,并附有实战案例与脚本,旨在帮助用户科学压榨NVMe硬盘的极限性能,获取更真实的评估数据。

weixin_29247219的博客 326

下载linux内核源码并编译替换到ubuntu中使用

uname -a 查看自己的ubuntu使用的内核版本 去这里下载内核源码,https://www.kernel.org/pub/linux/kernel/。稳定起见选择和自己内核相近的版本 或者直接 sudo apt-get install linux-source-4.15.0 (这里选择版本的时候选择相近的版本) 将源码下载到 /usr/src/linux-source-x.x.x/ 完成后解压缩源码包 安装配置内核的必要软件包 apt-get install libssl-dev libn...

ddddfang的专栏 1169

Superpowers:可编程AI协作协议与Skill工程化实践

AI编程正从提示词驱动迈向工程化协作新范式。Superpowers并非传统代码补全工具,而是一套定义清晰、可版本控制、可调试复用的AI协作协议——它将AI能力抽象为带输入校验、执行管道、输出契约和元数据声明的Skill(类DSL构件),再通过状态驱动的Workflow编排实现跨平台、可熔断、含人工Checkpoint的自动化流水线。其核心价值在于解决AI生成代码长期存在的不可复现、不可审计、不可交接三大痛点,支撑OpenAPI转TS、Figma转Vue等高复用场景落地。本文深入解析Skill设计四重契约与P

weixin_31124163的博客 376

在树莓派3b/3b+上搭建rt-thread多核开发环境

1.本文目的 本⽂主要介绍如何快速⾼效的搭建树莓派rt-thread的开发环境。按照⽂章的步骤,可以很快速的将rt-thread运⾏起来。 2.准备条件 1.raspberry-pi 3b/3b+均可,本文使用的是3b+版本 2.usb转ttl串口模块,本文使用的是ch340 3. ubuntu系统的电脑, 本文使用的是ubuntu18.04 准备好.........

tugouxp的专栏 3406

闲人闲谈PS之一项目库存跨公司业务STO解决方案--SAP闲人的开篇

写这篇文章之前,简单说一下发这篇文章的动机。也算是在SAP这一行干了快10多年,在对一个模块了解越来越深入,越发觉自己的SAP知识浅薄。总的来说,和多数顾问一样,对于**标准功能**的应用业务场景理解还是存在或多或少的知识盲区。 因为一个偶然,看到SAP团子君的文章,分享了很多干货文章。这也是自己一直想做的时候,不管水平高低与否,分享本身就意味着提升。好了废话不多说,先在优快云上发一篇吧,困惑自己将近10年的问题的解决方案。 业务场景:在项目型企业中,通常会有这样的业务,母公司和客...

SAP闲人的博客 9267

基于知识图谱的时空事件关联推理能力培养

随着信息技术的飞速发展,大量的时空事件数据被产生和收集,如交通流量数据、气象观测数据、社交媒体上的地理定位信息等。这些数据蕴含着丰富的知识和规律,但要从中提取有价值的信息并非易事。基于知识图谱的时空事件关联推理旨在通过构建知识图谱,将时空事件数据进行整合和关联,从而实现对事件之间潜在关系的挖掘和推理。本文的目的是系统地介绍基于知识图谱的时空事件关联推理能力的培养方法,包括核心概念、算法原理、数学模型、实际应用等方面。

操作系统内核探秘的博客 750

linux内核编译

环境:树莓派3b,ubuntu-meta系统。 linux内核下载: https://mirrors.edge.kernel.org/pub/linux/kernel/ https://elixir.bootlin.com/linux/v4.14.34/source http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/ ...

weixin_30375427的博客 96

飞牛NAS1.1.19更新后SSH连不上?两步快速恢复连接

飞牛NAS1.1.19版本更新后SSH无法连接😟,实则是官方安全策略升级默认关闭了该服务,本文分享两步实操配置恢复SSH连接💻,还同步了官方的设备安全配置建议,帮助用户兼顾使用与设备防护🔒。

XiaoqiangClub的博客 2098

2. Macmini M4编译树莓派3B+ Linux kernel(arm64)

本文将详细介绍在macOS 15.4上,使用Mac mini M4为树莓派3B+交叉编译Linux内核的全过程。记录编译过程中遇到的典型问题及解决方案。

u014034516的博客 690

基于上下文的 Listwise 重排模型(一):miRNN

2018年阿里团队提出的miRNN(Mutual Influence aware RNN)模型,首次将电商搜索重排建模为全局优化问题,通过RNN捕捉商品序列的相互影响,结合Beam Search生成最优排序,在淘宝搜索中实现GMV(商品交易总额)提升5%的突破。本文将结合论文细节与通俗案例,拆解这一工业级重排框架的核心逻辑。

进一步有进一步的欢喜~ 1918

Allegro格式PCB转换成Pads操作指导

变量:AEX_BIN_ROOT 值:D: MentorGraphics>PADSVX1.2>SDD_HOME>translators>win32bin (值:软件按装的位置,可以是9.5版本,也可以是VX1.0等不同的版本)。变量:HOME 值:C:Users>win7>AppData>Roaming>SPB_Data (这个值是allegro快捷键存放位置器,也可以随意放置在那个盘,我们可以采用默认的路径)。第4步:打开 PADSLayout软件,然后选择导入文件,选择刚刚处理的 allegro文件。

weixin_54787054的博客 3717

openEuler Raspberry Pi Kernel交叉编译实战:从零开始构建自定义内核

前往项目官网免费下载:[https://ar.openeuler.org/ar/](https://ar.openeuler.org/ar/?utm_source=csdn_blog) 想要为你的树莓派设备构建定制化的openEuler内核吗?🧐 本指南将带你完成openEuler Raspberry Pi Kernel交叉编译的完整过程,让你能够从零开始编译适用于树莓派3B/3B+/4B/4

gitblog_06872的博客 152

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

树莓派实时内核(RT-kernel)的配置和编译

鉴于网上研究树莓派实时系统的文章很少,在此记录一篇关于树莓派实时内核编译的过程。 树莓派内核的编译主要分为两种:本地编译和交叉编译。本地编译速度较慢,但是方便;交叉编译速度快,但是操作麻烦。本篇介绍本地编译的过程。 一、编译环境 (1)树莓派3B (2)操作系统:https://www.raspberrypi.org/downloads/raspbian/ (2019-07-10-raspbia...

jueyisan的博客 8596

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

translategemma-27b-it部署案例:在树莓派5+USB GPU扩展盒上运行轻量图文翻译

本文介绍了如何在星图GPU平台上自动化部署【ollama】translategemma-27b-it镜像,实现离线轻量级图文翻译。该镜像支持中英日韩等55种语言,可直接解析菜单、说明书等真实场景图片并输出专业级译文,适用于旅行即时翻译、现场设备检修文档解读等边缘AI应用。

weixin_36431814的博客 503

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

树莓派linux内核源码编译

为防止内核覆盖中的现有模块,并在uname输出中说明运行的是自己的内核,调整。修改.config为防止内核覆盖中的现有模块,并在uname输出中说明运行的是自己的内核,调整。修改.config。

哦豁灬 1万+
上一篇: 树莓派3B 底层io驱动开发(实现火灾警报器)
下一篇: Linux GDB的简单使用
聚酰胺纤维
博客等级 码龄6年 43粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值