固件打包流程

obmc-phosphor-image的taskorder

do_prepare_recipe_sysroot
do_rootfs
do_flush_pseudodb
do_generate_rwfs_static
do_image_qa
do_generate_phosphor_manifest
do_image
do_copy_signing_pubkey
do_image_squashfs_xz
do_generate_static
do_generate_static_tar
do_generate_static_alltar
do_image_complete
do_populate_lic_deploy

打包ro分区, 生成xxx.squashfs-xz

#mksquashfs $ROOTFS_DIR image-ro  -noappend -comp xz

打包rw分区,生成xxx.jffs2

#mkdir jffs2
#mkfs.jffs2 --root=jffs2 --faketime --output=image-rw

打包uboot/kernel/ro/rw,生成xxx.static.mtd

dd生成flash大小的文件,填充ff
#dd if=/dev/zero bs=1k count=$NOR_IMAGE_SIZE | tr '\000' '\377' > $NOR_IMAGE

写入uboot
#dd bs=1k conv=notrunc seek=$FLASH_UBOOT_OFFSET if=image-uboot of=$NOR_IMAGE

写入kernel
#dd bs=1k conv=notrunc seek=$FLASH_KERNEL_OFFSET if=image-kernel of=$NOR_IMAGE

写入ro
#dd bs=1k conv=notrunc seek=$FLASH_ROFS_OFFSET if=image-ro of=$NOR_IMAGE

写入rw
#dd bs=1k conv=notrunc seek=$FLASH_RWFS_OFFSET if=image-rw of=$NOR_IMAGE

生成升级用的tar包

从整体固件(xxx.static.mtd)生成xxx.static.mtd.all.tar包

  • 收集文件:image-bmc(xxx.static.mtd), MANIFEST, publickey
  • 生成签名文件
signature_files=""
for file in "image-bmc MANIFEST publickey"; do
    openssl dgst -sha256 -sign ${private_key} -out "${file}.sig" $file
    signature_files="${signature_files} ${file}.sig"
done
  • 对签名文件签名
cat $sort_signature_files > image-full
openssl dgst -sha256 -sign ${private_key} -out image-full.sig image-full
signature_files="${signature_files} image-full.sig"
  • 打包
tar -h -cvf $OUTPUT image-bmc MANIFEST publickey ${signature_files}

uboot/kernel/ro/rw分别签名,生成xxx.static.mtd.tar

  • 收集文件,MANIFEST/publickey/image-u-boot(u-boot.bin)/image-kernel/image-rofs/image-rwfs
  • 生成签名文件
for file in "MANIFEST publickey image-u-boot image-kernel image-rofs image-rwfs"; do
  openssl dgst -sha256 -sign ${private_key} -out "${file}.sig" $file
  signature_files="${signature_files} ${file}.sig"
done
  • 对签名文件签名
cat $sort_signature_files > image-full
openssl dgst -sha256 -sign ${private_key} -out image-full.sig image-full
signature_files="${signature_files} image-full.sig"
  • 打包
tar -h -cvf xxx.static.mtd.tar image-u-boot image-kernel image-rofs image-rwfs MANIFEST publickey ${signature_files}

posted on 2022-05-29 17:04  zlyang  阅读(720)  评论(0编辑  收藏  举报

导航