压缩文件系统
- 执行以下命令切换到root用户,后续操作都需要以root用户执行。
su - root
- 解压软件包获取中的{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
说明:如果进行(可选)驱动源码编译时已经解压了此源码包,则可跳过此步骤。
- 进入/usr/local/filesys_modify/目录,并删除原有的raw-ascend710.cpio文件与ascend710.cpio.gz文件。
cd /usr/local/filesys_modify/
rm raw-ascend710.cpio
rm ascend710.cpio.gz
- 进入tempdir目录,并将tempdir目录中的内容打包成raw-ascend710.cpio.gz。
cd tempdir
find . | cpio -o -H newc | gzip > ../raw-ascend710.cpio.gz
命令执行完成后,会在上级目录filesys_modify目录下生成压缩后的文件系统raw-ascend710.cpio.gz。
- 对文件系统镜像文件进行签名前预处理。
- 切换到上一级的文件系统制作的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用户可自定义。
- 其他参数请保持默认值即可。
- 执行如下命令,生成文件系统的摘要信息。
digest=`sha256sum header-ascend710.cpio.gz | awk '{print $1}'`
echo "initrd, ${digest};" > ./initrd.ini
- 切换到上一级的文件系统制作的filesys_modify目录下,并为文件系统增加签名头。
- 对摘要信息文件“initrd.ini”进行签名,详细操作请参见创建CMS签名。
- 将6生成的initrd.ini.cms和initrd.ini.crl文件拷贝到/usr/local/filesys_modify/目录。
- 执行如下命令将源文件系统和签名文件打包并增加签名头。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。
- 替换Driver安装目录下device文件夹下的的ascend710.cpio.gz。
替换前请先备份 /usr/local/Ascend/driver/device/目录下的ascend710.cpio.gz文件到其他目录,防止文件系统编译出错。
- 为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文件的写权限。
文件系统替换完成后,为节省空间,可删除/usr/local/filesys_modify/下的tempdir文件夹。
- 将用户根证书文件与用户CRL文件上传到Host侧指定目录。
Device启动时会优先使用内置证书校验文件系统,然后再使用用户证书进行校验。
- 若用户未对Device侧文件系统进行任何修改(即未执行修改文件系统的任何操作),此种情况下使用内置证书会校验通过,则不会再使用用户证书进行校验。
- 若Device侧文件系统有修改,则需要用户按照以下步骤上传用户根证书文件及CRL文件到Host指定目录,Device启动时需要使用用户证书对文件系统进行校验。
- 获取用户根证书文件与用户CRL文件。
获取3生成的用户根证书文件user.xer和证书吊销列表文件user.crl。
- 在Host侧驱动软件包({soc version}-driver-{software version}-{os.arch}.run)的安装目录下创建CMS文件夹,若您使用默认路径安装,安装路径为“/usr/local/Ascend”,以下以驱动软件包使用默认路径安装为例。
mkdir /usr/local/Ascend/CMS
- 将“user.xer”与“user.crl”上传到上述步骤创建的CMS目录中,例如“ /usr/local/Ascend/CMS”。
- 在Host侧使用upgrade-tool工具设置用户根证书信息。
/usr/local/Ascend/driver/tools/upgrade-tool --device_index -1 --user_cert --path /usr/local/Ascend/CMS/user.xer
说明:若为Docker容器场景,请在宿主机上执行如上命令。
- 重启Host。
reboot