Linux内核交叉编译实现:笔记本->树莓派
Contents
树莓派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-dev2. 获取源码
克隆指定的内核版本。
git clone --depth=1 --branch=rpi-5.8.y https://github.com/raspberrypi/linux.git
cd linux3. 配置内核
为树莓派4(64位)生成默认配置。
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig4. 编译
执行编译,生成内核、模块和设备树。
make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs5. 挂载SD卡
警告: 使用
lsblk命令确认你的SD卡设备名(例如/dev/sdb),如果搞错设备,会导致数据丢失!
# 假设SD卡是 /dev/sdb
sudo mount /dev/sdb1 /mnt/boot
sudo mount /dev/sdb2 /mnt/root6. 安装文件
将编译好的文件复制到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卡插回树莓派启动了。