本文档介绍基于 Firefly SDK 交叉编译出适用于 Firefly RK3399 的内核镜像。
-
系统要求。
- 操作系统:Ubuntu 16.04
- 架构:x86_64
-
安装依赖包。
apt-get install build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu bc libssl-dev -y
-
克隆代码。
git clone --branch dev-4.19 https://gitee.com/openeuler/rockchip-kernel.git
-
设置环境变量。
export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu-
-
构建 Image 和 dtb 文件。
cd rockchip-kernel make O=test firefly_linux_defconfig make O=test Image make O=test dtbs
说明:生成的 Image 文件与 dtb 文件所在路径为 rockchip-kernel/test/。
-
解压并同步代码。
cat rk3399_linux_release_v2.5.1_20210301_split_dir/*firefly_split* | tar -xzv cd rk3399_linux_release_v2.5.1_20210301 ls -al .repo/repo/repo sync -l .repo/repo/repo sync -c --no-tags .repo/repo/repo start firefly --all
-
安装依赖包。
sudo apt-get install expect-dev repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo liblz4-tool genext2fs lib32stdc++6 expect
-
选择配置文件。
./build.sh firefly-rk3399-buildroot.mk
-
编译 kernel。
./build.sh kernel
-
将上述 编译内核代码 步骤中生成的 Image 和 dts 替换到 Firefly SDK 环境中(进行拷贝操作即可)。
Firefly SDK 环境中 Image 和 dts 所在路径: rk3399_linux_release_v2.5.1_20210301/kernel/arch/arm64/boot/。
-
生成 boot.img。
在 rk3399_linux_release_v2.5.1_20210301/kernel 目录下执行
make rk3399-firefly.img
该命令执行完成后在 rk3399_linux_release_v2.5.1_20210301/rockdev 目录下生成 boot.img。