| #!/bin/bash |
| |
| KERNEL= |
| RAMDISK= |
| CMDLINE= |
| GENEXT2FS= |
| GRUBCONF= |
| TMPDIR= |
| OUTPUT= |
| |
| while [ $# -gt 0 ]; do |
| case $1 in |
| --kernel) |
| KERNEL=$2 |
| shift |
| ;; |
| |
| --ramdisk) |
| RAMDISK=$2 |
| shift |
| ;; |
| |
| --cmdline) |
| CMDLINE=$2 |
| shift |
| ;; |
| |
| --genext2fs) |
| GENEXT2FS=$2 |
| shift |
| ;; |
| |
| --tmpdir) |
| TMPDIR=$2 |
| shift |
| ;; |
| --grubconf) |
| GRUBCONF=$2 |
| shift |
| ;; |
| --output) |
| OUTPUT=$2 |
| shift |
| ;; |
| |
| --help) |
| echo "Usage: $0 OPTIONS" |
| echo "Create an ext2 image that contains everything necessary" |
| echo -e "to be the boot file system.\n" |
| echo "The following options exist:" |
| echo " --genext2fs <genext2fs> The location of genext2fs binary" |
| echo " --kernel <kernel> The kernel to boot" |
| echo " --ramdisk <ramdisk> The ramdisk to be used" |
| echo " --cmdline <cmdline> The command line to use" |
| echo " --grubconf <confile> The path to grub conf file" |
| echo " --tmpdir <tmpdir> The temporary dir where files"\ |
| "can be copied" |
| echo " --output <output> The filename of the output image" |
| echo |
| exit 0 |
| ;; |
| |
| *) |
| echo "Unknown option $1." |
| exit 1 |
| ;; |
| esac |
| shift |
| done |
| |
| if [ -z "$KERNEL" -o -z "$RAMDISK" -o -z "$GENEXT2FS" -o -z "$TMPDIR" -o \ |
| -z "$OUTPUT" ]; then |
| echo "Missing required arguments." |
| exit 1 |
| fi |
| |
| if ! [ -x "$GENEXT2FS" -a -f "$RAMDISK" -a -f "$KERNEL" ]; then |
| echo "Must provide path to a valid genext2fs binary." |
| exit 1 |
| fi |
| |
| rm -rf $TMPDIR |
| mkdir -p $TMPDIR |
| |
| echo -n "$CMDLINE" > $TMPDIR/cmdline |
| cp -f $KERNEL $TMPDIR/kernel |
| cp -f $RAMDISK $TMPDIR/ramdisk |
| |
| if [ -f "$GRUBCONF" ]; then |
| mkdir -p $TMPDIR/boot/grub |
| cp -f $GRUBCONF $TMPDIR/boot/grub/menu.lst |
| fi |
| |
| num_blocks=`du -sk $TMPDIR | tail -n1 | awk '{print $1;}'` |
| |
| # add 1% |
| extra=`expr $num_blocks / 100` |
| reserve=10 |
| [ $extra -lt $reserve ] && extra=$reserve |
| |
| num_blocks=`expr $num_blocks + $extra` |
| num_inodes=`find $TMPDIR | wc -l` |
| |
| $GENEXT2FS -d $TMPDIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT |
| |
| exit 0 |