18e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall#!/bin/bash
28e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall#
38e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall# To call this script, make sure make_f2fs is somewhere in PATH
48e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall
58e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallfunction usage() {
68e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallcat<<EOT
78e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP AbgrallUsage:
88e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall${0##*/} OUTPUT_FILE SIZE
91e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim         [-C FS_CONFIG] [-f SRC_DIR] [-D PRODUCT_OUT]
101e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim         [-s FILE_CONTEXTS] [-t MOUNT_POINT] [-T TIMESTAMP]
111e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim         [-L LABEL]
128e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP AbgrallEOT
138e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall}
148e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall
158e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallecho "in mkf2fsuserimg.sh PATH=$PATH"
168e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall
171e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk KimMKFS_OPTS=""
181e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk KimSLOAD_OPTS=""
191e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim
208e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallif [ $# -lt 2 ]; then
218e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall  usage
228e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall  exit 1
238e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallfi
248e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall
258e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP AbgrallOUTPUT_FILE=$1
268e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP AbgrallSIZE=$2
278e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallshift; shift
288e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall
291e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ "$1" == "-C" ]]; then
301e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  SLOAD_OPTS+=" -C $2"
311e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  shift; shift
321e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
331e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ "$1" == "-f" ]]; then
341e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  SLOAD_OPTS+=" -f $2"
351e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  shift; shift
361e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
371e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ "$1" == "-D" ]]; then
381e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  SLOAD_OPTS+=" -p $2"
391e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  shift; shift
401e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
411e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ "$1" == "-s" ]]; then
421e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  SLOAD_OPTS+=" -s $2"
431e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  shift; shift
441e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
451e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ "$1" == "-t" ]]; then
461e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  MOUNT_POINT=$2
471e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  shift; shift
481e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
491e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim
501e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [ -z $MOUNT_POINT ]; then
511e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  echo "Mount point is required"
521e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  exit 2
531e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
541e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim
551e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ ${MOUNT_POINT:0:1} != "/" ]]; then
561e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  MOUNT_POINT="/"$MOUNT_POINT
571e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
581e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim
591e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk KimSLOAD_OPTS+=" -t $MOUNT_POINT"
601e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim
611e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ "$1" == "-T" ]]; then
621e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  SLOAD_OPTS+=" -T $2"
631e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  shift; shift
641e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
651e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim
661e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [[ "$1" == "-L" ]]; then
671e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  MKFS_OPTS+=" -l $2"
681e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  shift; shift
691e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
708e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall
718e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallif [ -z $SIZE ]; then
728e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall  echo "Need size of filesystem"
738e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall  exit 2
748e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallfi
758e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall
760708cde464d97fc0a1b251f0431f6fe29f07b47dJaegeuk KimMAKE_F2FS_CMD="make_f2fs -S $SIZE -f -O encrypt -O quota -O verity $MKFS_OPTS $OUTPUT_FILE"
778e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallecho $MAKE_F2FS_CMD
788e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall$MAKE_F2FS_CMD
798e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallif [ $? -ne 0 ]; then
808e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrall  exit 4
818e9cdda6fcb6a84cffbcc1ab44a7ecec402a9424JP Abgrallfi
821e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim
831e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk KimSLOAD_F2FS_CMD="sload_f2fs -S $SLOAD_OPTS $OUTPUT_FILE"
841e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimecho $SLOAD_F2FS_CMD
851e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim$SLOAD_F2FS_CMD
861e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimif [ $? -ne 0 ]; then
871e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  rm -f $OUTPUT_FILE
881e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kim  exit 4
891e4263b9898f8d183b3698f7e553570d53e0ea4eJaegeuk Kimfi
90