#!/bin/sh
#
# Ce script installe la distribution du kit MINT allemand Knarf.
#
# Il est excut automatiquement par mint.cnf au lancement de MiNT 1.11
# (mint.tos sur la disquette de boot).
#
# le RAM-Disk a fini  l'instant meme le dcompactage, les Links sont prets
# et corrects. Un travail 'normal' est dja possible.
#
# Vous disposez dja des fichiers binaires suivants:
#
# sh, tar, gzip, cat, [, cp.
#
#
# trap "" 1 2 15
# trap error 0
#

# En premier on active le curseur
echo -n e
# puis on active l'auto-wrap(passage  la ligne automatique)
echo -n v

umask 022

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

# Fondamental Erreur_de_traitement...
# d'une_manire_ou_d'une_autre ca ne marche pas toujours... Fixme!

error()
{
case $? in
   0)
      echo Parfait, tout s\'est bien pass!
      ;;
   *)
      echo Quelques fois ca va de travers.
      echo L\'installation n\'a pas t effectue compltement.
      echo -n 'SVP appuyez sur RETURN...' ; read j
      exit 1
esac
}

cat << EOF

             Bienvenue  l'installation de
             la distribution allemande Knarf de MiNT

D'abord il faut une partition Minix ou se dcompactera la distribution.
Une partition d'au moins 32 Mo est ncessaire, c'est le minimum raisonnable
pour pouvoir travailler.

Remarque: L'effacement de caractres avec Backspace (^H) ne fonctionne pas
ainsi que l'effacement de ligne (^U). Pas de Panique, les erreurs pourront
toujours etre corriges.

EOF

#
# d'abord le choix de la partition qui convienne
#

echo Quelle partition doit etre convertie ?
echo Tapez la lettre du disque de la Partition sans les deux points.
echo Les lettres possibles vont du disque C jusqu\' P.
echo

while [ -z "$MINIXFS" ] ; do
   echo -n 'SVP entrez une lettre valide: ' ; read j

   case $j in
      [C-Pc-p])
         MINIXFS=$j
         ;;
      *)
         echo choix incorrect!
         MINIXFS=""
   esac

   if [ ! -z "$MINIXFS" ] ; then # Seulement si la demande est correcte.

      echo sur la partition $MINIXFS: se trouvent encore les fichiers suivants...
      ls -la /$MINIXFS

      echo
      echo Etes vous certain de vouloir convertir le lecteur $MINIXFS: en une
      echo Partition Minix? Toutes les donnes de cette partition seront perdues!
      echo
      echo les rponses possibles sont O\)ui N\)on A\)nnuler et !\)Shell-Escape.
      echo
      echo -n 'Votre choix [o/N/a/!]: ' ; read j

      case $j in
         [Oo])
            echo Trs bien! On peut commencer!
            ;;
         [Aa])
            echo L\'installation ne sera pas termine.
            exit 1
            ;;
         !)
            echo Grace au choix exit vous pouvez revenir en arrire dans l\'installation.
            echo Aprs c\'est  vous de donner une nouvelle lettre.
            /bin/sh
            MINIXFS=""
            ;;
         *)
            echo Non? Alors choisissez en une autre!
            MINIXFS=""
      esac
   fi # Sinnvolle Eingabe
done # $MINIXFS

#
# choix du type de systme de fichier
#

echo
echo Voulez-vous installer sur la partition $MINIXFS un systme
echo de fichier V1 ou bien V2?
echo
echo Dans tous les cas prfrez un systme de fichier V2, en particulier
echo quand vous vous voulez convertir une partition de 64 Mo ou plus.
echo

while [ -z "$V" ] ; do
   echo -n 'SVP, quel systme de fichier vous inspire [1 ou 2]:' ; read j

   case $j in
      [12])
         V=$j
         ;;
      *)
         echo Rponse incorrecte! Essayez encore une fois SVP!
   esac

done # Filesystemtyp

#
# Meme si correcte, on doit traiter la commande
#

case $V in
   1)
      V=""
      ;;
   2)
      V="-V"
      ;;
   *)
      echo Erreur inattendue!
      exit 1
esac

#
# Nombre de caractres possibles pour les noms de fichiers
#

echo
echo La partition Minix autorise l\'utilisation de noms de fichier longs.
echo Vous pouvez vous-meme fixer la longueur maximale d\'un nom de fichier.
echo Plus long pourront etre les noms de fichier, plus lent sera l\'accs au
echo disque et plus gros sera l\'espace occup par chaque fichier.
echo
echo
echo La longueur maximale des noms de fichier se calcule  partir de la formule
echo 'max = (n*16)-2', ou n est une puissance de 2.
echo
echo De ceci on obtient les possibilits suivantes:
echo  1:  14 caractres
echo  2:  30 caractres
echo  4:  62 caractres
echo  8: 126 caractres [l, ce n\'est pas prvu]
echo
echo Vous ne devez jamais choisir 14 caractres. En pratique vous ne pouvez
echo choisir que 30 ou 62 caractres. Pour utiliser 126 caractres, vous
echo devez recompiler minix.Xfs.
echo

while [ -z "$MAXLEN" ] ; do
   echo -n 'SVP choisissez le multiplicateur n [1, 2 our 4]: ' ; read j

   case $j in
      [124])
         MAXLEN=$j
         ;;
      *)
         echo Choix incorrecte! Essayez encore une fois!
   esac
done # Longueur des noms de fichier

#
# Traitement des paramtres de la ligne de commande
#

# MAXLEN="-n $MAXLEN"

#
# mcanisme de protection
#

echo
echo La partition installe peut etre protge d\'un accs hors
echo de Mint et Minix.Xfs, \(par exemple sous SingleTOS\(sans mint\)
echo ou Mag!C\). Pour cela il faut tromper le GEMDOS en lui faisant
echo croire qu\'il n\'y a plus d\'entres de FAT libre.
echo De meme, si vous avez un driver de disque dur compatible XHDI
echo \(HDDRIVER ou HuSHI\), ???il est dommage de ne pas mettre
echo le paramtre -P???.
echo

echo -n 'Voulez-vous utiliser ce mcanisme de protection? [O/n]: ' ; read j

case $j in
   [Nn])
      PROTECT=""
      ;;
   *)
      PROTECT="-P"
esac

COMMANDLINE="-n $MAXLEN $V $PROTECT ${MINIXFS}:"

echo
echo Trs bien! Minit sera lanc avec les paramtres suivants:
echo minit $COMMANDLINE
echo
echo Rpondez  la question suivante en appuyant seulement sur la touche
echo \`y\' \(sans RETURN\). La touche presse ne sera pas affiche.
echo L\'initialisation de la partition prendra quelques temps...
echo

minit $COMMANDLINE

error

echo
echo Ou se trouve le kit de distribution\(Knarf german kit\)?
echo
echo SVP indiquez le rpertoire sous la forme /\<lecteur\>/\<rpertoire\>.
echo
echo Si le kit de distribution est sur le lecteur g: dans le
echo rpertoire principal, indiquez alors "/g".
echo Si le kit de distribution est sur le lecteur d: dans le rpertoire
echo download, indiquez alors "/d/download".
# echo
# echo Une copie du kit de distribution sur disquette n\'est pas encore implmente.
# echo
# echo Si avant l\'installation vous n\'avez pas de place sur votre partition de
# echo disque dur, indiquez alors "/a" ou "/b", le kit de distribution sur disquette
# echo sera alors copi sur la partition Minix fraichement cre.
# echo [Cette option n\'est pas encore implmente!]
echo

while [ -z "$INSTALL" ] ; do

echo -n 'SVP indiquez le rpertoire: ' ; read j

case $j in
   "/[ab]")
      echo La copie  partir de a ou b est trop lente!.
      echo SVP essayez encore une fois.
      ;;
   *)
      if [ -f /${j}/basic.aa -o -f /${j}/basic.tgz ] ; then
         echo Trs bien, on peut donc commencer!
         # Ein Slash zu viel schadet nicht.
         INSTALL="/${j}"
      else
         echo Je ne trouve pas le package Basic dans le rpertoire $j!
         echo SVP essayez encore une fois!
      fi
esac

done # $INSTALL

echo
echo Maintenant les fichiers systmes de base vont etre installs sur
echo la partition choisie...
echo

tar -C /${MINIXFS} -xzpf /tmp/filesys.tgz

error

echo
echo Puis la distribution Basic va etre dcompacte, sans rien en excuter...
echo

if [ -f ${INSTALL}/basic.aa -o -f ${INSTALL}/basic.tgz ] ; then
  echo Cela peut prendre un petit moment...
  if [ -f ${INSTALL}/basic.aa ] ; then
    cat ${INSTALL}/basic.??  | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/basic.log 2> /${MINIXFS}/var/db/kgmd/basic.errlog
  else
    cat ${INSTALL}/basic.tgz | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/basic.log 2> /${MINIXFS}/var/db/kgmd/basic.errlog
  fi
  echo
  if [ -s /${MINIXFS}/var/db/kgmd/basic.errlog ] ; then
    echo
    echo Voici les erreurs survenues pendant le dcompactage:
    echo
    more /${MINIXFS}/var/db/kgmd/basic.errlog
    echo
    echo Ces informations se trouvent dans le fichier
    echo /${MINIXFS}/var/db/kgmd/basic.errlog
    echo SVP, vrifiez.
    echo
  else
    echo Parfait, tout c\'est bien pass!
  fi
fi

# minit met par dfaut: 777

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

# Cration des liens et du nouveau PATH.

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

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

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

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

# Il est possible que les liens des archives soient mal placs.
# Ce sera corrig ici.

cd /${MINIXFS}/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

# Nouveaux liens placs

cd /${MINIXFS}/usr/ucb

# $RM -f finger
$LN finger.bsd finger

# $RM -f talk
$LN talk.bsd talk

echo
echo L\'installation de la partie Basic s\'est bien passe. Trs bien!

while [ -z "$OK" ] ; do

echo
echo Avant que l\'installation ne continue, il faut crer les fichiers de
echo configuration. SVP rpondez aux questions suivantes:
echo
echo
echo D\'abord, un utilisateur \`normal\' sera cr, il n\'aura pas les droits
echo de root, mais avec \`su\' il les aura. Quel sera le Username pour ce compte?
echo
echo
echo Le Username doit etre en lettres minuscules et ne peut pas dpasser
echo 8 caractres. Il ne peut pas commencer par un \`-\'.
echo
echo -n 'Username: ' ; read j
echo

ACCOUNT=$j

echo Quel est le nom complet de cet utilisateur? Gnralement ce sera
echo le prnom suivi du nom.
echo
echo -n 'Prnom  : ' ; read i
echo -n 'Nom     : ' ; read j
echo

USERNAME="$i $j"

echo Maintenant vous devez choisir un Hostname pour cet ordinateur.
echo Le Hostname ne doit pas dpasser 7 caractres.
echo Le Hostname peut, sous Mint, etre assez facilement modifi.
echo
echo -n 'Hostname: ' ; read j
echo

HNAME=$j

echo De quel lecteur bootez vous\? Ce chemin est seulement ncessaire
echo pour les fichiers de configuration, l\'Installation ne
echo touchera pas  cette partition.
echo SVP donnez la lettre du lecteur en minuscule sans les 2 points.
echo Gnralement c\'est le lecteur \`c\' qui est utilis.
echo
echo -n 'Partition de Boot: ' ; read j
echo

BOOT=$j

echo
echo Les\(vos\) donnes suivantes seront maintenant enregistres dans
echo les fichiers de configuration:
echo
echo Accountname : ${ACCOUNT}
echo Realname    : ${USERNAME}
echo Hostname    : ${HNAME}
echo Boot Drive: ${BOOT}

echo -n 'Est-ce que les donnes sont correctes [O/n]?' ; read j

case $j in
   [Nn])
      OK=""
      ;;
   *)
      OK="OK"
esac

done # OK=OK

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

# Sparen wir uns hier mal den tr...

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

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

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

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

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

# echo
# echo Si vous voulez utiliser CoNnect sous KGMD, respectez les
# echo remarques du fichier /${MINIXFS}/boot/multitos/mintkgmd.cnf.

for i in \
boot/multitos/mintkgmd.cnf.in \
etc/passwd.in \
etc/group.in \
etc/hostname.in \
etc/hosts.in \
etc/fstab.in
do

##ACCOUNT##  : Nom de login de cet utilisateur
##USERNAME## : Nom rel de l\'utilisateur
##HNAME##    : Nom local du host
##MINIXFS##  : Lettre du disque du systme de fichiers Minix
##MODEM1##   : L\'ordinateur a modem1 "", sinon "# "
##MODEM2##   : L\'ordinateur a modem2 "", sinon "# "
##SERIAL1##  : L\'ordinateur a serial1 "", sinon "# "
##SERIAL2##  : L\'ordinateur a serial2 "", sinon "# "

cat /$MINIXFS/$i | sed \
   -e "s/##ACCOUNT##/$ACCOUNT/g"\
   -e "s/##USERNAME##/$USERNAME/g"\
   -e "s/##HNAME##/$HNAME/g"\
   -e "s/##MINIXFS##/$MINIXFS/g"\
   -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"\
   > /${MINIXFS}/`dirname $i`/`basename $i .in`

case $? in
   0)
      rm -f /${MINIXFS}/$i
      ;;
   *)
      echo Des fois tout va de travers!
      echo L\'installation ne sera pas termine compltement.
      exit 1
esac

done

#
# Ajustement des liens
#
if [ -d /${BOOT}/multitos ] ; then
   rm -f /${MINIXFS}/usr/multitos
   ln -s /${BOOT}/multitos /${MINIXFS}/usr/multitos
else
   echo Attention: /${BOOT}/multitos n\'existe \(pas\) encore.
   echo S.V.P placez manuellement le Link\(lien\) du rpertoire multitos
   echo de votre lecteur de boot sur /usr/multitos.
fi
#
# Changement du nom du Home Directory
#

mv /home/user /home/$ACCOUNT
chown $ACCOUNT /home/$ACCOUNT

echo
echo Maintenant, la partie COMPILER va etre dcompacte...
echo

if [ -f ${INSTALL}/compiler.aa -o -f ${INSTALL}/compiler.tgz ] ; then
  echo Cela va prendre un petit moment...
  if [ -f ${INSTALL}/compiler.aa ] ; then
    cat ${INSTALL}/compiler.?? | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/compiler.log 2> /${MINIXFS}/var/db/kgmd/compiler.errlog.1
  else
    cat ${INSTALL}/compiler.tgz | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/compiler.log 2> /${MINIXFS}/var/db/kgmd/compiler.errlog.1
  fi
  echo
  #
  # Voici la liste des erreurs stupides des "permission denied" ;(
  #
  grep -v permission /${MINIXFS}/var/db/kgmd/compiler.errlog.1 > /${MINIXFS}/var/db/kgmd/compiler.errlog.2
  if [ -s /${MINIXFS}/var/db/kgmd/compiler.errlog.2 ] ; then
    echo
    echo Les erreurs suivantes sont les fichiers crass par le dcompactage:
    echo
    more /${MINIXFS}/var/db/kgmd/compiler.errlog.2
    echo
    echo Ce compte rendu se trouve dans le fichier
    echo /${MINIXFS}/var/db/kgmd/compiler.errlog.2.
    echo SVP, vrifiez.
    echo
  else
   echo
   echo Parfait, tout c\'est bien pass!
   echo
  fi
else
  echo
  echo Hoppla! Il n\'y a rien  installer!
  echo Bon, pas de Compiler. C\'est comme vous voulez...
  echo
fi

echo
echo Maintenant le package NET va etre dcompact...
echo

# Les liens possibles suivants vont etre effacs

$RM -f /${MINIXFS}/usr/ucb/finger
$RM -f /${MINIXFS}/usr/ucb/talk

if [ -f ${INSTALL}/net.aa -o -f ${INSTALL}/net.tgz ] ; then
  echo Cela va prendre un petit moment...
  if [ -f ${INSTALL}/net.aa ] ; then
    cat ${INSTALL}/net.??  | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/net.log 2> /${MINIXFS}/var/db/kgmd/net.errlog
  else
    cat ${INSTALL}/net.tgz | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/net.log 2> /${MINIXFS}/var/db/kgmd/net.errlog
  fi
  echo
  if [ -s /${MINIXFS}/var/db/kgmd/net.errlog ] ; then
    echo
    echo Les erreur suivantes sont les fichiers crass par le dcompactage:
    echo
    more /${MINIXFS}/var/db/kgmd/net.errlog
    echo
    echo Ce rapport est dans le fichier /${MINIXFS}/var/db/kgmd/net.errlog.
    echo SVP vrifiez.
    echo
  else
    echo
    echo Parfait, Tout s\'est bien pass!
    echo
  fi

  # Liens corrigs de nouveau.

  ( cd /${MINIXFS}/usr/ucb ; $LN finger.net finger ; $LN talk.net talk )

  # Pour ncftp - ce n\'est peut etre pas ncessaire...
  # De meme dans /etc/host devrait se trouver un FQDN...
  # Et /etc/domainname est aussi un truc  renseigner...

  cp /etc/hostname /etc/host

  # Et ici aussi encore, weil es im Artikel nicht steht.
  touch /etc/ppp/options

else
  echo
  echo Hoppla! Il n\'y a rien  installer!
  echo Bon, pas de Net. C\'est comme vous voulez...
  echo
fi

echo
echo Maintenant, dcompactage du package MANUAL...
echo

if [ -f ${INSTALL}/manual.aa -o -f ${INSTALL}/manual.tgz ] ; then
  echo Cela va prendre un petit moment...
  if [ -f ${INSTALL}/manual.aa ] ; then
    cat ${INSTALL}/manual.??  | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/manual.log 2> /${MINIXFS}/var/db/kgmd/manual.errlog
  else
    cat ${INSTALL}/manual.tgz | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/manual.log 2> /${MINIXFS}/var/db/kgmd/manual.errlog
  fi
  echo
  if [ -s /${MINIXFS}/var/db/kgmd/manual.errlog ] ; then
    echo
    echo Les erreurs suivantes les fichiers crass par le dcompactage:
    echo
    more /${MINIXFS}/var/db/kgmd/manual.errlog
    echo
    echo Ce rapport est dans /${MINIXFS}/var/db/kgmd/manual.errlog.
    echo SVP, vrifier.
    echo
  else
    echo
    echo Parfait, tout c\'est bien pass!
    echo
  fi
else
   echo
   echo Hoppla! Il n\'y a rien  installer!
   echo Bon, pas de Manual. C\'est comme vous voulez...
   echo
fi

echo
echo Maintenant, dcompactage du package X11R5...
echo

if [ -f ${INSTALL}/x11r5.aa -o -f ${INSTALL}/x11r5.tgz ] ; then
  echo Cela va prendre un petit moment...
  if [ -f ${INSTALL}/x11r5.aa ] ; then
    cat ${INSTALL}/x11r5.??  | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/x11r5.log 2> /${MINIXFS}/var/db/kgmd/x11r5.errlog
  else
    cat ${INSTALL}/x11r5.tgz | point | gzip -cd | tar -C /${MINIXFS} -xvpf - > /${MINIXFS}/var/db/kgmd/x11r5.log 2> /${MINIXFS}/var/db/kgmd/x11r5.errlog
  fi
  echo
  if [ -s /${MINIXFS}/var/db/kgmd/x11r5.errlog ] ; then
    echo
    echo Les erreurs suivantes sont les fichiers crass par le dcompactage:
    echo
    more /${MINIXFS}/var/db/kgmd/x11r5.errlog
    echo
    echo Ce rapport est dans /${MINIXFS}/var/db/kgmd/x11r5.errlog.
    echo SVP, vrifiez.
    echo
  else
    echo
    echo Parfait, tout s\'est bien pass!
    echo
  fi
  cd /usr/lib
  # Pourquoi Diable arrive ici "file exists"??
  ln -fs ./X11/*.a . >> /${MINIXFS}/var/db/kgmd/x11r5.log 2>> /${MINIXFS}/var/db/kgmd/x11r5.errlog
else
  echo
  echo Hoppla! Il n\'y a rien  installer!
  echo Bon, pas de X11R5. C\'est comme vous voulez...
  echo
fi

cd /

#
# npasswd a besoin de syslogd
#

syslogd ; sleep 2

echo
echo Maintenant SVP, un mot de passe pour root,
echo \(5 caractres minimum dont un en majuscule\):
echo
passwd root
echo
echo Et maintenant pour l\'utilisateur ${ACCOUNT},
echo \(5 caractres minimum dont un en majuscule\):
echo
passwd ${ACCOUNT}
echo
echo Maintenant SVP, allez dans le rpertoire /${MINIXFS}/boot avec cd
echo et l suivez les instructions du fichier \(KGMD.txt\) en section 4
echo concernant votre lecteur de boot ${BOOT}: copier.
echo
echo Si ncessaire. Effacez le rpertoire /${BOOT}/mint et enlevez tous les
echo \*.xdd et \*.xfs de /${BOOT}.
echo
echo Aprs ca, vous pouvez rebooter \(reboot\).
echo

HOME="/home/root" ; export HOME

exec /bin/tcsh
