$ cd /mnt $ sudo apt-get install qemu-kvm kpartx $ sudo mkdir mp dist x $ sudo modprobe nbd $ NBD=/dev/nbd0 $ DISTIMG=ubuntu-11.10-beta2-server-cloudimg-amd64-disk1.img $ BUCKET="smoser-lp833783" $ wget wget http://cloud-images.ubuntu.com/releases/oneiric/beta-2/$DISTIMG -O $DISTIMG $ cloud-publish-image x86_64 $DISTIMG $BUCKET -v $ qemu-img create -f qcow2 -b $DISTIMG tmpimg.img $ sudo qemu-nbd -c $NBD tmpimg.img $ sleep 2 $ sudo kpartx -a -v $NBD $ sudo mount /dev/mapper/${NBD##*/}p1 mp $ sudo cp mp/boot/initrd.img-*-virtual dist/ $ initrd=$(echo $PWD/dist/*-virtual) $ ( cd x && zcat $initrd | sudo cpio -uid ) $ sudo vi x/scripts/init-bottom/udev # edit it # added the following before 'Stop udevd' # see https://launchpadlibrarian.net/80771881/udev-must-provide-console-833783.patch [ -e /dev/console ] || echo "ALERT! no /dev/console, going to udevadm settle" [ -e /dev/console ] || udevadm settle $ ( cd x && find . -print0 | cpio --null -ov --format=newc | gzip -9 ) > initrd.new $ sudo cp initrd.new /mnt/mp/boot/${initrd##*/} $ sudo umount mp $ sudo kpartx -d -v $NBD; sudo qemu-nbd -d $NBD $ qemu-img convert -O qcow2 -c tmpimg.img "${DISTIMG%.img}-fix1.img" $ cloud-publish-image x86_64 ${DISTIMG%.img}-fix1.img $BUCKET -v