作者
作者:卢冬冬
邮箱:ezrobot@163.com
平台
系统:Ubuntu 16.04 64bit
板卡:AIO-3399J (4GB LDDR3 16GB eMMC)
注意
如果Ubuntu为虚拟机,则至少需要预留64GB的硬盘空间
内容
1. 准备工作
2. 开始编译
- 下载编译依赖的软件包
新建premake.sh
文件,拷贝下面内容到文件中。
#!/bin/bash
# 更新系统
sudo apt-get update
# 根据官方文档安装Kernel及U-Boot编译需要依赖的软件包
sudo apt-get install \
git-core \
gnupg \
flex \
bison \
gperf \
build-essential \
zip \
curl \
zlib1g-dev \
gcc-multilib \
g++-multilib \
libc6-dev-i386 \
lib32ncurses5-dev \
x11proto-core-dev \
libx11-dev \
lib32z1-dev \
ccache \
libgl1-mesa-dev \
libxml2-utils \
xsltproc \
unzip \
device-tree-compiler
# 用以解决编译内核时出现的"scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory"错误
sudo apt-get install libssl-dev
# 用以解决编译内核时出现的"/bin/sh: 1: lz4c: not found ..."错误
sudo apt-get install liblz4-tool
然后使用如下命令,增加premake.sh
执行权限并运行。
chmod +x premake.sh
./premake.sh
- 解压下载的
linux-sdk.7z
文件
# 安装7z支持
sudo apt-get install p7zip-full
# 解压linux-sdk.7z
7z x linux-sdk.7z linux-sdk
- 把下载的UBUNTU镜像放到SDK的指定目录
# 解压
tar -xvf ubuntu_16.04_arm64_20190226150448.img.tar.gz
# SDK根目录下
mkdir ubunturootfs
mv ubuntu_16.04_arm64_20190226150448.img ubunturootfs/
# 修改aio-3399j-ubuntu.mk文件
vim device/rockchip/rk3399/aio-3399j-ubuntu.mk
# 把RK_ROOTFS_IMG属性改成ubuntu文件系统镜像的路径(也就是ubuntu_16.04_arm64_20190226150448.img)
RK_ROOTFS_IMG=ubunturootfs/ubuntu_16.04_arm64_20190226150448.img
- 开始编译
# 第1步
./build.sh aio-3399j-ubuntu.mk
# 第2步
./build.sh uboot
# 第3步
./build.sh kernel
# 第4步
./mkfirmware.sh
# 第5步
./build.sh updateimg
如果成功的话,可以在rockdev
文件夹下得到update.img
文件,用于后面升级使用。