Subversion Repositories livecd

Rev

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

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