压缩文件系统

  1. 执行以下命令切换到root用户,后续操作都需要以root用户执行。

    su - root

  2. 解压软件包获取中的{soc version}-driver-{software version}-minios.aarch64-src.tar.gz。

    解压后的driver/source/vendor/hisi/tools/signtool/image_pack目录中有加密与打包工具,用于文件系统压缩步骤。

    例如在/usr/local/software/目录下执行如下解压命令:

    tar -zxvf {soc version}-driver-{software version}-minios.aarch64-src.tar.gz

    说明:如果进行(可选)驱动源码编译时已经解压了此源码包,则可跳过此步骤。

  3. 进入/usr/local/filesys_modify/目录,并删除原有的raw-ascend710.cpio文件与ascend710.cpio.gz文件。

    cd /usr/local/filesys_modify/

    rm raw-ascend710.cpio

    rm ascend710.cpio.gz

  4. 进入tempdir目录,并将tempdir目录中的内容打包成raw-ascend710.cpio.gz。

    cd tempdir

    find . | cpio -o -H newc | gzip > ../raw-ascend710.cpio.gz

    命令执行完成后,会在上级目录filesys_modify目录下生成压缩后的文件系统raw-ascend710.cpio.gz。

  5. 对文件系统镜像文件进行签名前预处理。

    1. 切换到上一级的文件系统制作的filesys_modify目录下,并为文件系统增加签名头。

      cd /usr/local/filesys_modify

      python3.7 /usr/local/software/driver/source/vendor/hisi/tools/signtool/image_pack/esbc_header.py -raw_img raw-ascend710.cpio.gz -out_img header-ascend710.cpio.gz -version 1.1.1.1.1 -nvcnt 0 -tag initrd -platform hi1951

      • /usr/local/software/2中{soc version}-driver-{software version}-minios.aarch64-src.tar.gz解压目录。
      • -raw_img:原始镜像文件路径,保持与示例一致即可。
      • -out_img:重新打包后的镜像文件输出路径,保持与示例一致即可。
      • -version:镜像版本号,格式为x.x.x.x.x用户可自定义。
      • 其他参数请保持默认值即可。
    2. 执行如下命令,生成文件系统的摘要信息。

      digest=`sha256sum header-ascend710.cpio.gz | awk '{print $1}'`

      echo "initrd, ${digest};" > ./initrd.ini

  6. 对摘要信息文件“initrd.ini”进行签名,详细操作请参见创建CMS签名
  7. 6生成的initrd.ini.cms和initrd.ini.crl文件拷贝到/usr/local/filesys_modify/目录。
  8. 执行如下命令将源文件系统和签名文件打包并增加签名头。

    python3.7 /usr/local/software/driver/source/vendor/hisi/tools/signtool/image_pack/image_pack.py -raw_img header-ascend710.cpio.gz -out_img ascend710.cpio.gz -cms initrd.ini.cms -ini initrd.ini -crl initrd.ini.crl --addcms -version 1.1.1.1.1 -platform hi1951
    • /usr/local/software/2中{soc version}-driver-{software version}-minios.aarch64-src.tar.gz解压目录。
    • -raw_img:原始镜像文件路径,保持与示例一致即可。
    • -out_img:重新打包后的镜像文件输出路径,保持与示例一致即可。
    • -cms:CMS签名文件。
    • -ini:签名文件的摘要信息。
    • -crl:签名机构的吊销列表证书。
    • -addcms:增加CMS签名的标志。
    • -version:镜像版本号,格式为x.x.x.x.x用户可自定义。
    • 其他参数请保持默认值即可。

    命令执行完成后,会在filesys_modify目录下生成增加签名头后的文件系统镜像文件ascend710.cpio.gz。

  9. 替换Driver安装目录下device文件夹下的的ascend710.cpio.gz。

    替换前请先备份 /usr/local/Ascend/driver/device/目录下的ascend710.cpio.gz文件到其他目录,防止文件系统编译出错。

    • 为ascend710.cpio.gz文件添加写权限。

      chattr -i /usr/local/Ascend/driver/device/ascend710.cpio.gz

    • 替换/usr/local/Ascend/driver/device/目录下的ascend710.cpio.gz。

      cp -rf /usr/local/filesys_modify/ascend710.cpio.gz /usr/local/Ascend/driver/device/

    • 取消ascend710.cpio.gz文件的写权限。

      chattr +i /usr/local/Ascend/driver/device/ascend710.cpio.gz

    文件系统替换完成后,为节省空间,可删除/usr/local/filesys_modify/下的tempdir文件夹。

  10. 将用户根证书文件与用户CRL文件上传到Host侧指定目录。

    Device启动时会优先使用内置证书校验文件系统,然后再使用用户证书进行校验。

    • 若用户未对Device侧文件系统进行任何修改(即未执行修改文件系统的任何操作),此种情况下使用内置证书会校验通过,则不会再使用用户证书进行校验。
    • 若Device侧文件系统有修改,则需要用户按照以下步骤上传用户根证书文件及CRL文件到Host指定目录,Device启动时需要使用用户证书对文件系统进行校验。
    1. 获取用户根证书文件与用户CRL文件。

      获取3生成的用户根证书文件user.xer和证书吊销列表文件user.crl

    2. 在Host侧驱动软件包({soc version}-driver-{software version}-{os.arch}.run)的安装目录下创建CMS文件夹,若您使用默认路径安装,安装路径为“/usr/local/Ascend”,以下以驱动软件包使用默认路径安装为例。

      mkdir /usr/local/Ascend/CMS

    3. 将“user.xer”与“user.crl”上传到上述步骤创建的CMS目录中,例如“ /usr/local/Ascend/CMS”。
    4. 在Host侧使用upgrade-tool工具设置用户根证书信息。

      /usr/local/Ascend/driver/tools/upgrade-tool --device_index -1 --user_cert --path /usr/local/Ascend/CMS/user.xer

      • /usr/local/Ascend为Host侧驱动软件包的默认安装路径,若指定了安装路径,请根据实际情况替换。
      • upgrade-tool工具的详细参数说明请参见CANN 软件安装指南

      说明:若为Docker容器场景,请在宿主机上执行如上命令。

  11. 重启Host。

    reboot