树莓派内核构建

本文详细介绍了如何在RaspberryPi上下载Linux内核源码,配置编译环境,安装依赖,编译32/64位内核,以及将新内核和设备树安装到SD卡以进行串口启动。步骤包括下载源码、解压、配置、编译和最终的SD卡操作。
摘要由CSDN通过智能技术生成

参考文献:

Raspberry Pi 文档 - Linux 内核 //官网文档(靠谱有效亲测)

树莓派Linux内核编译-CSDN博客

 一、下载源码并解压 

1.下载链接:

GitHub - raspberrypi/linux: Kernel source tree for Raspberry Pi-provided kernel builds. Issues unrelated to the linux kernel should be posted on the community forum at https://forums.raspberrypi.com/

这个是我树莓派的版本:

2.解压源码

unzip linux-rpi-6.1.y.zip

 3.安装所需的依赖项

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

 4.安装所需工具链

  1. Linaro Releases 不同版本的交叉编译链
sudo apt install crossbuild-essential-armhf //32位 
sudo apt install crossbuild-essential-arm64 //64位

 5.配置源代码

32位:

对于 Raspberry Pi 2、3、3+ 和零 2 W,以及 Raspberry Pi 计算模块 3 和 3+:

cd linux-rpi-6.1.y 
KERNEL=kernel7 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

64位:

对于 Raspberry Pi 3、3+、4、400 和零 2 W,以及 Raspberry Pi 计算模块 3、3+ 和 4:

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

 6.编译源代码:

大概需要20分钟

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs //32位 

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

#make:构建 Linux 内核的工具,通常在 Linux 内核源代码目录中使用。 
#ARCH=arm: 指定要构建的目标平台为 ARM,以便选择正确的编译选项和工具链。 
#CROSS_COMPILE=arm-linux-gnueabihf-: 指定交叉编译工具链的前缀,以便在构建过程中使用正确的编译器##和工具。 
#zImage: 构建 Linux 内核的镜像,该镜像是经过压缩的内核二进制文件。 
#modules: 构建 Linux 内核模块,这些模块可以加载到运行中的内核中以添加新的功能或驱动程序。 
#dtbs: 构#建设备树二进制文件(.dtb)。 

二、虚拟机挂载SD &&内核模块安装到 SD 卡

1.查看设备节点

lsblk                 //sdb1 和 sdb2

2.挂载节点

作为文件系统(引导)分区,以及文件系统(根)分区。sdb1 -> FAT sdb -> 2ext4

首先挂载这些,根据需要调整分区号:

在用户目录下创建文件,用来挂载

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

3.新构建的内核映像文件

对于 32 位

sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=~/mnt/ext4 modules_install 
或者: sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/lh/mnt/ext4 modules_install

#INSTALL_MOD_PATH : 根据具体路径来

对于 64 位

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

4.复制内核和设备树到 SD 卡上,确保备份旧内核

目录

 一、下载源码并解压 

1.下载链接:

2.解压源码

 3.安装所需的依赖项

 4.安装所需工具链

 5.配置源代码

 6.编译源代码:

二、虚拟机挂载SD &&内核模块安装到 SD 卡

1.查看设备节点

2.挂载节点

3.新构建的内核映像文件

4.复制内核和设备树到 SD 卡上,确保备份旧内核

三、串口启动:

1.最后将以下内容加上,然后将SD卡插回树莓派 ,

​编辑

 2.见证效果



对于 32 位

sudo cp /mnt/fat32/kernel7.img ~/mnt/fat32/kernel7-backup.img 
//:备份原始的内核映像文件。

sudo cp arch/arm/boot/zImage ~/mnt/fat32/kernel7.img 
//将新构建的内核映像文件复制到 Raspberry Pi 的引导分区中。 

sudo cp arch/arm/boot/dts/*.dtb ~/mnt/fat32/ 

//将新构建的设备树二进制文件复制到 Raspberry Pi 的引导分区中。 

sudo cp arch/arm/boot/dts/overlays/*.dtb* ~/mnt/fat32/overlays/ 

//将新构建的设备树叠加文件复制到 Raspberry Pi 的引导分区中的 overlays 目录中。 

sudo cp arch/arm/boot/dts/overlays/README ~/mnt/fat32/overlays/ 

//将设备树叠加文件的 README 文件复制到 Raspberry Pi 的引导分区中的 overlays 目录中,以提供有关如何使用它们的信息。 

sudo umount ~/mnt/fat32 

//卸载 Raspberry Pi 的引导分区。 

sudo umount ~/mnt/ext4 

//卸载 Raspberry Pi 的根文件系统分区。

对于 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

三、串口启动:

1.最后将以下内容加上,然后将SD卡插回树莓派 ,

 2.见证效果

未构建内核之前:

构建之后:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值