因为自己有需要,所以花了一点时间来写了一下。
1. 解压工具
#!/bin/bash -
#===============================================================================
#
# FILE: unpackszbboot
#
# USAGE: ./unpackszbboot
#
# DESCRIPTION:
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: linkscue (scue), linkscue@gmail.com
# ORGANIZATION:
# CREATED: 2014年02月01日 00时58分49秒 CST
# REVISION: ---
#=============================================================================== usage(){
echo "Usage: ${0} bootimg extdir"
} if [[ $# -lt ]]; then
usage && exit
fi # 镜像文件位置
bootimg_org=$(readlink -f ${})
[[ ! -e ${bootimg_org} ]] && exit # 设置输出目录
extdir=$(dirname ${bootimg_org})/boot_extdir
[[ ${} != "" ]] && extdir=${}
echo ">> Will unpack to ${extdir}" # 清除旧目录,创建新目录
rm -rf ${extdir} >/dev/null
mkdir -p ${extdir}
cd ${extdir} # 解压bootimg和ramdisk
bootimg --unpack-bootimg ${bootimg_org}
dd if=ramdisk of=ramdisk.gz bs= skip=
mkdir root && cd root
gunzip -c ../ramdisk.gz | cpio -i
cd ../
2. 打包工具
#!/bin/bash -
#===============================================================================
#
# FILE: repackszbboot
#
# USAGE: ./repackszbboot
#
# DESCRIPTION:
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: linkscue (scue), linkscue@gmail.com
# ORGANIZATION:
# CREATED: 2014年02月01日 02时16分11秒 CST
# REVISION: ---
#=============================================================================== # 设置目录
boot_dir=${PWD}
[[ ${} != "" ]] && boot_dir=$(readlink -f ${})
root_dir=${boot_dir}/root
kernel_file=${boot_dir}/kernel
ramdisk_cpio=ramdisk.img.cpio
ramdisk_gz=ramdisk.img.cpio.gz
boot_output=boot.img.new # 工具位置
mkbootfs=/media/Source/cm10./out/host/linux-x86/bin/mkbootfs
minigzip=/media/Source/cm10./out/host/linux-x86/bin/minigzip [[ ! -e ${boot_dir} ]] && exit # 打包
cd ${boot_dir}
${mkbootfs} ${root_dir} | ${minigzip} > ${ramdisk_cpio} mkimage -A arm -O linux -T ramdisk -C none -a 0x40800000 -e 0x40800000 \
-n "ramdisk" -d ${ramdisk_cpio} ${ramdisk_gz}
mkbootimg --kernel ${kernel_file} --ramdisk ${ramdisk_gz} \
--base 0x10000000 --cmdline "" --pagesize -o ${boot_output} # 显示结果
ls -l ${boot_output}