2023-01-19 01:40:12 +01:00
|
|
|
#!/bin/bash
|
2018-06-07 00:19:01 +02:00
|
|
|
#
|
|
|
|
# Copyright 1993, 1994, 1999 Patrick Volkerding, Moorhead, Minnesota USA
|
|
|
|
# Copyright 2001, 2003, 2004 Slackware Linux, Inc., Concord, CA
|
2023-01-19 01:40:12 +01:00
|
|
|
# Copyright 2006, 2007, 2018, 2021, 2022, 2023 Patrick Volkerding, Sebeka, Minnesota USA
|
2018-06-07 00:19:01 +02:00
|
|
|
# All rights reserved.
|
|
|
|
#
|
2023-01-19 01:40:12 +01:00
|
|
|
# Redistribution and use of this script, with or without modification, is
|
2018-06-07 00:19:01 +02:00
|
|
|
# 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
|
2023-01-19 01:40:12 +01:00
|
|
|
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
2018-06-07 00:19:01 +02:00
|
|
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
2023-01-19 01:40:12 +01:00
|
|
|
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
2018-06-07 00:19:01 +02:00
|
|
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
|
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
2023-01-19 01:40:12 +01:00
|
|
|
# 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
|
2018-06-07 00:19:01 +02:00
|
|
|
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
#
|
|
|
|
# As always, bug reports, suggestions, etc: volkerdi@slackware.com
|
|
|
|
#
|
|
|
|
TMP=/var/log/setup/tmp
|
|
|
|
if [ ! -d $TMP ]; then
|
|
|
|
mkdir -p $TMP
|
|
|
|
fi
|
|
|
|
# Wipe the probe md5sum to force rescanning partitions if setup is restarted:
|
|
|
|
rm -f $TMP/SeTpartition.md5
|
|
|
|
## FLOPPY? Comment out this obsolete code. We ain't gonna need it.
|
|
|
|
## Use /tmp on floppy for now:
|
|
|
|
#/usr/lib/setup/unmigrate.sh
|
|
|
|
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/lib/setup"
|
|
|
|
export PATH;
|
|
|
|
export COLOR=on
|
|
|
|
dialog --backtitle "Slackware Linux Setup" --infobox "\n
|
|
|
|
Scanning your system for partition information...\n
|
|
|
|
\n" 5 55
|
|
|
|
# In case the machine is full of fast SSDs:
|
|
|
|
sleep 1
|
|
|
|
# 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
|
2021-04-30 20:09:21 +02:00
|
|
|
probe -l 2> /dev/null | grep -E 'Linux$' | sort | uniq 1> $TMP/SeTplist 2> /dev/null
|
2018-06-07 00:19:01 +02:00
|
|
|
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
|
2023-03-21 22:18:59 +01:00
|
|
|
# First, let's make sure that efivarfs is active:
|
|
|
|
if [ "$(/bin/ls /sys/firmware/efi/efivars 2> /dev/null | wc -l)" = "0" ]; then
|
|
|
|
mount -t efivarfs none /sys/firmware/efi/efivars
|
|
|
|
fi
|
2018-06-07 00:19:01 +02:00
|
|
|
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="/mnt"
|
|
|
|
echo "$T_PX" > $TMP/SeTT_PX
|
|
|
|
ROOT_DEVICE="`mount | grep "on / " | cut -f 1 -d ' '`"
|
|
|
|
echo "$ROOT_DEVICE" > $TMP/SeTrootdev
|
2019-01-23 05:39:04 +01:00
|
|
|
if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then # clear source location:
|
|
|
|
# In case of bind mounts, try to unmount them first:
|
|
|
|
umount /var/log/mount/dev 2> /dev/null
|
|
|
|
umount /var/log/mount/proc 2> /dev/null
|
|
|
|
umount /var/log/mount/sys 2> /dev/null
|
|
|
|
# Unmount target partition:
|
|
|
|
umount /var/log/mount
|
2018-06-07 00:19:01 +02:00
|
|
|
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
|
|
|
|
|
2023-01-19 01:40:12 +01:00
|
|
|
dialog --title "Slackware Linux Setup (version 15.1)" \
|
2018-06-07 00:19:01 +02:00
|
|
|
--menu \
|
|
|
|
"Welcome to Slackware Linux Setup.\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" \
|
|
|
|
"SOURCE" "Select source media" \
|
|
|
|
"SELECT" "Select categories of software to install" \
|
|
|
|
"INSTALL" "Install selected software" \
|
|
|
|
"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="SOURCE"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$MAINSELECT" = "SOURCE" ]; then
|
|
|
|
SeTmedia
|
|
|
|
if [ -r $TMP/SeTsource ]; then
|
|
|
|
MAINSELECT="SELECT"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$MAINSELECT" = "SELECT" ]; then
|
|
|
|
if [ -r /var/log/mount/isolinux/setpkg ]; then
|
|
|
|
sh /var/log/mount/isolinux/setpkg
|
|
|
|
else
|
|
|
|
SeTPKG
|
|
|
|
fi
|
|
|
|
if [ -r $TMP/SeTSERIES ]; then
|
|
|
|
MAINSELECT="INSTALL"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$MAINSELECT" = "INSTALL" ]; then
|
|
|
|
if [ ! -r $TMP/SeTSERIES -o ! -r $TMP/SeTsource -o ! -r $TMP/SeTnative ]; then
|
|
|
|
dialog --title "CANNOT INSTALL SOFTWARE YET" --msgbox "\
|
|
|
|
\n\
|
|
|
|
Before you can install software, complete the following tasks:\n\
|
|
|
|
\n\
|
|
|
|
1. Select your source media.\n\
|
|
|
|
2. Set up your target Linux partition(s).\n\
|
|
|
|
3. Select which software categories to install.\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
|
|
|
|
SERIES="`cat $TMP/SeTSERIES`"
|
|
|
|
SOURCE_DEVICE="`cat $TMP/SeTsource`"
|
|
|
|
IGNORE_TAGFILES=""
|
|
|
|
while [ 0 ]; do
|
|
|
|
dialog --title "SELECT PROMPTING MODE" --default-item "terse" --menu \
|
|
|
|
"Now you must select the type of prompts you'd like to see during the \
|
|
|
|
installation process. If you have the drive space, the 'full' option \
|
|
|
|
is quick, easy, and by far the most foolproof choice. The 'newbie' \
|
|
|
|
mode provides the most information but is much more time-consuming \
|
|
|
|
(presenting the packages one by one) than the menu-based choices. \
|
|
|
|
Otherwise, you can pick packages from menus \
|
|
|
|
using 'expert' or 'menu' mode. Which type of prompting would you like \
|
|
|
|
to use?" \
|
|
|
|
20 76 7 \
|
2021-04-12 22:07:12 +02:00
|
|
|
"full" "Install everything (15+ GB of software, RECOMMENDED!)" \
|
2018-06-07 00:19:01 +02:00
|
|
|
"terse" "Like 'full', but display one line per package during install" \
|
|
|
|
"menu" "Choose individual packages from interactive menus" \
|
|
|
|
"expert" "This is actually the same as the \"menu\" option" \
|
|
|
|
"newbie" "Use verbose prompting (the X series takes one year)" \
|
|
|
|
"custom" "Use custom tagfiles in the package directories" \
|
|
|
|
"tagpath" "Use tagfiles in the subdirectories of a custom path" \
|
|
|
|
"help" "Read the prompt mode help file" 2> $TMP/SeTpmode
|
|
|
|
if [ ! $? = 0 ]; then
|
|
|
|
rm -f $TMP/SeTpmode
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
MODE="`cat $TMP/SeTpmode`"
|
|
|
|
rm -f $TMP/SeTtagext
|
|
|
|
if [ "$MODE" = "help" ]; then
|
|
|
|
dialog --title "PROMPT MODE HELP" --exit-label OK --textbox "/usr/lib/setup/PROMPThelp" 19 65
|
|
|
|
fi
|
|
|
|
if [ "$MODE" = "tagpath" ]; then
|
|
|
|
dialog --title "PROVIDE A CUSTOM PATH TO YOUR TAGFILES" --inputbox \
|
|
|
|
"If you're installing from CD or DVD, it's impossible to edit the \
|
|
|
|
tagfiles that are in the package directories. In this case, you might \
|
|
|
|
want to provide a path to your custom tagfiles. As an example, you \
|
|
|
|
could create a /tagfiles directory and mount a floppy disk containing \
|
|
|
|
the tagfiles on that directory. Then you'd enter '/tagfiles' at the \
|
|
|
|
prompt below. The setup program will look for your tagfile in \
|
|
|
|
SUBDIRECTORIES of the path you provide, such as /tagfiles/a, \
|
|
|
|
/tagfiles/ap, /tagfiles/d, and so on. You only need to provide a \
|
|
|
|
subdirectory and tagfile for the first disk of each series to be \
|
|
|
|
installed. If a custom tagfile is not found at the path you provide, \
|
|
|
|
setup will revert to the default tagfiles. Please enter the path to your \
|
|
|
|
custom tagfiles:" \
|
|
|
|
19 71 2> $TMP/SeTtagpath
|
|
|
|
if [ ! $? = 0 ]; then
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
if [ -r $TMP/SeTtagpath ]; then
|
|
|
|
if [ "`cat $TMP/SeTtagpath`" = "" ]; then
|
|
|
|
rm -f $TMP/SeTtagpath
|
|
|
|
elif [ ! -d "$(cat $TMP/SeTtagpath)" ]; then
|
|
|
|
dialog --title "NOT A VALID DIRECTORY" --msgbox \
|
|
|
|
"Sorry, but the $(cat $TMP/SeTtagpath) directory could not be located. \
|
|
|
|
Press ENTER to go back to the SELECT PROMPTING MODE menu." \
|
|
|
|
7 65
|
|
|
|
rm -f $TMP/SeTtagpath
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
if [ "$MODE" = "newbie" ]; then
|
|
|
|
dialog --infobox "'newbie' prompt mode selected. Using default tagfiles \
|
|
|
|
and verbose package prompting." 4 50
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
if [ "$MODE" = "custom" ]; then
|
|
|
|
dialog --title "ENTER CUSTOM EXTENSION" --inputbox "Now, enter the custom \
|
|
|
|
extension you have used for your tagfiles. This must be a valid MS-DOS format \
|
|
|
|
file extension consisting of a period followed by three characters. For \
|
|
|
|
example, I use '.pat'. You might see my tagfiles on your disks. :^)" \
|
|
|
|
12 60 2> $TMP/SeTtagext
|
|
|
|
if [ ! $? = 0 ]; then
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
if [ -r $TMP/SeTtagext ]; then
|
|
|
|
if [ "`cat $TMP/SeTtagext`" = "" ]; then
|
|
|
|
rm -f $TMP/SeTtagext
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
dialog --infobox "'custom' prompt mode selected. Using prompting defaults \
|
|
|
|
found in custom tagfiles." 4 50
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
if [ "$MODE" = "full" ]; then
|
|
|
|
IGNORE_TAGFILES="-ignore_tagfiles"
|
|
|
|
dialog --infobox "Full installation mode. Installing all software \
|
|
|
|
packages without prompting." 4 45
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
if [ "$MODE" = "terse" ]; then
|
|
|
|
setterm -background cyan -foreground black -blank 0
|
|
|
|
clear
|
|
|
|
IGNORE_TAGFILES="-ignore_tagfiles"
|
|
|
|
echo
|
|
|
|
echo
|
|
|
|
echo "Full (terse display) installation mode."
|
|
|
|
echo
|
|
|
|
echo "A one-line description will be displayed as each package is installed."
|
|
|
|
echo
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
if [ "$MODE" = "menu" ]; then
|
|
|
|
dialog --infobox "'menu' prompt mode selected. Using interactive menus \
|
|
|
|
to choose subsystems of related packages." 4 60
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
if [ "$MODE" = "expert" ]; then
|
|
|
|
dialog --infobox "'expert' prompt mode selected. Using interactive menus \
|
|
|
|
to choose packages individually." 4 60
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
export MAKETAG;
|
|
|
|
sleep 1
|
2018-11-28 08:25:32 +01:00
|
|
|
# On a new system, make /etc/mtab a symlink to /proc/mounts:
|
|
|
|
if [ ! -r $T_PX/etc/mtab ]; then
|
|
|
|
mkdir -p $T_PX/etc
|
|
|
|
( cd $T_PX/etc ; ln -sf /proc/mounts mtab )
|
|
|
|
fi
|
|
|
|
# Do the package install:
|
2018-06-07 00:19:01 +02:00
|
|
|
if [ -r $TMP/SeTCDdev ]; then # only try to remount media if it's a CD/DVD
|
|
|
|
slackinstall --device `cat $TMP/SeTCDdev` --promptmode $MODE --srcpath `cat $TMP/SeTDS` --mountpoint /var/log/mount --target $T_PX --series $SERIES
|
|
|
|
elif [ -r $TMP/SeTremotesvr ]; then
|
|
|
|
slackinstall --device noremount --promptmode $MODE --srcpath `cat $TMP/SeTDS` --mountpoint /var/log/mount --target $T_PX --series $SERIES --net `cat $TMP/SeTremotesvr`
|
|
|
|
else
|
|
|
|
slackinstall --device noremount --promptmode $MODE --srcpath `cat $TMP/SeTDS` --mountpoint /var/log/mount --target $T_PX --series $SERIES
|
|
|
|
fi
|
2021-04-20 21:44:02 +02:00
|
|
|
# Run ldconfig on the newly installed system:
|
|
|
|
if [ -x $T_PX/sbin/ldconfig ]; then
|
2021-04-23 02:44:22 +02:00
|
|
|
$T_PX/sbin/ldconfig -r $T_PX
|
2021-04-20 21:44:02 +02:00
|
|
|
fi
|
2018-06-07 00:19:01 +02:00
|
|
|
if [ $MODE = terse ]; then
|
|
|
|
# Let's pause a moment and then restore the terminal settings
|
|
|
|
sleep 1
|
|
|
|
setterm -background black -foreground white -blank 0
|
|
|
|
fi
|
|
|
|
MAINSELECT="CONFIGURE"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$MAINSELECT" = "CONFIGURE" ]; then
|
2019-01-23 05:39:04 +01:00
|
|
|
# Make bind mounts for /dev, /proc, and /sys:
|
|
|
|
mount -o bind /dev $T_PX/dev 2> /dev/null
|
|
|
|
mount -o bind /proc $T_PX/proc 2> /dev/null
|
|
|
|
mount -o bind /sys $T_PX/sys 2> /dev/null
|
2018-06-07 00:19:01 +02:00
|
|
|
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" "nosuid,nodev,noexec" "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
|
2021-11-09 21:22:27 +01:00
|
|
|
|
2022-01-18 21:39:39 +01:00
|
|
|
# Prompt the user to unplug the USB stick containing the Slackware
|
|
|
|
# media:
|
|
|
|
mountpoint -q /usb-stick && {
|
|
|
|
# Try to umount the USB stick, but ignore any errors (errors would typically be
|
|
|
|
# occur if the user has a shell open within the USB stick's mount point), since
|
|
|
|
# we'll be shutting down soon anyway.
|
|
|
|
sync
|
|
|
|
umount /usb-stick > /dev/null 2>&1
|
|
|
|
dialog \
|
|
|
|
--title "Unplug Slackware Installation Media USB Stick" \
|
|
|
|
--msgbox \
|
|
|
|
"\nYou may now physically unplug the Slackware Installation Media USB stick from the USB port.\n" 8 60
|
|
|
|
}
|
|
|
|
|
2023-01-19 01:40:12 +01:00
|
|
|
# Prompt the user to unplug the bootable USB stick containing
|
|
|
|
# A-i-O (All in One Offline) partition.
|
|
|
|
mountpoint -q /slack-all-in-one && {
|
|
|
|
# Try to umount the A-i-O partition, but ignore any errors (errors would typically be
|
|
|
|
# occur if the user has a shell open within the USB stick's mount point), since
|
|
|
|
# we'll be shutting down soon anyway.
|
|
|
|
sync
|
|
|
|
umount /slack-all-in-one > /dev/null 2>&1
|
|
|
|
# Don't suggest disconnection if it's on ARM, because the A-i-O partition
|
|
|
|
# is on the same SD card that is converted from being the Installer to the
|
|
|
|
# OS's /boot partition.
|
|
|
|
[[ ! "$( uname -m )" =~ a(rm*|arch64) ]] && {
|
|
|
|
dialog \
|
|
|
|
--title "Unplug Slackware Installation USB Stick" \
|
|
|
|
--msgbox \
|
|
|
|
"\nYou may now physically unplug the Slackware Installation USB stick from the USB port.\n" 8 60 ;}
|
|
|
|
}
|
|
|
|
|
2021-11-09 21:22:27 +01:00
|
|
|
# Offer to reboot or drop to shell or power off.
|
|
|
|
exec 3>&1
|
|
|
|
installerexittype=$( dialog \
|
|
|
|
--clear \
|
2018-06-07 00:19:01 +02:00
|
|
|
--title "Slackware Linux Setup is complete" "$@" \
|
2021-11-09 21:22:27 +01:00
|
|
|
--default-item Reboot "$@" \
|
|
|
|
--menu "Slackware Linux setup is complete.
|
|
|
|
\n\nYou may now reboot your machine into the Slackware OS.\n
|
|
|
|
\nIf you have some post-installation tweaks you'd like to make manually, you can open a shell.\n
|
|
|
|
\
|
|
|
|
\nIf you want to make some changes to the hardware before booting the
|
|
|
|
Slackware OS, you may wish to power off computer.\n" \
|
|
|
|
17 80 3 \
|
|
|
|
Shell "" \
|
|
|
|
Reboot "" \
|
|
|
|
"Power Off" "" \
|
|
|
|
2>&1 1>&3 )
|
|
|
|
retval=$?
|
|
|
|
exec 3>&-
|
2018-06-07 00:19:01 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Fix the date:
|
|
|
|
/sbin/fixdate
|
|
|
|
|
2021-11-09 21:22:27 +01:00
|
|
|
# Final cleanup
|
2018-06-07 00:19:01 +02:00
|
|
|
rm -f $TMP/tagfile $TMP/SeT* $TMP/tar-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
|
2021-11-09 21:22:27 +01:00
|
|
|
sync
|
2018-06-07 00:19:01 +02:00
|
|
|
|
2021-11-09 21:22:27 +01:00
|
|
|
# Handle installer exit types:
|
|
|
|
case "$installerexittype" in
|
|
|
|
"Reboot")
|
|
|
|
clear
|
|
|
|
printf "\n** Starting reboot **\n\n"
|
|
|
|
sleep 1.5
|
|
|
|
reboot ;;
|
|
|
|
"Power Off")
|
|
|
|
clear
|
|
|
|
printf "\n** Powering off **\n\n"
|
|
|
|
sleep 1.5
|
|
|
|
poweroff ;;
|
|
|
|
"Shell")
|
|
|
|
# Note: the shell the user receives at this point is the parent from which
|
|
|
|
# they entered this 'setup' script. This is why we don't explictly open a shell here.
|
|
|
|
clear
|
|
|
|
printf "\nYou may now reboot your system once you are ready.\n"
|
|
|
|
printf "You can issue the 'reboot' command; or if your system has\n"
|
|
|
|
printf "a keyboard attached, you can use the key combination: control+alt+delete\n\n" ;;
|
|
|
|
esac
|
2018-06-07 00:19:01 +02:00
|
|
|
|
2021-11-09 21:22:27 +01:00
|
|
|
# End of Slackware setup script
|