1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
|
#!/bin/sh
#
# Copyright 1993,1994,1999 Patrick Volkerding, Moorhead, Minnesota USA
# Copyright 2001, 2003, 2004 Slackware Linux, Inc., Concord, CA
# Copyright 2006, 2007 Patrick Volkerding, Sebeka, Minnesota USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# As always, bug reports, suggestions, etc: volkerdi@slackware.com
#
# Modifications 2016 by Eric Hameleers <alien@slackware.com>
#
if [ ! -d /mnt/livemedia/@LIVEMAIN@/system ]; then
dialog --title "LIVE MEDIA NOT ACCESSIBLE" --msgbox "\
\n\
Before you can install software, complete the following tasks:\n\
\n\
1. Mount your Live media partition on /mnt/livemedia." 16 68
exit 1
fi
TMP=/var/log/setup/tmp
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
rm -f $TMP/SeT*
# If a keymap was set up, restore that data:
if [ -r $TMP/Pkeymap ]; then
cp $TMP/Pkeymap $TMP/SeTkeymap
fi
echo "on" > $TMP/SeTcolor # turn on color menus
PATH="$PATH:/usr/share/@LIVEMAIN@"
export PATH;
export COLOR=on
#echo
#echo
#echo "Probing disk partitions. (Hint: if your ATAPI CD-ROM causes timeouts"
#echo "during the probe process, try hitting the eject button)"
#echo
#sleep 5
#
# Before probing, activate any LVM partitions
# that may exist from before the boot:
vgchange -ay 1> /dev/null 2> /dev/null
if probe -l 2> /dev/null | grep -E 'Linux$' 1> /dev/null 2> /dev/null ; then
probe -l 2> /dev/null | grep -E 'Linux$' | sort 1> $TMP/SeTplist 2> /dev/null
else
dialog --title "NO LINUX PARTITIONS DETECTED" \
--msgbox "There don't seem to be any partitions on this machine of type \
Linux. You'll need to make at least one of these to install Linux. \
To do this, you'll need to leave 'setup', and make the partitions using \
'cfdisk' (MBR partitions) or 'cgdisk' (GPT partitions). For more \
information, read the 'setup' help file from the next menu." 10 64
fi
if [ -d /sys/firmware/efi ]; then
if ! probe -l 2> /dev/null | grep "EFI System Partition" 1> /dev/null 2> /dev/null ; then
dialog --title "NO EFI SYSTEM PARTITION DETECTED" \
--msgbox "This machine appears to be using EFI/UEFI, but no EFI System \
Partition was found. You'll need to make an EFI System Partition in order \
to boot from the hard drive. To do this, leave 'setup', and \
use 'cgdisk' to make a 100MB partition of type EF00. For more information, \
read the 'setup' help file from the next menu." 10 64
fi
fi
T_PX="/setup2hd"
mkdir -p ${T_PX}
echo "$T_PX" > $TMP/SeTT_PX
ROOT_DEVICE="`mount | grep "on / " | cut -f 1 -d ' '`"
echo "$ROOT_DEVICE" > $TMP/SeTrootdev
if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then # clear source
umount /var/log/mount # location
fi
# Anything mounted on /var/log/mount now is a fatal error:
if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then
echo "Can't umount /var/log/mount. Reboot machine and run setup again."
exit
fi
# If the mount table is corrupt, the above might not do it, so we will
# try to detect Linux and FAT32 partitions that have slipped by:
if [ -d /var/log/mount/lost+found -o -d /var/log/mount/recycled \
-o -r /var/log/mount/io.sys ]; then
echo "Mount table corrupt. Reboot machine and run setup again."
exit
fi
rm -f /var/log/mount 2> /dev/null
rmdir /var/log/mount 2> /dev/null
mkdir /var/log/mount 2> /dev/null
while [ 0 ]; do
dialog --title "Slackware Linux Setup (version current)" \
--menu \
"Welcome to Slackware Linux Setup (Live Edition).\n\
Select an option below using the UP/DOWN keys and SPACE or ENTER.\n\
Alternate keys may also be used: '+', '-', and TAB." 18 72 9 \
"HELP" "Read the Slackware Setup HELP file" \
"KEYMAP" "Remap your keyboard if you're not using a US one" \
"ADDSWAP" "Set up your swap partition(s)" \
"TARGET" "Set up your target partitions" \
"INSTALL" "Install Slackware Live to disk" \
"CONFIGURE" "Reconfigure your Linux system" \
"EXIT" "Exit Slackware Linux Setup" 2> $TMP/hdset
if [ ! $? = 0 ]; then
rm -f $TMP/hdset $TMP/SeT*
exit
fi
MAINSELECT="`cat $TMP/hdset`"
rm $TMP/hdset
# Start checking what to do. Some modules may reset MAINSELECT to run the
# next item in line.
if [ "$MAINSELECT" = "HELP" ]; then
SeTfdHELP
fi
if [ "$MAINSELECT" = "KEYMAP" ]; then
SeTkeymap
if [ -r $TMP/SeTkeymap ]; then
MAINSELECT="ADDSWAP"
fi
fi
if [ "$MAINSELECT" = "MAKE TAGS" ]; then
SeTmaketag
fi
if [ "$MAINSELECT" = "ADDSWAP" ]; then
SeTswap
if [ -r $TMP/SeTswap ]; then
MAINSELECT="TARGET"
elif [ -r $TMP/SeTswapskip ]; then
# Go ahead to TARGET without swap space:
MAINSELECT="TARGET"
fi
fi
if [ "$MAINSELECT" = "TARGET" ]; then
SeTpartitions
SeTEFI
SeTDOS
if [ -r $TMP/SeTnative ]; then
MAINSELECT="INSTALL"
fi
fi
if [ "$MAINSELECT" = "INSTALL" ]; then
if [ ! -r $TMP/SeTnative ]; then
dialog --title "CANNOT INSTALL SOFTWARE YET" --msgbox "\
\n\
Before you can install software, complete the following tasks:\n\
\n\
1. Set up your target Linux partition(s).\n\
\n\
You may also optionally remap your keyboard and set up your\n\
swap partition(s). \n\
\n\
Press ENTER to return to the main menu." 16 68
continue
fi
# --------------------------------------------- #
# Slackware Live Edition - install to disk: #
# --------------------------------------------- #
ACT_MODS=$(ls -rt --indicator-style=none /mnt/live/modules/ |wc -l)
TOT_MODS=$(find /mnt/livemedia/@LIVEMAIN@/ -type f -name "*.sxz" |wc -l)
DU_MODS=0
let DU_MODS=DU_MODS+$(du -s /mnt/livemedia/@LIVEMAIN@/system/ |tr -s '\t' ' ' |cut -f1 -d' ')
let DU_MODS=DU_MODS+$(du -s /mnt/livemedia/@LIVEMAIN@/addons/ |tr -s '\t' ' ' |cut -f1 -d' ')
let DU_MODS=DU_MODS+$(du -s /mnt/livemedia/@LIVEMAIN@/optional/ |tr -s '\t' ' ' |cut -f1 -d' ')
(
GAUGE=0
NUM_MOD=0
SIZ_MOD=0
# Take all modules mounted in the Live OS, and install them in that order:
for LIVE_MOD_BASE in $(ls -rt --indicator-style=none /mnt/live/modules/) ; do
# Do not install 0099-slackware_zzzconf-*.sxz:
if echo ${LIVE_MOD_BASE} |grep -q "zzzconf" ; then
continue
fi
# Could be system, addons or optional:
LIVE_MOD=$(find /mnt/livemedia/@LIVEMAIN@/ -type f -name ${LIVE_MOD_BASE}.sxz)
echo "XXX"
echo "$GAUGE"
echo ""
echo "Processed ${NUM_MOD} of ${TOT_MODS} Slackware Live modules ($(( $SIZ_MOD/1024 )) of $(( $DU_MODS/1024 )) MB)\nProcessing ${LIVE_MOD_BASE} ..."
echo "XXX"
unsquashfs -f -dest $T_PX ${LIVE_MOD} 1>>$TMP/unsquash_output 2>>$TMP/unsquash_error
let NUM_MOD=NUM_MOD+1
let SIZ_MOD=SIZ_MOD+$(du -s $LIVE_MOD |tr -s '\t' ' ' |cut -f1 -d' ')
GAUGE=$(( (100 * ${SIZ_MOD})/${DU_MODS} ))
echo "$GAUGE"
done
) | dialog --title "INSTALLING SLACKWARE @LIVEDE@ LIVE TO DISK" --gauge \
"\nProcessing ${TOT_MODS} Slackware Live modules..." 8 65
# Re-use some of the custom configuration from 0099-slackware_zzzconf-*.sxz
# (some of these may not be present but the command will not fail):
dialog --title "POST-INSTALL SLACKWARE @LIVEDE@ LIVE DATA" --infobox \
"\nCopying Live modifications to hard disk ..." 5 65
# Do not overwrite a custom keymap:
if [ ! -f $T_PX/etc/rc.d/rc.keymap ]; then
unsquashfs -f -dest $T_PX /mnt/livemedia/@LIVEMAIN@/system/0099*zzzconf*.sxz \
/etc/rc.d/rc.keymap
fi
unsquashfs -f -dest $T_PX /mnt/livemedia/@LIVEMAIN@/system/0099*zzzconf*.sxz \
/etc/profile.d/lang.sh \
/etc/slackpkg \
/etc/X11/xorg.conf.d/30-keyboard.conf \
/etc/X11/xdm/liveslak-xdm
# Point xdm to the custom /etc/X11/xdm/liveslak-xdm/xdm-config:
sed -i ${T_PX}/etc/rc.d/rc.4 -e 's,bin/xdm -nodaemon,& -config /etc/X11/xdm/liveslak-xdm/xdm-config,'
cat << EOF > $TMP/tempmsg
Slackware @LIVEDE@ Live Edition has been installed to your hard drive!
We installed the ${ACT_MODS} active modules (out of ${TOT_MODS} available).
If present, the following files were copied from the Live OS to your harddisk:
/etc/profile.d/lang.sh
/etc/rc.d/rc.keymap
/etc/slackpkg
/etc/X11/xorg.conf.d/30-keyboard.conf
/etc/X11/xdm/liveslak-xdm
After finishing system configuration and before rebooting, you can add any further Live modules from /@LIVEMAIN@/addons/ and /@LIVEMAIN@/optional/ to your hard drive, using a command similar to this:
# unsquashfs -f -dest $T_PX /mnt/livemedia/@LIVEMAIN@/addons/some_module.sxz
EOF
dialog --title "POST INSTALL HINTS AND TIPS" --msgbox "`cat $TMP/tempmsg`" \
20 65
rm $TMP/tempmsg
# --------------------------------------------- #
# Slackware Live Edition - end install to disk: #
# --------------------------------------------- #
MAINSELECT="CONFIGURE"
fi
if [ "$MAINSELECT" = "CONFIGURE" ]; then
SeTconfig
REPLACE_FSTAB=Y
if [ -r $TMP/SeTnative ]; then
if [ -r $T_PX/etc/fstab ]; then
dialog --title "REPLACE /etc/fstab?" --yesno "You already have an \
/etc/fstab on your install partition. If you were just adding software, \
you should probably keep your old /etc/fstab. If you've changed your \
partitioning scheme, you should use the new /etc/fstab. Do you want \
to replace your old /etc/fstab with the new one?" 10 58
if [ ! $? = 0 ]; then
REPLACE_FSTAB=N
fi
fi
if [ "$REPLACE_FSTAB" = "Y" ]; then
cat /dev/null > $T_PX/etc/fstab
if [ -r $TMP/SeTswap ]; then
cat $TMP/SeTswap > $T_PX/etc/fstab
fi
cat $TMP/SeTnative >> $T_PX/etc/fstab
if [ -r $TMP/SeTDOS ]; then
cat $TMP/SeTDOS >> $T_PX/etc/fstab
fi
printf "%-16s %-16s %-11s %-16s %-3s %s\n" "#/dev/cdrom" "/mnt/cdrom" "auto" "noauto,owner,ro,comment=x-gvfs-show" "0" "0" >> $T_PX/etc/fstab
printf "%-16s %-16s %-11s %-16s %-3s %s\n" "/dev/fd0" "/mnt/floppy" "auto" "noauto,owner" "0" "0" >> $T_PX/etc/fstab
printf "%-16s %-16s %-11s %-16s %-3s %s\n" "devpts" "/dev/pts" "devpts" "gid=5,mode=620" "0" "0" >> $T_PX/etc/fstab
printf "%-16s %-16s %-11s %-16s %-3s %s\n" "proc" "/proc" "proc" "defaults" "0" "0" >> $T_PX/etc/fstab
printf "%-16s %-16s %-11s %-16s %-3s %s\n" "tmpfs" "/dev/shm" "tmpfs" "defaults" "0" "0" >> $T_PX/etc/fstab
fi
dialog --title "SETUP COMPLETE" --msgbox "System configuration \
and installation is complete. \
\n\nYou may now reboot your system." 7 55
fi
fi
if [ "$MAINSELECT" = "EXIT" ]; then
break
fi
done # end of main loop
sync
chmod 755 $T_PX
if [ -d $T_PX/tmp ]; then
chmod 1777 $T_PX/tmp
fi
if mount | grep /var/log/mntiso 1> /dev/null 2> /dev/null ; then
umount -f /var/log/mntiso
fi
if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then
umount /var/log/mount
fi
# Anything mounted on /var/log/mount now is a fatal error:
if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then
exit
fi
# If the mount table is corrupt, the above might not do it, so we will
# try to detect Linux and FAT32 partitions that have slipped by:
if [ -d /var/log/mount/lost+found -o -d /var/log/mount/recycled \
-o -r /var/log/mount/io.sys ]; then
exit
fi
rm -f /var/log/mount 2> /dev/null
rmdir /var/log/mount 2> /dev/null
mkdir /var/log/mount 2> /dev/null
chmod 755 /var/log/mount
# An fstab file is indicative of an OS installation, rather than
# just loading the "setup" script and selecting "EXIT"
if [ -f ${T_PX}/etc/fstab ]; then
# umount CD:
if [ -r $TMP/SeTCDdev ]; then
if mount | grep iso9660 > /dev/null 2> /dev/null ; then
umount `mount | grep iso9660 | cut -f 1 -d ' '`
fi
eject -s `cat $TMP/SeTCDdev`
# Tell the user to remove the disc, if one had previously been mounted
# (it should now be ejected):
dialog \
--clear \
--title "Slackware Linux Setup is complete" "$@" \
--msgbox "\nPlease remove the installation disc.\n" 7 40
fi
# Offer to reboot or drop to shell:
dialog \
--title "Slackware Linux Setup is complete" "$@" \
--yesno \
"\nWould you like to reboot your system?\n\n\n\
If you choose \"No\", you will be dropped to a shell.\n" 11 50
retval=$?
if [ $retval = 1 ]; then
clear
echo
echo "You may now reboot your system once you are ready."
echo "You can issue the 'reboot' command; or if your system has"
echo "a keyboard attached, you can use the key combination: control+alt+delete"
echo
else
touch /reboot
fi
fi
# Fix the date:
fixdate
# final cleanup
rm -f $TMP/tagfile $TMP/SeT* $TMP/tar-error $TMP/unsquash_output $TMP/unsquash_error $TMP/PKGTOOL_REMOVED
rm -f /var/log/mount/treecache
rmdir /var/log/mntiso 2>/dev/null
rm -rf $TMP/treecache
rm -rf $TMP/pkgcache
rmdir ${T_PX}/tmp/orbit-root 2> /dev/null
# If the OS had been installed and the user elected to reboot:
if [ -f /reboot ]; then
clear
echo "** Starting reboot **"
sleep 1
reboot
fi
# end slackware setup script
|