annotate usr/local/etc/rc.d/bhyve @ 464:f1e00e5b2f2d origin

ADD: the new original code from bhyve-rc. Source: - https://github.com/kchoudhu/bhyve-rc - bhyve-rc-4: /usr/local/etc/rc.d/bhyve
author Franz Glasner <f.glasner@feldmann-mg.com>
date Thu, 13 Jun 2024 17:30:24 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
1 #!/bin/sh
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
2
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
3 # PROVIDE: bhyve
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
4 # REQUIRE: LOGIN
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
5 # KEYWORD: nojail
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
6 #
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
7
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
8 #
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
9 # Add the following lines to /etc/rc.conf to enable bhyve:
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
10 # bhyve_enable (bool): Set to "NO" by default.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
11 # Set it to "YES" to enable bhyve
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
12 # bhyve_profiles (str): Set to "" by default.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
13 # Define your profiles here.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
14 # bhyve_tapdev (str): Set to "tap0" by default.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
15 # Set to the tap(4) device to use.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
16 # bhyve_diskdev (str): Must be set, no default.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
17 # Set to the disk device to use.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
18 # bhyve_ncpu (int): Set to 1 by default.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
19 # Set to the number of CPUs for the VM.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
20 # bhyve_memsize (int): Set to 512 by default.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
21 # Set to the number of MB of memory for the VM.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
22
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
23 . /etc/rc.subr
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
24
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
25 name="bhyve"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
26 rcvar=bhyve_enable
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
27
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
28 start_precmd="bhyve_prestart"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
29 status_cmd="bhyve_status"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
30 poll_cmd="bhyve_poll"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
31 stop_cmd="bhyve_stop"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
32 _session=$name
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
33 command="/usr/local/bin/tmux"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
34 procname="-sh"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
35
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
36 [ -z "$bhyve_enable" ] && bhyve_enable="NO"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
37 [ -z "$bhyve_tapdev" ] && bhyve_tapdev="tap0"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
38 [ -z "$bhyve_diskdev" ] && bhyve_diskdev="none"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
39 [ -z "$bhyve_ncpu" ] && bhyve_ncpu="1"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
40 [ -z "$bhyve_memsize" ] && bhyve_memsize="512"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
41
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
42 load_rc_config $name
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
43
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
44 if [ -n "$2" ]; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
45 profile="$2"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
46 _session="${_session}_${profile}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
47 if [ "x${bhyve_profiles}" != "x" ]; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
48 eval bhyve_enable="\${${_session}_enable:-${bhyve_enable}}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
49 eval bhyve_tapdev="\${${_session}_tapdev:-${bhyve_tapdev}}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
50 eval bhyve_diskdev="\${${_session}_diskdev:-${bhyve_diskdev}}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
51 eval bhyve_ncpu="\${${_session}_ncpu:-${bhyve_ncpu}}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
52 eval bhyve_memsize="\${${_session}_memsize:-${bhyve_memsize}}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
53 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
54 echo "$0: extra argument ignored"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
55 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
56 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
57 if [ "x${bhyve_profiles}" != "x" -a "x$1" != "x" ]; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
58 for profile in ${bhyve_profiles}; do
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
59 eval _enable="\${bhyve_${profile}_enable}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
60 case "x${_enable:-${bhyve_enable}}" in
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
61 x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
62 continue
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
63 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
64 x[Yy][Ee][Ss])
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
65 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
66 *)
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
67 if test -z "$_enable"; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
68 _var=bhyve_enable
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
69 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
70 _var=bhyve_"${profile}"_enable
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
71 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
72 echo "Bad value" \
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
73 "'${_enable:-${bhyve_enable}}'" \
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
74 "for ${_var}. " \
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
75 "Profile ${profile} skipped."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
76 continue
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
77 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
78 esac
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
79 echo "===> bhyve profile: ${profile}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
80 /usr/local/etc/rc.d/bhyve $1 ${profile}
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
81 retcode="$?"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
82 if [ "0${retcode}" -ne 0 ]; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
83 failed="${profile} (${retcode}) ${failed:-}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
84 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
85 success="${profile} ${success:-}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
86 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
87 done
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
88 exit 0
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
89 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
90 profile=$name
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
91 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
92
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
93 pidfile="/var/run/${_session}.pid"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
94
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
95
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
96 bhyve_prestart()
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
97 {
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
98 case ${bhyve_diskdev} in
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
99 [Nn][Oo][Nn][Ee] | '')
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
100 echo "No ${_session}_diskdev set. Quitting." 1>&2
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
101 return 1;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
102 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
103 esac
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
104 if [ ! -c "${bhyve_diskdev}" -a ! -f "${bhyve_diskdev}" ]; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
105 echo "${bhyve_diskdev} doesn't exist or is not suitable as a diskdev" 1>&2
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
106 return 1;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
107 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
108 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
109
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
110 bhyve_status()
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
111 {
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
112 if ${command} has-session -t ${_session} 2>/dev/null; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
113 echo "${_session} is running."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
114 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
115 echo "${_session} is not running."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
116 return 1
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
117 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
118 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
119
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
120 bhyve_poll()
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
121 {
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
122 echo -n "Waiting for session: ${_session}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
123 while ${command} has-session -t ${_session} 2>/dev/null; do
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
124 sleep 1
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
125 done
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
126 echo
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
127 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
128
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
129 bhyve_stop()
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
130 {
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
131 if ${command} has-session -t ${_session} 2>/dev/null; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
132 echo "Stopping ${_session}."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
133 ${command} kill-session -t ${_session}
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
134 while ${command} has-session -t ${_session} 2>/dev/null; do
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
135 sleep 1
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
136 done
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
137 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
138 rm -f ${pidfile}
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
139 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
140
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
141 command_args="new-session -ds ${_session} \"sh -c 'echo \\\$PPID >${pidfile}; while true; do /usr/sbin/bhyvectl --vm=${_session} --destroy; /usr/sbin/bhyveload -m ${bhyve_memsize} -d ${bhyve_diskdev} ${_session} && /usr/sbin/bhyve -c ${bhyve_ncpu} -m ${bhyve_memsize} -AI -H -P -g 0 -s 0:0,hostbridge -s 1:0,virtio-net,${bhyve_tapdev} -s 2:0,virtio-blk,${bhyve_diskdev} -s 31,lpc -l com1,stdio ${_session} || break; done'\""
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
142
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
143 run_rc_command "$1"