\marklabel{sec:hdinstall}{
  \section{HD - Programme rund um die Festplatte}
  }

\subsection {OPT\_HDINSTALL - Installation auf Festplatte/CompactFlash}

    Normalerweise läuft fli4l nur von einer Diskette. Eine Festplatte oder
    ein CompactFlash ist daher eigentlich nicht notwendig. Sollen relativ
    große Softwarepakete (wie z.B. die Treiber für die DSL-Karten von AVM) 
    für fli4l genutzt werden, kann es knapp auf der Diskette werden\dots

    Für diesen Fall ist die Installation auf Festplatte oder auf einem
    CompactFlash-Modul gedacht. Ein CompactFlash verhält sich wie eine
    IDE-Festplatte, so dass es im fli4l-Rechner wie eine Festplatte
    behandelt werden kann. Da ein CompactFlash keine beweglichen Teile
    enthält, ist es nicht zu hören - ein wesentlicher Vorteil gegenüber
    Festplatten. Dem gegenüber steht der höhere Preis\dots

    \sloppypar{Neben Compact-Flash Modulen und anderen Flash-Modulen, die sich wie
    eine IDE-Festplatte verhalten, sind noch die vorwiegend in 
    Industrie-Rechnern zu findenden DiskOnChip\texttrademark-Module vom M-Systems
    für fli4l geeignet.}

    \achtung{ Nicht zur Benutzung  mit fli4l geeignet sind USB-Sticks und
    normale Flash-Speicher, die nur mit einem speziellen
    Lesegerät angesprochen werden können (SD, MMC, SmartMedia). }

    Im Folgenden werden die notwendigen Schritte zur Installation auf
    einer Festplatte erklärt. Da die Festplatten-Variante gegenüber
    der reinen Diskettenlösung etwas schwieriger zu installieren ist,
    empfehle ich, zunächst einmal mit der einfachen Bootdiskette zu
    üben. Läuft der Router einwandfrei, kann man sich -- falls nicht alle
    gewünschten Softwarepakete auf die Diskette passen -- mal an die
    Festplatteninstallation wagen.

    Der übliche Weg ist die Installation mit einer Boot-DISKETTE, aber falls der
    Router nicht über einen Diskettenanschluß verfügt, kann auch von LAN-Boot aus
    installiert werden. Das \var{OPT\_\-HDINSTALL} bereitet nur noch die Festplatte 
    vor und kopiert keine Dateien mehr von der Diskette auf die Festplatte. 
    Dies wird ganz normal über ein Remote-Update per Imonc oder über scp gemacht.

    Eine Einführung in die verschiedenen Festplatten-
    Installationsvarianten A oder B befindet sich am \jump{VARIANTEN}{Anfang
    der fli4l-Dokumentation}. Bitte unbedingt vorher lesen!

    \subsubsection{HD-Installation von Diskette in sechs einfachen Schritten}

\begin{enumerate}
    \item lauffähige fli4l-Diskette mit dem Paket base
    sowie \var{OPT\_\-HDINSTALL} und \var{OPT\_\-HDDRV} erstellen
    \item den Router mit dieser Diskette booten
    \item am Router einloggen und den Menüpunkt für die Installation auf Festplatte auswählen.
    Falls Sie das Bootmenu nicht aktiviert haben, kann man auch direkt den Befehl
    ``hdinstall.sh'' ausführen
    \item wenn die Aufforderung dazu erscheint die Dateien syslinux.cfg, kernel, rootfs.img,
    opt\_tar.bz2 und rc.cfg mittels Imonc oder scp auf den Router nach /boot kopieren.
    Ich empfehle dazu mit zwei fli4l-Verzeichnissen zu arbeiten, eines für die Setup-Diskette
    und ein zweites für die spätere HD-Version. Bei der HD-Version stellen Sie die Variable
    \var{BOOT\_\-TYPE}='hd' ein und bei der Setup-Diskette auf 'fd'.
    
    \achtung{Beim Remote-Update müssen natürlich die Dateien der HD-Version auf den
    Router übertragen werden!}
    \item Diskette entfernen, Router herunterfahren und neu starten
      (unter Verwendung von halt/reboot/poweroff). Der Router bootet jetzt von der Festplatte
    \item bei Problemen den folgenden Abschnitt gut durchlesen.
\end{enumerate}


    \subsubsection{HD-Installation ausführlich erklärt (inklusive Beispiele)}

    Zuerst muß eine Router-Diskette erstellt werden, bei der in der Datei
    config/hd.txt das \var{OPT\_\-HDINSTALL} mit den Installationsscripten und das
    \var{OPT\_\-HDDRV}, welches die Treiber für IDE- und SCSI-Festplatten enthält,
    richtig konfiguriert wurden.
    Bitte dazu auch den Abschnitt zu \var{OPT\_\-HDDRV} gründlich durchlesen!

    Die Variable \var{BOOT\_\-TYPE} in der base.txt wird auf 'fd'
    eingestellt, es soll ja schliesslich eine Setup-DISKETTE erstellt werden. 
    Die Variable \var{MOUNT\_\-BOOT} in der base.txt muß auf 'rw' eingestellt werden,
    damit später ein neues Archiv opt\_tar.bz2 über das Netzwerk aufgespielt werden kann.

    Anschließend wird der Router von dieser Diskette gebootet. Über das Bootmenü 
    oder direkt durch Eingabe von ``hdinstall.sh'' an der fli4l-Console wird dann
    das Installationsprogramm gestartet. Nach Beantwortung von ein paar Fragen 
    wird die Festplatte vorbereitet. Zuletzt erscheint eine Aufforderung, dass man
    die für den Router benötigten Dateien per Remote-Update aufspielen soll.

    \achtung{Dieses Remote-Update keinesfalls vergessen, der Router bootet sonst 
    nicht von der Festplatte. Zum Neustarten des Routers nach dem
    Remote-Update unbedingt reboot/halt/poweroff verwenden,
    andernfalls können die beim Remote-Update vorgenommenen Änderungen verloren gehen.}
    
    \achtung{Falls die Festplatte bei der Installation nicht automatisch gefunden wurde
    kann es passieren, dass der Router nicht von HD bootet. In diesem Fall muss in der 
    syslinux.cfg der Eintrag boot=/dev/$<$bei der Installation angegebene Platte$>$ an die
    Append-Zeile angehängt werden.}

    Das Installationsscript kann sowohl direkt am Router als auch über ssh von einem
    anderen PC aus gestartet werden. Im jedem Fall muss man sich vorher 
    durch Eingabe des Passwortes am Router anmelden. Als ssh-Client für Windows-Rechner
    empfehlen wir die Freeware Putty.


\subsubsection{Konfiguration der Setup-Diskette}

\begin{table}[htb]
  \begin{center}
    \begin{small}
    \begin{tabular}[h!]{lp{9cm}}
    \var{BOOT\_\-TYPE} & entsprechend dem Bootmedium für die Installation einstellen, idR
        Diskette (fd)\\
    \var{MOUNT\_\-BOOT}='rw' & notwendig, um später ein neues opt\_tar.bz2 über Netzwerk
        auf die Platte kopieren zu können \\
    \var{OPT\_\-HDINSTALL}='yes' & notwendig um das Setup-Script und die Tools zum 
        Formatieren der Partitionen auf der Diskette zu haben\\
    \var{OPT\_\-HDDRV}='yes' &    notwendig, weil ohne Treiber nicht auf die
        Festplatte zugegriffen werden kann.  \\
        \var{IMOND}='yes' & nach dem Vorbereiten der Festplatte werden
        die eigentlichen Dateien per remote Update übertragen. Dazu
        benötigt man entweder den imond, scp (\var{OPT\_SSHD}='yes',
        \var{OPT\_SCP}='yes') oder ein anderes Paket, das einen
        Filetransfer erlaubt. 
    \end{tabular}
    \end{small}
    \caption{Beispiel für die Konfiguration der Setup-Diskette }
    \marklabel{tab:hd-setupdisk}{}
  \end{center}
\end{table}

    Bereits hier muss die Netzwerkkonfiguration richtig eingestellt sein, damit man
    die Dateien für die Festplatte über das Netzwerk aufspielen kann. Für ein Remote-Update
    mittels Imonc wird bei der Setup-Diskette auch der IMOND und damit eine gültige
    ISDN/DSL-Konfiguration benötigt.
    Alternativ dazu kann man die Dateien per scp auf den Router kopieren, dazu bitte
    \var{OPT\_\-SCP}='yes' (befindet sich im Package SSHD) einstellen.
    Alle nicht unbedingt nötigen Pakete bitte weglassen, also kein SAMBA\_LPD, LCD,
    Portforwarding usw.

    Falls die Installation mit der Fehlermeldung
\begin{example}
\begin{verbatim}
    *** ERROR: can't create new partition table, see docu ***
\end{verbatim}
\end{example}
       abbricht, können mehrere Fehlerquellen in Frage kommen:
        \begin{itemize}
        \item die Festplatte ist in Benutzung, evtl. durch einen abgebrochenen
        Installationsversuch. Einfach neu booten und noch einmal versuchen.
        \item es gibt Hardwareprobleme, mehr dazu bitte im Anhang nachlesen.
        \end{itemize}
    Im letzten Schritt kann man nun die endgültige Fassung der
    Konfigurationsdateien erstellen und alle gewünschten Pakete hinzufügen.

\subsubsection{Beispiele für eine fertige Installation nach Typ A und Typ B:}

Ein Beispiel für jede Konfiguration finden Sie in Tabelle
\ref{tab:hd-typ-a}.

\begin{table}[htb]
  \begin{center}
    \begin{small}
    \begin{tabular}{lp{9cm}}
    \var{BOOT\_\-TYPE}='hd' & notwendig, da sie ja jetzt von Festplatte starten\\
    \var{MOUNT\_\-BOOT}='rw$|$ro$|$no' &
                        nach Wahl. Um später ein neues opt\_tar.bz2 über Netzwerk
                        auf die Platte kopieren zu können ist 'rw' nötig.\\

    \var{OPT\_\-HDINSTALL}='no' & nach der erfolgreichen Installation ist dieses Paket
                        nicht mehr notwendig. Falls die Notfallinstallation genutzt werden
                        soll, dieses OPT aktiv lassen und zusätzlich \var{OPT\_\-MENU}='yes'
                        einstellen. Auch diese Weise kann per Menüauswahl jederzeit
                        eine laufende fli4l-Installation zur neuen Notfallversion erklärt 
                        werden. \\

    \var{OPT\_\-HDDRV}='yes' &    notwendig, weil ohne Treiber nicht auf die
        Festplatte zugegriffen werden kann.  \\

    \var{OPT\_\-MOUNT}          & nur aktivieren, falls eine Datenpartition oder
                        eine Swap-Partition erstellt wurde\\
    \end{tabular}
    \end{small}
    \caption{Beispiel für eine Installation nach Typ A oder B}
    \marklabel{tab:hd-typ-a}{}
  \end{center}
\end{table}

    Grundsätzlich sollte man auf Flash-Medien keine Swap-Partition
    anlegen, weil deren Anzahl von Schreibzyklen begrenzt ist und damit ein früher
    Defekt des Mediums zu erwarten ist. Das Erstellen einer Swap-Partition wird 
    nur angeboten, falls weniger als 32MB RAM im Router stecken und die Installation
    NICHT auf ein Flash-Medium durchgeführt wird!

    \subsubsection{Erklärung der Notfalloption}


    Bei einer Installation auf Festplatte könnte folgendes Problem
    auftreten: Per Imonc oder scp wurde ein neues opt\_tar.bz2 auf den Router
    kopiert, neu gestartet und der Router ist plötzlich nicht mehr über das
    Netzwerk ansprechbar. Eine kurze Fehlersuche bringt dann meistens einen 
    kleinen Fehler in einer der Konfigurationsdateien zu Tage (z.B. falscher 
    Netzwerktreiber gewählt). Das ist normalerweise kein ernsthaftes Problem, 
    denn man kann eine neue Diskette in den Router schieben, davon booten und 
    ein korrigiertes Archiv opt\_tar.bz2 auf die Festplatte kopieren.

    Wurde jedoch die Hardware soweit abgespeckt, dass Diskettenlaufwerk,
    Grafikkarte und Tastatur fehlen, ist die Notfalloption dafür vorgesehen,
    den fli4l-Router wieder in einen arbeitsfähigen Zustand zu versetzen.

    In diesem Fall kann einfach eine zweite FLI4L-Installation auf der 
    Festplatte abgelegt werden. Beim Starten des Routers wird 
    diese Installation für den nächsten Bootvorgang aktiviert. Erst wenn der
    Router vollständig gebootet hat und eine einstellbare Wartezeit 
    verstrichen ist, wird wieder die normale Installation für den nächsten
    Boot aktiviert.

    Die Abfrage für die Installation der Notfalloption erscheint nur wenn die
    FAT-Partition größer als 4MB ist. Mit einer kleineren Partition kann es 
    sonst bei einem Remote-Update zu Platzproblemen kommen.

    Das Ende der Wartezeit wird mit drei kurzen Pieptönen verkündet. Nach 
    diesem akkustischen Signal, welches ja auch ohne Monitor funktioniert,
    steht wieder die normale Installation für den nächsten Start des Routers
    zur Verfügung.

    Falls durch einen Konfigurationsfehler der Router nicht komplett startet,
    muß man einfach vor Ablauf der Wartezeit die Reset-Taste drücken (oder aus-
    und einschalten) und es wird mit der Notfall-Version gestartet. Damit ist
    der Router wieder vom Netzwerk aus ansprechbar und man kann den Fehler
    korrigieren.

    \achtung{Einen Reboot nach einem Remote-Update des opt\_tar.bz2 mittels Imonc 
    darf erst nach Ablauf der Wartezeit durchgeführt werden, weil sonst beim 
    nächsten Bootvorgang die Notfallinstallation aktiv ist!}

    \achtung{Die Notfalloption kann nicht helfen, wenn ein fehlerhaftes rootfs
    (z.B. eines ohne die HD-Treiber), ein ungeeigneter Kernel oder eine 
    fehlerhafte Einstellung der Festplatte im BIOS den Bootvorgang verhindern!}

    \achtung{Die Notfallversion ist nach einer frischen Installation erst nutzbar
    nachdem die dafür benötigten Dateien entweder über das Boot-Menü oder manuell
    auf die Boot-Partition geegt wurden}

    \achtung{Es ist nicht möglich eine andere fli4l-Version (z.B. 2.1.x produktiv 
    und im Notfall wird die 2.0.x gebootet) als Notfalloption auf
    der Festplatte abzulegen.}

    Wenn eine neuere Installation als Fallback auf dem Router abgelegt werden 
    soll, kann dies ganz einfach mit dem Bootmenü durchgeführt werden. 
    Alternativ dazu einfach eine normale Konfiguration mittels mkopt.sh oder
    mkopt.bat erstellen und die Dateien opt\_tar.bz2 in opt2\_tar.bz2 und rc.cfg in 
    rc2.cfg umbenennen. Diese umbenannten Dateien müssen dann nur noch auf die 
    DOS-Partition des Routers (unter /boot erreichbar) kopiert werden.
 
\begin{description}
\config{HDINSTALL\_RECOVERYTIME}{HDINSTALL\_RECOVERYTIME}{HDINSTALLRECOVERYTIME}

        Hier kann die gewünschte Wartezeit für die Recovery-Installation 
        eingestellt werden.

\end{description}

\subsection {OPT\_MOUNT - Mounten von Dateisystemen auf Festplatte etc.}

    OPT\_MOUNT mountet die Datenpartition nach /data, eine Prüfung der Partition auf
    Fehler wird bei Bedarf automatisch durchgeführt. Ein evtl. vorhandenes CD-ROM
    wird nach /cdrom gemountet, falls eine CD eingelegt ist.
    Für die swap-Partition wird das OPT\_MOUNT nicht mehr benötigt!

    \achtung{OPT\_MOUNT funktioniert nur nach einer Neuinstallation des Routers auf HD,
    weil dabei eine Konfigurationsdatei auf der Boot-Partition erstellt wird.    
    Wenn das \var{OPT\_\-MOUNT} mit einem Remote-Update auf einen bereits installierten
    Router übertragen wurde, muss diese Konfigurationsdatei manuell erstellt werden.}
   
    \achtung{Auch bei einem Boot von CD-ROM kann das OPT\_MOUNT nicht genutzt werden. 
    Die CD kann in diesem Fall mit MOUNT\_BOOT='ro' gemountet werden.}
    
    Die Datei hd.cfg auf der DOS-Partition hat für einen Router nach Typ B mit Swap und 
    Datenpartition den folgenden Inhalt:
    \begin{verbatim}
        hd_boot='hda1'
        hd_opt='hda2'
        hd_swap='hda3'
        hd_data='hda4'
        recoverytime='30'
    \end{verbatim}
    
    Nicht existierende Partitionen werden einfach weggelassen, bei einem Router Typ A 
    ohne weitere Partitionen auf einer SCSI-Festplatte sieht das also so aus:
    \begin{verbatim}
        hd_boot='sda1'
        recoverytime='30'
    \end{verbatim}

    Auch die Zeile mit der recoverytime kann entfallen, es wird dann der Defaultwert von
    60 Sekunden genommen.


\subsection {OPT\_HDSLEEP -- automatisches Abschalten für IDE-Festplatten einstellen}

    Eine IDE-Festplatte kann sich automatisch abschalten, wenn eine bestimmte
    Zeit ohne Aktivität verstreicht. Damit benötigt die Platte kaum noch Strom
    und macht keine Geräusche mehr. Wenn ein Zugriff auf die Festplatte
    erfolgt, läuft sie automatisch wieder an.

    \achtung{Nicht alle Festplatten vertragen häufiges Wiederanlaufen. Daher
    sollte man die Zeit nicht zu klein wählen. Ältere IDE-Platten und
    SCSI-Laufwerke bieten diese Funktion erst gar nicht an.}

    Bei Flash-Medien sind diese Einstellungen nicht sinnvoll und auch
    nicht notwendig. SCSI-Festplatten werden ebenfalls nicht unterstützt.

\begin{description}
\config{HDSLEEP\_TIMEOUT}{HDSLEEP\_TIMEOUT}{HDSLEEPTIMEOUT}

        Diese Variable legt fest, nach welcher Zeit ohne Zugriff sich die 
        Festplatte in den Power-Down-Modus gehen soll. Dann schaltet sich die
        Festplatte automatisch nach der Wartezeit aus und beim nächsten Zugriff wieder ein.
        Hierbei sind Wartezeiten in Minutenabständen von einer bis 20 Minuten 
        möglich sowie in Abständen von 30 Minuten von einer Halben bis zu fünf
        Stunden. Eine Wartezeit von 21 oder 25 Minuten wird also z.B. auf 30 
        Minuten aufgerundet.
        Manche Festplatten ignorieren auch zu hohe Werte und stoppen dann schon 
        nach einigen Minuten. Bitte unbedingt die korrekte Funktion durchtesten,
        da dies sehr von der jeweiligen Hardware abhängig ist!

\begin{example}
\begin{verbatim}
        HDTUNE_TIMEOUT='2'              # wait 2 minutes until power down
\end{verbatim}
\end{example}

\end{description}


\subsection {OPT\_HDDRV - Treiber für Festplattencontroller}

    Das Treiber-Paket basiert auf dem OPT\_SCSI, welches Kai-Christian Arndt 
    (\email{kai-christian.arndt@gmx.de}) für fli4l zusammengestellt hat.

    Mit \marklabel{OPTHDDRV}{}\var{OPT\_\-HDDRV}='yes' können die benötigten Treiber
    aktiviert und installiert werden.
    
\begin{description}
\config{HDDRV\_N}{HDDRV\_N}{HDDRVN}
{
        Die Anzahl der Treiber, die geladen werden sollen, wird mit \var{HDDRV\_\-N}
        eingestellt.}

\config{HDDRV\_x}{HDDRV\_x}{HDDRVx}
{
        Mit \var{HDDRV\_\-1} usw. werden die entsprechenden Treiber für die
        verwendeten Host-Adapter ausgewählt. Eine Liste der unterstützten
        Hostadapter ist in der Beispiel-Konfigurationsdatei enthalten.
}
    
\config{HDDRV\_x\_OPTION}{HDDRV\_x\_OPTION}{HDDRVxOPTION}
{        
        Mit \var{HDDRV\_\-x\_\-OPTION} können Optionen übergeben werden, die einige Treiber
        zum laden benötigen. Dies kann z.B. eine IO-Adresse für einen SCSI-Controller sein.
        Bei den meisten Treibern kann diese Variable einfach leer gelassen werden.
}

    Jetzt folgen einige Beispiele wie bestimmte Treiber zu laden sind.

    Beispiel 1: Zugriff auf IDE-Festplatten oder Compact-Flash Medien.
    
\begin{example}
\begin{verbatim}
   OPT_HDDRV='yes'             # install Drivers for Harddisk: yes or no
   HDDRV_N='1'                 # number of HD drivers
   HDDRV_1='ide-hd'            # this is the ide-disk driver
   HDDRV_1_OPTION=''           # no need for options yet
\end{verbatim}
\end{example}


    Beispiel 2: Zugriff auf IDE-Festplatte und ein IDE-CDROM zusätzlich
    
\begin{example}
\begin{verbatim}
   OPT_HDDRV='yes'             # install Drivers for Harddisk: yes or no
   HDDRV_N='2'                 # number of HD drivers
   HDDRV_1='ide-hd'            # this is the ide-disk driver
   HDDRV_1_OPTION=''           # no need for options yet
   HDDRV_2='ide-cd'            # IDE CDROM driver
   HDDRV_2_OPTION=''           # no need for options yet
\end{verbatim}
\end{example}


    Beispiel 3: Zugriff auf SCSI-Festplatte an einem Adaptec 2940
    
\begin{example}
\begin{verbatim}
   OPT_HDDRV='yes'             # install Drivers for Harddisk: yes or no
   HDDRV_N='1'                 # number of HD drivers
   HDDRV_1='aic7xxx'           # various aic7xxx based Adaptec SCSI 
   HDDRV_1_OPTION=''           # no need for options yet
\end{verbatim}
\end{example}


    Beispiel 4: Eine SCSI-CD-ROM am selben Controller zu Beispiel 3
    
\begin{example}
\begin{verbatim}
   OPT_HDDRV='yes'             # install Drivers for Harddisk: yes or no
   HDDRV_N='2'                 # number of HD drivers
   HDDRV_1='aic7xxx'           # various aic7xxx based Adaptec SCSI 
   HDDRV_1_OPTION=''           # no need for options yet
   HDDRV_2='scsi-cd'           # SCSI CDROM driver
   HDDRV_2_OPTION=''           # enter cdrom driver option here, not used yet
\end{verbatim}
\end{example}


    Beispiel 5: Zugriff auf IDE-Festplatte, IDE-CDROM und dazu noch eine SCSI-
    Festplatte am Adaptec 2940 sowie ein SCSI-CDROM an einem Adaptec 1542. 
    Dies ist allerdings keine geeignete Hardwareausstattung für einen Router, 
    das Beispiel steht nur zur Abschreckung hier drin ;-)
    
\begin{example}
\begin{verbatim}
   OPT_HDDRV='yes'             # install Drivers for Harddisk: yes or no
   HDDRV_N='5'                 # number of HD drivers
   HDDRV_1='ide-hd'            # this is the ide-disk driver
   HDDRV_1_OPTION=''           # no need for options yet
   # Für die IDE-Festplatte
   
   HDDRV_2='ide-cd'            # IDE CDROM driver
   HDDRV_2_OPTION=''           # no need for options yet
   # Für das IDE-CDROM
   
   HDDRV_3='aic7xxx'           # various aic7xxx based Adaptec SCSI 
   HDDRV_3_OPTION=''           # no need for options yet
   # Adaptec 2940, SCSI-HD-Unterstützung gibt es automatisch dazu.
   
   HDDRV_4='aha1542'           # Adaptec AHA154x Controller
   HDDRV_4_OPTION=''           # no need for options yet
   # Adaptec 1542 für das SCSI-CDROM
   
   HDDRV_5='scsi-cd'           # SCSI CDROM driver
   HDDRV_5_OPTION=''           # enter cdrom driver option here, not used yet
   # der Treiber für SCSI-CD-ROM's muß extra dazu geladen werden.
\end{verbatim}
\end{example}
\end{description}
