VirtualBox

source: vbox/trunk/src/VBox/Additions/linux/installer/module-autologon.sh@ 54558

Last change on this file since 54558 was 48941, checked in by vboxsync, 11 years ago

Additions/linux: Whitespace cleanups by scm.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 5.7 KB
Line 
1# Oracle VM VirtualBox
2# VirtualBox Linux Guest Additions installer - autologon module
3#
4
5# Copyright (C) 2012 Oracle Corporation
6#
7# This file is part of VirtualBox Open Source Edition (OSE), as
8# available from http://www.virtualbox.org. This file is free software;
9# you can redistribute it and/or modify it under the terms of the GNU
10# General Public License (GPL) as published by the Free Software
11# Foundation, in version 2 as it comes in the "COPYING" file of the
12# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
13# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
14#
15
16# @todo Document functions and their usage!
17
18MOD_AUTOLOGON_DEFAULT_LIGHTDM_CONFIG="/etc/lightdm/lightdm.conf"
19MOD_AUTOLOGON_DEFAULT_LIGHTDM_GREETER_DIR="/usr/share/xgreeters"
20
21mod_autologon_init()
22{
23 echo "Initializing auto-logon support ..."
24 return 0
25}
26
27mod_autologon_install_ex()
28{
29 info "Installing auto-logon support ..."
30
31 ## Parameters:
32 # Greeter directory. Defaults to /usr/share/xgreeters.
33 greeter_dir="$1"
34 # LightDM config. Defaults to /etc/lightdm/lightdm.conf.
35 lightdm_config="$2"
36 # Whether to force installation if non-compatible distribution
37 # is detected.
38 force="$3"
39
40 # Check for Ubuntu and derivates. @todo Debian?
41 distros="Ubuntu UbuntuStudio Edubuntu Kubuntu Lubuntu Mythbuntu Xubuntu"
42 ## @todo Map Linux Mint versions to Ubuntu ones.
43
44 ## @todo Move the distro check to a routine / globals as soon as
45 ## we have other distribution-dependent stuff.
46 which lsb_release &>/dev/null
47 if test "$?" -ne "0"; then
48 info "Error: lsb_release not found (path set?), skipping auto-logon installation"
49 return 1
50 fi
51 distro_name=$(lsb_release -si)
52 distro_ver=$(lsb_release -sr)
53
54 for distro_cur in ${distros}; do
55 if test "$distro_name" = "$distro_cur"; then
56 distro_found="true"
57 break
58 fi
59 done
60
61 if test -z "$distro_found"; then
62 if ! test "$force" = "force"; then
63 info "Error: Unsupported distribution \"$distro_name\" found, skipping auto-logon installation"
64 return 1
65 fi
66 info "Warning: Unsupported distribution \"$distro_name\" found"
67 else
68 # Do we have Ubuntu 11.10 or greater?
69 # Use AWK for comparison since we run on plan sh.
70 echo | awk 'END { exit ( !('"$distro_ver >= 11.10"') ); }'
71 if test "$?" -ne "0"; then
72 if ! test "$force" = "force"; then
73 info "Error: Version $distro_ver of \"$distro_name\" not supported, skipping auto-logon installation"
74 return 1
75 fi
76 info "Warning: Unsupported \"$distro_name\" version $distro_ver found"
77 fi
78 fi
79
80 # Install dependencies (lightdm and FLTK 1.3+) using apt-get.
81 which apt-get &>/dev/null
82 if test "$?" -ne "0"; then
83 info "Error: apt-get not found (path set?), skipping auto-logon installation"
84 return 1
85 fi
86 info "Checking and installing necessary dependencies ..."
87 apt-get -qqq -y install libfltk1.3 libfltk-images1.3 || return 1
88 apt-get -qqq -y install lightdm || return 1
89
90 # Check for LightDM config.
91 if ! test -f "$lightdm_config"; then
92 info "Error: LightDM config \"$lightdm_config\" not found (LightDM installed?), skipping auto-logon installation"
93 return 1
94 fi
95
96 # Check for /usr/share/xgreeters.
97 if ! test -d "$greeter_dir"; then
98 if ! test "$force" = "force"; then
99 info "Error: Directory \"$greeter_dir\" does not exist, skipping auto-logon installation"
100 return 1
101 fi
102 info "Warning: Directory \"$greeter_dir\" does not exist, creating it"
103 mkdir -p -m 755 "$greeter_dir" || return 1
104 fi
105
106 # Link to required greeter files into $greeter_dir.
107 add_symlink "$INSTALLATION_DIR/share/VBoxGuestAdditions/vbox-greeter.desktop" "$greeter_dir/vbox-greeter.desktop"
108
109 # Backup and activate greeter config.
110 if ! test -f "$lightdm_config.vbox-backup"; then
111 info "Backing up LightDM configuration file ..."
112 cp "$lightdm_config" "$lightdm_config.vbox-backup" || return 1
113 chmod 644 "$lightdm_config.vbox-backup" || return 1
114 fi
115 sed -i -e 's/^\s*greeter-session\s*=.*/greeter-session=vbox-greeter/g' "$lightdm_config" || return 1
116 chmod 644 "$lightdm_config" || return 1
117
118 info "Auto-logon installation successful"
119 return 0
120}
121
122mod_autologon_install()
123{
124 if [ -z "$MOD_AUTOLOGON_LIGHTDM_GREETER_DIR" ]; then
125 MOD_AUTOLOGON_LIGHTDM_GREETER_DIR=$MOD_AUTOLOGON_DEFAULT_LIGHTDM_GREETER_DIR
126 fi
127 if [ -z "$MOD_AUTOLOGON_LIGHTDM_CONFIG" ]; then
128 MOD_AUTOLOGON_LIGHTDM_CONFIG=$MOD_AUTOLOGON_DEFAULT_LIGHTDM_CONFIG
129 fi
130
131 mod_autologon_install_ex "$MOD_AUTOLOGON_LIGHTDM_GREETER_DIR" "$MOD_AUTOLOGON_LIGHTDM_CONFIG" "$MOD_AUTOLOGON_FORCE"
132 return $?
133}
134
135mod_autologon_pre_uninstall()
136{
137 echo "Preparing to uninstall auto-logon support ..."
138 return 0
139}
140
141mod_autologon_uninstall()
142{
143 if test -z "$MOD_AUTOLOGON_LIGHTDM_CONFIG"; then
144 return 0
145 fi
146 info "Un-installing auto-logon support ..."
147
148 # Switch back to original greeter.
149 if test -f "$MOD_AUTOLOGON_LIGHTDM_CONFIG.vbox-backup"; then
150 mv "$MOD_AUTOLOGON_LIGHTDM_CONFIG.vbox-backup" "$MOD_AUTOLOGON_LIGHTDM_CONFIG"
151 if test "$?" -ne "0"; then
152 info "Warning: Could not restore original LightDM config \"$MOD_AUTOLOGON_LIGHTDM_CONFIG\""
153 fi
154 fi
155
156 # Remove greeter directory (if not empty).
157 rm "$MOD_AUTOLOGON_LIGHTDM_GREETER_DIR" 2>/dev/null
158
159 info "Auto-logon uninstallation successful"
160 return 0
161}
162
163mod_autologon_config_save()
164{
165 echo "
166MOD_AUTOLOGON_LIGHTDM_CONFIG='$MOD_AUTOLOGON_LIGHTDM_CONFIG'
167MOD_AUTOLOGON_LIGHTDM_GREETER_DIR='$MOD_AUTOLOGON_LIGHTDM_GREETER_DIR'"
168}
169
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