75 lines
1.8 KiB
Bash
75 lines
1.8 KiB
Bash
#!/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
|
|
|
|
|