From c47eca6747604bed479c1997e0f33ad993d7fdf2 Mon Sep 17 00:00:00 2001 From: xiaolu Date: Mon, 1 Sep 2014 18:06:43 +0800 Subject: [PATCH] update 2014/09/01 --- mkboot | 232 ++++++++++++++++++++------------------------------ mkbootimg | Bin 33282 -> 29781 bytes mkbootimg_dtb | Bin 35639 -> 0 bytes 3 files changed, 93 insertions(+), 139 deletions(-) delete mode 100755 mkbootimg_dtb diff --git a/mkboot b/mkboot index 40128eb..1b497cc 100755 --- a/mkboot +++ b/mkboot @@ -18,8 +18,7 @@ trap "clean" 2 3 4 workdir=$(pwd) toolpath=$(readlink -f $0) tooldir=$(dirname $toolpath) -mkbootimg_dtb=$tooldir/mkbootimg_dtb -mkbootimg_old=$tooldir/mkbootimg +mkbootimg=$tooldir/mkbootimg old_bootimg=true C_OUT="\033[0;1m" C_ERR="\033[31;1m" @@ -40,14 +39,13 @@ clean() usage() { - pout "\n" + pout "" + pout "----------------------------------------------------------------------" pout "Not enough parameters or parameter error!" pout "unpack boot.img & decompress ramdisk:\n $(basename $0) [img] [output dir]" pout " $(basename $0) boot.img boot20130905" pout "Use the unpacked directory repack boot.img(img_info):\n $(basename $0) [unpacked dir] [newbootfile]" pout " $(basename $0) boot20130905 newboot.img" - pout "Use the boot.img and new ramdisk repack boot.img:\n $(basename $0) [img] [ramdisk.gz or ramdisk dir] [newbootfile]" - pout " $(basename $0) boot.img boot20130905/ramdisk newboot.img" clean } @@ -60,37 +58,26 @@ print_info() pout " ramdisk size : $ramdisk_size" [ ! -z $second_size ] && [ $second_size -gt 0 ] && \ pout " second_size : $second_size" - if $old_bootimg ; then - pout " base : $base_addr" - pout " kernel addr : $kernel_addr" - pout " ramdisk addr : $ramdisk_addr" - [ -z $second_addr ] || pout " second_addr : $second_addr" - pout " tags addr : $tags_addr" - else - pout " dtb size : $dtb_size" - pout " base : $base_addr" - pout " kernel offset : $kernel_offset" - pout " ramdisk offset : $ramdisk_offset" - [ -z $second_offset ] || pout " second_offset : $second_offset" - pout " tags offset : $tags_offset" - pout " dtb img : $dt" - fi + [ $dtb_size -gt 0 ] && pout " dtb size : $dtb_size" + pout " base : $base_addr" + pout " kernel offset : $kernel_offset" + pout " ramdisk offset : $ramdisk_offset" + [ -z $second_offset ] || pout " second_offset : $second_offset" + pout " tags offset : $tags_offset" + [ $dtb_size -gt 0 ] && pout " dtb img : $dt" pout " cmd line : $cmd_line" } mkboot_img() { error=0 - if $old_bootimg ; then - $mkbootimg_old --kernel $kernel --ramdisk $ramdisk \ - --base $base_addr --ramdiskaddr $ramdisk_addr \ - --cmdline "$cmd_line" -o $1 || error=1 - else - $mkbootimg_dtb --kernel $kernel --ramdisk $ramdisk \ - --base $base_addr --ramdisk_offset $ramdisk_offset \ - --tags_offset $tags_offset --cmdline "$cmd_line" \ - --dt $dt -o $1 || error=1 + if [ $dtb_size -gt 0 ]; then + dtb="--dt ${dt}" fi + $mkbootimg --kernel $kernel --ramdisk $ramdisk \ + --base $base_addr --ramdisk_offset $ramdisk_offset \ + --tags_offset $tags_offset --cmdline "$cmd_line" \ + --pagesize $page_size $dtb -o $1 || error=1 [ $error -eq 1 ] && return $error ramdisk_size=$(stat -c "%s" $ramdisk) boot_size=$(stat -c "%s" $1) @@ -104,8 +91,6 @@ if [ $# -eq 2 ] && [ -d $1 ]; then mkboot_from_dir=1 elif [ $# -eq 2 ] && [ -s $1 ]; then split_boot_to_dir=1 -elif [ $# -eq 3 ] && [ -s $1 ] && [ -e $2 ]; then - mkboot_from_img_dir=1 else usage fi @@ -125,50 +110,39 @@ if [ ! -z $mkboot_from_dir ]; then pout "img_info file have not enough parameters." clean fi - if [ ! -z $dt ]; then - old_bootimg=false - [ -z $kernel_offset ] && kernel_offset=$kernel_addr - [ -z $ramdisk_offset ] && ramdisk_offset=$ramdisk_addr - [ -z $tags_offset ] && tags_offset=$tags_addr - fi - kernel=$(readlink -f $kernel) + [ -z $dtb_size ] && dtb_size=0 if [ -d $ramdisk ]; then - cd $ramdisk - find . | cpio -R 0:0 -H newc -o 2>/dev/null | gzip > $unpacked_dir/new_ramdisk.gz - #find . | cpio -R 0:0 -H newc -o 2>/dev/null > $unpacked_dir/new_ramdisk.gz - #mkbootfs $ramdisk > $unpacked_dir/new_ramdisk.gz - ramdisk=$unpacked_dir/new_ramdisk.gz + #cd $ramdisk + #find . | cpio -R 0:0 -H newc -o 2>/dev/null | gzip > $unpacked_dir/new_ramdisk.gz + mkbootfs $ramdisk | gzip > new_ramdisk.gz + ramdisk=new_ramdisk.gz ramdisk_size=$(stat -c "%s" $ramdisk) fi - cd $unpacked_dir + #cd $unpacked_dir print_info rm -f $new_img mkboot_img $new_img || perr "Make boot.img Error! pls check img_info file." + #pout "Add SEANDROIDENFORCE tag." + #printf SEANDROIDENFORCE >> $new_img rm -f new_ramdisk.gz clean fi -if [ ! -z $split_boot_to_dir ]; then - #split boot.img to dir. - if [ -e $2 ]; then - read -p "$2 exists, delete?(N/y)" reply - case $reply in - y | Y) - rm -rf $2 - ;; - *) - exit - ;; - esac - fi - tempdir="$(readlink -f $2)" - mkdir -p $tempdir - pout "Unpack & decompress $1 to $2" -else - #split boot.img to tmp dir. - tempdir=$(mktemp -d /tmp/mkboot.XXXX) - pout "Repack $1 & ramdisk $2 to $3" +#split boot.img to dir. +if [ -e $2 ]; then + read -p "$2 exists, delete?(N/y)" reply + case $reply in + y | Y) + rm -rf $2 + ;; + *) + exit + ;; + esac fi +tempdir="$(readlink -f $2)" +mkdir -p $tempdir +pout "Unpack & decompress $1 to $2" #get boot.img info cp -f $1 $tempdir/ @@ -177,34 +151,34 @@ bootimg=$(basename $1) offset=$(grep -abo ANDROID! $bootimg | cut -f 1 -d :) [ -z $offset ] && clean if [ $offset -gt 0 ]; then - dd if=$bootimg of=bootimg bs=$offset skip=1 2>/dev/null - bootimg=bootimg + dd if=$bootimg of=bootimg bs=$offset skip=1 2>/dev/null + bootimg=bootimg fi -dtb_size=$(od -A n -D -j 40 -N 4 $bootimg | sed 's/ //g') -kernel_v=0x$(od -A n -H -j 12 -N 4 $bootimg | sed 's/ //g') -ramdisk_v=0x$(od -A n -H -j 20 -N 4 $bootimg | sed 's/ //g') -second_v=0x$(od -A n -H -j 28 -N 4 $bootimg | sed 's/ //g') -tags_v=0x$(od -A n -H -j 32 -N 4 $bootimg | sed 's/ //g') -if [ $dtb_size -gt 0 ]; then - old_bootimg=false - kernel_offset=$kernel_v - ramdisk_offset=$ramdisk_v - second_offset=$second_v - tags_offset=$tags_v -else - kernel_addr=$kernel_v - ramdisk_addr=$ramdisk_v - second_addr=$second_v - tags_addr=$tags_v -fi +kernel_addr=0x$(od -A n -X -j 12 -N 4 $bootimg | sed 's/ //g' | sed 's/^0*//g') +ramdisk_addr=0x$(od -A n -X -j 20 -N 4 $bootimg | sed 's/ //g' | sed 's/^0*//g') +second_addr=0x$(od -A n -X -j 28 -N 4 $bootimg | sed 's/ //g' | sed 's/^0*//g') +tags_addr=0x$(od -A n -X -j 32 -N 4 $bootimg | sed 's/ //g' | sed 's/^0*//g') + kernel_size=$(od -A n -D -j 8 -N 4 $bootimg | sed 's/ //g') -base_addr=0x$(od -A n -h -j 14 -N 2 $bootimg | sed 's/ //g')0000 +base_addr=0x$(od -A n -x -j 14 -N 2 $bootimg | sed 's/ //g')0000 ramdisk_size=$(od -A n -D -j 16 -N 4 $bootimg | sed 's/ //g') second_size=$(od -A n -D -j 24 -N 4 $bootimg | sed 's/ //g') page_size=$(od -A n -D -j 36 -N 4 $bootimg | sed 's/ //g') +dtb_size=$(od -A n -D -j 40 -N 4 $bootimg | sed 's/ //g') cmd_line=$(od -A n --strings -j 64 -N 512 $bootimg) +kernel_offset=$((kernel_addr-base_addr)) +ramdisk_offset=$((ramdisk_addr-base_addr)) +second_offset=$((second_addr-base_addr)) +tags_offset=$((tags_addr-base_addr)) + +base_addr=$(printf "0x%08x" $base_addr) +kernel_offset=$(printf "0x%08x" $kernel_offset) +ramdisk_offset=$(printf "0x%08x" $ramdisk_offset) +second_offset=$(printf "0x%08x" $second_offset) +tags_offset=$(printf "0x%08x" $tags_offset) + k_count=$(((kernel_size+page_size-1)/page_size)) r_count=$(((ramdisk_size+page_size-1)/page_size)) s_count=$(((second_size+page_size-1)/page_size)) @@ -214,79 +188,59 @@ r_offset=$((k_offset+k_count)) s_offset=$((r_offset+r_count)) d_offset=$((s_offset+s_count)) +#zImage dd if=$bootimg of=zImage_tmp bs=$page_size skip=$k_offset count=$k_count 2>/dev/null -dd if=zImage_tmp of=zImage bs=$kernel_size count=1 2>/dev/null -if [ ! -z $split_boot_to_dir ]; then - dd if=$bootimg of=ramdisk_tmp bs=$page_size skip=$r_offset count=$r_count 2>/dev/null - dd if=ramdisk_tmp of=ramdisk.gz bs=$ramdisk_size count=1 2>/dev/null -fi +dd if=zImage_tmp of=zImage bs=$kernel_size count=1 2>/dev/null +#ramdisk.gz +dd if=$bootimg of=ramdisk_tmp bs=$page_size skip=$r_offset count=$r_count 2>/dev/null +dd if=ramdisk_tmp of=ramdisk.gz bs=$ramdisk_size count=1 2>/dev/null +#dtb if [ $dtb_size -gt 0 ]; then dd if=$bootimg of=dt.img_tmp bs=$page_size skip=$d_offset count=$d_count 2>/dev/null - dd if=dt.img_tmp of=dt.img bs=$dtb_size count=1 2>/dev/null + dd if=dt.img_tmp of=dt.img bs=$dtb_size count=1 2>/dev/null dt="$tempdir/dt.img" + dt=$(basename $dt) + dt_name="dt=$dt\n" + dt_size="dtb_size=$dtb_size\n" fi rm -f *_tmp $(basename $1) $bootimg -kernel="$tempdir/zImage" -ramdisk=$tempdir/ramdisk.gz +kernel=zImage +ramdisk=ramdisk [ ! -s $kernel ] && clean #print boot.img info print_info #write info to img_info,decompression ramdisk.gz -if [ ! -z $split_boot_to_dir ]; then - if $old_bootimg ; then - printf "kernel=$(basename $kernel)\nramdisk=ramdisk\npage_size=$page_size\n\ -kernel_size=$kernel_size\nramdisk_size=$ramdisk_size\nbase_addr=$base_addr\nkernel_addr=$kernel_addr\n\ -ramdisk_addr=$ramdisk_addr\ntags_addr=$tags_addr\ncmd_line=\"$cmd_line\"\n" > img_info - else - dt=$(basename $dt) - printf "kernel=$(basename $kernel)\nramdisk=ramdisk\ndt=$dt\npage_size=$page_size\n\ -kernel_size=$kernel_size\nramdisk_size=$ramdisk_size\ndtb_size=$dtb_size\nbase_addr=$base_addr\nkernel_offset=$kernel_offset\n\ +printf "kernel=zImage\nramdisk=ramdisk\n${dt_name}page_size=$page_size\n\ +kernel_size=$kernel_size\nramdisk_size=$ramdisk_size\n${dt_size}base_addr=$base_addr\nkernel_offset=$kernel_offset\n\ ramdisk_offset=$ramdisk_offset\ntags_offset=$tags_offset\ncmd_line=\"$cmd_line\"\n" > img_info - fi - mkdir ramdisk - cd ramdisk +mkdir ramdisk +cd ramdisk - gzip -t ../ramdisk.gz +gzip -t ../ramdisk.gz +if [ $? -gt 0 ]; then + + lzma -t ../ramdisk.gz if [ $? -gt 0 ]; then - - lzma -t ../ramdisk.gz + #try lz4 + $tooldir/lz4 -d ../ramdisk.gz ../ramdisk.cpio if [ $? -gt 0 ]; then - #try lz4 - $tooldir/lz4 -d ../ramdisk.gz ../ramdisk.cpio - if [ $? -gt 0 ]; then - pout "ramdisk is unknown format,can't unpack ramdisk" - rm ../ramdisk.cpio - else - pout "ramdisk is lz4 format." - cpio -i -d -m --no-absolute-filenames 2>/dev/null < ../ramdisk.cpio - fi + pout "ramdisk is unknown format,can't unpack ramdisk" + rm ../ramdisk.cpio else - pout "ramdisk is lzma format." - lzma -d -c ../ramdisk.gz | cpio -i -d -m --no-absolute-filenames 2>/dev/null - fi + pout "ramdisk is lz4 format." + cpio -i -d -m --no-absolute-filenames 2>/dev/null < ../ramdisk.cpio + fi else - pout "ramdisk is gzip format." - gzip -d -c ../ramdisk.gz | cpio -i -d -m --no-absolute-filenames 2>/dev/null + pout "ramdisk is lzma format." + lzma -d -c ../ramdisk.gz | cpio -i -d -m --no-absolute-filenames 2>/dev/null fi - #Unpack Finish to exit. - pout "Unpack completed." - exit +else + pout "ramdisk is gzip format." + gzip -d -c ../ramdisk.gz | cpio -i -d -m --no-absolute-filenames 2>/dev/null fi - -#继续 -cd $workdir -ramdisk=$2 -#if ramdisk is a directory,create ramdisk.gz -if [ -d $ramdisk ]; then - cd $ramdisk - find . | cpio -R 0:0 -H newc -o 2>/dev/null | gzip > $tempdir/ramdisk.gz - ramdisksize=$(stat -c "%s" $tempdir/ramdisk.gz) - ramdisk="$tempdir/ramdisk.gz" - cd $workdir -fi -rm -f $3 -mkboot_img $3 || perr "Make boot.img Error! pls check." -clean +#Unpack Finish to exit. +pout "Unpack completed." +exit diff --git a/mkbootimg b/mkbootimg index 2d77c5a792895e130b7b17731878cf93772b69f8..4e8bdb8a2f3062fec27ea8f33e29a49710b3adf2 100755 GIT binary patch literal 29781 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 YnfY4t*W#l^pz{b%#E;2G*_q1!0So|#EdT%j diff --git a/mkbootimg_dtb b/mkbootimg_dtb deleted file mode 100755 index 0e9b73340bfc2bc9e22ff686cb4b8627e026d738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35639 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:)+rQ&w&v1WQ?L@q5fA8wjx-xCttQ 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 ILKgdf0djSsEdT%j