Creación de imagen raw para disco de datos

2017/04/18

TODO: crear script para crear imagen

Hay dos escenarios distintos según la versión del paquete util-linux instalada, ya que a partir de la versión 2.21 se agrega la opción --partscan al comando losetup lo que facilita la creación de la imagen:

losetup(8):
   - the command has been rewritten, features:
   ...
     * supports new command line option --partscan to enable kernel partition
       table parser

Para mas detalles ver las notas de la release 2.21

Pasos comunes

# cd /path/
# dd if=/dev/zero of=data.img bs=1M count=$((10 * 1024))
# parted data.img mktable gpt
# parted --align optimal data.img mkpart DATA ext4 0% 100%

util-linux >= 2.21

# LOOPDEV="$(losetup --partscan --show --find data.img | tr -d '\n')"
# [ -z "$LOOPDEV" ] && { echo "Can't attach to loop device"; exit 1; }
# [ ! -e "${LOOPDEV}p1" ] && { echo "Partition in loop device not detected"; losetup --detach "$LOOPDEV"; exit 1; }
# mkfs.ext4 "${LOOPDEV}p1"
# losetup --detach "$LOOPDEV"

util-linux < 2.21

# PARTINFO="$(parted -m data.img "unit s print")"
# SECTSIZE="$(echo "$PARTINFO" | head -2 | tail -1 | cut -d':' -f5)"
# read -r PART_START PART_SIZE <<< "$(echo "$PARTINFO" | grep '^1' | cut -d':' -f2,4 --output-delimiter=' ' | tr -d s)"
# LOOPDEV="$(losetup --find --show \
    --offset "$((PART_START * SECTSIZE))" \
    --sizelimit "$((PART_SIZE * SECTSIZE))" \
    data.img | tr -d '\n')"
# [ -z "$LOOPDEV" ] && { echo "Can't attach to loop device"; exit 1; }
# mkfs.ext4 "$LOOPDEV"
# losetup --detach "$LOOPDEV"