--- a +++ b/trunk/wharfie/qemu/qcow.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +OUT=${1} +d=$(basename $(mktemp -d)); + +# create blank image +qemu-img create -f raw ${OUT}.raw 2G && + +# create partition table +( + echo o # Create a new empty DOS partition table + echo n # Add a new partition + echo p # Primary partition + echo 1 # Partition number + echo # First sector (Accept default: 1) + echo # Last sector (Accept default: varies) + echo w # Write changes +) | sudo fdisk ${OUT}.raw && +l=$(/sbin/kpartx -l ${OUT}.raw | sed -n '/loop/ s,.*/dev/\(loop[0-9]\+\).*,\1, p;q;') && + +/sbin/kpartx -as ${OUT}.raw && + +# Create filesystem +uuid=$(mkfs.ext3 /dev/mapper/${l}p1 | sed -n '/^Filesystem UUID/ s,.*: \(.*\),\1, p') && +mount /dev/mapper/${l}p1 /tmp/${d} && + +# Copy files +((tar -cf - .) | (cd /tmp/${d}; tar -xf -)) && + +# Generate fstab with root partition +mkdir /tmp/${d}/build && +( + echo "UUID=${uuid} / ext3 errors=remount-ro 0 0"; +) > /tmp/${d}/etc/fstab + +umount /tmp/${d} && +/sbin/kpartx -ds ${OUT}.raw && +qemu-img convert -O qcow2 ${OUT}.raw ${OUT} +echo ${uuid} > ${OUT}.uuid + +rm -f ${OUT}.raw +rmdir /tmp/${d} +