#!/bin/sh #------------------------------------------------------------------------------# # # Dieses Skript hilt sich das neueste FreeBSD-RAW-Image und startet es mit Bhyve. # Zu diesem Zweck wird auch ein TAP angelegt, wenn es nicht schon da ist und # zur Brücke hinzugefügt. # #------------------------------------------------------------------------------# VERSIN="2024021700" RAM="1G" NIC="tap10" ### wenn das NIC bereits in Nutzung ist, wird abgebrochen ifconfig ${NIC} | grep -F 'Opened by PID ' && (echo "Das für diese VM vorgesehene NIC wird z.Z. benutzt."; exit 11) #------------------------------------------------------------------------------# ### neuestes STABLE-Release-Namen auslesen STABLERELEASE="$(links -dump https://download.freebsd.org/snapshots/VM-IMAGES/ | awk '/STABLE/{sub("/",""); print $1}' | sort -nr | head -n1)" ### wenn eine VM mit diesem Namen bereits läuft, dann wird abgebrochen if [ -e /dev/vmm/FreeBSD-${STABLERELEASE} ] ; then echo "Es läuft bereits eine VM mit diesem Namen." exit 12 fi ### neuestes STABLE-Image saugen FETCH_IMG="$(links -dump https://download.freebsd.org/snapshots/VM-IMAGES/${STABLERELEASE}/amd64/Latest/ | awk '/[.]raw[.]xz/{print $1}')" DISKNAME="$(echo "${FETCH_IMG}" | rev | sed 's/[^.]*[.]//' | rev)" # #rm -f ${DISKNAME} if [ -e "${DISKNAME}" ] ; then echo "Es gibt noch kein neues Release." echo "Es wird das vorhandene gestartet..." else rm -f ${FETCH_IMG} fetch https://download.freebsd.org/snapshots/VM-IMAGES/${STABLERELEASE}/amd64/Latest/${FETCH_IMG} ### Image entpacken unxz -v ${FETCH_IMG} fi ### Netzwerkanbindung ifconfig bridge0 || ifconfig bridge create ifconfig ${NIC} || ifconfig ${NIC} create ifconfig bridge0 | grep -F "member: ${NIC} " || ifconfig bridge0 addm ${NIC} ### NIC mit Default-Route (ins Internet???) ermitteln INTERNETNIC="$(route get default | awk '/interface:/{print $NF}')" if [ x = "x${INTERNETNIC}" ] ; then echo 'Es ẃurde keine NIC mit Default-Route gefunden!' echo 'Die VM wird versuchen sich eine IP-Adresse per DHCP vom Host (per lo0) zu holen.' ifconfig bridge0 | grep -F "member: lo0 " || ifconfig bridge0 addm lo0 else ifconfig bridge0 | grep -F "member: ${INTERNETNIC} " || ifconfig bridge0 addm ${INTERNETNIC} fi ### VM starten echo "sh /usr/share/examples/bhyve/vmrun.sh -m ${RAM} -t ${NIC} -d ${DISKNAME} FreeBSD-${STABLERELEASE}" screen -S FreeBSD-${STABLERELEASE} sh /usr/share/examples/bhyve/vmrun.sh -m ${RAM} -t ${NIC} -d ${DISKNAME} FreeBSD-${STABLERELEASE} ### Hinweise zum sauber machen echo " ifconfig -a ifconfig bridge0 deletem ${NIC} ifconfig ${NIC} destroy ifconfig bridge0 destroy "