blob: 30f2e94679dc7ec3f010a758db78e5c9c46f883d [file] [log] [blame]
The Android Open Source Project20682592009-03-03 19:29:32 -08001#!/bin/bash
2
3KERNEL=
4RAMDISK=
5CMDLINE=
6GENEXT2FS=
7GRUBCONF=
8TMPDIR=
9OUTPUT=
10
11while [ $# -gt 0 ]; do
12 case $1 in
13 --kernel)
14 KERNEL=$2
15 shift
16 ;;
17
18 --ramdisk)
19 RAMDISK=$2
20 shift
21 ;;
22
23 --cmdline)
24 CMDLINE=$2
25 shift
26 ;;
27
28 --genext2fs)
29 GENEXT2FS=$2
30 shift
31 ;;
32
33 --tmpdir)
34 TMPDIR=$2
35 shift
36 ;;
37 --grubconf)
38 GRUBCONF=$2
39 shift
40 ;;
41 --output)
42 OUTPUT=$2
43 shift
44 ;;
45
46 --help)
47 echo "Usage: $0 OPTIONS"
48 echo "Create an ext2 image that contains everything necessary"
49 echo -e "to be the boot file system.\n"
50 echo "The following options exist:"
51 echo " --genext2fs <genext2fs> The location of genext2fs binary"
52 echo " --kernel <kernel> The kernel to boot"
53 echo " --ramdisk <ramdisk> The ramdisk to be used"
54 echo " --cmdline <cmdline> The command line to use"
55 echo " --grubconf <confile> The path to grub conf file"
56 echo " --tmpdir <tmpdir> The temporary dir where files"\
57 "can be copied"
58 echo " --output <output> The filename of the output image"
59 echo
60 exit 0
61 ;;
62
63 *)
64 echo "Unknown option $1."
65 exit 1
66 ;;
67 esac
68 shift
69done
70
71if [ -z "$KERNEL" -o -z "$RAMDISK" -o -z "$GENEXT2FS" -o -z "$TMPDIR" -o \
72 -z "$OUTPUT" ]; then
73 echo "Missing required arguments."
74 exit 1
75fi
76
77if ! [ -x "$GENEXT2FS" -a -f "$RAMDISK" -a -f "$KERNEL" ]; then
78 echo "Must provide path to a valid genext2fs binary."
79 exit 1
80fi
81
82rm -rf $TMPDIR
83mkdir -p $TMPDIR
84
85echo -n "$CMDLINE" > $TMPDIR/cmdline
86cp -f $KERNEL $TMPDIR/kernel
87cp -f $RAMDISK $TMPDIR/ramdisk
88
89if [ -f "$GRUBCONF" ]; then
90 mkdir -p $TMPDIR/boot/grub
91 cp -f $GRUBCONF $TMPDIR/boot/grub/menu.lst
92fi
93
94num_blocks=`du -sk $TMPDIR | tail -n1 | awk '{print $1;}'`
95
96# add 1%
97extra=`expr $num_blocks / 100`
98reserve=10
99[ $extra -lt $reserve ] && extra=$reserve
100
101num_blocks=`expr $num_blocks + $extra`
102num_inodes=`find $TMPDIR | wc -l`
103
104$GENEXT2FS -d $TMPDIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT
105
106exit 0