#!/bin/bash # configuration NAME=arch32 HOST=192.168.130.1 NETMASK=255.255.255.0 PREFIX=24 CLIENT=192.168.130.2 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 } mount -o loop,ro mirror/archisos/archlinux-2017.09.03-i686.iso archiso cp archiso/arch/boot/i686/vmlinuz . cp archiso/arch/boot/i686/archiso.img . darkhttpd . --port 8080 & virt-install --name ${NAME} -r 1536 --vcpus=1 --os-type=linux --os-variant=virtio26 \ --disk pool=default,size=4,format=qcow2 --network bridge=br0,model=virtio \ --vnc --vncport=5901 --noreboot --arch i686 --cpu pentium2 \ --boot kernel=vmlinuz,initrd=archiso.img,kernel_args="archisobasedir=archiso/arch archiso_http_srv=http://${HOST}:8080/ script=http://${HOST}:8080/archauto.sh ip=${CLIENT}:::${NETMASK}:arch32::off nomodeset i915.modeset=0" & # --noautoconsole 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