编译并生效内核Image文件(Euler)
本章节针对Atlas 200I A2 加速模块如何编译内核Image进行介绍。
Image固件在进行安装升级及安全启动时会进行文件头的校验,若使用未添加文件头的固件则会导致升级失败。用户可通过如下编译过程,自动生成带有文件头的Image文件。
前提条件
- 一台带网络端口且操作系统为Ubuntu 22.04的x86 Linux服务器。
- Linux服务器已安装python、make、gcc、unzip、pigz、bison、flex、libncurses-dev、squashfs-tools、bc、device-tree-compiler、libssl-dev、cmake、rpm2cpio与交叉编译工具链。

- 所有的依赖必须用root用户进行安装。
- 用户可以通过如下命令进行安装上述依赖。
apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake rpm2cpio
- 交叉编译工具链安装请参见安装工具链。
操作步骤
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用WinSCP工具或其他工具将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入源码包所在目录,例如“/opt”。
cd /opt
- 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。
tar -xzvf Ascend310B-source.tar.gz
- 执行如下命令,进入“Ascend310B-source”目录。
cd Ascend310B-source
- (可选)执行如下命令,提高系统内存访问权限,可通过devmem工具实现物理地址的读写。
sed -i '/CONFIG_STRICT_DEVMEM=y/d; /CONFIG_IO_STRICT_DEVMEM=y/d' kernel/kernel/kernel/kbuild/defconfigs/arch/arm64/configs/ascend310B_defconfig
该操作会提高系统内存访问权限,若无特殊调测需要建议关闭。
- 执行如下命令,编译OS内核。
bash build.sh kernel
执行过程会弹出内核配置选项图形界面。
- 如需修改,参考如下步骤操作。
- 如不修改直接选择Exit退出。
出现如下回显,表示编译内核Image文件成功。generate /opt/Ascend310B-source/output/Image success! sign /opt/Ascend310B-source/output/Image success!
编译后的Image文件会自动存放于“Ascend310B-source/output”目录下。
生效Image文件
- 登录Atlas 200I A2 加速模块系统环境。
- 使用“WinSCP”,将编译后的“Image”文件上传至任意目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入“opt”目录。
cd /opt
- 执行如下命令,升级Image文件。
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
- 用户可根据实际配置的功能进行验证。如使能USB功能后,验证USB功能是否正常。
父主题: 编译内核