forked from Stefar77/cbsd
/
bhyverun.sh
89 lines (76 loc) · 3.08 KB
/
bhyverun.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh
conf="${1}"
[ ! -f "${conf}" ] && exit 0
. ${conf}
detach=
[ "${2}" = "-d" ] && detach="-d"
[ -f /tmp/bhyvestop.${jname}.lock ] && rm -f /tmp/bhyvestop.${jname}.lock
while [ ! -f /tmp/bhyvestop.${jname}.lock ]; do
/usr/sbin/bhyvectl --vm=${jname} --destroy > /dev/null 2>&1
if [ ${cd_boot_once} -eq 0 ]; then
if [ "${boot_from_grub}" = "1" ]; then
echo "Booting from: ${vm_boot}"
# Bhyveload
case "${vm_boot}" in
"cd")
echo "Boot from CD"
echo "DEBUG: $grub_iso_cmd"
eval "$grub_iso_cmd"
;;
"hdd")
echo "Boot from HDD"
echo "DEBUG: ${grub_boot_cmd}"
eval "$grub_boot_cmd"
;;
*)
echo "Booting from HDD"
eval "$grub_boot_cmd"
;;
esac
else
echo "DEBUG: $bhyveload_cmd"
eval "$bhyveload_cmd"
fi
else
echo "Boot from CD"
if [ "${boot_from_grub}" = "1" ]; then
echo "DEBUG: ${grub_iso_cmd}"
eval "${grub_iso_cmd}"
else
echo "DEBUG: ${bhyveload_cmd}"
eval "${bhyveload_cmd}"
fi
fi
#passthru
#echo "[debug] /usr/sbin/bhyve ${bhyve_flags} -c ${vm_cpus} -m ${vm_ram} -A -H -P ${hostbridge_args} ${passthr} ${lpc_args} ${pci_passthru_args} ${efi_args} ${virtiornd_args} ${nic_args} ${dsk_args} ${cd_args} ${console_args} ${jname};"
echo "[debug] /usr/sbin/bhyve ${bhyve_flags} -c ${vm_cpus} -m ${vm_ram} -A -H -P ${hostbridge_args} ${lpc_args} ${efi_args} ${virtiornd_args} ${nic_args} ${dsk_args} ${cd_args} ${console_args} ${jname};"
logger -t CBSD "[debug] /usr/sbin/bhyve ${bhyve_flags} -c ${vm_cpus} -m ${vm_ram} -A -H -P ${hostbridge_args} ${lpc_args} ${efi_args} ${virtiornd_args} ${nic_args} ${dsk_args} ${cd_args} ${console_args} ${jname};"
for i in ${mytap}; do
/sbin/ifconfig ${i} up
done
/usr/bin/lockf -s -t0 /tmp/bhyveload.${jname}.lock /usr/sbin/bhyve ${bhyve_flags} -c ${vm_cpus} -m ${vm_ram} -A -H -P ${hostbridge_args} ${lpc_args} ${efi_args} ${virtiornd_args} ${nic_args} ${dsk_args} ${cd_args} ${console_args} ${jname} || touch /tmp/bhyvestop.${jname}.lock
# /usr/bin/lockf -s -t0 /tmp/bhyveload.${jname}.lock /usr/sbin/bhyve ${bhyve_flags} -c ${vm_cpus} -m ${vm_ram} -H ${passthr} ${lpc_args} ${efi_args} ${cd_args} ${console_args} ${jname} || touch /tmp/bhyvestop.${jname}.lock
# /usr/sbin/bhyvectl --get-vmcs-exit-reason --vm ${jname} >> /tmp/reason.txt
# /usr/sbin/bhyvectl --get-vmcs-exit-ctls --vm ${jname} >> /tmp/reason.txt
# /usr/sbin/bhyvectl --get-vmcs-exit-qualification --vm ${jname} >> /tmp/reason.txt
# /usr/sbin/bhyvectl --get-vmcs-exit-interruption-info --vm ${jname} >> /tmp/reason.txt
# /usr/sbin/bhyvectl --get-vmcs-exit-interruption-error --vm ${jname} >> /tmp/reason.txt
if [ ${cd_boot_once} -eq 1 ]; then
# Eject cd
cd_boot_once=0
vm_boot="hdd"
[ -n "${bhyveload_cmd_once}" ] && bhyveload_cmd="${bhyveload_cmd_once}"
# replace hdd boot in conf
/usr/sbin/sysrc -qf ${conf} cd_boot_once=0
/usr/sbin/sysrc -qf ${conf} vm_boot=hdd
/usr/sbin/sysrc -qf ${conf} bhyveload_cmd="${bhyveload_cmd}"
fi
reset
clear
done
/bin/rm -f /tmp/bhyvestop.${jname}.lock
/usr/local/bin/cbsd bstop ${jname}
for i in ${mytap}; do
/sbin/ifconfig ${i} destroy
done
exit ${bhyve_exit}