VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/testboxscript/darwin/setup-routines.sh@ 98103

Last change on this file since 98103 was 98103, checked in by vboxsync, 22 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 7.1 KB
Line 
1# $Id: setup-routines.sh 98103 2023-01-17 14:15:46Z vboxsync $
2## @file
3# VirtualBox Validation Kit - TestBoxScript Service Setup on Mac OS X (darwin).
4#
5
6#
7# Copyright (C) 2006-2023 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# The contents of this file may alternatively be used under the terms
26# of the Common Development and Distribution License Version 1.0
27# (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28# in the VirtualBox distribution, in which case the provisions of the
29# CDDL are applicable instead of those of the GPL.
30#
31# You may elect to license modified versions of this file under the
32# terms and conditions of either the GPL or the CDDL or both.
33#
34# SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35#
36
37MY_CONFIG_FILE=/Library/LaunchDaemons/org.virtualbox.testboxscript.plist
38
39##
40# Loads config values from the current installation.
41#
42os_load_config() {
43 if [ -r "${MY_CONFIG_FILE}" ]; then
44 # User.
45 MY_TMP=`/usr/bin/tr '\n' ' ' < "${MY_CONFIG_FILE}" \
46 | /usr/bin/sed \
47 -e 's/ */ /g' \
48 -e 's|\(</[[:alnum:]]*>\)<|\1 <|g' \
49 -e 's|^.*<key>UserName</key> *<string>\([^<>]*\)</string>.*$|\1|'`;
50 if [ -n "${MY_TMP}" ]; then
51 TESTBOXSCRIPT_USER="${MY_TMP}";
52 fi
53
54 # Arguments.
55 XMLARGS=`/usr/bin/tr '\n' ' ' < "${MY_CONFIG_FILE}" \
56 | /usr/bin/sed \
57 -e 's/ */ /g' \
58 -e 's|\(</[[:alnum:]]*>\)<|\1 <|g' \
59 -e 's|^.*ProgramArguments</key> *<array> *\(.*\)</array>.*$|\1|'`;
60 eval common_testboxscript_args_to_config `echo "${XMLARGS}" | sed -e "s/<string>/'/g" -e "s/<\/string>/'/g" `;
61 fi
62}
63
64##
65# Adds an argument ($1) to MY_ARGV (XML plist format).
66#
67os_add_args() {
68 while [ $# -gt 0 ];
69 do
70 case "$1" in
71 *\<* | *\>* | *\&*)
72 MY_TMP='`echo "$1" | sed -e 's/&/&amp;/g' -e 's/</&lt;/g' -e 's/>/&gt;/g'`';
73 MY_ARGV="${MY_ARGV} <string>${MY_TMP}</string>";
74 ;;
75 *)
76 MY_ARGV="${MY_ARGV} <string>$1</string>";
77 ;;
78 esac
79 shift;
80 done
81 MY_ARGV="${MY_ARGV}"'
82 ';
83 return 0;
84}
85
86os_install_service() {
87 # Calc the command line.
88 MY_ARGV=""
89 common_compile_testboxscript_command_line
90
91
92 # Note! It's not possible to use screen 4.0.3 with the launchd due to buggy
93 # "setsid off" handling (and possible other things).
94 cat > "${MY_CONFIG_FILE}" <<EOF
95<?xml version="1.0" encoding="UTF-8"?>
96<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
97<plist version="1.0">
98<dict>
99 <key>Label</key> <string>org.virtualbox.testboxscript</string>
100 <key>UserName</key> <string>${TESTBOXSCRIPT_USER}</string>
101 <key>WorkingDirectory</key> <string>${TESTBOXSCRIPT_DIR}</string>
102 <key>Enabled</key> <true/>
103 <key>RunAtLoad</key> <true/>
104 <key>KeepAlive</key> <true/>
105 <key>StandardInPath</key> <string>/dev/null</string>
106 <key>StandardOutPath</key> <string>/dev/null</string>
107 <key>StandardErrorPath</key> <string>/dev/null</string>
108 <key>ProgramArguments</key>
109 <array>
110 ${MY_ARGV}</array>
111</dict>
112</plist>
113EOF
114
115 return 0;
116}
117
118os_enable_service() {
119 launchctl load -w "${MY_CONFIG_FILE}"
120 return 0;
121}
122
123os_disable_service() {
124 if [ -r "${MY_CONFIG_FILE}" ]; then
125 launchctl unload "${MY_CONFIG_FILE}"
126 fi
127 return 0;
128}
129
130os_add_user() {
131 NEWUID=$(expr `dscl . -readall /Users UniqueID | sed -ne 's/UniqueID: *\([0123456789]*\) *$/\1/p' | sort -n | tail -1 ` + 1)
132 if [ -z "$NEWUID" -o "${NEWUID}" -lt 502 ]; then
133 NEWUID=502;
134 fi
135
136 dscl . -create "/Users/${TESTBOXSCRIPT_USER}" UserShell /bin/bash
137 dscl . -create "/Users/${TESTBOXSCRIPT_USER}" RealName "VBox Test User"
138 dscl . -create "/Users/${TESTBOXSCRIPT_USER}" UniqueID ${NEWUID}
139 dscl . -create "/Users/${TESTBOXSCRIPT_USER}" PrimaryGroupID 80
140 dscl . -create "/Users/${TESTBOXSCRIPT_USER}" NFSHomeDirectory "/Users/vbox"
141 dscl . -passwd "/Users/${TESTBOXSCRIPT_USER}" "password"
142 mkdir -p "/Users/${TESTBOXSCRIPT_USER}"
143}
144
145os_final_message() {
146 cat <<EOF
147
148Additional things to do:"
149 1. Change the 'Energy Saver' options to never turn off the computer:
150 $ systemsetup -setcomputersleep Never -setdisplaysleep 5 -setharddisksleep 15
151 2. Check 'Restart automatically if the computer freezes' if available in
152 the 'Energy Saver' settings.
153 $ systemsetup -setrestartfreeze on
154 3. In the 'Sharing' panel enable (VBox/Oracle):
155 a) 'Remote Login' so ssh works.
156 $ systemsetup -setremotelogin on
157 b) 'Remote Management, tick all the checkboxes in the sheet dialog.
158 Open the 'Computer Settings' and check 'Show Remote Management
159 status in menu bar', 'Anyone may request permission to control
160 screen' and 'VNC viewers may control screen with password'. Set the
161 VNC password to 'password'.
162 4. Make sure the proxy is configured correctly for your network by going to
163 the 'Network' panel, open 'Advanced...'. For Oracle this means 'TCP/IP'
164 should be configured by 'DHCP' (IPv4) and 'automatically' (IPv6), and
165 the 'Proxies' tab should have 'Automatic Proxy Configuration' checked
166 with the URL containing 'http://wpad.oracle.com/wpad.dat'. (Make sure
167 to hit OK to close the dialog.)
168 5. Configure NTP to the nearest local time source. For VBox/Oracle this
169 means wei01-time.de.oracle.com:
170 $ systemsetup -setnetworktimeserver wei01-time.de.oracle.com
171 6. Configure the vbox (pw:password) account for automatic login.
172 7. For configure the kernel to keep symbols you might need to:
173 a) For 10.11 (El Capitan) and later boot to the recovery partition and
174 either enabling loading of unsigned kexts:
175 $ csrutil enable --without kext
176 or disable SIP all together:
177 $ csrutil disable
178 b) For 10.15 (Catalina) and later you also need to disable
179 the reboot requirement (also from recovery partition):
180 $ spctl kext-consent disable
181 c) If you are running 10.10 (Yosemite) there is a boot-args option for
182 allowing the loading of unsigned kexts. Run the following and reboot:
183 $ sudo nvram boot-args="kext-dev-mode=1"
184 And then run the following:
185 $ sudo nvram boot-args="keepsyms=1"
186
187Enjoy!
188EOF
189}
190
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette