rock3a镜像编译过程

Posted by 婷 on December 10, 2023 本文总阅读量

简介

按照官方的参考链接生成rock3a镜像

源码

下载源码,github源码下是各个外链,所以还得到子目录下去下载子目录的源码

git clone -b stable-4.19-rock3 https://github.com/radxa/rockchip-bsp.git
cd rockchip-bsp
git submodule init
git submodule update

image-20231203201351559

image-20231203201827662

工具链为aarch64-linux-gnu-gcc

image-20231203212337009

uboot

编译uboot

./build/mk-uboot.sh rk3568-rock-3a

image-20231203212500905

生成物

image-20231210210102114

kernel

内核这边呢,先弄好默认配置文件

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  rockchip_linux_defconfig
make menuconfig
make savedefconfig
cp defconfig arch/arm64/configs/rockchip_linux_defconfig

image-20240303183537201

如果想要让自己编译的内核支持串口调试的话,还得修改设备树,修改rk3568-rock-3a.dts文件

image-20231203234730409

可以看到这里的fiq_debuggerdisabled的状态

image-20231203234722462

把其改为okay

image-20231203234815360

最后编译内核,如果还要编译驱动,那此部分可以到此为止不用看了,直接用下面的modules/headers的方法去编译,sudo ./build/pack-kernel.sh -d rockchip_linux_defconfig -r 1这条命令会编译一遍内核

./build/mk-kernel.sh rk3568-rock-3a

image-20231203213729316

编译成功

image-20231203230532889

生成产物

image-20231203231356384

rootfs

先安装相关工具

export ARCH=arm64
cd rootfs/
sudo apt-get install binfmt-support qemu-user-static cpio gdisk

image-20231203231443590

sudo dpkg -i ubuntu-build-service/packages/*

image-20231203231552175

过程会报错,没关系,可以输入下面命令修复

sudo apt-get install -f

image-20231203231608629

image-20231203231646910

sudo RELEASE=buster TARGET=desktop ARCH=arm64 ./mk-base-debian.sh

image-20231203231758410

image-20231203233208773

制作rootfs镜像

./mk-image.sh

image-20231203234134925

打包

上述所有文件都生成之后,输出下面的命令打包

./build/mk-image.sh -c rk3568 -t system -r rootfs/linaro-rootfs.img

image-20231203234205390

image-20231203234213878

生成物为system.img,该镜像包含了上述所有资源,可以直接烧写到SD卡,然后在rock3a板子上启动

image-20231210212000161

启动成功

image-20231204185624792

modules/headers

如果既要生成kernel,也想要安装驱动包以及linux的一些头文件,可以打deb包。

先修改下build/kernel-package.mk脚本中的交叉编译工具链的位置

image-20240114133344753

我的工具链位置是/usr/bin/aarch64-linux-gnu-

image-20240114133433362

输入命令生成deb

sudo ./build/pack-kernel.sh -d rockchip_linux_defconfig -r 1

image-20240110235729518

image-20240114140718763

成果物如下

image-20240114141632122

把成果物复制到rock3a板子中,然后输入以下命令

dpkg -i linux-headers-4.19.193-1-rockchip-*_arm64.deb
dpkg -i linux-image-4.19.193-1-rockchip-*_arm64.deb

image-20240114222306943

解压完了后,比如要加载veth驱动,先改下/lib/modules下的文件夹名字

image-20240127192957400

mv 4.19.193-1-rockchip-g3dec7e0 4.19.193

image-20240114222837617

输入命令

depmod -a
modprobe veth

image-20240114223056820

注意:modprobe使用的时候,不要有后缀.ko,不然会找不到。

参考链接