1. 程式人生 > 其它 >韌體打包流程

韌體打包流程

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包

根據static.mtd生成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}