summaryrefslogtreecommitdiff
path: root/createvm.sh
diff options
context:
space:
mode:
Diffstat (limited to 'createvm.sh')
-rwxr-xr-xcreatevm.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/createvm.sh b/createvm.sh
new file mode 100755
index 0000000..f84e998
--- /dev/null
+++ b/createvm.sh
@@ -0,0 +1,56 @@
+#!/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 archlinux-2017.08.01-i686.iso archiso
+
+cp archiso/arch/boot/i686/vmlinuz .
+cp archiso/arch/boot/i686/archiso.img .
+
+darkhttpd . --port 8080 &
+
+virt-install --name ${NAME} -r 2048 --vcpus=1 --os-type=linux --os-variant=virtio26 \
+ --disk pool=default,size=2,format=qcow2 --network bridge=br0,model=virtio \
+ --vnc --vncport=5901 --noreboot \
+ --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