123456789101112131415161718192021222324252627282930313233343536 |
- #!/bin/sh
- # genext2fs wrapper calculating needed blocks/inodes values if not specified
- export LC_ALL=C
- CALC_BLOCKS=1
- CALC_INODES=1
- while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv f
- do
- case $f in
- b) CALC_BLOCKS=0 ;;
- N) CALC_INODES=0; INODES=$OPTARG ;;
- d) TARGET_DIR=$OPTARG ;;
- esac
- done
- # calculate needed inodes
- if [ $CALC_INODES -eq 1 ];
- then
- INODES=$(find $TARGET_DIR | wc -l)
- INODES=$(expr $INODES + 400)
- set -- $@ -N $INODES
- fi
- # calculate needed blocks
- if [ $CALC_BLOCKS -eq 1 ];
- then
- # size ~= superblock, block+inode bitmaps, inodes (8 per block), blocks
- # we scale inodes / blocks with 10% to compensate for bitmaps size + slack
- BLOCKS=$(du -s -c -k $TARGET_DIR | grep total | sed -e "s/total//")
- BLOCKS=$(expr 500 + \( $BLOCKS + $INODES / 8 \) \* 11 / 10)
- set -- $@ -b $BLOCKS
- fi
- exec genext2fs $@
|