树莓派 4B 本地编译内核

目录

1、下载内核源码

1.1、配置 proxy

1.2、安装依赖

2、配置内核

3、编译内核

4、更新内核

5、重启

6、问题

6.1、32bit/64bits

6.2、覆盖到 SD card


最近打算玩玩树莓派,遂之买了一块 Raspberry 4B 的板子。板子的资源就不在多说了 BCM2711的芯片,ARM Cortex-A72 @ Qual Core;

拿到板子,SD 卡中已经带有系统,所以呢,我们可以直接在树莓派上面编译 Kernel,不用在 PC 上交叉编译,只不过呢,树莓派上编译会稍显慢,不过无所谓;

官方其实对这部分有描述,参考:

https://www.raspberrypi.org/documentation/linux/kernel/building.md

1、下载内核源码

1.1、配置 proxy

我刚刚拿到单板,准备下载源码,但是一直都报各种 Github 连接失败,所以要配置一下:

git config --global --unset http.proxy

git config --global --unset https.proxy

git config --global  --unset https.https://github.com.proxy

git config --global  --unset http.https://github.com.proxy

然后呢,就可以在 Github 上面下载 Raspberry 的源码了:

git clone --branch rpi-5.10.y https://github.com/raspberrypi/linux

我这里用的是 5.10 的内核,所以下载的是 5.10.y 的分支;

1.2、安装依赖

将编译阶段需要的东西安装上:

sudo apt install git bc bison flex libssl-dev make

2、配置内核

通过下面内容来进行基本的配置:

KERNEL=kernel7l

make bcm2711_defconfig

3、编译内核

通过下述方式来进行编译:

make -j4 zImage modules dtbs

接下来就是漫长的等待;

4、更新内核

将编译完毕的内核相关文件覆盖:

sudo make modules_install

sudo cp arch/arm/boot/dts/*.dtb /boot/

sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/

sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/

sudo cp arch/arm/boot/zImage /boot/$KERNEL.img

5、重启

重新启动系统,通过 uname -r 查看是否被更新;

6、问题

6.1、32bit/64bits

当前默认情况下,Raspberry 4B 跑的是 32bit 的 Kernel 使用的是 32bit 的 toolchain,从官方的文档:

https://www.raspberrypi.org/documentation/linux/kernel/building.md

可以看到,如果是 32bit 的话针对 Raspberry 4B 来说:

KERNEL=kernel7l

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig

对于 64bit 的话,针对 Raspberry 4B 来说:

KERNEL=kernel8

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

编译器使用的不一样;

上述需要在宿主机中,进行下载安装交叉编译环境进行编译;

6.2、覆盖到 SD card

在终端中,使用 lsblk 可以看到:

NAME            MAJ:MIN RM  SIZE     RO TYPE MOUNTPOINT
mmcblk0         179:0      0       29.7G   0   disk 
|--mmcblk0p1  179:1      0       256M   0   part         /boot
|--mmcblk0p2  179:2      0       29.5G  0   part         /

mmcblk0p1 分区是启动分区,被挂载到 /boot 目录下,也就是 SD card 中存放启动内容的地方;所以在编译完 Kernel 后,往这个目录下进行覆盖的;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值