annotate files/fbhyve.in @ 467:6ecd16725818

Begin refactoring bhyve into fbhyve. Planned: - more consistent naming (analogous to jails) - using bhyve configuration files instead of RC variables for bhyve devices - more docs
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 14 Jun 2024 09:40:04 +0200
parents c8abd9d7aac7
children 57f253106ed6
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
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
3 # PROVIDE: fbhyve
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
4 # REQUIRE: LOGIN
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
5 # KEYWORD: shutdown nojail
464
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
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
8 # @(#)%%SIMPLEVERSIONTAG%%
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
9
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
10 #
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
11 # Add the following lines to /etc/rc.conf to enable bhyve:
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
12 # fbhyve_enable (bool): Set to "NO" by default.
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
13 # Set it to "YES" to enable bhyve
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
14 # 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
15 # Define your profiles here.
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
16 # 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
17 # 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
18 # 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
19 # 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
20 # 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
21 # 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
22 # 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
23 # 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
24
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
25 . /etc/rc.subr
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
26
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
27 name="fbhyve"
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
28 rcvar=fbhyve_enable
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
29
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
30 start_precmd="bhyve_prestart"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
31 status_cmd="bhyve_status"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
32 poll_cmd="bhyve_poll"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
33 stop_cmd="bhyve_stop"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
34 _session=$name
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
35 command="/usr/local/bin/tmux"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
36 procname="-sh"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
37
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
38 [ -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
39 [ -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
40 [ -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
41 [ -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
42
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
43 load_rc_config $name
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
44
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
45 : {fbhyve_enable:="NO"}
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
46 : {fbhyve_configdir:="%%PREFIX%%/etc/fbhyve"}
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
47
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
48
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
49 if [ -n "$2" ]; then
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
50 profile="$2"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
51 _session="${_session}_${profile}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
52 if [ "x${bhyve_profiles}" != "x" ]; then
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
53 eval fbhyve_enable="\${${_session}_enable:-${fbhyve_enable}}"
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
54 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
55 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
56 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
57 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
58 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
59 echo "$0: extra argument ignored"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
60 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
61 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
62 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
63 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
64 eval _enable="\${bhyve_${profile}_enable}"
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
65 case "x${_enable:-${fbhyve_enable}}" in
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
66 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
67 continue
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
68 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
69 x[Yy][Ee][Ss])
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
70 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
71 *)
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
72 if test -z "$_enable"; then
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
73 _var=fbhyve_enable
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
74 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
75 _var=bhyve_"${profile}"_enable
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
76 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
77 echo "Bad value" \
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
78 "'${_enable:-${fbhyve_enable}}'" \
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
79 "for ${_var}. " \
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
80 "Profile ${profile} skipped."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
81 continue
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
82 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
83 esac
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
84 echo "===> bhyve profile: ${profile}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
85 /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
86 retcode="$?"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
87 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
88 failed="${profile} (${retcode}) ${failed:-}"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
89 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
90 success="${profile} ${success:-}"
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 done
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
93 exit 0
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
94 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
95 profile=$name
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
96 fi
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 pidfile="/var/run/${_session}.pid"
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
99
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
100
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
101 bhyve_prestart()
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 case ${bhyve_diskdev} in
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
104 [Nn][Oo][Nn][Ee] | '')
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
105 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
106 return 1;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
107 ;;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
108 esac
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
109 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
110 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
111 return 1;
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
112 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
113 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
114
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
115 bhyve_status()
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
116 {
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
117 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
118 echo "${_session} is running."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
119 else
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
120 echo "${_session} is not running."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
121 return 1
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
122 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
123 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
124
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
125 bhyve_poll()
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
126 {
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
127 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
128 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
129 sleep 1
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
130 done
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
131 echo
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
132 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
133
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
134 bhyve_stop()
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
135 {
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
136 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
137 echo "Stopping ${_session}."
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
138 ${command} kill-session -t ${_session}
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
139 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
140 sleep 1
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
141 done
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
142 fi
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
143 rm -f ${pidfile}
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
144 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
145
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
146 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
147
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
148 run_rc_command "$1"