[Cm3更换内核] 交叉编译

220 阅读1分钟

此博客只为自己记录使用。

官方文档:Linux内核 | Raspberry Pi 树莓派 (官网24年11月更新)

1. 拉取源码

git clone --depth=1 --branch <branch> https://github.com/raspberrypi/linux

将 <branch> 替换为要下载的分支名称

2. 配置

2.1 安装依赖

sudo apt install bc bison flex libssl-dev make libc6-dev libncurses5-dev

2.2编译配置

构建源码和设备树

KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

3. 构建

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  zImage  modules dtbs

4. 安装

这里先安装到本机,在打包发送到板子上。

 sudo env PATH=$PATH make -j12 ARCH=arm CROSS_COMPILE=/home/rpi/arm-linux-6.3.1/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/rpi/kernel_install modules_install

到此安装完成,剩下的打包发送到板子上即可。

4.1 打包modules

  • 在/home/ding/kernel_install/lib/modules 目录会有以内核版本命名的目录。将其打包发送到开发板即可。
sudo tar cvf ./4.14.114-v7+.tar.gz ./4.14.114-v7+/

4.2 打包内核镜像

在构建内核源码的目录中。进行打包

cd arch/arm/boot/
tar cvf ./zImage.tar.gz ./zImage

4.3 打包设备树 blobs

cd /home/ding/linux/arch/arm/boot
tar cvf ./dts.tar.gz ./dts/

4.4 将上述三个压缩包发送到开发板中

cd /home/ding/linux/arch/arm/boot
scp ./dts.tar.gz ./zImage.tar.gz  pi@192.168.1.101:/home/pi

cd /home/ding/kernel_install/lib/modules
scp ./4.14.114-v7+.tar.gz  pi@192.168.1.101:/home/pi

5 在开发板中安装

5.1 安装modules

cd /lib/modules
sudo mv ~/4.14.114-v7+.tar.gz ./
sudo tar xvf ./4.14.114-v7+.tar.gz

5.2 安装内核镜像

cd /boot/
sudo mv ./kernel7.img ./kernel7-backup.img # 备份原有的

cd ~
tar xvf ./zImage.tar.gz
cd /boot/
sudo mv ~/zImage ./
mv ./zImage kernel7.img

5.3 安装设备树

cd ~
tar xvf ./dts.tar.gz

cd /boot
sudo cp ~/dts/*.dtb ./

5.4 安装覆盖层和 README

cd /boot/overlays
sudo cp ~/dts/overlays/*.dtb* ./
sudo cp ~/dts/overlays/README ./

6 重启

sudo reboot

输入 uname -a即可查看升级的内核版本信息

7. 更换启动内核

在/boot/config.txt文件中添加kernel=kernel<xxxx>.img即可选择启动内核。