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 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 编译树莓派Linux内核 -> 正文阅读

[开发工具]编译树莓派Linux内核

??Raspberry Pi 内核Linux代码存储在 GitHub 中,可以在github.com/raspberrypi/linux上查看。

一、下载linux内核源码

git clone --depth=1 https://github.com/raspberrypi/linux

??上面的命令将下载当前的活动分支。省略–depth=1将下载整个存储库,包括所有分支的完整历史记录,但占用更多的存储空间。要下载不同的分支,可以使用以下–branch选项:

git clone --depth=1 --branch <branch> https://github.com/raspberrypi/linux

二、在本地编译linux内核

??在本地编译就是在树莓派上编译linux内核

2.1、安装 Git 和构建依赖项

sudo apt install git bc bison flex libssl-dev make

2.2、配置内核

??对于 Raspberry Pi 1、Pi Zero、Pi Zero W 默认构建配置

cd linux
KERNEL=kernel
make bcmrpi_defconfig

??对于 Raspberry Pi 2、Pi 3和 Pi 3+

cd linux
KERNEL=kernel7
make bcm2709_defconfig

??对于 Raspberry Pi 4 默认构建配置(32 位)

cd linux
KERNEL=kernel7l
make bcm2711_defconfig

??对于 Raspberry Pi 4 默认构建配置(64 位)

cd linux
KERNEL=kernel8
make bcm2711_defconfig

2.3、编译、安装linux内核

??构建并安装内核、模块和设备树。 对于 32 位内核:

make -j4 zImage modules dtbs
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

??对于 64 位内核:

make -j4 Image modules dtbs
sudo make modules_install
sudo cp arch/arm64/boot/dts/*.dtb /boot/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm64/boot/zImage /boot/$KERNEL.img

三、交叉编译linux内核

3.1安装依赖项和工具链

??安装所需的依赖项

sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

??为 32 位内核安装 工具链

sudo apt install crossbuild-essential-armhf

??为 64位内核安装 工具链

sudo apt install crossbuild-essential-arm64

3.2、配置内核

3.2.1、配置32位

??对于 Pi 1、Pi Zero、Pi Zero W

cd linux
KERNEL=kernel
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig

??对于 Pi 2、Pi 3、Pi 3+

cd linux
KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

??对于树莓派 4:

cd linux
KERNEL=kernel7l
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

3.2.2、配置64位

??对于 Pi 3、Pi 3+

cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig

??对于树莓派 4:

cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

3.3、编译linux内核

??对于所有 32 位版本

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

??对于所有 64 位版本

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

3.4、安装linux内核到SD卡

??在插入SD卡之后通过命令lsblk来识别SD卡,并收到以下相应

sdb
   sdb1
   sdb2

??其中sdb1是FAT(boot)分区,sdb2是ext4文件系统(root)分区。
??首先挂载这两个分区,并调整分区号:

mkdir mnt
mkdir mnt/fat32
mkdir mnt/ext4
sudo mount /dev/sdb1 mnt/fat32
sudo mount /dev/sdb2 mnt/ext4

3.4.1、将linux内核模块安装到 SD 卡上

??对于32位:

sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install

??对于64位:

udo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=mnt/ext4 modules_install

3.4.2、将设备树安装到 SD 卡上

??对于32位:

sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4

??对于64位:

sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
sudo cp arch/arm64/boot/Image mnt/fat32/$KERNEL.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb mnt/fat32/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm64/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:45:05  更:2021-09-04 17:46:14 
 
开发: 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/16 7:00:27-

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