本章节针对Atlas 200I A2 加速模块如何编译内核Image进行介绍。
Image固件在进行安装升级及安全启动时会进行文件头的校验,若使用未添加文件头的固件则会导致升级失败。用户可通过如下编译过程,自动生成带有文件头的Image文件。
Atlas 200I A2 加速模块支持Euler内核和openEuler内核,发布的源码包Ascend310B-source tar.gz中自带Euler内核源码,不包含openEuler内核源码。需基于openEuler开源社区源码编译openEuler 22.03 LTS SP1内核并进行驱动包的重构,具体操作可参见重构驱动包。
apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake rpm2cpio
su - root
cd /opt
tar -xzvf Ascend310B-source.tar.gz
cd Ascend310B-source
sed -i 's/6981/6979/g' kernel/kernel/kernel/rtkernel_patch/0042-ascend310B_defconfig.patch
sed -i '/+CONFIG_STRICT_DEVMEM=y/d; /+CONFIG_IO_STRICT_DEVMEM=y/d' kernel/kernel/kernel/rtkernel_patch/0042-ascend310B_defconfig.patch
该操作会提高系统内存访问权限,若无特殊调测需要建议关闭。
bash build.sh rtKernel
执行过程会弹出内核配置选项图形界面。
generate /opt/Ascend310B-source/output/Image success! sign /opt/Ascend310B-source/output/Image success!
编译后的Image文件会自动存放于“Ascend310B-source/output”目录下。
cd /opt
dd if=Image of=/dev/mmcblk1 count=61440 seek=32768 bs=512
-sh-5.1# dd if=Image of=/dev/mmcblk1 count=61440 seek=32768 bs=512 56849+1 records in 56849+1 records out 29106944 bytes (29 MB, 28 MiB) copied, 2.36973 s, 12.3 MB/s -sh-5.1#
reboot