/usr/bin/mic-create-recovery-image is in mic2 0.24.12-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | #!/bin/bash
kickstart=""
while getopts "hk:" options; do
  case $options in
    k)
	kickstart=$OPTARG
	shift 2
	if [ ! -f $kickstart ] ; then
		echo "kickstart file $kickstart doesn't exist."
		exit 1
	fi
	;;
    h) echo "Usage: $0 [-k kickstart] <live-image>"
         exit;;
    \?) echo "Usage: $0 [-k kickstart] <live-image>"
         exit 1;;
    *) echo "Usage: $0 [-k kickstart] <live-image>"
          exit 1;;
  esac
done
if [ $# -ne 1 ] ; then
	echo "Usage: $0 [-k kickstart] <live-image>"
	exit 1
fi
if [ $(/usr/bin/id -u) != 0 ]; then
    echo "You need to be root to run this script"
    exit 1
fi
image=$1
if [ ! -f $image ] ; then
	echo "$image isn't a live image."
	exit 1
fi
time=$(date +%Y%m%d%H%M%S)
recovery_image="recovery-image-$time.diskimg"
size=$(/usr/bin/du -s -B 1M $image | awk '{print $1;}')
overlaysize=256
size=$((size+overlaysize))
if [ $size -le 512 ] ; then
	size=512
elif [ $size -le 1024 ] ; then
	size=1024
elif [ $size -le 1536 ] ; then
	size=1536
elif [ $size -le 2048 ] ; then
	size=2048
fi
recovery_mnt=$(/bin/mktemp -d)
live_mnt=$(/bin/mktemp -d)
/bin/dd if=/dev/zero of=$recovery_image bs=1M count=$size
mkfs.vfat $recovery_image
/bin/mount -o loop $recovery_image $recovery_mnt
/usr/bin/file $image | grep "ISO 9660" > /dev/null 2>&1
if [ $? -eq 0 ] ; then
	/bin/mount -o loop $image $live_mnt
	/bin/cp -a $live_mnt/* $recovery_mnt/
	/bin/umount $live_mnt
else
	/usr/bin/file $image | grep "x86 boot sector" > /dev/null 2>&1
	if [ $? -eq 0 ] ; then
		loopdev=$(/sbin/losetup -f)
		/sbin/losetup $loopdev $image
		/sbin/kpartx -a $loopdev
		/bin/mount /dev/mapper/${loopdev/\/dev\//}p1 $live_mnt
	else
		echo "Invalid image."
		exit 1
	fi
	/bin/cp -a $live_mnt/* $recovery_mnt/
	/bin/umount /dev/mapper/${loopdev/\/dev\//}p1
	/sbin/kpartx -d $loopdev
	/sbin/losetup -d $loopdev
fi
if [ -d $recovery_mnt/isolinux ] ; then
	mv $recovery_mnt/isolinux $recovery_mnt/syslinux
fi
if [ -f $recovery_mnt/syslinux/isolinux.cfg ] ; then
	mv $recovery_mnt/syslinux/isolinux.cfg $recovery_mnt/syslinux/syslinux.cfg
elif [ -f $recovery_mnt/syslinux/extlinux.conf ] ; then
	mv $recovery_mnt/syslinux/extlinux.conf $recovery_mnt/syslinux/syslinux.cfg
fi
kernelline=$(sed -n '/kernel .*/p' $recovery_mnt/syslinux/syslinux.cfg | head -n 1)
appendline=$(sed -n '/append .*/p' $recovery_mnt/syslinux/syslinux.cfg | head -n 1 | sed 's/ autoinst//;s/ netinst//;s/ liveinst//;s/ check//;s/ 4//;s/ nosplash//;')
# Remove all the unnecessary lines
lineno=$(sed -n '/^label .*/=' $recovery_mnt/syslinux/syslinux.cfg | head -n 1)
UUID=$(/lib/udev/vol_id $recovery_image | grep "ID_FS_UUID=" | sed 's/ID_FS_UUID=//g')
sed -i "${lineno},1000"d $recovery_mnt/syslinux/syslinux.cfg
{
        echo "label recover0"
        echo "  menu label Moblin Recovery"
        echo "  menu default"
        echo "$kernelline"
        echo "$appendline autoinst recover 4 nosplash"
        echo "label change0"
        echo "  menu label Modify Recovery Partition In Place"
        echo "$kernelline"
        echo "$appendline overlay=UUID=$UUID"
} >> $recovery_mnt/syslinux/syslinux.cfg
sed -i "s/=CDLABEL=[^ ]*/=UUID=${UUID}/g;s/rootfstype=[^ ]*/rootfstype=vfat/g" $recovery_mnt/syslinux/syslinux.cfg
sed -i "s/=UUID=[^ ]*/=UUID=${UUID}/g;s/ rw / ro /g" $recovery_mnt/syslinux/syslinux.cfg
sed -i "s/menu title .*/menu title Moblin Recovery/g" $recovery_mnt/syslinux/syslinux.cfg
sed -i "s/timeout [0-9]\+/timeout 0/g;" $recovery_mnt/syslinux/syslinux.cfg
sed -i "/overlay=UUID=/ s/ ro / rw /g;/overlay=UUID=/ s/ quiet//g;" $recovery_mnt/syslinux/syslinux.cfg
rm -rf $recovery_mnt/LiveOS/overlay*
/bin/dd if=/dev/zero of=$recovery_mnt/LiveOS/overlay--$UUID bs=1M count=$overlaysize
if [ ! -z $kickstart -a -f $kickstart ] ; then
	/bin/cp $kickstart $recovery_mnt/moblin-recovery.ks
fi
/bin/umount $recovery_mnt
rm -rf $recovery_mnt $live_mnt
/usr/bin/syslinux -d syslinux $recovery_image
echo "OS recovery image $recovery_image created successfully."
 |