#!/bin/bash vm_is_running() { if [ "$(virsh domstate $1 2>/dev/null)" == "running" ]; then return 0 else return 1 fi } wait_for_vm_to_stop() { while vm_is_running $1; do sleep 1 done } NAME=archlinux mount -o loop,ro archlive/out/archlinux-2016.09.30-dual.iso archiso darkhttpd . --port 8080 & virt-install --name ${NAME} -r 1024 --vcpus=1 --os-type=linux --os-variant=virtio26 \ --disk pool=local,size=2,format=qcow2 --network network=virt0,model=virtio \ --vnc --vncport=5901 --noreboot --noautoconsole \ --boot kernel=vmlinuz,initrd=archiso.img,kernel_args="archisobasedir=archiso/arch archiso_http_srv=http://eurobuild3.lan:8080/ script=http://eurobuild3.lan:8080/archauto.sh ip=dhcp" & sleep 5 virsh start ${NAME} sleep 5 wait_for_vm_to_stop ${NAME} virsh dumpxml ${NAME} > ${NAME}.xml xmlstarlet ed -d '/domain/os/kernel' ${NAME}.xml | xmlstarlet ed -d '/domain/os/initrd' | xmlstarlet ed -d '/domain/os/cmdline' > ${NAME}-new.xml virsh define ${NAME}-new.xml virsh start ${NAME} rm -f ${NAME}-new.xml ${NAME}.xml pkill darkhttpd umount archiso