Linux内核
介绍
Raspberry Pi 内核 托管在 GitHub 上;更新滞后于上游 Linux内核。上游内核会持续更新,而 Raspberry Pi 会将 Linux 内核的长期版本整合到 Raspberry Pi 内核中。我们在 raspberrypi/firmware中为每个长期发布的 Linux 内核生成一个 next 分支。经过广泛的测试和讨论后,我们会将每个 next 分支合并到版本库的主分支中。
升级
通常的 Raspberry Pi OS 更新进程会自动将内核更新到最新的稳定版本。如果你想尝试最新的不稳定测试内核,可以 手动更新。
构建内核
操作系统随附的默认编译器和链接器被配置为构建 在该操作系统上运行的可执行文件。原生编译使用这些默认编译器和链接器。交叉编译是为运行编译过程的目标之外的目标编译代码的过程。
Raspberry Pi 内核的交叉编译允许你从 32 位操作系统构建 64 位内核,反之亦然。或者,你也可以从 Raspberry Pi 以外的设备交叉编译 32 位或 64 位 Raspberry Pi 内核。
下面的说明分为本地编译和交叉编译。选择适合你的情况的部分;虽然这两个过程有许多相同的步骤,但也有一些重要的区别。
下载内核源代码
在为任何目标编译之前,你都需要内核源代码。要获取内核源代码,你需要 Git。如果还没有 Git,请先在设备上安装:
sudo apt install git
接下来,下载最新 Raspberry Pi 内核的源代码:
git clone --depth=1 https://github.com/raspberrypi/linux
这可能需要几分钟时间。
上面的 git clone 命令下载的是当前活动分支,我们就是从这个分支构建 Raspberry Pi 操作系统镜像的,没有任何历史记录。省略 --depth=1可以下载整个版本库,包括所有分支的完整历史。这需要更长的时间,占用的存储空间也更大。
要下载不带历史记录的不同分支,请在上述命令中添加 --branch 选项,并将 <branch> 替换为要下载的分支名称:
git clone --depth=1 --branch <branch> https://github.com/raspberrypi/linux
有关可用分支的完整列表,请参阅 Raspberry Pi 内核仓库。
现在你有了内核源代码,请通过 原生构建内核 或 交叉编译 构建一个全新的内核。
原生构建内核
本指南假设你的 Raspberry Pi 运行最新版本的 Raspberry Pi OS。
首先,安装编译依赖项:
sudo apt install bc bison flex libssl-dev make
构建配置
本节介绍如何在构建内核时应用默认配置。你也可以通过以下方式配置内核:
要准备默认配置,请根据架构和 Raspberry Pi 型号运行以下各节中的相应命令。
64 位架构
- Raspberry Pi 3, 3+, CM3, CM3+, Zero 2 W, 4, 400, CM4, CM4S
- Raspberry Pi 5, 500, 500+, CM5
cd linux
KERNEL=kernel8
make bcm2711_defconfig
cd linux
KERNEL=kernel_2712
make bcm2712_defconfig