12068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project#!/bin/bash 22068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 32068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectKERNEL= 42068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectRAMDISK= 52068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectCMDLINE= 62068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectGENEXT2FS= 72068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectGRUBCONF= 82068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectTMPDIR= 92068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectOUTPUT= 102068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 112068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectwhile [ $# -gt 0 ]; do 122068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project case $1 in 132068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --kernel) 142068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project KERNEL=$2 152068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 162068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 172068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 182068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --ramdisk) 192068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project RAMDISK=$2 202068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 212068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 222068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 232068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --cmdline) 242068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project CMDLINE=$2 252068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 262068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 272068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 282068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --genext2fs) 292068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project GENEXT2FS=$2 302068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 312068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 322068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 332068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --tmpdir) 342068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project TMPDIR=$2 352068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 362068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 372068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --grubconf) 382068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project GRUBCONF=$2 392068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 402068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 412068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --output) 422068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project OUTPUT=$2 432068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 442068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 452068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 462068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project --help) 472068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo "Usage: $0 OPTIONS" 482068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo "Create an ext2 image that contains everything necessary" 492068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo -e "to be the boot file system.\n" 502068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo "The following options exist:" 512068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo " --genext2fs <genext2fs> The location of genext2fs binary" 522068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo " --kernel <kernel> The kernel to boot" 532068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo " --ramdisk <ramdisk> The ramdisk to be used" 542068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo " --cmdline <cmdline> The command line to use" 552068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo " --grubconf <confile> The path to grub conf file" 562068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo " --tmpdir <tmpdir> The temporary dir where files"\ 572068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project "can be copied" 582068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo " --output <output> The filename of the output image" 592068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo 602068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project exit 0 612068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 622068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 632068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project *) 642068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo "Unknown option $1." 652068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project exit 1 662068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project ;; 672068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project esac 682068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project shift 692068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectdone 702068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 712068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectif [ -z "$KERNEL" -o -z "$RAMDISK" -o -z "$GENEXT2FS" -o -z "$TMPDIR" -o \ 722068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project -z "$OUTPUT" ]; then 732068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo "Missing required arguments." 742068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project exit 1 752068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectfi 762068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 772068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectif ! [ -x "$GENEXT2FS" -a -f "$RAMDISK" -a -f "$KERNEL" ]; then 782068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project echo "Must provide path to a valid genext2fs binary." 792068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project exit 1 802068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectfi 812068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 822068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectrm -rf $TMPDIR 832068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectmkdir -p $TMPDIR 842068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 852068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectecho -n "$CMDLINE" > $TMPDIR/cmdline 862068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectcp -f $KERNEL $TMPDIR/kernel 872068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectcp -f $RAMDISK $TMPDIR/ramdisk 882068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 892068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectif [ -f "$GRUBCONF" ]; then 902068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project mkdir -p $TMPDIR/boot/grub 912068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project cp -f $GRUBCONF $TMPDIR/boot/grub/menu.lst 922068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectfi 932068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 942068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectnum_blocks=`du -sk $TMPDIR | tail -n1 | awk '{print $1;}'` 952068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 962068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# add 1% 972068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectextra=`expr $num_blocks / 100` 982068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectreserve=10 992068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project[ $extra -lt $reserve ] && extra=$reserve 1002068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 1012068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectnum_blocks=`expr $num_blocks + $extra` 1022068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectnum_inodes=`find $TMPDIR | wc -l` 1032068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 1042068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project$GENEXT2FS -d $TMPDIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT 1052068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project 1062068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectexit 0 107