IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 树莓派 4B 本地编译内核 -> 正文阅读

[嵌入式]树莓派 4B 本地编译内核

目录

1、下载内核源码

1.1、配置 proxy

1.2、安装依赖

2、配置内核

3、编译内核

4、更新内核

5、重启

6、问题

6.1、32bit/64bits

6.2、覆盖到 SD card


最近打算玩玩树莓派,遂之买了一块 Raspberry 4B 的板子。板子的资源就不在多说了 BCM2711的芯片,ARM Cortex-A72 @ Qual Core;

拿到板子,SD 卡中已经带有系统,所以呢,我们可以直接在树莓派上面编译 Kernel,不用在 PC 上交叉编译,只不过呢,树莓派上编译会稍显慢,不过无所谓;

官方其实对这部分有描述,参考:

https://www.raspberrypi.org/documentation/linux/kernel/building.md

1、下载内核源码

1.1、配置 proxy

我刚刚拿到单板,准备下载源码,但是一直都报各种 Github 连接失败,所以要配置一下:

git config --global --unset http.proxy

git config --global --unset https.proxy

git config --global ?--unset https.https://github.com.proxy

git config --global ?--unset http.https://github.com.proxy

然后呢,就可以在 Github 上面下载 Raspberry 的源码了:

git clone --branch rpi-5.10.y https://github.com/raspberrypi/linux

我这里用的是 5.10 的内核,所以下载的是 5.10.y 的分支;

1.2、安装依赖

将编译阶段需要的东西安装上:

sudo apt install git bc bison flex libssl-dev make

2、配置内核

通过下面内容来进行基本的配置:

KERNEL=kernel7l

make bcm2711_defconfig

3、编译内核

通过下述方式来进行编译:

make -j4 zImage modules dtbs

接下来就是漫长的等待;

4、更新内核

将编译完毕的内核相关文件覆盖:

sudo make modules_install

sudo cp arch/arm/boot/dts/*.dtb /boot/

sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/

sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/

sudo cp arch/arm/boot/zImage /boot/$KERNEL.img

5、重启

重新启动系统,通过 uname -r 查看是否被更新;

6、问题

6.1、32bit/64bits

当前默认情况下,Raspberry 4B 跑的是 32bit 的 Kernel 使用的是 32bit 的 toolchain,从官方的文档:

https://www.raspberrypi.org/documentation/linux/kernel/building.md

可以看到,如果是 32bit 的话针对 Raspberry 4B 来说:

KERNEL=kernel7l

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

对于 64bit 的话,针对 Raspberry 4B 来说:

KERNEL=kernel8

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

编译器使用的不一样;

上述需要在宿主机中,进行下载安装交叉编译环境进行编译;

6.2、覆盖到 SD card

在终端中,使用 lsblk 可以看到:

NAME? ? ? ? ? ? MAJ:MIN RM ?SIZE? ? ?RO TYPE MOUNTPOINT
mmcblk0? ? ? ? ?179:0? ? ? 0? ? ? ?29.7G? ?0? ?disk?
|--mmcblk0p1? 179:1? ? ? 0? ? ? ?256M? ?0? ?part? ? ? ? ?/boot
|--mmcblk0p2? 179:2? ? ? 0? ? ? ?29.5G??0? ?part? ? ? ? ?/

mmcblk0p1 分区是启动分区,被挂载到 /boot 目录下,也就是 SD card 中存放启动内容的地方;所以在编译完 Kernel 后,往这个目录下进行覆盖的;

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:59:50  更:2021-08-06 10:01:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:58:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码