Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/release/scripts/mk-vmimage.sh
34677 views
1
#!/bin/sh
2
#-
3
# Copyright (c) 2014, 2015 The FreeBSD Foundation
4
#
5
# This software was developed by Glen Barber under sponsorship
6
# from the FreeBSD Foundation.
7
#
8
# Redistribution and use in source and binary forms, with or without
9
# modification, are permitted provided that the following conditions
10
# are met:
11
# 1. Redistributions of source code must retain the above copyright
12
# notice, this list of conditions and the following disclaimer.
13
# 2. Redistributions in binary form must reproduce the above copyright
14
# notice, this list of conditions and the following disclaimer in the
15
# documentation and/or other materials provided with the distribution.
16
#
17
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
# SUCH DAMAGE.
28
#
29
# mk-vmimage.sh: Create virtual machine disk images in various formats.
30
#
31
#
32
set -e
33
34
usage() {
35
echo "${0} usage:"
36
echo "${@}"
37
return 1
38
}
39
40
main() {
41
local arg
42
VMCONFIG="/dev/null"
43
while getopts "C:c:d:F:f:i:o:s:S:" arg; do
44
case "${arg}" in
45
C)
46
VMBUILDCONF="${OPTARG}"
47
;;
48
c)
49
VMCONFIG="${OPTARG}"
50
;;
51
d)
52
DESTDIR="${OPTARG}"
53
;;
54
F)
55
VMFS="${OPTARG}"
56
;;
57
f)
58
VMFORMAT="${OPTARG}"
59
;;
60
i)
61
VMBASE="${OPTARG}"
62
;;
63
o)
64
VMIMAGE="${OPTARG}"
65
;;
66
s)
67
VMSIZE="${OPTARG}"
68
;;
69
S)
70
WORLDDIR="${OPTARG}"
71
;;
72
*)
73
;;
74
esac
75
done
76
shift $(( ${OPTIND} - 1))
77
78
if [ -z "${VMBASE}" -o \
79
-z "${WORLDDIR}" -o \
80
-z "${DESTDIR}" -o \
81
-z "${VMSIZE}" -o \
82
-z "${VMIMAGE}" -o \
83
-z "${VMFS}" ];
84
then
85
usage || exit 0
86
fi
87
88
if [ -z "${VMBUILDCONF}" ] || [ ! -e "${VMBUILDCONF}" ]; then
89
echo "Must provide the path to vmimage.subr."
90
return 1
91
fi
92
93
. "${VMBUILDCONF}"
94
95
if [ -n "${VMCONFIG}" ] && [ ! -c "${VMCONFIG}" ]; then
96
. "${VMCONFIG}"
97
fi
98
99
vm_create_base
100
vm_install_base
101
vm_emulation_setup
102
vm_extra_install_base
103
vm_extra_install_packages
104
vm_extra_install_ports
105
vm_extra_enable_services
106
vm_extra_pre_umount
107
vm_extra_pkg_rmcache
108
vm_emulation_cleanup
109
vm_copy_base
110
vm_create_disk || return 0
111
vm_extra_create_disk
112
113
return 0
114
}
115
116
main "$@"
117
118