#!/bin/bash # Qisda,Howard Hsu,2009/11/18 # The script is used to create rescue.bin under ./arch/arm/boot/ # Steps: # 1. Take rescue config and make its kernel # 2. Pad the zeros to kernel up to 1586688 bytes # 3. Cat kernel with pre-made rescue file system. # 4. Pad the zeros to 4-byte boundary, # the resulted is rescue.bin under ./arch/arm/boot/ # # arguments: "skip" : do not remake the kernel, directly do rescue.bin packing # # Qisda,Howard Hsu,2009/11/20 # restore the original .config to avoid affect the original kernel build .config # input # this file should be executable rescueKernel=./arch/arm/boot/zImageRescue rescueFs=../RescueFS/img/urootfs.img # output rescueBin=./arch/arm/boot/rescue.bin # intermediate rescureKernelBackupDir=../RescueFS/img/uzImage rescueKernelTemp=./arch/arm/boot/zImage arg1="none" if [ -n $1 ]; then arg1=$1 fi if [ $arg1 == "skip" ]; then echo "skip make rescue kernel" cp $rescureKernelBackupDir $rescueKernelTemp else echo "step1: make rescue kernel..." make rescueOS_defconfig make if [ -f .config.old ]; then mv .config.old .config fi fi rescueKsize=$(stat -c%s "$rescueKernelTemp") echo " $rescueKernelTemp size is $rescueKsize" expectrescueKsize=1586688 let padzero=$expectrescueKsize-$rescueKsize echo "step2: append $padzero zeros" dd if=/dev/zero of=./zero.bin bs=$padzero count=1 cat $rescueKernelTemp ./zero.bin > $rescueKernel rm ./zero.bin #rm $rescueKernelTemp cp $rescueKernelTemp $rescureKernelBackupDir if [ -f $rescueFs ]; then echo "step3: cat kernel and Fs into rescue.bin" cat $rescueKernel $rescueFs > $rescueBin else echo "$rescueFs does not exist!!!" exit 1; fi size=$(stat -c%s "$rescueBin") let padzero=4-size%4 if [ padzero != 0 ]; then echo "step4: need $padzero to 4-byte align" dd if=/dev/zero of=./zero.bin bs=$padzero count=1 cat ./zero.bin >> $rescueBin rm ./zero.bin fi