diff --git a/bin/vhd-bundle b/bin/vhd-bundle new file mode 100755 index 0000000..b2befac --- /dev/null +++ b/bin/vhd-bundle @@ -0,0 +1,154 @@ +#!/bin/bash -e +# depends: qemu grub2 parted kpartx zip ovftool +# Copyright (c) 2011-2015 TurnKey GNU/Linux - http://www.turnkeylinux.org +# +# This file is part of buildtasks. +# +# Buildtasks is free software; you can redistribute it and/or modify it +# under the terms of the GNU Affero General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. + + +fatal() { echo "FATAL [$(basename $0)]: $@" 1>&2; exit 1; } +info() { echo "INFO [$(basename $0)]: $@"; } + +usage() { +cat< $devicemap < $fstab +echo -e "UUID=$UUID\t/\text4\tdefaults\t0\t2" >> $fstab + +tklpatch-apply $rootfs $BT/patches/azure + +grub-install --force --modules='part_msdos ext2 search_fs_uuid' --root-directory=$rootfs.fs $loopdev + +# remove / add executable perm to os-prober to stop duplicate grub entries +chroot $rootfs.fs chmod -x /etc/grub.d/30_os-prober +chroot $rootfs.fs grub-mkconfig -o /boot/grub/grub.cfg +chroot $rootfs.fs chmod +x /etc/grub.d/30_os-prober + +info "tweaking grub settings" +sed -i "/loopback/d; /set root=(loop/d; s|\(root=\).* ro|\1UUID=$UUID ro dolvm|" $grubcfg +#remove temp grub/device.map +rm -f $devicemap + +info "umounting the jumble..." +umount $rootfs.fs/proc +grep $rootfs.fs/sys /proc/mounts | cut -f2 -d" " | sort -r | xargs umount -n +umount $rootfs.fs/dev +umount $rootfs.fs/ +rmdir $rootfs.fs + +info "resizing raw image (to align to 1MB)" +#qemu-img convert -f raw $rootfs.raw -O vmdk -o compat6 $name.vmdk +MB=$((1024*1024)) +old_size=$(qemu-img info -f raw $rootfs.raw | sed -r -n "/virtual/{s/.*\(([0-9]+) bytes.*/\1/p}") +new_size=$((($old_size/$MB+1)*$MB)) +qemu-img resize -f raw $rootfs.raw $new_size + +info "converting raw image to vhd" +qemu-img convert -f raw $rootfs.raw -O vpc -o subformat=fixed,force_size $name.vhd -p + + + +info "cleaning up" +kpartx -d /dev/mapper/`basename $loopdev`p1 +losetup -d $loopdev + +info "setting up image directory" +mkdir $name +mv $name.vhd $name/ + +cat > $name/README.txt <&2; exit 1; } +warning() { echo "WARNING [$(basename $0)]: $@"; } +info() { echo "INFO [$(basename $0)]: $@"; } + +usage() { +cat<> /etc/apt/sources.list.d/azure.list +deb http://debian-archive.trafficmanager.net/debian jessie-backports main +deb-src http://debian-archive.trafficmanager.net/debian jessie-backports main +deb http://debian-archive.trafficmanager.net/debian-azure jessie main +deb-src http://debian-archive.trafficmanager.net/debian-azure jessie main +EOF + +gpg --keyserver pgpkeys.mit.edu --recv-key 06EA49E9A86CAD7F +gpg -a --export 06EA49E9A86CAD7F | apt-key add - + +apt-key update + +install waagent + +waagent -force -deprovision -verbose + +export HISTSIZE=0