1 #!/bin/bash 2 3 KERNEL= 4 RAMDISK= 5 CMDLINE= 6 GENEXT2FS= 7 GRUBCONF= 8 TMPDIR= 9 OUTPUT= 10 11 while [ $# -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 69 done 70 71 if [ -z "$KERNEL" -o -z "$RAMDISK" -o -z "$GENEXT2FS" -o -z "$TMPDIR" -o \ 72 -z "$OUTPUT" ]; then 73 echo "Missing required arguments." 74 exit 1 75 fi 76 77 if ! [ -x "$GENEXT2FS" -a -f "$RAMDISK" -a -f "$KERNEL" ]; then 78 echo "Must provide path to a valid genext2fs binary." 79 exit 1 80 fi 81 82 rm -rf $TMPDIR 83 mkdir -p $TMPDIR 84 85 echo -n "$CMDLINE" > $TMPDIR/cmdline 86 cp -f $KERNEL $TMPDIR/kernel 87 cp -f $RAMDISK $TMPDIR/ramdisk 88 89 if [ -f "$GRUBCONF" ]; then 90 mkdir -p $TMPDIR/boot/grub 91 cp -f $GRUBCONF $TMPDIR/boot/grub/menu.lst 92 fi 93 94 num_blocks=`du -sk $TMPDIR | tail -n1 | awk '{print $1;}'` 95 96 # add 1% 97 extra=`expr $num_blocks / 100` 98 reserve=10 99 [ $extra -lt $reserve ] && extra=$reserve 100 101 num_blocks=`expr $num_blocks + $extra` 102 num_inodes=`find $TMPDIR | wc -l` 103 104 $GENEXT2FS -d $TMPDIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT 105 106 exit 0 107