Subversion Repositories livecd

Rev

Rev 78 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 78 Rev 83
1
#!/bin/bash
1
#!/bin/bash
2
#
2
#
3
# Fix things during bootup - run last 
3
# Fix things during bootup - run last 
4
#
4
#
5
# Urs Beyerle, PSI
5
# Urs Beyerle, PSI
6
#
6
#
7
 
7
 
8
### -----------------------------------------------------------
8
### -----------------------------------------------------------
9
### definitions
9
### definitions
10
### -----------------------------------------------------------
10
### -----------------------------------------------------------
11
 
11
 
12
# dir of mounted live system: /$MOUNTDIR/live
12
# dir of mounted live system: /$MOUNTDIR/live
13
MOUNTDIR=livecd
13
MOUNTDIR=livecd
14
 
14
 
15
# source functions
15
# source functions
16
. /$MOUNTDIR/live/liblinuxlive
16
. /$MOUNTDIR/live/liblinuxlive
17
. /etc/init.d/functions
17
. /etc/init.d/functions
18
 
18
 
19
# defaults for xorg.conf
19
# defaults for xorg.conf
20
XORG_CONF=/etc/X11/xorg.conf
20
XORG_CONF=/etc/X11/xorg.conf
21
 
21
 
22
HSYNC_DEFAULT="30.0-80.0"
22
HSYNC_DEFAULT="30.0-80.0"
23
VSYNC_DEFAULT="50.0-90.0"
23
VSYNC_DEFAULT="50.0-90.0"
24
SCREEN_DEFAULT="1400x1050"
24
SCREEN_DEFAULT="1400x1050"
25
 
25
 
26
MODES_DEFAULT='"2048x1536" "1920x1200" "1600x1200" "1400x1050" "1280x1024" "1280x960" "1280x800" "1152x864" "1152x768" "1024x768" "800x600" "640x480"'
26
MODES_DEFAULT='"2048x1536" "1920x1200" "1600x1200" "1400x1050" "1280x1024" "1280x960" "1280x800" "1152x864" "1152x768" "1024x768" "800x600" "640x480"'
27
 
27
 
28
 
28
 
29
### -----------------------------------------------------------
29
### -----------------------------------------------------------
30
### Get boot parameters
30
### Get boot parameters
31
### -----------------------------------------------------------
31
### -----------------------------------------------------------
32
 
32
 
33
# root on NFS?
33
# root on NFS?
34
NFSROOT=$( cmdline_value nfsroot )
34
NFSROOT=$( cmdline_value nfsroot )
35
 
35
 
36
# NFS Server
36
# NFS Server
37
NFSSERVER=$( echo $NFSROOT | cut -d":" -f1 )
37
NFSSERVER=$( echo $NFSROOT | cut -d":" -f1 )
38
 
38
 
39
# no local user?
39
# no local user?
40
NOLOCAL=$( cmdline_parameter nolocal )
40
NOLOCAL=$( cmdline_parameter nolocal )
41
 
41
 
42
# no root user?
42
# no root user?
43
NOROOT=$( cmdline_parameter noroot )
43
NOROOT=$( cmdline_parameter noroot )
44
 
44
 
45
# no localadmin?
45
# no localadmin?
46
NOADMIN=$( cmdline_parameter noadmin )
46
NOADMIN=$( cmdline_parameter noadmin )
47
LocalAdminGroup=localadmin
47
LocalAdminGroup=localadmin
48
 
48
 
49
# set password
49
# set password
50
PASSWD=$( cmdline_value passwd )
50
PASSWD=$( cmdline_value passwd )
51
[ ! $PASSWD ] && PASSWD=$( cmdline_value pw )
51
[ ! $PASSWD ] && PASSWD=$( cmdline_value pw )
52
 
52
 
53
# no password = empty password ?
53
# no password = empty password ?
54
NOPASSWD=$( cmdline_parameter nopasswd )
54
NOPASSWD=$( cmdline_parameter nopasswd )
55
 
55
 
56
# keyboard layout (kb= or keyboard=)
56
# keyboard layout (kb= or keyboard=)
57
KEYBOARD=$( cmdline_value keyboard )
57
KEYBOARD=$( cmdline_value keyboard )
58
KB=$( cmdline_value kb )
58
KB=$( cmdline_value kb )
59
 
59
 
60
# PSI setup?
60
# PSI setup?
61
PSI=$( cmdline_parameter psi )
61
PSI=$( cmdline_parameter psi )
62
 
62
 
63
# cups server
63
# cups server
64
CUPS=$( cmdline_value cups )
64
CUPS=$( cmdline_value cups )
65
 
65
 
66
# failsafe X server
66
# failsafe X server
67
SIMPLEX=$( cmdline_parameter simplex )
67
SIMPLEX=$( cmdline_parameter simplex )
68
 
68
 
69
# NVIDIA driver
69
# NVIDIA driver
70
NVIDIA=$( cmdline_parameter nvidia )
70
NVIDIA=$( cmdline_parameter nvidia )
71
if [ "$XDRIVER" = "nvidia" ]; then
71
if [ "$XDRIVER" = "nvidia" ]; then
72
    NVIDIA=nvidia
72
    NVIDIA=nvidia
73
fi
73
fi
74
 
74
 
75
# force NO NVIDIA driver - will overwite NVIDIA option
75
# force NO NVIDIA driver - will overwite NVIDIA option
76
NONVIDIA=$( cmdline_parameter nonvidia )
76
NONVIDIA=$( cmdline_parameter nonvidia )
77
 
77
 
78
# VESA driver
78
# VESA driver
79
VESA=$( cmdline_parameter vesa )
79
VESA=$( cmdline_parameter vesa )
80
 
80
 
81
# force to use a video driver ?
81
# force to use a video driver ?
82
XDRIVER=$( cmdline_value xdriver )
82
XDRIVER=$( cmdline_value xdriver )
83
 
83
 
84
# Xserver configurations
84
# Xserver configurations
85
HSYNC=$( cmdline_value hsync )
85
HSYNC=$( cmdline_value hsync )
86
VSYNC=$( cmdline_value vsync )
86
VSYNC=$( cmdline_value vsync )
87
SCREEN=$( cmdline_value screen )
87
SCREEN=$( cmdline_value screen )
88
 
88
 
89
# no SWAP
89
# no SWAP
90
NOSWAP=$( cmdline_parameter noswap )
90
NOSWAP=$( cmdline_parameter noswap )
91
 
91
 
92
# should we auto mount all found devices?
92
# should we auto mount all found devices?
93
AUTOMOUNT=$( cmdline_parameter automount )
93
AUTOMOUNT=$( cmdline_parameter automount )
94
if [ $AUTOMOUNT ]; then
94
if [ $AUTOMOUNT ]; then
95
    MOUNTOPT="auto,users"
95
    MOUNTOPT="auto,users"
96
else
96
else
97
    MOUNTOPT="noauto,users,ro"
97
    MOUNTOPT="noauto,users,ro"
98
fi
98
fi
99
 
99
 
100
# folder where we find data which was previously stored
100
# folder where we find data which was previously stored
101
# (normally on a usbstick, but can be partition)
101
# (normally on a usbstick, but can be partition)
102
if [ $PSI ]; then
102
if [ $PSI ]; then
103
    SAVEFOLDER=PSI_LIVECD
103
    SAVEFOLDER=PSI_LIVECD
104
else
104
else
105
    SAVEFOLDER=SL_LIVECD
105
    SAVEFOLDER=SL_LIVECD
106
fi
106
fi
107
 
107
 
108
# local home partition?
108
# local home partition?
109
# (e.g. /dev/hda1, /dev/hda1:/my_home)
109
# (e.g. /dev/hda1, /dev/hda1:/my_home)
110
HOMELOCAL=$( cmdline_value home )
110
HOMELOCAL=$( cmdline_value home )
111
 
111
 
112
# fast booting ?
112
# fast booting ?
113
FASTBOOT=$( cmdline_parameter fastboot )
113
FASTBOOT=$( cmdline_parameter fastboot )
114
 
114
 
115
# start afs?
115
# start afs?
116
AFS=$( cmdline_parameter afs )
116
AFS=$( cmdline_parameter afs )
117
 
117
 
118
# or force no afs
118
# or force no afs
119
[ $( cmdline_parameter noafs ) ] && AFS=""
119
[ $( cmdline_parameter noafs ) ] && AFS=""
120
 
120
 
121
# turn of sound (volume=0)
121
# turn of sound (volume=0)
122
NOSOUND=$( cmdline_parameter nosound )
122
NOSOUND=$( cmdline_parameter nosound )
123
 
123
 
124
# local user name?
124
# local user name?
125
LOCALUSER=$( cmdline_value user )
125
LOCALUSER=$( cmdline_value user )
126
 
126
 
127
# hostname?
127
# hostname?
128
HOSTNAME=$( cmdline_value hostname )
128
HOSTNAME=$( cmdline_value hostname )
129
 
129
 
130
# do we have defined a configuration directory?
130
# do we have defined a configuration directory?
131
CONFIG=$( cmdline_value config )
131
CONFIG=$( cmdline_value config )
132
 
132
 
133
# do not udpate fstab?
133
# do not udpate fstab?
134
NOFSTAB=$( cmdline_parameter nofstab )
134
NOFSTAB=$( cmdline_parameter nofstab )
135
 
135
 
136
# kde/gnome as desktop
136
# kde/gnome as desktop
137
GNOME=$( cmdline_parameter gnome )
137
GNOME=$( cmdline_parameter gnome )
138
KDE=$( cmdline_parameter kde )
138
KDE=$( cmdline_parameter kde )
139
 
139
 
140
# do no fixes (useful for debugging)
140
# do no fixes (useful for debugging)
141
NOFIX=$( cmdline_parameter nofix )
141
NOFIX=$( cmdline_parameter nofix )
142
 
142
 
-
 
143
# do not start network
-
 
144
NONET=$( cmdline_parameter nonet )
-
 
145
 
-
 
146
 
143
 
147
 
144
### -----------------------------------------------------------
148
### -----------------------------------------------------------
145
### Functions
149
### Functions
146
### -----------------------------------------------------------
150
### -----------------------------------------------------------
147
 
151
 
148
reload_soundmodule() {
152
reload_soundmodule() {
149
 
153
 
150
    ### unload/load sound module for snd-card-X (timing problem?)
154
    ### unload/load sound module for snd-card-X (timing problem?)
151
    if [ ! $NOFIX ]; then
155
    if [ ! $NOFIX ]; then
152
	rpm -q alsa-lib | grep el5 >/dev/null
156
	rpm -q alsa-lib | grep el5 >/dev/null
153
	if [ "$?" = "0" ]; then
157
	if [ "$?" = "0" ]; then
154
	    # disable kernel messages
158
	    # disable kernel messages
155
	    echo "0" > /proc/sys/kernel/printk
159
	    echo "0" > /proc/sys/kernel/printk
156
	    sound_modules=$( grep snd-card- /etc/modprobe.conf | awk ' $1 ~ /alias/ { print $3 }' | tr - _ )
160
	    sound_modules=$( grep snd-card- /etc/modprobe.conf | awk ' $1 ~ /alias/ { print $3 }' | tr - _ )
157
	    for module in $sound_modules; do
161
	    for module in $sound_modules; do
158
		lsmod | awk '{ print $1 }' | grep $module >/dev/null 2>&1
162
		lsmod | awk '{ print $1 }' | grep $module >/dev/null 2>&1
159
		if [ "$?" = "0" ]; then
163
		if [ "$?" = "0" ]; then
160
		    rmmod $module    >/dev/null 2>&1
164
		    rmmod $module    >/dev/null 2>&1
161
		    modprobe $module >/dev/null 2>&1
165
		    modprobe $module >/dev/null 2>&1
162
		fi
166
		fi
163
	    done
167
	    done
164
	    # enable kernel messages
168
	    # enable kernel messages
165
	    echo "6" > /proc/sys/kernel/printk
169
	    echo "6" > /proc/sys/kernel/printk
166
	fi
170
	fi
167
    fi
171
    fi
168
}
172
}
169
 
173
 
170
 
174
 
171
### -----------------------------------------------------------
175
### -----------------------------------------------------------
172
### Improved hardware detection
176
### Improved hardware detection
173
### -----------------------------------------------------------
177
### -----------------------------------------------------------
174
 
178
 
175
### Improved graphic card detection
179
### Improved graphic card detection
176
 
180
 
177
if [ ! $SIMPLEX ] && [ ! $NOFIX ]; then
181
if [ ! $SIMPLEX ] && [ ! $NOFIX ]; then
178
 
182
 
179
    ### Intel Mobile 945GM
183
    ### Intel Mobile 945GM
180
    lspci | grep -q VGA.*Intel.*Mobile.*945GM
184
    lspci | grep -q VGA.*Intel.*Mobile.*945GM
181
    if [ "$?" = "0" ]; then
185
    if [ "$?" = "0" ]; then
182
	I945GM=i945gm
186
	I945GM=i945gm
183
	## not yet supported by i810 driver
187
	## not yet supported by i810 driver
184
        ## [ $XDRIVER ] || XDRIVER=i810
188
        ## [ $XDRIVER ] || XDRIVER=i810
185
	I915RESOLUTION=on
189
	I915RESOLUTION=on
186
    fi
190
    fi
187
    ### Intel Mobile 915GM
191
    ### Intel Mobile 915GM
188
    lspci | grep -q VGA.*Intel.*Mobile.*915GM
192
    lspci | grep -q VGA.*Intel.*Mobile.*915GM
189
    if [ "$?" = "0" ]; then
193
    if [ "$?" = "0" ]; then
190
	I915GM=i915gm
194
	I915GM=i915gm
191
	[ $XDRIVER ] || XDRIVER=i810
195
	[ $XDRIVER ] || XDRIVER=i810
192
	I855RESOLUTION=on
196
	I855RESOLUTION=on
193
    fi
197
    fi
194
 
198
 
195
    ### Intel Mobile 855GM
199
    ### Intel Mobile 855GM
196
    lspci | grep -q VGA.*Intel.*855GM
200
    lspci | grep -q VGA.*Intel.*855GM
197
    if [ "$?" = "0" ]; then
201
    if [ "$?" = "0" ]; then
198
	I855GM=i855gm
202
	I855GM=i855gm
199
	I855RESOLUTION=on
203
	I855RESOLUTION=on
200
    fi
204
    fi
201
fi
205
fi
202
 
206
 
203
 
207
 
204
### -----------------------------------------------------------
208
### -----------------------------------------------------------
205
### Main
209
### Main
206
### -----------------------------------------------------------
210
### -----------------------------------------------------------
207
 
211
 
208
### try load fuse kernel module
212
### try load fuse kernel module
209
modprobe fuse 2>/dev/null
213
modprobe fuse 2>/dev/null
210
 
214
 
211
### reload sound module (first time)
215
### reload sound module (first time)
212
reload_soundmodule
216
reload_soundmodule
213
 
217
 
214
### activate SWAP
218
### activate SWAP
215
# delete all swap lines in fstab
219
# delete all swap lines in fstab
216
 sed -i -e "/ swap /d" /etc/fstab
220
 sed -i -e "/ swap /d" /etc/fstab
217
# search for swap partition
221
# search for swap partition
218
fdisk -l > /var/log/fdisk
222
fdisk -l > /var/log/fdisk
219
swap_part=$( fdisk -l 2>/dev/null | grep -i "Linux swap" \
223
swap_part=$( fdisk -l 2>/dev/null | grep -i "Linux swap" \
220
            | grep "^/dev/" | cut -f 1 -d " " | head -1 )
224
            | grep "^/dev/" | cut -f 1 -d " " | head -1 )
221
# add to /etc/fstab and activate SWAP
225
# add to /etc/fstab and activate SWAP
222
if [ $swap_part ] && [ ! $NOSWAP ]; then
226
if [ $swap_part ] && [ ! $NOSWAP ]; then
223
    echo "$swap_part               swap                    swap    defaults 0 0" >>/etc/fstab
227
    echo "$swap_part               swap                    swap    defaults 0 0" >>/etc/fstab
224
    # activate SWAP
228
    # activate SWAP
225
    swapoff -a
229
    swapoff -a
226
    swapon -a -e
230
    swapon -a -e
227
fi
231
fi
228
 
232
 
229
### MAC Address of eth0
233
### MAC Address of eth0
230
MAC_ETH0=$( ifconfig | grep eth0 | awk '{print $5}' )
234
MAC_ETH0=$( ifconfig | grep eth0 | awk '{print $5}' )
231
 
235
 
232
### Get CONFIG_FOLDER for this machine from NFS Server (if existing) 
236
### Get CONFIG_FOLDER for this machine from NFS Server (if existing) 
233
#   and copy it to /$MOUNTDIR
237
#   and copy it to /$MOUNTDIR
234
if [ $NFSSERVER ] && [ $CONFIG ]; then
238
if [ $NFSSERVER ] && [ $CONFIG ]; then
235
    mkdir -p /mnt/config
239
    mkdir -p /mnt/config
236
    echo "Search for configuration files on the server ..."
240
    echo "Search for configuration files on the server ..."
237
    /etc/init.d/portmap start >/dev/null
241
    /etc/init.d/portmap start >/dev/null
238
    mount -t nfs $NFSSERVER:$CONFIG /mnt/config 2>/dev/null
242
    mount -t nfs $NFSSERVER:$CONFIG /mnt/config 2>/dev/null
239
    if [ "$?" != "0" ]; then
243
    if [ "$?" != "0" ]; then
240
	echo "Could not mount $NFSSERVER:$CONFIG."
244
	echo "Could not mount $NFSSERVER:$CONFIG."
241
    else
245
    else
242
	if [ -d /mnt/config/$MAC_ETH0 ]; then
246
	if [ -d /mnt/config/$MAC_ETH0 ]; then
243
	    CONFIG_FOLDER=/$MOUNTDIR/config
247
	    CONFIG_FOLDER=/$MOUNTDIR/config
244
	    mkdir -p $CONFIG_FOLDER
248
	    mkdir -p $CONFIG_FOLDER
245
	    cp -a /mnt/config/$MAC_ETH0/* /$CONFIG_FOLDER/ 2>/dev/null
249
	    cp -a /mnt/config/$MAC_ETH0/* /$CONFIG_FOLDER/ 2>/dev/null
246
	    if [ "$?" != "0" ]; then
250
	    if [ "$?" != "0" ]; then
247
		echo "Could not get $NFSSERVER:$CONFIG/$MAC_ETH0"
251
		echo "Could not get $NFSSERVER:$CONFIG/$MAC_ETH0"
248
		CONFIG_FOLDER=""
252
		CONFIG_FOLDER=""
249
	    else
253
	    else
250
		echo "Found configuration files on the server." 
254
		echo "Found configuration files on the server." 
251
	    fi	    
255
	    fi	    
252
	fi
256
	fi
253
	umount /mnt/config
257
	umount /mnt/config
254
    fi
258
    fi
255
    /etc/init.d/portmap stop >/dev/null
259
    /etc/init.d/portmap stop >/dev/null
256
fi
260
fi
257
 
261
 
258
### search for partitions and update fstab 
262
### search for partitions and update fstab 
259
### and look for $SAVEFOLDER (previously stored data)
263
### and look for $SAVEFOLDER (previously stored data)
260
if [ ! $FASTBOOT ] && [ ! $NOFSTAB ]; then
264
if [ ! $FASTBOOT ] && [ ! $NOFSTAB ]; then
261
    echo "Update /etc/fstab ..."
265
    echo "Update /etc/fstab ..."
262
    # disable kernel messages during mount/unmount
266
    # disable kernel messages during mount/unmount
263
    echo 0 > /proc/sys/kernel/printk
267
    echo 0 > /proc/sys/kernel/printk
264
    DEVICES=$( list_partition_devices )
268
    DEVICES=$( list_partition_devices )
265
    for DEVICE in $DEVICES; do
269
    for DEVICE in $DEVICES; do
266
        # try to mount the device and unmount it. 
270
        # try to mount the device and unmount it. 
267
        # If OK, we can add it to fstab
271
        # If OK, we can add it to fstab
268
	DEV=$( echo $DEVICE | cut -d"/" -f 3 )
272
	DEV=$( echo $DEVICE | cut -d"/" -f 3 )
269
	if [ $DEV ]; then
273
	if [ $DEV ]; then
270
	    mkdir -p /mnt/$DEV
274
	    mkdir -p /mnt/$DEV
271
	    mount $DEVICE /mnt/$DEV >/dev/null 2>&1
275
	    mount $DEVICE /mnt/$DEV >/dev/null 2>&1
272
	    # search for $SAVEFOLDER
276
	    # search for $SAVEFOLDER
273
	    if [ -d /mnt/$DEV/$SAVEFOLDER ]; then
277
	    if [ -d /mnt/$DEV/$SAVEFOLDER ]; then
274
		FOUND_RESTORE_DEV=/dev/$DEV
278
		FOUND_RESTORE_DEV=/dev/$DEV
275
		echo "Found folder '$SAVEFOLDER' on $FOUND_RESTORE_DEV"
279
		echo "Found folder '$SAVEFOLDER' on $FOUND_RESTORE_DEV"
276
	    fi
280
	    fi
277
	    # unmount again
281
	    # unmount again
278
	    umount /mnt/$DEV >/dev/null 2>&1
282
	    umount /mnt/$DEV >/dev/null 2>&1
279
	    # if sucsessful add to fstab, if not already done
283
	    # if sucsessful add to fstab, if not already done
280
	    if [ "$?" = "0" ]; then
284
	    if [ "$?" = "0" ]; then
281
		grep -q "^$DEVICE " /etc/fstab
285
		grep -q "^$DEVICE " /etc/fstab
282
		if [ "$?" != "0" ]; then
286
		if [ "$?" != "0" ]; then
283
		    echo -e "$DEVICE \t /mnt/$DEV \t auto \t $MOUNTOPT,suid,dev,exec 0 0" >> /etc/fstab
287
		    echo -e "$DEVICE \t /mnt/$DEV \t auto \t $MOUNTOPT,suid,dev,exec 0 0" >> /etc/fstab
284
		fi
288
		fi
285
	    else
289
	    else
286
		rmdir /mnt/$DEV 2>/dev/null
290
		rmdir /mnt/$DEV 2>/dev/null
287
	    fi
291
	    fi
288
	fi
292
	fi
289
    done
293
    done
290
    # enable kernel messages again
294
    # enable kernel messages again
291
    echo 6 > /proc/sys/kernel/printk
295
    echo 6 > /proc/sys/kernel/printk
292
fi
296
fi
293
 
297
 
294
### if $SAVEFOLDER found, set $CONFIG_FOLDER and mount $FOUND_RESTORE_MNT 
298
### if $SAVEFOLDER found, set $CONFIG_FOLDER and mount $FOUND_RESTORE_MNT 
295
if [ $FOUND_RESTORE_DEV ]; then
299
if [ $FOUND_RESTORE_DEV ]; then
296
    FOUND_RESTORE_MNT=$( grep "^$FOUND_RESTORE_DEV " /etc/fstab | awk '{ print $2 }' )
300
    FOUND_RESTORE_MNT=$( grep "^$FOUND_RESTORE_DEV " /etc/fstab | awk '{ print $2 }' )
297
    CONFIG_FOLDER=$FOUND_RESTORE_MNT/$SAVEFOLDER
301
    CONFIG_FOLDER=$FOUND_RESTORE_MNT/$SAVEFOLDER
298
    echo "Will restore data from $CONFIG_FOLDER"
302
    echo "Will restore data from $CONFIG_FOLDER"
299
    mount $FOUND_RESTORE_MNT
303
    mount $FOUND_RESTORE_MNT
300
fi
304
fi
301
 
305
 
302
### source the file "config", if found in $CONFIG_FOLDER
306
### source the file "config", if found in $CONFIG_FOLDER
303
if [ -f $CONFIG_FOLDER/config ]; then
307
if [ -f $CONFIG_FOLDER/config ]; then
304
    . $CONFIG_FOLDER/config
308
    . $CONFIG_FOLDER/config
305
fi
309
fi
306
 
310
 
307
### do we have a shadow/passwd file in $FOUND_FOULDER 
311
### do we have a shadow/passwd file in $FOUND_FOULDER 
308
if [ -r $CONFIG_FOLDER/passwd.tar.gz ] && [ -r $CONFIG_FOLDER/shadow.tar.gz ]; then
312
if [ -r $CONFIG_FOLDER/passwd.tar.gz ] && [ -r $CONFIG_FOLDER/shadow.tar.gz ]; then
309
    # we do not need a password for local user and root
313
    # we do not need a password for local user and root
310
    NOLOCAL=nolocal
314
    NOLOCAL=nolocal
311
    NOROOT=noroot
315
    NOROOT=noroot
312
fi
316
fi
313
 
317
 
314
### set local user name and default hostname
318
### set local user name and default hostname
315
if [ $PSI ]; then
319
if [ $PSI ]; then
316
    [ $LOCALUSER ] || LOCALUSER=l_psi
320
    [ $LOCALUSER ] || LOCALUSER=l_psi
317
    DEFAULT_HOSTNAME=psi
321
    DEFAULT_HOSTNAME=psi
318
else
322
else
319
    [ $LOCALUSER ] || LOCALUSER=sluser
323
    [ $LOCALUSER ] || LOCALUSER=sluser
320
    DEFAULT_HOSTNAME=slinux
324
    DEFAULT_HOSTNAME=slinux
321
fi
325
fi
322
 
326
 
323
### start 855resolution?
327
### start 855resolution?
324
[ $I855RESOLUTION ] && /etc/init.d/855resolution start 2>/dev/null
328
[ $I855RESOLUTION ] && /etc/init.d/855resolution start 2>/dev/null
325
 
329
 
326
### start 915resolution?
330
### start 915resolution?
327
[ $I915RESOLUTION ] && /etc/init.d/915resolution start 2>/dev/null
331
[ $I915RESOLUTION ] && /etc/init.d/915resolution start 2>/dev/null
328
 
332
 
329
### configure Xserver
333
### configure Xserver
330
 
334
 
331
### check for xorg.conf in CONFIG_FOLDER
335
### check for xorg.conf in CONFIG_FOLDER
332
if [ -r $CONFIG_FOLDER/xorg.conf ]; then
336
if [ -r $CONFIG_FOLDER/xorg.conf ]; then
333
    cp -af $CONFIG_FOLDER/xorg.conf $XORG_CONF
337
    cp -af $CONFIG_FOLDER/xorg.conf $XORG_CONF
334
    if [ "$?" = "0" ]; then
338
    if [ "$?" = "0" ]; then
335
	echo "Saved xorg.conf file found."
339
	echo "Saved xorg.conf file found."
336
	XDRIVER=""
340
	XDRIVER=""
337
	HAVE_XORG_CONF="yes"
341
	HAVE_XORG_CONF="yes"
338
    fi
342
    fi
339
fi
343
fi
340
 
344
 
341
### use vesa driver?
345
### use vesa driver?
342
if [ $VESA ]; then
346
if [ $VESA ]; then
343
    echo "Force to use VESA driver!"
347
    echo "Force to use VESA driver!"
344
    video_driver="--set-driver=vesa"
348
    video_driver="--set-driver=vesa"
345
else
349
else
346
    video_driver=""
350
    video_driver=""
347
fi
351
fi
348
 
352
 
349
### force an other video driver?
353
### force an other video driver?
350
if [ $XDRIVER ]; then
354
if [ $XDRIVER ]; then
351
    echo "Force to use $XDRIVER driver!"
355
    echo "Force to use $XDRIVER driver!"
352
    video_driver="--set-driver=$XDRIVER"
356
    video_driver="--set-driver=$XDRIVER"
353
fi
357
fi
354
 
358
 
355
### configure Xserver
359
### configure Xserver
356
if [ -x /usr/bin/system-config-display ]; then
360
if [ -x /usr/bin/system-config-display ]; then
357
    echo "Configure Xserver:"
361
    echo "Configure Xserver:"
358
    if [ ! $HAVE_XORG_CONF ]; then
362
    if [ ! $HAVE_XORG_CONF ]; then
359
	if [ ! $SIMPLEX ]; then
363
	if [ ! $SIMPLEX ]; then
360
 
364
 
361
            # default values
365
            # default values
362
	    [ ! $HSYNC ]  && HSYNC="$HSYNC_DEFAULT"
366
	    [ ! $HSYNC ]  && HSYNC="$HSYNC_DEFAULT"
363
	    [ ! $VSYNC ]  && VSYNC="$VSYNC_DEFAULT"
367
	    [ ! $VSYNC ]  && VSYNC="$VSYNC_DEFAULT"
364
	    [ ! $SCREEN ] && SCREEN="$SCREEN_DEFAULT"
368
	    [ ! $SCREEN ] && SCREEN="$SCREEN_DEFAULT"
365
	    
369
	    
366
            # run system-config-display 
370
            # run system-config-display 
367
	    system-config-display \
371
	    system-config-display \
368
		--reconfig \
372
		--reconfig \
369
                -v \
373
                -v \
370
		--set-resolution=$SCREEN \
374
		--set-resolution=$SCREEN \
371
		--set-hsync=$HSYNC \
375
		--set-hsync=$HSYNC \
372
		--set-vsync=$VSYNC \
376
		--set-vsync=$VSYNC \
373
		$video_driver | grep Trying
377
		$video_driver | grep Trying
374
 
378
 
375
            # system-config-display in SL5 does not work nicely :-(
379
            # system-config-display in SL5 does not work nicely :-(
376
            # e.g. No Monitor Section
380
            # e.g. No Monitor Section
377
 
381
 
378
	    # add Monitor Section and add Monitor0 to Screen Section
382
	    # add Monitor Section and add Monitor0 to Screen Section
379
	    grep -q Monitor $XORG_CONF
383
	    grep -q Monitor $XORG_CONF
380
	    if [ "$?" != "0" ]; then
384
	    if [ "$?" != "0" ]; then
381
		echo    "Section \"Monitor\""          >> $XORG_CONF
385
		echo    "Section \"Monitor\""          >> $XORG_CONF
382
		echo -e "\tIdentifier   \"Monitor0\""  >> $XORG_CONF
386
		echo -e "\tIdentifier   \"Monitor0\""  >> $XORG_CONF
383
		echo -e "\tHorizSync    $HSYNC"        >> $XORG_CONF
387
		echo -e "\tHorizSync    $HSYNC"        >> $XORG_CONF
384
		echo -e "\tVertRefresh  $VSYNC"        >> $XORG_CONF
388
		echo -e "\tVertRefresh  $VSYNC"        >> $XORG_CONF
385
		echo -e "\tOption       \"dpms\""      >> $XORG_CONF
389
		echo -e "\tOption       \"dpms\""      >> $XORG_CONF
386
		echo -e "EndSection"                   >> $XORG_CONF
390
		echo -e "EndSection"                   >> $XORG_CONF
387
                sed -i "s|Device     \"Videocard0\"|Device     \"Videocard0\"\n\tMonitor    \"Monitor0\"|" $XORG_CONF
391
                sed -i "s|Device     \"Videocard0\"|Device     \"Videocard0\"\n\tMonitor    \"Monitor0\"|" $XORG_CONF
388
	    fi
392
	    fi
389
 
393
 
390
            # add Modes for $SCREEN, if not yet there
394
            # add Modes for $SCREEN, if not yet there
391
	    grep -q Modes $XORG_CONF
395
	    grep -q Modes $XORG_CONF
392
	    if [ "$?" != "0" ]; then
396
	    if [ "$?" != "0" ]; then
393
		modeline=$( echo ${MODES_DEFAULT} | sed "s|.*\"$SCREEN|\"$SCREEN|" )
397
		modeline=$( echo ${MODES_DEFAULT} | sed "s|.*\"$SCREEN|\"$SCREEN|" )
394
		if [ "$modeline" ]; then
398
		if [ "$modeline" ]; then
395
		    sed -i "s|\tDepth.*|\tDepth     24\n\t\tModes $modeline|" $XORG_CONF
399
		    sed -i "s|\tDepth.*|\tDepth     24\n\t\tModes $modeline|" $XORG_CONF
396
		fi
400
		fi
397
	    fi
401
	    fi
398
 
402
 
399
 
403
 
400
	# simple Xserver configuration.
404
	# simple Xserver configuration.
401
	else
405
	else
402
	    echo "Use simple Xserver configuration."
406
	    echo "Use simple Xserver configuration."
403
	    system-config-display --noui --reconfig -v | grep Trying
407
	    system-config-display --noui --reconfig -v | grep Trying
404
	fi
408
	fi
405
    fi
409
    fi
406
fi
410
fi
407
 
411
 
408
 
412
 
409
### enable NVIDIA driver (needs nvidia, nvidia-libs rpms)
413
### enable NVIDIA driver (needs nvidia, nvidia-libs rpms)
410
if [ $NVIDIA ] && [ ! $NONVIDIA ]; then
414
if [ $NVIDIA ] && [ ! $NONVIDIA ]; then
411
    # serach for Nvidia Video Card
415
    # serach for Nvidia Video Card
412
    /sbin/lspci | grep VGA | grep -i -q nvidia
416
    /sbin/lspci | grep VGA | grep -i -q nvidia
413
    if [ "$?" = "0" ]; then
417
    if [ "$?" = "0" ]; then
414
	# lib or lib64 ?
418
	# lib or lib64 ?
415
	LIB=lib
419
	LIB=lib
416
	[ $( arch ) = "x86_64" ] && LIB=lib64
420
	[ $( arch ) = "x86_64" ] && LIB=lib64
417
	# find out installed Nvidia driver version
421
	# find out installed Nvidia driver version
418
	libglx=$( ls /usr/X11R6/$LIB/modules/extensions/libglx.so.1.* | head -n 1 )
422
	libglx=$( ls /usr/X11R6/$LIB/modules/extensions/libglx.so.1.* | head -n 1 )
419
	nvidia_version=${libglx##*.so.1.}
423
	nvidia_version=${libglx##*.so.1.}
420
	# enable Nvidia driver (normally done by nvidia-enable - does not work on LiveCD)
424
	# enable Nvidia driver (normally done by nvidia-enable - does not work on LiveCD)
421
	echo -n "NVIDIA graphic card found. Enable the nvidia driver ${nvidia_version} ... " 
425
	echo -n "NVIDIA graphic card found. Enable the nvidia driver ${nvidia_version} ... " 
422
	NVLOG=/var/log/nvidia.log
426
	NVLOG=/var/log/nvidia.log
423
	# assuming that the kernel modules are already build 
427
	# assuming that the kernel modules are already build 
424
	# link to Nvidia libs
428
	# link to Nvidia libs
425
	ln -sf ../../usr/X11R6/$LIB/libGL.so.1.${nvidia_version} /usr/$LIB/libGL.so
429
	ln -sf ../../usr/X11R6/$LIB/libGL.so.1.${nvidia_version} /usr/$LIB/libGL.so
426
	ln -sf libGL.so.1.${nvidia_version} /usr/X11R6/$LIB/libGL.so
430
	ln -sf libGL.so.1.${nvidia_version} /usr/X11R6/$LIB/libGL.so
427
	mv /usr/X11R6/$LIB/modules/extensions/libGLcore.a /usr/X11R6/$LIB/modules/extensions/xxx.libGLcore.a.saved_by_nvidia
431
	mv /usr/X11R6/$LIB/modules/extensions/libGLcore.a /usr/X11R6/$LIB/modules/extensions/xxx.libGLcore.a.saved_by_nvidia
428
	mv /usr/X11R6/$LIB/modules/extensions/libglx.a /usr/X11R6/$LIB/modules/extensions/xxx.libglx.a.saved_by_nvidia
432
	mv /usr/X11R6/$LIB/modules/extensions/libglx.a /usr/X11R6/$LIB/modules/extensions/xxx.libglx.a.saved_by_nvidia
429
	ln -sf libglx.so.1.${nvidia_version} /usr/X11R6/$LIB/modules/extensions/libglx.so
433
	ln -sf libglx.so.1.${nvidia_version} /usr/X11R6/$LIB/modules/extensions/libglx.so
430
	# reconfigure X
434
	# reconfigure X
431
	/usr/sbin/nvidia-xconfig >> $NVLOG 2>&1
435
	/usr/sbin/nvidia-xconfig >> $NVLOG 2>&1
432
	if [ $PSI ]; then
436
	if [ $PSI ]; then
433
	    echo 'NVIDIA=on' >> /etc/sysconfig/cfengine
437
	    echo 'NVIDIA=on' >> /etc/sysconfig/cfengine
434
	fi
438
	fi
435
	echo "ok."
439
	echo "ok."
436
    fi
440
    fi
437
fi
441
fi
438
 
442
 
439
### set special video driver options for Intel Mobile
443
### set special video driver options for Intel Mobile
440
 
444
 
441
#   (external VGA output: Clone)
445
#   (external VGA output: Clone)
442
if [ $I915GM ] || [ $I855GM ]; then
446
if [ $I915GM ] || [ $I855GM ]; then
443
    sed -e "/Section[ \t]*\"Device\"/,/EndSection/{
447
    sed -e "/Section[ \t]*\"Device\"/,/EndSection/{
444
     /^[ \t]*Option[ \t]*\"MonitorLayout\"/d
448
     /^[ \t]*Option[ \t]*\"MonitorLayout\"/d
445
     /^[ \t]*Option[ \t]*\"Clone/d
449
     /^[ \t]*Option[ \t]*\"Clone/d
446
     /EndSection/i\\
450
     /EndSection/i\\
447
        Option      \"MonitorLayout\" \"CRT,LFP\"\\
451
        Option      \"MonitorLayout\" \"CRT,LFP\"\\
448
        Option      \"Clone\" \"1\"\\
452
        Option      \"Clone\" \"1\"\\
449
        Option      \"CloneRefresh\" \"60\"
453
        Option      \"CloneRefresh\" \"60\"
450
     }" -i $XORG_CONF
454
     }" -i $XORG_CONF
451
fi
455
fi
452
 
456
 
453
# Set BoardName for Intel 915GM
457
# Set BoardName for Intel 915GM
454
if [ $I915GM ]; then
458
if [ $I915GM ]; then
455
    sed -i 's/BoardName.*VESA driver.*/BoardName   "Intel 915"/' $XORG_CONF
459
    sed -i 's/BoardName.*VESA driver.*/BoardName   "Intel 915"/' $XORG_CONF
456
fi
460
fi
457
 
461
 
458
 
462
 
459
### parameter KB = KEYBOARD
463
### parameter KB = KEYBOARD
460
KEYBOARD=$KB
464
KEYBOARD=$KB
461
 
465
 
462
### ask user for keyboard layout if no keyboard given
466
### ask user for keyboard layout if no keyboard given
463
if [ -x /usr/bin/system-config-keyboard ]; then
467
if [ -x /usr/bin/system-config-keyboard ]; then
464
    if [ ! $KEYBOARD ]; then
468
    if [ ! $KEYBOARD ]; then
465
	MORE_LAYOUTS="more..."
469
	MORE_LAYOUTS="more..."
466
	keytables="U.S...........(us) \
470
	keytables="U.S...........(us) \
467
	           Swiss-German..(sg-latin1) \
471
	           Swiss-German..(sg-latin1) \
468
                   Swiss-French..(fr_CH-latin1) \
472
                   Swiss-French..(fr_CH-latin1) \
469
                   German........(de-latin1) \
473
                   German........(de-latin1) \
470
                   Japanese......(jp106) \
474
                   Japanese......(jp106) \
471
                   $MORE_LAYOUTS"
475
                   $MORE_LAYOUTS"
472
	PS3="-> "
476
	PS3="-> "
473
	echo
477
	echo
474
	echo "Please choose keyboard layout (type 1-6):"
478
	echo "Please choose keyboard layout (type 1-6):"
475
	select KEYBOARD in $keytables;
479
	select KEYBOARD in $keytables;
476
	  do
480
	  do
477
	     case $KEYBOARD in
481
	     case $KEYBOARD in
478
	        *)
482
	        *)
479
	        # extract keyboard layout string from $KEYBOARD
483
	        # extract keyboard layout string from $KEYBOARD
480
	        KEYBOARD=${KEYBOARD##*(}
484
	        KEYBOARD=${KEYBOARD##*(}
481
                KEYBOARD=${KEYBOARD%%)}
485
                KEYBOARD=${KEYBOARD%%)}
482
                break
486
                break
483
                ;;
487
                ;;
484
	     esac
488
	     esac
485
	  done
489
	  done
486
    fi
490
    fi
487
fi
491
fi
488
 
492
 
489
### set keyboard
493
### set keyboard
490
if [ -x /usr/bin/system-config-keyboard ]; then
494
if [ -x /usr/bin/system-config-keyboard ]; then
491
    if [ "$KEYBOARD" = "$MORE_LAYOUTS" ]; then
495
    if [ "$KEYBOARD" = "$MORE_LAYOUTS" ]; then
492
	system-config-keyboard --text
496
	system-config-keyboard --text
493
    else
497
    else
494
	echo -n "Set keyboard to '$KEYBOARD', please wait ... "
498
	echo -n "Set keyboard to '$KEYBOARD', please wait ... "
495
	system-config-keyboard --noui $KEYBOARD >/dev/null 2>&1
499
	system-config-keyboard --noui $KEYBOARD >/dev/null 2>&1
496
	echo "done."
500
	echo "done."
497
    fi
501
    fi
498
    echo
502
    echo
499
fi
503
fi
500
 
504
 
501
### update AFS users and SEPP links (only for PSI)
505
### update AFS users and SEPP links (only for PSI)
502
if [ $PSI ] && [ $AFS ]; then
506
if [ $PSI ] && [ $AFS ]; then
503
    echo "Update AFS users and SEPP links..."
507
    echo "Update AFS users and SEPP links..."
504
    [ -x /afs/psi.ch/sys/common/update_user.pl ] && /afs/psi.ch/sys/common/update_user.pl >/dev/null 2>&1 &
508
    [ -x /afs/psi.ch/sys/common/update_user.pl ] && /afs/psi.ch/sys/common/update_user.pl >/dev/null 2>&1 &
505
    [ -x /afs/psi.ch/sys/common/update_sepp.pl ] && /afs/psi.ch/sys/common/update_sepp.pl >/dev/null 2>&1 &
509
    [ -x /afs/psi.ch/sys/common/update_sepp.pl ] && /afs/psi.ch/sys/common/update_sepp.pl >/dev/null 2>&1 &
506
    echo
510
    echo
507
fi
511
fi
508
 
512
 
509
### create local user, if "nolocal" is not set 
513
### create local user, if "nolocal" is not set 
510
if [ ! $NOLOCAL ]; then
514
if [ ! $NOLOCAL ]; then
511
 
515
 
512
    user=$LOCALUSER
516
    user=$LOCALUSER
513
    # execute useradd twice, to make it work (don't know why)
517
    # execute useradd twice, to make it work (don't know why)
514
    if [ $PSI ] && [ ! $NOADMIN ]; then
518
    if [ $PSI ] && [ ! $NOADMIN ]; then
515
	userdel -r $user 2>/dev/null
519
	userdel -r $user 2>/dev/null
516
	useradd -G $LocalAdminGroup $user 2>/dev/null
520
	useradd -G $LocalAdminGroup $user 2>/dev/null
517
	userdel -r $user 2>/dev/null
521
	userdel -r $user 2>/dev/null
518
	useradd -G $LocalAdminGroup $user
522
	useradd -G $LocalAdminGroup $user
519
    else
523
    else
520
	userdel -r $user 2>/dev/null
524
	userdel -r $user 2>/dev/null
521
	useradd $user 2>/dev/null
525
	useradd $user 2>/dev/null
522
	userdel -r $user 2>/dev/null
526
	userdel -r $user 2>/dev/null
523
	useradd $user
527
	useradd $user
524
    fi
528
    fi
525
 
529
 
526
    # only for PSI: change users's group to GID=UID+50000
530
    # only for PSI: change users's group to GID=UID+50000
527
    if [ $PSI ]; then
531
    if [ $PSI ]; then
528
	uid=$( id -u $user )
532
	uid=$( id -u $user )
529
	old_gid=$( id -g $user )
533
	old_gid=$( id -g $user )
530
	new_gid=$(( $old_gid + 50000 ))
534
	new_gid=$(( $old_gid + 50000 ))
531
        # fix /etc/group
535
        # fix /etc/group
532
	sed -i "s/${user}:x:${old_gid}:/${user}:x:${new_gid}:/" /etc/group
536
	sed -i "s/${user}:x:${old_gid}:/${user}:x:${new_gid}:/" /etc/group
533
        # fix /etc/passwd
537
        # fix /etc/passwd
534
	sed -i "s/${user}:x:${uid}:${old_gid}:/${user}:x:${uid}:${new_gid}:/" /etc/passwd
538
	sed -i "s/${user}:x:${uid}:${old_gid}:/${user}:x:${uid}:${new_gid}:/" /etc/passwd
535
        # fix perm of /home/${user)
539
        # fix perm of /home/${user)
536
	chgrp -R $user /home/${user}
540
	chgrp -R $user /home/${user}
537
    fi
541
    fi
538
fi
542
fi
539
 
543
 
540
### copy special files for PSI user l_psi
544
### copy special files for PSI user l_psi
541
if [ $PSI ] && [ ! $NOLOCAL ]; then
545
if [ $PSI ] && [ ! $NOLOCAL ]; then
542
    find /usr/share/${LOCALUSER}/ -maxdepth 1 -mindepth 1 2>/dev/null | \
546
    find /usr/share/${LOCALUSER}/ -maxdepth 1 -mindepth 1 2>/dev/null | \
543
    while read dir; do 
547
    while read dir; do 
544
	cp -a $dir /home/${LOCALUSER}/
548
	cp -a $dir /home/${LOCALUSER}/
545
    done
549
    done
546
    # set owner
550
    # set owner
547
    chown -R ${LOCALUSER}.${LOCALUSER} /home/${LOCALUSER}
551
    chown -R ${LOCALUSER}.${LOCALUSER} /home/${LOCALUSER}
548
fi
552
fi
549
 
553
 
550
### autostart kmix and krandrtray in KDE
554
### autostart kmix and krandrtray in KDE
551
if [ ! $NOLOCAL ]; then
555
if [ ! $NOLOCAL ]; then
552
    mkdir -p /home/${LOCALUSER}/.kde/Autostart
556
    mkdir -p /home/${LOCALUSER}/.kde/Autostart
553
    cp -a /usr/share/applications/kde/krandrtray.desktop /home/${LOCALUSER}/.kde/Autostart 2>/dev/null
557
    cp -a /usr/share/applications/kde/krandrtray.desktop /home/${LOCALUSER}/.kde/Autostart 2>/dev/null
554
    cp -a /usr/share/applications/kde/kmix.desktop /home/${LOCALUSER}/.kde/Autostart 2>/dev/null
558
    cp -a /usr/share/applications/kde/kmix.desktop /home/${LOCALUSER}/.kde/Autostart 2>/dev/null
555
    chown -R ${LOCALUSER}.${LOCALUSER} /home/${LOCALUSER}/.kde/Autostart
559
    chown -R ${LOCALUSER}.${LOCALUSER} /home/${LOCALUSER}/.kde/Autostart
556
fi
560
fi
557
 
561
 
558
### set password for root and local user
562
### set password for root and local user
559
if [ ! $NOPASSWD ]; then
563
if [ ! $NOPASSWD ]; then
560
    if [ ! $NOROOT ] || [ ! $NOLOCAL ]; then
564
    if [ ! $NOROOT ] || [ ! $NOLOCAL ]; then
561
	echo -n "Set password for "
565
	echo -n "Set password for "
562
	if [ ! $NOROOT ]; then
566
	if [ ! $NOROOT ]; then
563
	    echo -n "'root' "
567
	    echo -n "'root' "
564
	fi
568
	fi
565
	if [ ! $NOROOT ] && [ ! $NOLOCAL ]; then
569
	if [ ! $NOROOT ] && [ ! $NOLOCAL ]; then
566
	    echo -n "and "
570
	    echo -n "and "
567
	fi
571
	fi
568
	if [ ! $NOLOCAL ]; then
572
	if [ ! $NOLOCAL ]; then
569
	    echo -n "local user '$user' "
573
	    echo -n "local user '$user' "
570
	fi
574
	fi
571
	echo
575
	echo
572
 
576
 
573
	if [ ! $NOLOCAL ]; then
577
	if [ ! $NOLOCAL ]; then
574
	    echo "Login as local user '$user' with this password."
578
	    echo "Login as local user '$user' with this password."
575
	    echo
579
	    echo
576
	fi
580
	fi
577
 
581
 
578
        # set password, if not yet given by $PASSWD
582
        # set password, if not yet given by $PASSWD
579
	until [ $PASSWD ]; do
583
	until [ $PASSWD ]; do
580
	    echo -n "Password: "
584
	    echo -n "Password: "
581
	    read -s PASSWD
585
	    read -s PASSWD
582
	    echo
586
	    echo
583
	done
587
	done
584
	if [ ! $NOROOT ]; then
588
	if [ ! $NOROOT ]; then
585
	    echo $PASSWD | passwd --stdin root >/dev/null
589
	    echo $PASSWD | passwd --stdin root >/dev/null
586
	fi
590
	fi
587
	if [ ! $NOLOCAL ]; then
591
	if [ ! $NOLOCAL ]; then
588
	    echo $PASSWD | passwd --stdin $user >/dev/null
592
	    echo $PASSWD | passwd --stdin $user >/dev/null
589
	fi
593
	fi
590
	echo
594
	echo
591
    fi
595
    fi
592
 
596
 
593
else
597
else
594
    # set root and $LOCALUSER to empty password
598
    # set root and $LOCALUSER to empty password
595
    sed -i "s|^root:.*|root::12345:0:99999:1:::|" /etc/shadow
599
    sed -i "s|^root:.*|root::12345:0:99999:1:::|" /etc/shadow
596
    sed -i "s|^$LOCALUSER:.*|$LOCALUSER::12345:0:99999:1:::|" /etc/shadow
600
    sed -i "s|^$LOCALUSER:.*|$LOCALUSER::12345:0:99999:1:::|" /etc/shadow
597
fi
601
fi
598
 
602
 
599
### try to get hostname from DNS, if not yet defined
603
### try to get hostname from DNS, if not yet defined
600
if [ ! $HOSTNAME ]; then
604
if [ ! $HOSTNAME ]; then
601
    echo "Try to get hostname from DNS ..."
605
    echo "Try to get hostname from DNS ..."
602
    IP=$( /sbin/ip add show dev eth0 2>/dev/null | grep "inet " | cut -d" " -f6 | sed 's|/.*||' )
606
    IP=$( /sbin/ip add show dev eth0 2>/dev/null | grep "inet " | cut -d" " -f6 | sed 's|/.*||' )
603
    if [ "$IP" = "" ]; then
607
    if [ "$IP" = "" ]; then
604
	IP=$( /sbin/ip add show dev eth1 2>/dev/null | grep "inet " | cut -d" " -f6 | sed 's|/.*||' )
608
	IP=$( /sbin/ip add show dev eth1 2>/dev/null | grep "inet " | cut -d" " -f6 | sed 's|/.*||' )
605
    fi
609
    fi
606
    if [ "$IP" != "" ]; then
610
    if [ "$IP" != "" ]; then
607
	host -W 1 $IP >/dev/null 2>&1
611
	host -W 1 $IP >/dev/null 2>&1
608
	if [ "$?" = "0" ]; then
612
	if [ "$?" = "0" ]; then
609
	    HOSTNAME=$( host -W 1 $IP | cut -d" " -f 5 | cut -d"." -f 1 )
613
	    HOSTNAME=$( host -W 1 $IP | cut -d" " -f 5 | cut -d"." -f 1 )
610
	    if [ "$HOSTNAME" = "3(NXDOMAIN)" ]; then
614
	    if [ "$HOSTNAME" = "3(NXDOMAIN)" ]; then
611
		HOSTNAME=$DEFAULT_HOSTNAME
615
		HOSTNAME=$DEFAULT_HOSTNAME
612
	    fi	
616
	    fi	
613
	    if [ "$HOSTNAME" = "no" ]; then
617
	    if [ "$HOSTNAME" = "no" ]; then
614
		HOSTNAME=$DEFAULT_HOSTNAME
618
		HOSTNAME=$DEFAULT_HOSTNAME
615
	    fi	
619
	    fi	
616
	fi
620
	fi
617
    fi
621
    fi
618
fi
622
fi
619
 
623
 
620
### define default hostname, if $HOSTNAME still not yet set
624
### define default hostname, if $HOSTNAME still not yet set
621
if [ ! $HOSTNAME ]; then
625
if [ ! $HOSTNAME ]; then
622
    HOSTNAME=$DEFAULT_HOSTNAME
626
    HOSTNAME=$DEFAULT_HOSTNAME
623
fi
627
fi
624
 
628
 
625
### set hostname
629
### set hostname
626
export HOSTNAME=$HOSTNAME
630
export HOSTNAME=$HOSTNAME
627
hostname $HOSTNAME
631
hostname $HOSTNAME
628
sed -i "s/HOSTNAME=.*/HOSTNAME=${HOSTNAME}/" /etc/sysconfig/network
632
sed -i "s/HOSTNAME=.*/HOSTNAME=${HOSTNAME}/" /etc/sysconfig/network
629
if [ $PSI ]; then
633
if [ $PSI ]; then
630
    sed -i "s/hostname=.*/hostname=${HOSTNAME}.psi.ch/" /etc/ssmtp/ssmtp.conf
634
    sed -i "s/hostname=.*/hostname=${HOSTNAME}.psi.ch/" /etc/ssmtp/ssmtp.conf
631
    sed -i "s/HOSTNAME=.*/HOSTNAME=${HOSTNAME}/" /etc/sysconfig/cfengine
635
    sed -i "s/HOSTNAME=.*/HOSTNAME=${HOSTNAME}/" /etc/sysconfig/cfengine
632
fi
636
fi
633
for iface in eth0 eth1 eth2 eth3; do
637
for iface in eth0 eth1 eth2 eth3; do
634
    if [ -e /etc/sysconfig/network-scripts/ifcfg-${iface} ]; then
638
    if [ -e /etc/sysconfig/network-scripts/ifcfg-${iface} ]; then
635
	echo "DHCP_HOSTNAME=${HOSTNAME}" >> /etc/sysconfig/network-scripts/ifcfg-${iface}
639
	echo "DHCP_HOSTNAME=${HOSTNAME}" >> /etc/sysconfig/network-scripts/ifcfg-${iface}
636
    fi
640
    fi
637
done
641
done
638
 
642
 
639
echo "Hostname set to: $HOSTNAME"
643
echo "Hostname set to: $HOSTNAME"
640
echo
644
echo
641
 
645
 
642
### set cups server
646
### set cups server
643
if [ $CUPS ]; then
647
if [ $CUPS ]; then
644
    sed -i "s|.*ServerName .*|ServerName  $CUPS|" /etc/cups/client.conf
648
    sed -i "s|.*ServerName .*|ServerName  $CUPS|" /etc/cups/client.conf
645
fi
649
fi
646
 
650
 
647
### some magic: just access this file in order that it can be sourced later
651
### some magic: just access this file in order that it can be sourced later
648
ls -lag /etc/X11/xinit/xinitrc-common >/dev/null 2>&1
652
ls -lag /etc/X11/xinit/xinitrc-common >/dev/null 2>&1
649
 
653
 
650
### set keyboard for rdesktop
654
### set keyboard for rdesktop
651
if [ -e $XORG_CONF ]; then
655
if [ -e $XORG_CONF ]; then
652
    grep -q de_CH $XORG_CONF && RDESKTOP_OPT="-k de-ch"
656
    grep -q de_CH $XORG_CONF && RDESKTOP_OPT="-k de-ch"
653
    grep -q fr_CH $XORG_CONF && RDESKTOP_OPT="-k fr-ch"
657
    grep -q fr_CH $XORG_CONF && RDESKTOP_OPT="-k fr-ch"
654
    grep -q jp106 $XORG_CONF && RDESKTOP_OPT="-k ja"
658
    grep -q jp106 $XORG_CONF && RDESKTOP_OPT="-k ja"
655
fi
659
fi
656
 
660
 
657
if [ "$RDESKTOP_OPT" ]; then
661
if [ "$RDESKTOP_OPT" ]; then
658
    echo "alias rdesktop='rdesktop $RDESKTOP_OPT'" > /etc/profile.d/rdesktop.sh
662
    echo "alias rdesktop='rdesktop $RDESKTOP_OPT'" > /etc/profile.d/rdesktop.sh
659
    echo "export RDESKTOP_OPT='$RDESKTOP_OPT'" >> /etc/profile.d/rdesktop.sh
663
    echo "export RDESKTOP_OPT='$RDESKTOP_OPT'" >> /etc/profile.d/rdesktop.sh
660
    chmod 755 /etc/profile.d/rdesktop.sh
664
    chmod 755 /etc/profile.d/rdesktop.sh
661
fi
665
fi
662
 
666
 
663
### run setup script, if found in $CONFIG_FOLDER on $FOUND_RESTORE_MNT
667
### run setup script, if found in $CONFIG_FOLDER on $FOUND_RESTORE_MNT
664
if [ -r $CONFIG_FOLDER/setup ]; then
668
if [ -r $CONFIG_FOLDER/setup ]; then
665
    CONFIG_FOLDER=$CONFIG_FOLDER bash $CONFIG_FOLDER/setup
669
    CONFIG_FOLDER=$CONFIG_FOLDER bash $CONFIG_FOLDER/setup
666
fi
670
fi
667
 
671
 
668
### umount $FOUND_RESTORE_MNT
672
### umount $FOUND_RESTORE_MNT
669
if [ $FOUND_RESTORE_MNT ]; then
673
if [ $FOUND_RESTORE_MNT ]; then
670
    echo "Unmount $FOUND_RESTORE_MNT"
674
    echo "Unmount $FOUND_RESTORE_MNT"
671
    umount $FOUND_RESTORE_MNT 2>/dev/null
675
    umount $FOUND_RESTORE_MNT 2>/dev/null
672
    sleep 3
676
    sleep 3
673
fi
677
fi
674
 
678
 
675
### local home partition?
679
### local home partition?
676
if [ $HOMELOCAL ]; then
680
if [ $HOMELOCAL ]; then
677
    mv /home /home.old
681
    mv /home /home.old
678
    mkdir -p /mnt/home_par
682
    mkdir -p /mnt/home_par
679
    # which partition? which folder?
683
    # which partition? which folder?
680
    HOMEPAR=$( echo $HOMELOCAL | cut -d":" -f1 )
684
    HOMEPAR=$( echo $HOMELOCAL | cut -d":" -f1 )
681
    HOMEDIR=$( echo $HOMELOCAL | grep ":" | cut -d":" -f2 )
685
    HOMEDIR=$( echo $HOMELOCAL | grep ":" | cut -d":" -f2 )
682
    umount $HOMEPAR 2>/dev/null
686
    umount $HOMEPAR 2>/dev/null
683
    # mount it with option noatime, healthy for USB flash drives
687
    # mount it with option noatime, healthy for USB flash drives
684
    mount -o noatime -rw $HOMEPAR /mnt/home_par 2>/dev/null
688
    mount -o noatime -rw $HOMEPAR /mnt/home_par 2>/dev/null
685
    if [ "$?" != "0" ]; then
689
    if [ "$?" != "0" ]; then
686
	echo "ERROR: Could not mount read/write $HOMEPAR"
690
	echo "ERROR: Could not mount read/write $HOMEPAR"
687
	umount $HOMEPAR >/dev/null 2&>1
691
	umount $HOMEPAR >/dev/null 2&>1
688
	mv /home.old /home
692
	mv /home.old /home
689
    else
693
    else
690
	echo "$HOMEPAR mounted on /mnt/home_par"
694
	echo "$HOMEPAR mounted on /mnt/home_par"
691
	# link to new home
695
	# link to new home
692
	ln -s /mnt/home_par/$HOMEDIR /home
696
	ln -s /mnt/home_par/$HOMEDIR /home
693
	if [ ! -d /mnt/home_par/$HOMEDIR ]; then
697
	if [ ! -d /mnt/home_par/$HOMEDIR ]; then
694
	    echo "$HOMELOCAL not found on $HOMEPAR"
698
	    echo "$HOMELOCAL not found on $HOMEPAR"
695
	    echo mkdir -p /mnt/home_par/$HOMEDIR
699
	    echo mkdir -p /mnt/home_par/$HOMEDIR
696
	    if [ "$?" != "0" ]; then
700
	    if [ "$?" != "0" ]; then
697
		echo "ERROR: Could not create $HOMELOCAL on $HOMEPAR"
701
		echo "ERROR: Could not create $HOMELOCAL on $HOMEPAR"
698
		umount $HOMEPAR >/dev/null 2&>1
702
		umount $HOMEPAR >/dev/null 2&>1
699
		rm -f /home
703
		rm -f /home
700
		mv /home.old /home
704
		mv /home.old /home
701
	    else
705
	    else
702
		echo "Folder $HOMEDIR created on $HOMEPAR"
706
		echo "Folder $HOMEDIR created on $HOMEPAR"
703
	    fi
707
	    fi
704
	fi
708
	fi
705
	if [ -d /mnt/home_par/$HOMEDIR ]; then
709
	if [ -d /mnt/home_par/$HOMEDIR ]; then
706
	    echo "/home is linked to /mnt/home_par${HOMEDIR}"
710
	    echo "/home is linked to /mnt/home_par${HOMEDIR}"
707
	    # copy files from /home.old to /home, which are not yet there
711
	    # copy files from /home.old to /home, which are not yet there
708
	    /bin/cp -a -i --reply=no /home.old/* /home/ 
712
	    /bin/cp -a -i --reply=no /home.old/* /home/ 
709
	    rm -rf /home.old
713
	    rm -rf /home.old
710
	fi
714
	fi
711
    fi
715
    fi
712
    sleep 2
716
    sleep 2
713
fi
717
fi
714
 
718
 
715
### mount all if AUTOMOUNT set
719
### mount all if AUTOMOUNT set
716
if [ $AUTOMOUNT ]; then
720
if [ $AUTOMOUNT ]; then
717
    mount -a
721
    mount -a
718
fi
722
fi
719
 
723
 
720
### unmute all mixers and set volumes
724
### unmute all mixers and set volumes
721
if [ -x /usr/bin/set-volume ]; then 
725
if [ -x /usr/bin/set-volume ]; then 
722
    if [ $NOSOUND ]; then
726
    if [ $NOSOUND ]; then
723
	/usr/bin/set-volume 0 > /var/log/set-volume.log 2>&1 &
727
	/usr/bin/set-volume 0 > /var/log/set-volume.log 2>&1 &
724
    else
728
    else
725
	/usr/bin/set-volume 60 > /var/log/set-volume.log 2>&1 &
729
	/usr/bin/set-volume 60 > /var/log/set-volume.log 2>&1 &
726
    fi
730
    fi
727
fi
731
fi
728
 
732
 
729
### set kde or gnome as desktop
733
### set kde or gnome as desktop
730
if [ $KDE ]; then
734
if [ $KDE ]; then
731
    sed -i "/^DESKTOP=.*/d" /etc/sysconfig/desktop 2&>/dev/null
735
    sed -i "/^DESKTOP=.*/d" /etc/sysconfig/desktop 2&>/dev/null
732
    echo "DESKTOP=KDE" >> /etc/sysconfig/desktop
736
    echo "DESKTOP=KDE" >> /etc/sysconfig/desktop
733
fi
737
fi
734
if [ $GNOME ]; then
738
if [ $GNOME ]; then
735
    sed -i "/^DESKTOP=.*/d" /etc/sysconfig/desktop 2&>/dev/null
739
    sed -i "/^DESKTOP=.*/d" /etc/sysconfig/desktop 2&>/dev/null
736
    echo "DESKTOP=GNOME" >> /etc/sysconfig/desktop
740
    echo "DESKTOP=GNOME" >> /etc/sysconfig/desktop
737
fi
741
fi
738
 
742
 
739
### reload sound module (second time)
743
### reload sound module (second time)
740
reload_soundmodule
744
reload_soundmodule
-
 
745
 
-
 
746
### bring up all network interfaces (useful to enable WLAN devices)
-
 
747
if [ ! $NONET ]; then
-
 
748
    devices=$( ls /etc/sysconfig/network-scripts/ifcfg-* \
-
 
749
               | sed "s|/etc/sysconfig/network-scripts/ifcfg-||" | grep -v lo )
-
 
750
    for device in $devices; do
-
 
751
	ifconfig $device up > /dev/null 2>&1 &
-
 
752
    done
-
 
753
fi
-
 
754