11e7c1f17SGlen Barber#!/bin/sh 21e7c1f17SGlen Barber#- 304bd90c6SGlen Barber# Copyright (c) 2014, 2015 The FreeBSD Foundation 41e7c1f17SGlen Barber# 51e7c1f17SGlen Barber# This software was developed by Glen Barber under sponsorship 61e7c1f17SGlen Barber# from the FreeBSD Foundation. 71e7c1f17SGlen Barber# 81e7c1f17SGlen Barber# Redistribution and use in source and binary forms, with or without 91e7c1f17SGlen Barber# modification, are permitted provided that the following conditions 101e7c1f17SGlen Barber# are met: 111e7c1f17SGlen Barber# 1. Redistributions of source code must retain the above copyright 121e7c1f17SGlen Barber# notice, this list of conditions and the following disclaimer. 131e7c1f17SGlen Barber# 2. Redistributions in binary form must reproduce the above copyright 141e7c1f17SGlen Barber# notice, this list of conditions and the following disclaimer in the 151e7c1f17SGlen Barber# documentation and/or other materials provided with the distribution. 161e7c1f17SGlen Barber# 171e7c1f17SGlen Barber# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 181e7c1f17SGlen Barber# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 191e7c1f17SGlen Barber# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 201e7c1f17SGlen Barber# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 211e7c1f17SGlen Barber# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 221e7c1f17SGlen Barber# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 231e7c1f17SGlen Barber# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 241e7c1f17SGlen Barber# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 251e7c1f17SGlen Barber# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 261e7c1f17SGlen Barber# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 271e7c1f17SGlen Barber# SUCH DAMAGE. 281e7c1f17SGlen Barber# 291e7c1f17SGlen Barber# mk-vmimage.sh: Create virtual machine disk images in various formats. 301e7c1f17SGlen Barber# 311e7c1f17SGlen Barber# 321e7c1f17SGlen Barber 33144d107fSGlen Barberusage() { 34144d107fSGlen Barber echo "${0} usage:" 35144d107fSGlen Barber echo "${@}" 36144d107fSGlen Barber return 1 37144d107fSGlen Barber} 38144d107fSGlen Barber 391e7c1f17SGlen Barbermain() { 401e7c1f17SGlen Barber local arg 41e90de534SGlen Barber VMCONFIG="/dev/null" 4289585511SMark Johnston while getopts "C:c:d:F:f:i:o:s:S:" arg; do 431e7c1f17SGlen Barber case "${arg}" in 441e7c1f17SGlen Barber C) 451e7c1f17SGlen Barber VMBUILDCONF="${OPTARG}" 461e7c1f17SGlen Barber ;; 471e7c1f17SGlen Barber c) 481e7c1f17SGlen Barber VMCONFIG="${OPTARG}" 491e7c1f17SGlen Barber ;; 501e7c1f17SGlen Barber d) 511e7c1f17SGlen Barber DESTDIR="${OPTARG}" 521e7c1f17SGlen Barber ;; 5389585511SMark Johnston F) 5489585511SMark Johnston VMFS="${OPTARG}" 5589585511SMark Johnston ;; 561e7c1f17SGlen Barber f) 571e7c1f17SGlen Barber VMFORMAT="${OPTARG}" 581e7c1f17SGlen Barber ;; 591e7c1f17SGlen Barber i) 6007fe767eSGlen Barber VMBASE="${OPTARG}" 611e7c1f17SGlen Barber ;; 621e7c1f17SGlen Barber o) 631e7c1f17SGlen Barber VMIMAGE="${OPTARG}" 641e7c1f17SGlen Barber ;; 651e7c1f17SGlen Barber s) 661e7c1f17SGlen Barber VMSIZE="${OPTARG}" 671e7c1f17SGlen Barber ;; 681e7c1f17SGlen Barber S) 691e7c1f17SGlen Barber WORLDDIR="${OPTARG}" 701e7c1f17SGlen Barber ;; 711e7c1f17SGlen Barber *) 721e7c1f17SGlen Barber ;; 731e7c1f17SGlen Barber esac 741e7c1f17SGlen Barber done 751e7c1f17SGlen Barber shift $(( ${OPTIND} - 1)) 761e7c1f17SGlen Barber 771e7c1f17SGlen Barber if [ -z "${VMBASE}" -o \ 781e7c1f17SGlen Barber -z "${WORLDDIR}" -o \ 791e7c1f17SGlen Barber -z "${DESTDIR}" -o \ 801e7c1f17SGlen Barber -z "${VMSIZE}" -o \ 8189585511SMark Johnston -z "${VMIMAGE}" -o \ 8289585511SMark Johnston -z "${VMFS}" ]; 831e7c1f17SGlen Barber then 84e90de534SGlen Barber usage || exit 0 851e7c1f17SGlen Barber fi 861e7c1f17SGlen Barber 871e7c1f17SGlen Barber if [ -z "${VMBUILDCONF}" ] || [ ! -e "${VMBUILDCONF}" ]; then 881e7c1f17SGlen Barber echo "Must provide the path to vmimage.subr." 891e7c1f17SGlen Barber return 1 901e7c1f17SGlen Barber fi 911e7c1f17SGlen Barber 921e7c1f17SGlen Barber . "${VMBUILDCONF}" 931e7c1f17SGlen Barber 94e90de534SGlen Barber if [ ! -z "${VMCONFIG}" ] && [ ! -c "${VMCONFIG}" ]; then 951e7c1f17SGlen Barber . "${VMCONFIG}" 961e7c1f17SGlen Barber fi 971e7c1f17SGlen Barber 9807fe767eSGlen Barber vm_create_base 991e7c1f17SGlen Barber vm_install_base 100*0b1c5628SColin Percival vm_emulation_setup 1011e7c1f17SGlen Barber vm_extra_install_base 1021e7c1f17SGlen Barber vm_extra_install_packages 1031e7c1f17SGlen Barber vm_extra_install_ports 1041e7c1f17SGlen Barber vm_extra_enable_services 1051e7c1f17SGlen Barber vm_extra_pre_umount 1062d4ff62fSGlen Barber vm_extra_pkg_rmcache 107*0b1c5628SColin Percival vm_emulation_cleanup 10825c11557SColin Percival vm_copy_base 10987f6c4acSGlen Barber vm_create_disk || return 0 1101e7c1f17SGlen Barber vm_extra_create_disk 1111e7c1f17SGlen Barber 1121e7c1f17SGlen Barber return 0 1131e7c1f17SGlen Barber} 1141e7c1f17SGlen Barber 1151e7c1f17SGlen Barbermain "$@" 116