Ubuntu22.04 交叉编译树莓派CM4 kernel

通过这个文章记录一下如何在Ubuntu22.04编译树莓派CM4的kernel。

主要参考树莓派官网的方法,也总结了一些关于SD卡分区的知识。

1,虚拟机安装Ubuntu 22.04,就不介绍了。

2,先将树莓派官方系统烧录倒SD卡中,设备能正常启动运行。

3,在Ubuntu 22.04中安装相关程序

bash 复制代码
sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

4,安装交叉编译工具

bash 复制代码
sudo apt install crossbuild-essential-arm64

5,克隆最新的内核源码

bash 复制代码
git clone --depth=1 https://github.com/raspberrypi/linux

6,定制内核编译文件

bash 复制代码
cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  menuconfig

7,如果无需修改内核配置,可用下面代码

bash 复制代码
cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

8,交叉编译Image, modules, dtbs

bash 复制代码
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

9,拷贝文件到SD卡,检查SD卡分区

lsblk

复制代码
sdb
   sdb1
   sdb2

10,挂载分区

bash 复制代码
mkdir mnt
mkdir mnt/fat32
mkdir mnt/ext4
sudo mount /dev/sdb1 mnt/fat32
sudo mount /dev/sdb2 mnt/ext4

11,安装模块

bash 复制代码
sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=mnt/ext4 modules_install

12,备份kernel.img

bash 复制代码
sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img

13,拷贝编译的kernel文件,需要注意,对应kernel8.img

bash 复制代码
sudo cp arch/arm64/boot/Image mnt/fat32/kernel8.img

14,拷贝驱动

bash 复制代码
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/

15,卸载映射盘

bash 复制代码
sudo umount mnt/fat32

sudo umount mnt/ext4

16,如果开机启动没有切换内核,可以在boot config.txt最后增加:

bash 复制代码
arm_64bit=1 kernel=kernel8.img

17,重启后,查看内核版本

bash 复制代码
uname -a
相关推荐
历程里程碑2 分钟前
Linux 18 进程控制
linux·运维·服务器·开发语言·数据结构·c++·笔记
爱装代码的小瓶子10 分钟前
【c++与Linux基础】文件篇(5)- 文件管理系统:
linux·开发语言·c++
小草cys10 分钟前
【有问题未解决】Ubuntu arm版的桌面分辨率修改
linux·arm开发·ubuntu
鱼是一只鱼啊14 分钟前
安装WSL及Ubuntu遇到问题安全频道支持出错
linux·安全·ubuntu
xu_yule23 分钟前
网络和Linux网络-15(IO多路转接)reactor编程-服务器
linux·运维·服务器·c++
礼拜天没时间.25 分钟前
Docker基础操作——镜像与容器管理
linux·运维·服务器·docker·容器·centos
Jacob程序员26 分钟前
达梦数据库私有服务配置指南
linux·服务器·数据库
阿常呓语36 分钟前
ls 命令详解
linux·运维·服务器·ls
qinyia38 分钟前
在Ubuntu 22.04.5 LTS上安装MySQL 8并设置root密码的完整协作流程
mysql·ubuntu·adb
倔强的石头1061 小时前
【Linux指南】基础IO系列(一)Linux 文件本质揭秘 —— 从 “磁盘文件” 到 “一切皆文件”
linux·运维·服务器