02-LINUX_SDK源码编译
获取SDK源码
网盘下载目录
1-SDK\Linux\
h618-linux-xxxxxxx.tar.gz
拷贝源码压缩包到编译主机目录
注意事项:
源码不可放在共享目录下编译
编译主机不可用ROOT账号登陆
MD5校验文件完整性
$ md5sum -c *.md5
解压源码压缩包
$ tar -zxvf *.tar.gz
解压完成后,查看源码目录仅有.git文件夹,需要执行下一步才能完成恢复出源码
Git恢复源码目录
$ git reset --hard
编译命令
编译前确保编译环境能够正常联网,编译过程中会自动下载安装所需的工具
$ ./build.sh
编译详细步骤选择介绍
在aw-image-build根目录运行 ./build.sh 来进入交互式构建界面

可以看到,在我们的功能选择界面,总共有7个选项
Build all step :构建完整镜像,自动执行step1到step4
step1.Build Kernel:单独编译内核
step2.Build U-boot:单独编译u-boot
step3.Build base-rootfs and deb packages:构建根文件系统镜像并打包自定义deb软件包
step4.Pack image:将系统镜像的各个部分按规则打包成一个完整的用于烧录的镜像
clean source/build/out files:清理拉取的源代码、构建过程中产生的文件、最终输出的镜像
如果我们只是需要构建一个用于板卡启动的镜像,选择 Build all step 再按Enter键进入下一步

选择我们要构建镜像的板卡,如kickpi-k2b Allwinner H618

选择我们要构建的根文件系统的发行版和release版本,选择jammy Ubuntu

选择我们要构建的根文件系统是否为桌面版,如 desktop

选择我们要构建的根文件系统的桌面环境,如 Xfce

选择我们要构建的根文件系统的桌面环境的配置文件,默认是 base configuration

选择我们要构建的根文件系统预装的软件包,使用空格键选中,再按Enter键开始构建过程
构建完成后镜像保存在out/images目录下
单步构建镜像
对用户而言,如果要对板卡进行二次开发,需要预装应用、修改调试内核等,可能就涉及到了根文件系统或内核的单独构建, 此时就可以选择单步构建的方式。
在aw-image-build根目录运行 ./build.sh 来进入交互式构建界面

可以看到,除了使用 Build all step 进行一键构建以外,还有step1到step4的单步构建选项, 实际上一键构建的过程,就是顺序调用这四部分脚本的过程。
step1.Build Kernel
这一步是单独编译内核源码并生成内核deb包
运行 ./build.sh 进入交互式构建界面,选择 step1.Build Kernel 再按Enter键进入下一步

选择我们要编译内核的板卡,如 kickpi-k2b Allwinner H618

在构建结束后还会打印一些辅助信息

Kernel deb path:构建生成的内核deb文件保存路径
Kernel deb name:构建生成的内核deb包名称
将生成的内核deb包传输到正在运行的板卡中, 使用dpkg -i linux-***.deb,然后重启板卡,就可以更新升级内核了
修改内核配置项
如果我们想要修改内核配置文件来开启或关闭内核的某项功能,应该如何操作(需先正常编译一次):
首先我们需要进入内核所在的目录,可以查看构建时的提示信息 Compiler kernel path 进入对应的目录
# 进入内核源码目录
cd /home/jiawen/Allwinner/H618/aw-image-build/source/kernel/linux-5.4-h618
# 修改内核配置文件
make ARCH=arm64 menuconfig
# 修改完成后保存并退出menuconfig配置页面,此时修改的配置保存在.config中,我们还需要将修改 同步到板卡的内核配置文件中
# 保存defconfig配置文件
make ARCH=arm64 savedefconfig
# 使用生成的defconfig文件替换板卡配置文件
cp defconfig arch/arm64/configs/linux_h618_defconfig
# 查看板卡配置文件修改的内容
git diff arch/arm64/configs/linux_h618_defconfig
至此,板卡的内核配置文件的修改就完成了,我们可以通过构建工具来重新编译内核
step2.Build U-boot
这一步是单独编译u-boot并将生成的u-boot镜像打包为deb
运行 ./build.sh 进入交互式构建界面,选择 step2.Build U-boot 再按Enter键进入下一步

选择我们要编译u-boot的板卡,如 kickpi-k2b Allwinner H618

结束后还会打印一些辅助信息

Target directory:构建生成的u-boot deb文件保存路径
File name:构建生成的u-boot deb包名称
将生成的u-boot deb包传输到正在运行的板卡中, 使用dpkg -ikickpi-k2b-uboot-currentxxxx.deb将u-boot镜像解压到板卡根文件系统中, 最后还需要使用脚本将u-boot镜像写入进我们存储设备的指定位置覆盖原来的u-boot。
# 使用管理员权限运行脚本
sudo nand-sata-install

选择选项 **5 Install/Update the bootloader on SD/EMMC **

遇到警告选yes

完成后,我们重启板卡即可使用更新后的u-boot
修改设备树
只修改设备树的话 1.先编译内核 2.再编译uboot生成kickpi-k2b-uboot-currentxxxx.deb 3.板卡dpkg -i kickpi-k2b-uboot-currentxxxx.deb 4.执行nand-sata-install选择”Install/Update the bootloader on SD/eMMC“更新uboot 5.重启
编译工具链
编译完成时会在此目录有编译工具链
aw-image-build/toolchains/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin
设备树路径
aw-image-build/source/kernel/linux-5.4-h618/arch/arm64/boot/dts/sunxi
sun50iw9-kickpi-k2b.dts
sun50iw9-kickpi-k2c.dts
Last updated