编译并生效内核Image文件(openEuler-SP1)

本章节针对Atlas 200I A2 加速模块如何编译内核Image进行介绍。

Image固件在进行安装升级及安全启动时会进行文件头的校验,若使用未添加文件头的固件则会导致升级失败。用户可通过如下编译过程,自动生成带有文件头的Image文件。

Atlas 200I A2 加速模块支持Euler内核和openEuler内核,发布的源码包Ascend310B-source tar.gz中自带Euler内核源码,不包含openEuler内核源码。需基于openEuler开源社区源码编译openEuler 22.03 LTS SP1内核并进行驱动包的重构,具体操作可参见重构驱动包

前提条件

  • 所有的依赖必须用root用户进行安装。
  • 用户可以通过如下命令进行安装上述依赖。

    apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake rpm2cpio

  • 交叉编译工具链安装请参见安装工具链

操作步骤

  1. 登录Linux服务器。
  2. 执行如下命令,切换至root用户。

    su - root

  3. 使用WinSCP工具或其他工具将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件
  4. 执行如下命令,进入源码包所在目录,例如“/opt”

    cd /opt

  5. 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。

    tar -xzvf Ascend310B-source.tar.gz

  6. 执行如下命令,进入“Ascend310B-source”目录。

    cd Ascend310B-source

  7. 基于开源社区下载openEuler 22.03 LTS SP1内核源码,并上传至Linux服务器。

    1. 访问链接下载“openEuler-22.03-LTS-SP1-everything-aarch64-dvd.iso”镜像文件。
    2. 访问镜像文件,进入“Packages”目录,获取rpm源码包“kernel-rt-source-5.10.0-136.12.0.rt62.59.oe2203sp1.aarch64.rpm”
    3. 使用WinSCP工具或其他工具将rpm源码包“kernel-rt-source-5.10.0-136.12.0.rt62.59.oe2203sp1.aarch64.rpm”上传到“Ascend310B-source.tar.gz”源码包解压子目录下,例如“/opt/Ascend310B-source”。详细操作请参见使用WinSCP传输文件

  8. (可选)执行如下两条命令,提高系统内存访问权限,可通过devmem工具实现物理地址的读写。

    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

    该操作会提高系统内存访问权限,若无特殊调测需要建议关闭。

  9. 执行如下命令,编译OS内核。

    bash build.sh rtKernel

    执行过程会弹出内核配置选项图形界面。

    • 如需修改,参考如下步骤操作。
      1. 选择“Device Drivers”,并按“Enter”键。
      2. 用户可根据实际需求进行配置。

        如需使能USB功能,键盘空格键控制选中“USB support”,星号表示已选中。

      3. 选择Save,并单击OK,一直选择Exit直至退出图形界面后开始编译内核。
    • 如不修改直接选择Exit退出。
    出现如下回显,表示编译内核Image文件成功。
    generate /opt/Ascend310B-source/output/Image success! 
    sign /opt/Ascend310B-source/output/Image success!

    编译后的Image文件会自动存放于“Ascend310B-source/output”目录下。

生效Image文件

  1. 登录Atlas 200I A2 加速模块系统环境。
  2. 使用“WinSCP”,将编译后的“Image”文件上传至任意目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件
  3. 执行如下命令,进入“opt”目录。

    cd /opt

  4. 执行如下命令,升级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#

  5. 执行如下命令,重启生效。

    reboot

  6. 用户可根据实际配置的功能进行验证。如使能USB功能后,验证USB功能是否正常。