diff options
Diffstat (limited to 'source/installer/sources/initrd/usr/lib/setup/INShd')
-rwxr-xr-x | source/installer/sources/initrd/usr/lib/setup/INShd | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/source/installer/sources/initrd/usr/lib/setup/INShd b/source/installer/sources/initrd/usr/lib/setup/INShd new file mode 100755 index 000000000..ce30cb2f6 --- /dev/null +++ b/source/installer/sources/initrd/usr/lib/setup/INShd @@ -0,0 +1,146 @@ +#!/bin/sh +TMP=/var/log/setup/tmp +if [ ! -d $TMP ]; then + mkdir -p $TMP +fi +# Include function to check for Slackware ISO images: +. /usr/lib/setup/INCISO +while [ 0 ]; do +rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTsource +# OK, at this point /var/log/mount should not have anything mounted on it, +# but we will umount just in case. +umount /var/log/mount 2> /dev/null +# 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 + +while [ 0 ]; do + cat << EOF > $TMP/tempmsg +In order to install directly from the hard disk you must have a +partition (such as /dev/sda1, /dev/sdb5, etc) with the Slackware +distribution's slackware/ directory like you'd find it on the FTP +site. It can be in another directory. For example, if the +distribution is in /stuff/slackware/, then you have to have +directories named /stuff/slackware/a, /stuff/slackware/ap, and so +on each containing the files that would be in that directory on +the FTP site. You may install from FAT or Linux partitions. + +Please enter the partition (such as /dev/sda1) where the Slackware +sources can be found, or [enter] to see a partition list: +EOF + dialog --title "INSTALLING FROM HARD DISK" --inputbox \ +"`cat $TMP/tempmsg`" 18 70 2> $TMP/source.part + if [ ! $? = 0 ]; then + rm -f $TMP/source.part $TMP/tempmsg + exit + fi + rm -f $TMP/tempmsg + SLACK_DEVICE="`cat $TMP/source.part`" + rm -f $TMP/source.part + if [ "$SLACK_DEVICE" = "" ]; then + dialog --title "PARTITION LIST" --no-collapse --msgbox "`probe -l | grep -v cylind | grep dev | sort 2> /dev/null`" 22 75 + continue; + fi + break; +done + +dialog --title "SELECT SOURCE DIRECTORY" --inputbox \ +"Now we need to know the full path on this partition to the\n\ +slackware/ directory where the directories containing\n\ +installation files and packages to be installed are kept.\n\ +For example, if you downloaded Slackware into the /stuff\n\ +directory on your hard drive (so that you have the\n\ +directories /stuff/slackware/a, /stuff/slackware/ap, and so on\n\ +each containing the files that would be in that directory on\n\ +the FTP site), then the full path to enter here would be:\n\ +\n\ + /stuff/slackware\n\ +\n\ +What directory are the Slackware sources in?" \ +19 65 2> $TMP/source.dir +if [ ! $? = 0 ]; then + rm -f $TMP/source.dir + exit +fi +SLACK_SOURCE_LOCATION="`cat $TMP/source.dir`" +rm -f $TMP/source.dir +if mount | grep $SLACK_DEVICE 1> /dev/null 2> /dev/null ; then + # This partition is already mounted, so we will have to + # tweak things funny. + rm -f /var/log/mount 2> /dev/null + rmdir /var/log/mount 2> /dev/null + PREFIX="`mount | grep $SLACK_DEVICE | cut -f 3 -d ' '`" + ln -sf $PREFIX /var/log/mount +else + SUCCESS=false + for type in ext4 ext3 ext2 vfat reiserfs hpfs msdos ; do + mount -r -t $type $SLACK_DEVICE /var/log/mount 1> /dev/null 2> /dev/null + if [ $? = 0 ]; then # mounted successfully + SUCCESS=true + break; + fi + done + if [ ! $SUCCESS = true ]; then # there was a mount error + cat << EOF > $TMP/tempmsg +There was a problem mounting your partition. Would you like to: + +EOF + dialog --title "MOUNT ERROR" --menu "`cat $TMP/tempmsg`" 10 68 2 \ +"Restart" "Start over" \ +"Ignore " "Ignore the error and continue" 2> $TMP/dowhat + if [ ! $? = 0 ]; then + rm -f $TMP/dowhat + exit + fi + DOWHAT="`cat $TMP/dowhat`" + rm -f $TMP/dowhat + if [ "$DOWHAT" = "Restart" ]; then + umount /var/log/mount 2> /dev/null + continue; + fi + echo + fi # mount error +fi + +# First, check if a Slackware ISO image is present in $SLACK_SOURCE_LOCATION +if check_iso_image /var/log/mount/$SLACK_SOURCE_LOCATION /var/log/mntiso ; then + echo "/var/log/mntiso/slackware" > $TMP/SeTDS + echo "-source_mounted" > $TMP/SeTmount + echo "/dev/null" > $TMP/SeTsource + exit +elif [ -f /var/log/mount/$SLACK_SOURCE_LOCATION/slackware/PACKAGES.TXT ]; then + echo "/var/log/mount/$SLACK_SOURCE_LOCATION/slackware" > $TMP/SeTDS + echo "-source_mounted" > $TMP/SeTmount + echo "/dev/null" > $TMP/SeTsource + exit +elif [ -d /var/log/mount/$SLACK_SOURCE_LOCATION ]; then + echo "/var/log/mount/$SLACK_SOURCE_LOCATION" > $TMP/SeTDS + echo "-source_mounted" > $TMP/SeTmount + echo "/dev/null" > $TMP/SeTsource + exit +else + cat << EOF > $TMP/tempmsg + +Sorry, but the directory $SLACK_SOURCE_LOCATION does not exist +on partition $SLACK_DEVICE. + +Would you like to try again? +EOF + dialog --title "SOURCE DIRECTORY NOT FOUND" --yesno "`cat $TMP/tempmsg`" 10 70 + if [ ! $? = 0 ]; then + rm -f $TMP/tempmsg + exit + fi + rm -r $TMP/tempmsg +fi + +done |