VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/testboxscript/linux/setup-routines.sh@ 95351

Last change on this file since 95351 was 93115, checked in by vboxsync, 3 years ago

scm --update-copyright-year

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1#!/bin/sh
2# $Id: setup-routines.sh 93115 2022-01-01 11:31:46Z vboxsync $
3## @file
4# VirtualBox Validation Kit - TestBoxScript Service Setup.
5#
6
7#
8# Copyright (C) 2006-2022 Oracle Corporation
9#
10# This file is part of VirtualBox Open Source Edition (OSE), as
11# available from http://www.virtualbox.org. This file is free software;
12# you can redistribute it and/or modify it under the terms of the GNU
13# General Public License (GPL) as published by the Free Software
14# Foundation, in version 2 as it comes in the "COPYING" file of the
15# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17#
18# The contents of this file may alternatively be used under the terms
19# of the Common Development and Distribution License Version 1.0
20# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
21# VirtualBox OSE distribution, in which case the provisions of the
22# CDDL are applicable instead of those of the GPL.
23#
24# You may elect to license modified versions of this file under the
25# terms and conditions of either the GPL or the CDDL or both.
26#
27
28
29# Load the routines we share with the linux installer.
30if test ! -r "${DIR}/linux/setup-installer-routines.sh" -a -r "${DIR}/../../Installer/linux/routines.sh"; then
31 . "${DIR}/../../Installer/linux/routines.sh"
32else
33 . "${DIR}/linux/setup-installer-routines.sh"
34fi
35
36
37os_load_config() {
38 if [ -d /etc/conf.d/ ]; then
39 MY_CONFIG_FILE="/etc/conf.d/testboxscript"
40 elif [ -d /etc/default/ ]; then
41 MY_CONFIG_FILE="/etc/default/testboxscript"
42 else
43 echo "Port me!"
44 exit 1;
45 fi
46 if [ -r "${MY_CONFIG_FILE}" ]; then
47 . "${MY_CONFIG_FILE}"
48 fi
49}
50
51os_install_service() {
52 #
53 # Install the runlevel script.
54 #
55 install_init_script "${TESTBOXSCRIPT_DIR}/testboxscript/linux/testboxscript-service.sh" "testboxscript-service"
56 set +e
57 delrunlevel "testboxscript-service" > /dev/null 2>&1
58 addrunlevel "testboxscript-service" 90 10
59 set -e
60
61 #
62 # Install the configuration file.
63 #
64 echo "# Generated by $0." > "${MY_CONFIG_FILE}"
65 for var in ${TESTBOXSCRIPT_CFG_NAMES};
66 do
67 varcfg=TESTBOXSCRIPT_${var}
68 vardef=TESTBOXSCRIPT_DEFAULT_${var}
69 if [ "${!varcfg}" = "${!vardef}" ]; then
70 echo "# using default value: ${varcfg}=${!varcfg}" >> "${MY_CONFIG_FILE}"
71 else
72 echo "${varcfg}=${!varcfg}" >> "${MY_CONFIG_FILE}"
73 fi
74 done
75
76 # Work around a bug with arrays in old bash versions.
77 if [ ${#TESTBOXSCRIPT_ENVVARS[@]} -ne 0 ]; then
78 set | sed -n -e '/^TESTBOXSCRIPT_ENVVARS=/p' >> "${MY_CONFIG_FILE}"
79 fi
80 return 0;
81}
82
83os_enable_service() {
84 start_init_script testboxscript-service
85 return 0;
86}
87
88os_disable_service() {
89 stop_init_script testboxscript-service 2>&1 || true # Ignore
90 return 0;
91}
92
93os_add_user() {
94 ADD_GROUPS=""
95 if ! grep -q wheel /etc/group; then
96 ADD_GROUPS="-G wheel"
97 fi
98 set -e
99 useradd -m -U -p password -s /bin/bash ${ADD_GROUPS} "${TESTBOXSCRIPT_USER}"
100 set +e
101 return 0;
102}
103
104check_for_cifs() {
105 test -x /sbin/mount.cifs -o -x /usr/sbin/mount.cifs
106 grep -wq cifs /proc/filesystems || modprobe cifs;
107 # Note! If modprobe doesn't work above, /sbin and /usr/sbin are probably missing from the search PATH.
108 return 0;
109}
110
111##
112# Test if core dumps are enabled. See https://wiki.ubuntu.com/Apport!
113#
114test_coredumps() {
115 if test "`lsb_release -is`" = "Ubuntu"; then
116 if grep -q "apport" /proc/sys/kernel/core_pattern; then
117 if grep -q "#.*problem_types" /etc/apport/crashdb.conf; then
118 echo "It looks like core dumps are properly configured, good!"
119 else
120 echo "Warning: Core dumps will be not always generated!"
121 fi
122 else
123 echo "Warning: Apport not installed! This package is required for core dump handling!"
124 fi
125 fi
126}
127
128##
129# Test if unattended updates are disabled. See
130# http://ask.xmodulo.com/disable-automatic-updates-ubuntu.html
131test_unattended_updates_disabled() {
132 if grep "APT::Periodic::Unattended-Upgrade.*1" /etc/apt/apt.conf.d/* 2>/dev/null; then
133 echo "Unattended updates enabled?"
134 return 1
135 fi
136 if grep "APT::Periodic::Update-Package-List.*1" /etc/apt/apt.conf.d/* 2>/dev/null; then
137 echo "Unattended package updates enabled?"
138 return 1
139 fi
140}
141
142os_final_message() {
143 cat <<EOF
144
145Additional things to do:"
146 1. Check if the proxy settings are appropriate for reaching the test
147 manager host. Python does not support domain matches starting with ".".
148
149 For Debian and Ubuntu: check /etc/environment.
150 For EL: check /etc/profile and/or the files in /etc/profile.d/.
151
152 2. If the system should be doing RAM disk based testing, add the following
153 (or something similar, adapted to the system) to /etc/fstab:
154
155 tmpfs /var/tmp/testbox-1000 tmpfs defaults,size=16G 0 0
156
157After making such adjustments, it's the easiest solution to reboot the testbox.
158
159Enjoy!
160EOF
161}
162
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