Welcome to Firefly
切换语言
Firefly文档中心
最近更新: 2026-07-27 18:01:24

主线 Linux Kernel 使用指南

概述

本文介绍平台主线 Linux Kernel 的基本使用流程,包括获取源码、查看主线已支持的 Firefly 板型、配置和编译 Kernel。

以 Firefly ROC-RK3588-RT 为例,使用的设备树为:

arch/arm64/boot/dts/rockchip/rk3588-roc-rt.dts

主线 Kernel 与 Rockchip BSP Kernel 的功能覆盖并不完全相同。某个主线版本包含板级 DTS 并能够启动,不代表 VPU、NPU、GPU、ISP、HDMI、Camera、PCIe 和低功耗等功能均已达到 BSP Kernel 的支持状态。

获取源码

Linux 官方主线源码由 Linus Torvalds 维护:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux

如果选定版本中不存在目标板型的 DTS,需要改用已包含该 DTS 的更新主线版本。

主线支持的 Firefly 板型

SoC板型DTS编译目标
PX30Core-PX30-JD4 + MB-JD4-PX30px30-firefly-jd4-core-mb.dtsrockchip/px30-firefly-jd4-core-mb.dtb
RK3308ROC-RK3308-CCrk3308-roc-cc.dtsrockchip/rk3308-roc-cc.dtb
RK3328ROC-RK3328-CCrk3328-roc-cc.dtsrockchip/rk3328-roc-cc.dtb
RK3328ROC-RK3328-PCrk3328-roc-pc.dtsrockchip/rk3328-roc-pc.dtb
RK3399Firefly-RK3399rk3399-firefly.dtsrockchip/rk3399-firefly.dtb
RK3399ROC-RK3399-PCrk3399-roc-pc.dtsrockchip/rk3399-roc-pc.dtb
RK3399ROC-RK3399-PC Mezzaninerk3399-roc-pc-mezzanine.dtsrockchip/rk3399-roc-pc-mezzanine.dtb
RK3399ROC-RK3399-PC-PLUSrk3399-roc-pc-plus.dtsrockchip/rk3399-roc-pc-plus.dtb
RK3566Station M2rk3566-roc-pc.dtsrockchip/rk3566-roc-pc.dtb
RK3568Station P2rk3568-roc-pc.dtsrockchip/rk3568-roc-pc.dtb
RK3576ROC-RK3576-PCrk3576-roc-pc.dtsrockchip/rk3576-roc-pc.dtb
RK3588ITX-3588Jrk3588-firefly-itx-3588j.dtsrockchip/rk3588-firefly-itx-3588j.dtb
RK3588ROC-RK3588-RTrk3588-roc-rt.dtsrockchip/rk3588-roc-rt.dtb
RK3588SStation M3rk3588s-roc-pc.dtsrockchip/rk3588s-roc-pc.dtb

板型列表随 Linux 版本变化。DTS 存在仅表示主线包含该板级描述,具体接口是否可用仍取决于对应驱动在所用版本中的支持情况。

准备编译环境

Debian/Ubuntu 主机可安装以下软件包:

sudo apt update
sudo apt install \
  build-essential bc bison flex libssl-dev libelf-dev \
  device-tree-compiler gcc-aarch64-linux-gnu lz4 u-boot-tools

设置 ARM64 交叉编译环境:

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

如果使用其他 AArch64 工具链,请将 CROSS_COMPILE 改为实际前缀。不要在同一次构建中混用 aarch64-linux-gnu-aarch64-none-linux-gnu-

编译Kernel

5.1 配置 Kernel

使用ARM64 默认配置和自己需求配置文件linux-rockchip-rk3588-current.config

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig linux-rockchip-rk3588-current.config

5.2 编译 Image、DTB 和模块

设置板型名称:

export BOARD=rk3588-roc-rt

编译内核、压缩内核、ROC-RK3588-RT DTB 和模块:

make -j$(nproc) \
  ARCH=arm64 \
  CROSS_COMPILE=aarch64-linux-gnu- \
  Image Image.lz4 "rockchip/${BOARD}.dtb" modules

主要产物如下:

arch/arm64/boot/Image
arch/arm64/boot/Image.lz4
arch/arm64/boot/dts/rockchip/rk3588-roc-rt.dtb

检查产物:

ls -lh \
  arch/arm64/boot/Image \
  arch/arm64/boot/Image.lz4 \
  arch/arm64/boot/dts/rockchip/rk3588-roc-rt.dtb

5.3 安装模块

将模块安装到临时目录:

mkdir -p output/extboot

make -j$(nproc) \
  ARCH=arm64 \
  CROSS_COMPILE=aarch64-linux-gnu- \
  INSTALL_MOD_STRIP=1 \
  INSTALL_MOD_PATH="$PWD/output/extboot" \
  modules_install

模块会安装到:

output/extboot/lib/modules/<kernel-release>/

查看本次构建的 Kernel release:

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

将模块部署到根文件系统时,必须保证 /lib/modules/<kernel-release>/ 与实际启动的 Kernel 完全匹配。

本页目录