Contents

Linux内核交叉编译实现:笔记本->树莓派

树莓派64位内核编译

1. 准备环境

安装交叉编译工具链和git。

sudo apt update 
sudo apt install git
sudo apt install crossbuild-essential-arm64
sudo apt install bison flex libssl-dev bc libncurses-dev

2. 获取源码

克隆指定的内核版本。

git clone --depth=1 --branch=rpi-5.8.y https://github.com/raspberrypi/linux.git
cd linux

3. 配置内核

为树莓派4(64位)生成默认配置。

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

4. 编译

执行编译,生成内核、模块和设备树。

make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

5. 挂载SD卡

警告: 使用 lsblk 命令确认你的SD卡设备名(例如 /dev/sdb),如果搞错设备,会导致数据丢失!

# 假设SD卡是 /dev/sdb
sudo mount /dev/sdb1 /mnt/boot
sudo mount /dev/sdb2 /mnt/root

6. 安装文件

将编译好的文件复制到SD卡。

# 安装模块
sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/mnt/root modules_install

# 复制内核和设备树
sudo cp arch/arm64/boot/Image /mnt/boot/$KERNEL.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /mnt/boot/
sudo cp -r arch/arm64/boot/dts/overlays/* /mnt/boot/overlays/

7. 配置启动并清理

修改 config.txt 以加载新内核:

sudo nano /mnt/boot/config.txt
# 将启动内核行修改为:
kernel=kernel8.img

卸载分区:

sudo umount /mnt/boot /mnt/root

完成。现在可以将SD卡插回树莓派启动了。