#!/bin/sh
#
# Dieses Script installiert die grosse MiNT '98 (V1.1) Distribution.
#
# Als Binaries stehen momentan zur Verfuegung:
#
# sh, tar, gzip, cat, [, cp.
#
#
# trap "" 1 2 15
# trap error 0
#

# Erstmal den Cursor einschalten
echo -n e
# Und den Autowrap einschalten
echo -n v

umask 022

PATH="/bin:/usr/etc" ; export PATH

# Grundlegende Fehlerbehandlung...
# Irgendwie klappt das nicht immer... Fixme!

error()
{
case $? in
	0)
		echo Fertig.
		;;
	*)
		echo Es ist ein Fehler aufgetreten.
		echo Die Installation wird deshalb jetzt abgebrochen.
		echo -n 'Bitte RETURN druecken...' ; read j
		exit 1
esac
}

cat << EOF

             Willkommen bei der Installation der
         MiNT '98 Distribution (grosse Distribution)

Zuerst muss eine Minix- oder ext2-Partition angelegt werden, auf die die
Distribution entpackt wird. Es wird eine Partition von mindestens 70MB
empfohlen, um vernuenftig arbeiten zu koennen. Wenn Sie ausserdem Sourcen
und den Compiler installieren wollen, sollte die Partition mindestens 120MB
gross sein.

Anmerkung: Bei saemtlichen Eingabezeilen funktioniert weder Backspace (^H)
noch kill line (^U). Keine Panik, falsche Eingaben koennen immer wieder
korrigiert werden.

EOF

#
# Zuerst die passende Partition aussuchen
#

echo Welche Partition soll umgewandelt werden?
echo Anzugeben ist der Laufwerksbuchstabe der Partition
echo ohne abschliessenden Doppelpunkt.
echo Moeglich sind die Laufwerke D bis T.
echo

while [ -z "$SYSTEMDRIVE" ] ; do
	echo -n 'Bitte Laufwerksbuchstaben eingeben: ' ; read j

	case $j in
		[D-Td-t])
			SYSTEMDRIVE=$j
			;;
		*)
			echo Falsche Eingabe!
			SYSTEMDRIVE=""
	esac

	if [ ! -z "$SYSTEMDRIVE" ] ; then # Nur wenn Eingabe sinnvoll.

		echo Auf der Partition $SYSTEMDRIVE: befinden sich noch folgende Dateien...
		ls -la /$SYSTEMDRIVE

		echo
		echo Sind Sie sicher, dass Sie Lauferk $SYSTEMDRIVE: in eine Minix- oder ext2-Partition
		echo umwandeln wollen? Alle Daten auf dieser Partition gehen dabei verloren!
		echo
		echo Sie haben die Moeglichkeiten J\)a N\)ein A\)bbruch und !\)Shell-Escape.
		echo
		echo -n 'Ihre Eingabe [j/N/a/!]: ' ; read j

		case $j in
			[Jj])
				echo Sehr gut! Dann kann\'s ja losgehen!
				;;
			[Aa])
				echo Die Installation wird abgebrochen.
				exit 1
				;;
			!)
				echo Durch die Eingabe von exit kommen Sie zur Installation zurueck.
				echo Danach muessen Sie den Laufwerksbuchstaben neu angeben.
				/bin/sh
				SYSTEMDRIVE=""
				;;
			*)
				echo Nein? Dann waehlen Sie einen anderen!
				SYSTEMDRIVE=""
		esac
	fi # Sinnvolle Eingabe
done # $SYSTEMDRIVE

echo
echo Sie muessen sich jetzt fuer einen Filesystem-Typ entscheiden.
echo Zur Wahl stehen Minix und das modernere und schnellere ext2.
echo
echo Bitte beachten Sie, dass der Partitionstyp Ihrer zukuenftigen
echo MiNT Systempartition MIX oder RAW fuer das Minix- und RAW oder
echo LNX fuer das ext2-Dateisystem sein muss. Partitionen vom Typ
echo GEM oder BGM \(also typische TOS-Partitionen\) koennen NICHT
echo umgewandelt werden!
echo
echo Anm.: Das mitgelieferte ext2-Filesystem befindet sich noch in
echo \ \ \ \ \ \ einem recht fruehen Stadium. Sie sollten daher nach der
echo \ \ \ \ \ \ Installation das Dateisystem \(ext2.xfs\) sowie die
echo \ \ \ \ \ \ dazu gehoerenden Tools \(in /usr/etc\) gegen eine moeglichst
echo \ \ \ \ \ \ aktuelle Version ersetzen.
echo \ \ \ \ \ \ Bekannte Probleme: Die Erkennung der "TOS-Domain" fuer
echo \ \ \ \ \ \ Programme, die mit langen Dateinamen nicht zurechtkommen,
echo \ \ \ \ \ \ und die daran gekoppelte Verkuerzung der Namen auf 8+3
echo \ \ \ \ \ \ Zeichen scheint nicht korrekt zu funktionieren. Weiterhin
echo \ \ \ \ \ \ kommt es beim Neustart des System des oefteren zu Fehler-
echo \ \ \ \ \ \ meldungen beim Pruefen des Dateisystems, obwohl MiNT vorher
echo \ \ \ \ \ \ korrekt beendet wurde.

while [ -z "$FSTYPE" ] ; do
	echo
	echo -n 'Bitte Filesystem-Typ waehlen [m(inix)/E(xt2)]: ' ; read j

	case $j in
		[mM])
			FSTYPE=minix
			# Minix Filesystemtyp V2, Dateinamen bis 62 Zeichen, Schutz des Volumes
			COMMANDLINE="minit -n 4 ${SYSTEMDRIVE}:"
			;;
		[eE])
			FSTYPE=ext2
			COMMANDLINE="mke2fs -b 1024 -L MiNT_System ${SYSTEMDRIVE}:"
			;;
		*)
			echo Der Filesystem-Typ ist ext2.
			FSTYPE=ext2
			COMMANDLINE="mke2fs -b 1024 -L MiNT_System ${SYSTEMDRIVE}:"
	esac
done # $FSTYPE

echo
echo Achtung! Es wird jetzt folgendes Kommando aufgerufen:
echo $COMMANDLINE
echo
echo Beantworten Sie die folgende Frage durch Druecken von
echo \`y\' \(mit RETURN\).
echo Die Initialisierung der Partition dauert einige Zeit.
echo

$COMMANDLINE

error
echo

cd `cat /ram/instpath`
INSTALL=`pwd`

while [ -z "$PACKETS" ] ; do # Nur wenn Eingabe sinnvoll.
	echo Welche Pakete moechten Sie installieren?
	echo B\)asic\ \ \ \ Nur Basispaket
	echo C\)ompiler\ Basispaket + Compiler
	echo S\)ourcen\ \ Basispaket + Compiler + Sourcen
	echo Die AdMiNTools werden immer installiert!

	echo -n 'Ihre Eingabe [b/C/s]: ' ; read j
	case $j in
		[bB])
			echo Sie moechten das Basispaket installieren.
			PACKETS=b
			;;
		[cC])
			echo Sie moechten Basispaket und Compiler installieren.
			PACKETS=c
			;;
		[sS])
			echo Sie moechten Basispaket, Compiler und Sourcen installieren.
			PACKETS=s
			;;
		*)
			echo Sie moechten Basispaket und Compiler installieren.
			PACKETS=c
	esac
done # $PACKETS
 
echo
echo Nun wird erst einmal das nackte Filesystem auf der Partition angelegt...
echo

tar -C /${SYSTEMDRIVE} -xzpf ${INSTALL}/filesys.tgz

error
echo

if [ -f ${INSTALL}/basic.tgz ] ; then
  echo Installiere Basispaket, bitte haben Sie etwas Geduld...
  progind.sh ${INSTALL}/basic.tgz
  tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/basic.log 2> /${SYSTEMDRIVE}/var/db/mint98/basic.errlog
  if [ -s /${SYSTEMDRIVE}/var/db/mint98/basic.errlog ] ; then
    echo
    echo Folgende Fehler sind beim Auspacken aufgetreten:
    echo
    more /${SYSTEMDRIVE}/var/db/mint98/basic.errlog
    echo
    echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/basic.errlog
    echo gespeichert. Bitte ueberpruefen.
    echo
  else
    echo Fertig.
    echo
  fi
  if [ -f ${INSTALL}/update_b.tgz ] ; then
    echo Installiere Ergaenzungen zum Basispaket, bitte haben Sie etwas Geduld...
    cd /${SYSTEMDRIVE}
    /${SYSTEMDRIVE}/usr/bin/rm -f `tar --list -zf ${INSTALL}/update_b.tgz` 2> /dev/null
    cd ${INSTALL}
    progind.sh ${INSTALL}/update_b.tgz
    tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/update_basic.log 2> /${SYSTEMDRIVE}/var/db/mint98/update_basic.errlog
    if [ -s /${SYSTEMDRIVE}/var/db/mint98/update_basic.errlog ] ; then
      echo
      echo Folgende Fehler sind beim Auspacken aufgetreten:
      echo
      more /${SYSTEMDRIVE}/var/db/mint98/update_basic.errlog
      echo
      echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/update_basic.errlog
      echo gespeichert. Bitte ueberpruefen.
      echo
    else
      echo Fertig.
      echo
    fi
  fi
fi

if [ -f ${INSTALL}/admin.tgz ] ; then
  echo Installiere AdMiNTools, bitte haben Sie etwas Geduld...
  progind.sh ${INSTALL}/admin.tgz
  tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/admin.log 2> /${SYSTEMDRIVE}/var/db/mint98/admin.errlog
  if [ -s /${SYSTEMDRIVE}/var/db/mint98/admin.errlog ] ; then
    echo
    echo Folgende Fehler sind beim Auspacken aufgetreten:
    echo
    more /${SYSTEMDRIVE}/var/db/mint98/admin.errlog
    echo
    echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/admin.errlog
    echo gespeichert. Bitte ueberpruefen.
    echo
  else
    echo Fertig.
    echo
  fi
  if [ -f ${INSTALL}/update_a.tgz ] ; then
    echo Installiere Ergaenzungen zu den AdMiNTools, bitte haben Sie etwas Geduld...
    cd /${SYSTEMDRIVE}
    /${SYSTEMDRIVE}/usr/bin/rm -f `tar --list -zf ${INSTALL}/update_a.tgz` 2> /dev/null
    cd ${INSTALL}
    progind.sh ${INSTALL}/update_a.tgz
    tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/update_admin.log 2> /${SYSTEMDRIVE}/var/db/mint98/update_admin.errlog
    if [ -s /${SYSTEMDRIVE}/var/db/mint98/update_admin.errlog ] ; then
      echo
      echo Folgende Fehler sind beim Auspacken aufgetreten:
      echo
      more /${SYSTEMDRIVE}/var/db/mint98/update_admin.errlog
      echo
      echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/update_admin.errlog
      echo gespeichert. Bitte ueberpruefen.
      echo
    else
      echo Fertig.
      echo
    fi
  fi
fi

if [ -f ${INSTALL}/source.tgz -a ${PACKETS} = s ] ; then
  PACKETS=c
  echo Installiere Sourcen, bitte haben Sie etwas Geduld...
  progind.sh ${INSTALL}/source.tgz
  tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/source.log 2> /${SYSTEMDRIVE}/var/db/mint98/source.errlog
  if [ -s /${SYSTEMDRIVE}/var/db/mint98/source.errlog ] ; then
    echo
    echo Folgende Fehler sind beim Auspacken aufgetreten:
    echo
    more /${SYSTEMDRIVE}/var/db/mint98/source.errlog
    echo
    echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/source.errlog
    echo gespeichert. Bitte ueberpruefen.
    echo
  else
    echo Fertig.
    echo
  fi
  if [ -f ${INSTALL}/update_s.tgz ] ; then
    echo Installiere Ergaenzungen zu den Sourcen, bitte haben Sie etwas Geduld...
    cd /${SYSTEMDRIVE}
    /${SYSTEMDRIVE}/usr/bin/rm -f `tar --list -zf ${INSTALL}/update_s.tgz` 2> /dev/null
    cd ${INSTALL}
    progind.sh /${INSTALL}/update_s.tgz
    tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/update_source.log 2> /${SYSTEMDRIVE}/var/db/mint98/update_source.errlog
    if [ -s /${SYSTEMDRIVE}/var/db/mint98/update_source.errlog ] ; then
      echo
      echo Folgende Fehler sind beim Auspacken aufgetreten:
      echo
      more /${SYSTEMDRIVE}/var/db/mint98/update_source.errlog
      echo
      echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/update_source.errlog
      echo gespeichert. Bitte ueberpruefen.
      echo
    else
      echo Fertig.
      echo
    fi
  fi
fi

if [ -f ${INSTALL}/compiler.tgz -a ${PACKETS} = c ] ; then
  echo Installiere Compiler, bitte haben Sie etwas Geduld...
  progind.sh ${INSTALL}/compiler.tgz
  tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/compiler.log 2> /${SYSTEMDRIVE}/var/db/mint98/compiler.errlog
  if [ -s /${SYSTEMDRIVE}/var/db/mint98/compiler.errlog ] ; then
    echo
    echo Folgende Fehler sind beim Auspacken aufgetreten:
    echo
    more /${SYSTEMDRIVE}/var/db/mint98/compiler.errlog
    echo
    echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/compiler.errlog
    echo gespeichert. Bitte ueberpruefen.
    echo
  else
    echo Fertig.
    echo
  fi
  if [ -f ${INSTALL}/update_c.tgz ] ; then
    echo Installiere Ergaenzungen zum Compiler-Paket, bitte haben Sie etwas Geduld...
    cd /${SYSTEMDRIVE}
    /${SYSTEMDRIVE}/usr/bin/rm -f `tar --list -zf ${INSTALL}/update_s.tgz` 2> /dev/null
    cd ${INSTALL}
    progind.sh ${INSTALL}/update_c.tgz
    tar -C /${SYSTEMDRIVE} -xvzpf /pipe/progind > /${SYSTEMDRIVE}/var/db/mint98/update_compiler.log 2> /${SYSTEMDRIVE}/var/db/mint98/update_compiler.errlog
    if [ -s /${SYSTEMDRIVE}/var/db/mint98/update_compiler.errlog ] ; then
      echo
      echo Folgende Fehler sind beim Auspacken aufgetreten:
      echo
      more /${SYSTEMDRIVE}/var/db/mint98/update_compiler.errlog
      echo
      echo Diese Meldungen sind in der Datei /${SYSTEMDRIVE}/var/db/mint98/update_compiler.errlog
      echo gespeichert. Bitte ueberpruefen.
      echo
    else
      echo Fertig.
      echo
    fi
  fi
fi

# minit setzt per Default 777

/${SYSTEMDRIVE}/usr/bin/chmod 755 /${SYSTEMDRIVE}

# Links umsetzen und PATH neu setzen.

RM="/${SYSTEMDRIVE}/usr/bin/rm"
LN="/${SYSTEMDRIVE}/usr/bin/ln -fs"
MV="/${SYSTEMDRIVE}/usr/bin/mv"

$RM /bin /etc /home /usr /tmp

$LN /${SYSTEMDRIVE}/usr/bin /bin
$LN /${SYSTEMDRIVE}/etc     /etc
$LN /${SYSTEMDRIVE}/home    /home
$LN /${SYSTEMDRIVE}/usr     /usr
$LN /${SYSTEMDRIVE}/tmp     /tmp
$LN /${SYSTEMDRIVE}/var     /var

# /etc/fstab anpassen

echo "${SYSTEMDRIVE} / ${FSTYPE} - - -" >> /etc/fstab

PATH='/bin:/usr/ucb:/usr/etc' ; export PATH

# AUTO-, MULTITOS- und STIK_CFG-Ordner nach /c/mint98 kopieren und mint.cnf
# anpassen

mkdir /c/mint98
cp -a ${INSTALL}/auto ${INSTALL}/multitos ${INSTALL}/stik_cfg /c/mint98
cp /c/mint98/multitos/mint.cnf /tmp
cat /tmp/mint.cnf | sed -e "s/sln MINTDRV:/sln $SYSTEMDRIVE:/g" > /c/mint98/multitos/mint.cnf
rm /tmp/mint.cnf

# Moeglicherweise sind im Archiv Links falsch gesetzt.
# Dies wird hier korrigiert.

cd /${SYSTEMDRIVE}/usr/bin

$RM -f sh
$LN ash sh

$RM -f ps
$LN ps.mint ps

$RM -f nice
$LN nice.gnu nice

# $RM -f stty
# $LN stty.gnu stty

$RM -f su
$LN su.bsd su

# Weitere Links anlegen

cd /${SYSTEMDRIVE}/usr/ucb

$RM -f finger
$LN finger.net finger

$RM -f talk
$LN talk.net talk

echo
echo Die Basisinstallation war erfolgreich.

MODEM1="# "
MODEM2="# "
SERIAL1="# "
SERIAL2="# "
MIDI="# "

if [ -c /dev/modem1 ] ; then
	echo Schnittstelle /dev/modem1 gefunden...
	MODEM1=""
fi

if [ -c /dev/modem2 ] ; then
	echo Schnittstelle /dev/modem2 gefunden...
	MODEM2=""
fi

if [ -c /dev/serial1 ] ; then
	echo Schnittstelle /dev/serial1 gefunden...
	SERIAL1=""
fi

if [ -c /dev/serial2 ] ; then
	echo Schnittstelle /dev/serial2 gefunden...
	SERIAL2=""
fi

if [ -c /dev/midi ] ; then
	echo Schnittstelle /dev/midi gefunden...
	MIDI=""
fi

cp /c/mint98/multitos/mint.cnf /tmp
cat /tmp/mint.cnf | \
sed -e "s/MODEM1/$MODEM1/g" \
    -e "s/MODEM2/$MODEM2/g" \
    -e "s/SERIAL1/$SERIAL1/g" \
    -e "s/SERIAL2/$SERIAL2/g" \
    -e "s/MIDI/$MIDI/g" \
    > /c/mint98/multitos/mint.cnf
rm /tmp/mint.cnf

# echo
# echo Wenn Sie CoNnect unter MiNT'98 benutzen wollen, beachten Sie die
# echo Hinweise in der Datei /c/multitos/mint.cnf.

# Und den hier auch noch...
touch /etc/ppp/options

cd /

echo Sollen die Fast-RAM-Flags aller ausfuehrbaren Programme geloescht werden
echo \(dies ist bei bestimmten Atari-Clones leider erforderlich - s. a.
echo -n 'Kapitel "Tips und Tricks" in der Dokumentation) [N/j] ' ; read j
case $j in
	[nN])
		echo OK. Die Fast-RAM-Flags werden nicht beeinflusst.
		;;
	[jJ])
		echo -n 'OK. Ich mache mich an die Arbeit... '
		toglclr --fram- --frun- /usr/bin/* > /dev/null
		toglclr --fram- --frun- /usr/etc/* > /dev/null
		toglclr --fram- --frun- /usr/lib/* > /dev/null
		toglclr --fram- --frun- /usr/local/bin/* > /dev/null
		toglclr --fram- --frun- /usr/local/etc/* > /dev/null
		toglclr --fram- --frun- /usr/local/lib/* > /dev/null
		toglclr --fram- --frun- /usr/local/samba/bin/* > /dev/null
		toglclr --fram- --frun- /c/mint98/auto/* > /dev/null
		toglclr --fram- --frun- /c/mint98/multitos/* > /dev/null
		echo Fertig.
		;;
	*)
		echo OK. Die Fast-RAM-Flags werden nicht beeinflusst.
		;;
esac

echo
echo Die Installation ist jetzt fast abgeschlossen. Wenn der Desktop
echo wieder erscheint, dann kopieren Sie bitte die Dateien in C:\\MINT98\\AUTO,
echo C:\\MINT98\\MULTITOS und C:\\MINT98\\STIK_CFG in die entsprechenden
echo Ordner auf Laufwerk C:. Achten Sie bitte darauf, dass zuerst
echo HSMODEM, dann RSVX und zuletzt MiNT in der genannten Reihenfolge im AUTO-Ordner
echo stehen.
echo
echo Danach koennen Sie den Computer neu starten.
echo
echo Weiter mit Tastendruck
read j

