韌體打包流程
阿新 • • 發佈:2022-05-29
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}