  Linux LILO mini-HOWTO
  Cameron Spitzer (cls@truffula.sj.ca.us), Alessandro Rubini
  (rubini@linux.it) und Horst Knobloch (hknobloch@odn.de)
  v2.1-2, 9. Januar 1998

  Diese Dokument beschreibt einige typische LILO-Installationen. Es soll
  eine zustzliche Hilfe zum LILO User's Guide sein. Ich glaube, die
  Beispiele sind informativ, auch bei Konstellationen, die nicht gleich
  der von mir benutzten sind. Ich hoffe, da sie helfen, Probleme zu
  vermeiden.


  1.  Einleitung

  Trotz der umfassenden Dokumentation, die den LILO Sourcen beiliegt und
  in /usr/doc/lilo-version zu finden ist, bereitet es den meisten Linux
  Benutzern Probleme ein eigenes /etc/lilo.conf File zu erstellen.
  Dieses Dokument ist gedacht, diese Benutzer zu untersttzen, indem es
  nur die notwendigsten Informationen erlutert und fnf Beispiel-
  Installationen zeigt:


    Das erste Beispiel ist die klassische Installation Linux und
     anderes Betriebssystem.

    Das nchste zeigt wie man Lilo auf einer Festplatte installiert,
     welche mit /dev/hdc angesprochen wird, aber dann als /dev/hda
     booten soll. Dies wird normalerweise bentigt, wenn man Linux von
     einem laufenden System auf eine neue Platte installiert.

    Das dritte Beispiel zeigt, wie man Linux bootet, wenn die Root-
     Partition nicht vom BIOS erreichbar ist.

    Das nchste Beispiel ist gedacht um den Zugriff auf groe Platten
     zu demonstrieren, auf die weder das BIOS noch DOS einfach zugreifen
     kann. (Diese Beispiel ist etwas veraltet.)


    Das letzte Beispiel zeigt, wie man eine beschdigte Platte
     restauriert (der Schaden wurde durch die Installation eines anderen
     Betriebssystems verursacht).


  Die letzten drei Beispiele sind von Cameron Spitzer
  (cls@truffula.sj.ca.us), welcher das Originaldokument schrieb. Da ich
  als der gegenwrtige Kmmerer nichts anderes als Linux benutzte, kann
  ich diese Beispiele weder prfen noch anpassen.


  1.1.  Copyright


  Dieses Dokument ist urheberrechtlich geschtzt. Das Copyright fr die
  englische LILO mini-HOWTO, auf der dieses Dokument basiert, liegt bei
  Cameron Spitzer und Alessandro Rubini. Das Copyright fr die deutsche
  Version liegt bei Horst Knobloch.

  Das Dokument darf gem der GNU General Public License verbreitet
  werden. Insbesondere bedeutet dieses, da der Text sowohl ber
  elektronische wie auch physikalische Medien ohne die Zahlung von
  Lizenzgebhren verbreitet werden darf, solange dieser Copyright
  Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
  und ausdrcklich erwnscht. Bei einer Publikation in Papierform ist
  das Deutsche Linux HOWTO Projekt hierber zu zu informieren.



  2.  Hintergrund Information und Standard Installation

  Wenn Lilo das System bootet, kann er nur die Daten-Sektoren laden, die
  ber das BIOS erreichbar sind. Jeder Pfadname in /etc/lilo.conf wird
  zum Installationszeitpunkt ausgewertet, d.h. beim Aufruf von lilo.
  Dies ist auch der Zeitpunkt, bei dem das Programm die Zuordnungs-
  Tabelle (map) erstellt. Diese Tabelle gibt an, welche Sektoren von den
  Dateien benutzt werden.  Daraus folgt als Konsequenz, da die Dateien
  in einer Partition liegen mssen, welche ber das BIOS ansprechbar
  ist. Auerdem mu jedesmal der Lader neu-installiert werden (d.h.
  Aufruf von lilo), sobald man die Files ndert. Nach jeder Kernel-
  Kompilierung und erfolgreicher Installation ist auch Lilo neu zu
  installieren.


  2.1.  Wohin Lilo installieren?

  Die boot = Anweisung in /etc/lilo.conf sagt dem Lilo, wohin er den
  Haupt-Boot-Lader zu installieren hat. Im allgemeinen kann man den
  Master-Boot-Record (z.B. /dev/hda) oder die Root-Partition der Linux
  Installation angeben (z.B. /dev/hda1 oder /dev/hda2).


  Wenn ein anderes Betriebssystem auf der Platte installiert ist, sollte
  man Lilo besser in der Root-Partition unterbringen. In diesem Fall ist
  diese Partition als bootable (bootbar) zu markieren. Das erreicht
  man mit dem a Kommando von fdisk oder mit dem b Kommando von
  cfdisk. Es ist einfacher Lilo und Linux (bei Bedarf) zu entfernen,
  wenn Lilo nicht im Master Boot Record (MBR) installiert wird.


  2.2.  Wie IDE-Platten konfigurieren?

  Da ich nur Linux benutze, bentige ich die LBA- oder LARGE-Einstellung
  im BIOS nicht. Diese Einstellungen sind frchterliche Krcken um
  Design-Schwchen der PCs zu umgehen. Diese fordern, da der Kernel in
  den ersten 1024 Zylindern liegen mu; das ist kein Problem, so lange
  man seine Platte partitioniert und die Root-Partition klein hlt.
  (Dies sollte man sowieso immer beachten)


  Wenn auf der Platte aber schon ein anderes Betriebssystem installiert
  ist, kann es unter Umstnden unmglich sein, die BIOS-Einstellungen zu
  modifizieren, da sonst das alte System nicht mehr lauffhig wre.
  Alle neueren Lilo-Distributionen sind jedoch fhig, mit den
  Einstellungen fr LBA- und LARGE-Disk umzugehen.


  Die Festplatten, die auschlielich unter Linux benutzt werden und von
  denen auch nicht gebootet wird, knnen aus dem BIOS ausgetragen
  werden.  Dadurch bootet das System schneller und Linux erkennt diese
  Platten spter trotzdem automatisch und ohne Zeitverlust. Ich schliee
  z.B. fter zustzlich Festplatten an meinen Rechner an, ohne die BIOS-
  Einstellung zu verndern.


  2.3.  Wie beim Booten eingreifen?

  Wenn der Lilo-Prompt erscheint, ist es durch Drcken der <Tab> Taste
  mglich eine Auswahlliste anzuzeigen. Sollte Lilo dafr nicht
  konfiguriert sein, so hilft das Drcken und Halten der <Alt> oder
  <Shift> Taste bevor LILO angezeigt wird.


  Wenn man einen Kernel zum Booten auswhlt, kann man nach dem
  ausgewhlten Kernelnamen noch zustzliche Kommandozeilen-Parameter
  angeben. Der Kernel akzeptiert umfangreiche Kommandozeilen-Parameter;
  dies ist aber nicht der richtige Ort, um sie alle aufzulisten. Einige
  sind aber meiner Meinung nach interessant:



     root=
        diese Partition soll als root gemountet werden, sie kann
        unterschiedlich sein zu dem Eintrag in lilo.conf.  Zum Beispiel,
        habe ich eine kleine Parition mit einem Minimal-Linux, die es
        mir ermglicht das System zu booten, sollte durch einen Fehler
        meine Root-Partition zerstrt werden.


     init=
        Version 1.3.43 und neuere Linux-Kernel akzeptieren das Ausfhren
        von anderen Programmen als /sbin/init.  Wenn beim Booten
        kritische Probleme auftreten, ist es durch init=/bin/sh mglich
        ein spartanisches System zu starten.  Nach Erscheinen des Shell-
        Prompts ist es in den meisten Fllen ntig, erstmal die
        Partitionen zu mounten:


          /sbin/mount -w -n -o remount /; mount -a


     Vor dem Ausschalten des Computers nicht vergessen,


          /sbin/umount -a

     aufzurufen.


     eine Nummer
        eine Nummer in der Kernel-Kommandozeile veranlat init den
        gewnschten Run-Level einzunehmen.  Der Default ist
        normalerweise 3. Bitte genaueres in der Dokumentation zu init,
        /etc/inittab und /etc/rc.d nachlesen.



  2.4.  Wie Lilo entfernen?

  Wenn Lilo einen Boot-Sektor berschreibt, sichert er ihn in
  /boot/boot.xxyy. Dabei ist xxyy die Major- und Minor-Device-Nummer in
  Hexadezimal.


       ls -l /dev/device


  zeigt einem die Major- und Minor-Nummern an. Zum Beispiel, der erste
  Sektor von /dev/hda (Major 3, Minor 0) wird in /boot/boot.0300
  gespeichert; installiert man Lilo auf /dev/fd0 wird ein
  /boot/boot.0200 angelegt; die Installation von Lilo auf /dev/sdb3
  (Major 8, Minor 19) sichert eine Kopie in /boot/boot.0819.

  Achtung: Sollte ein solches File schon existieren, wird von Lilo keine
  Kopie generiert. Darber mu man sich bei der Installation von Lilo,
  z.B.  nach einer Kernel-Kompilierung, aber nicht sorgen.


  Sollte man in die Verlegenheit geraten, Lilo entfernen zu mssen, z.B.
  bei der De-Installation von Linux, braucht nur der ursprngliche Boot-
  Sektor wieder hergestellt werden. Ist Lilo in /dev/hda installiert,
  gengt es,


       dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1


  aufzurufen. Ich benutze einfach:


       cat /boot/boot.0300 > /dev/hda


  Dies ist aber nicht ganz sicher, da auch die ursprngliche
  Partitionstabelle mitrestauriert wird; diese knnte aber in der
  Zwischenzeit gendert worden sein. Diese Kommando ist aber viel
  einfacher zu handhaben als ein fdisk /mbr in einer DOS shell, denn es
  erlaubt einem, sauber Linux von der Platte zu entfernen, ohne ein
  anderes Betriebssystem zu bentigen. Nachdem Entfernen von Lilo sollte
  man nicht vergessen, mit dem Linux fdisk alle Linux-Partitionen zu
  lschen, da es mit dem DOS fdisk nicht mglich ist diese zu lschen.

  Ist Lilo auf der Root-Partition installiert, z.B. auf /dev/hda2, so
  ist keinerlei Aktion notwendig, um Lilo zu de-installieren. Nur das
  Linux fdisk aufrufen und alle Linux-Partitionen aus der
  Paritionstabelle entfernen. Nicht vergessen, die DOS-Partition als
  Boot-Partition zu markieren.


  3.  Die einfache Konfiguration

  Die meisten Lilo Installationen benutzen eine Konfigurationsdatei wie
  die folgende:





  boot = /dev/hda   # oder die Root-Partition, z.B. /dev/hda2
  delay = 0         # oder eine Verzgerung in Zehntel-Sekunden
  vga = 0           # optional, "vga=1" angeben um 80x50 zu erhalten

  image = /boot/vmlinux  # das zImage File (= Kernel)
    root = /dev/hda1     # die Root-Partition
    label = Linux        # oder ein anderer, mehr ausgefallener Name
    read-only            # mounte Root-Partition nur-lesbar

  other = /dev/hda4   # die DOS-Partition, so vorhanden
    table = /dev/hda  # die aktuelle Partitionstabelle
    label = dos       # oder ein anderer Name




  Es sind mehrere image und other Abschnitte mglich. Es ist nicht
  unblich, mehrere Kernel-Images in lilo.conf zu konfigurieren;
  zumindest wenn man mit der Kernel-Entwicklung schritthalten will.


  4.  Installieren auf hdc  und Booten von hda

  Lilo erlaubt es, den Kernel von einer Platte zu mappen und dann das
  BIOS anzuweisen, ihn von einer anderen Platte zu booten. Z.B. ist es
  fr mich normal, Linux auf einer Platte zu installieren, welche sich
  unter hdc (Master Disk des 2. Kontrollers) befindet, um sie spter als
  Boot-Platte am 1. IDE-Kontroller eines anderen Nur-Linux-Rechners zu
  benutzen. Ich kopiere dazu die Installations-Diskette auf eine kleine
  Partition, die ich dann in einer Virtual-Konsole mit chroot zur Root-
  Partition mache. Damit kann ich hdc einrichten und whrend der
  Installation das System fr etwas anderes benutzen.


  Die Datei lilo.conf,die ich dafr benutze, sieht wie folgt aus:



       # Dieses File mu von einem Sys. benutzt werden, welches von
       # /dev/hdc luft

       boot = /dev/hdc   # berschreibe MBR von hdc
       disk = /dev/hdc   # definiere wie hdc dann aussieht:
          bios = 0x80    # das BIOS wird sie dann als erste Platte erkennen

       delay = 0
       vga = 0

       image = /boot/vmlinux  # Pfad des Kernels auf der Root-Partition /dev/hdc1
         root = /dev/hda1     # hdc1 wird beim Booten hda1
         label = Linux
         read-only





  Dieses Konfigurationsdatei mu von Lilo verarbeitet werden, welcher
  von /dev/hdc1 gestartet wurde. Die Lilo Zuordnungstabelle (map), die
  in den Boot-Sektor /dev/hdc geschrieben wird, mu die Dateien vmlinux
  und /boot/boot.b  des Boot-Zeitpunkts referenzieren, d.h. jene von
  hdc.

  Ich nenne diese Konfigurationsdatei /mnt/etc/lilo.conf.hdc. Damit
  installiere ich Lilo durch den Aufruf

       cd /mnt; chroot . sbin/lilo -C /etc/lilo.conf.hdc


  whrend /dev/hdc1 unter /mnt gemountet ist.


  5.  BIOS erkennt Root-Partition nicht

  Ich habe zwei IDE- und eine SCSI-Platte. Dabei wird die SCSI-Platte
  nicht vom BIOS erkannt. Der Linux-Lader (LILO) benutzt BIOS-Aufrufe
  und kann deshalb nur Platten erkennen, die auch das BIOS erkennt. Das
  dumme AMI BIOS bootet leider nur von A: oder C:. Mein Root-
  Dateisystem ist aber auf einer Partition des SCSI-Laufwerks.

  Die Lsung ist, den Kernel, die Map-Datei, und den Chain-Loader in
  eine Linux-Partition auf der ersten IDE-Platte zu installieren.  Es
  sei darauf hingewiesen, da es nicht notwendig ist, den Kernel auf der
  Root-Partition zu haben.

  Die zweite Partition meiner ersten IDE-Platte (/dev/hda2, die Linux-
  Partition zum Booten) ist unter /u2 gemountet. Hier kommt die
  /etc/lilo.conf, welche ich dafr benutze:












































  #  Installiere LILO in den Master Boot Record
  #  auf der erste IDE-Platte
  boot = /dev/hda

  #  /sbin/lilo (der Installierer) kopiert LILOs Boot Record
  #  vom folgenden File in den MBR
  install = /u2/etc/lilo/boot.b

  # Ich schrieb mir ein ausfhrliches Boot-Men. LILO findet es unter
  message = /u2/etc/lilo/message

  # Der Installierer generiert das folgende File, welches dem
  # Boot-Lader sagt wo die Blcke des Kernels sind.
  map = /u2/etc/lilo/map
  compact
  prompt

  #  Warte 10 Sekunden, boote dann den 1.2.1 Kernel als Standard
  timeout = 100

  #  Der Kernel wird dort installiert wo ihn das BIOS sehen kann, durch:
  #      cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
  image = /u2/z1.2.1
          label = 1.2.1

  #  LILO sagt dem Kernel, dass die erste SCSI-Partition als Root
  #  gemountet werden soll. Das BIOS braucht diese Partition nicht
  #  zu erkennen.
          root = /dev/sda1

  #  Diese Partition wird geprft und nochmal gemountet durch /etc/rc.d/rc.S
          read-only

  #  Ich behalte einen alten Slackware Kernel fr den Fall, da ich einen
  #  Kernel generierte habe, welcher nicht funktioniert. (Ich brauchte ihn
  #  tatschlich schon einmal)
  image = /u2/z1.0.9
          label = 1.0.9
          root = /dev/sda1
          read-only

  #  Meine DR-DOS 6 Partition
  other = /dev/hda1
          loader=/u2/etc/lilo/chain.b
          label = dos
          alias = m





  6.  BIOS Probleme mit groen Platten

  Das System in meinem Bro hat eine 1GB IDE-Platte. Das BIOS erkennt
  nur die ersten 504MB dieser IDE-Platte (1MB bedeutet 2**10 bytes,
  nicht 10**6 bytes). Deswegen habe ich MS-DOS auf einer 350MB Partition
  /dev/hda1 und meine Linux Root-Partition auf einer 120MB Partition
  /dev/hda2.

  MS-DOS war nicht in der Lage, sich auf der neuen Platte selbst zu
  installieren.  Novell DOS 7 hatte die gleichen Probleme.
  Glcklicherweise verga Options by IBM die OnTrack Diskette dem
  Packet mit der Platte beizulegen. Die Platte sollte mit dem OnTrack
  Disk Manager Programm ausgeliefert werden, die fr ein Nur-DOS-
  System, soviel ich wei, auch benutzt werden mu.

  Ich erstellte aber eine Partitionstabelle mit fdisk von Linux. MS-DOS
  6.2 verweigerte aber die Installation auf /dev/hda1. Die Fehlermeldung
  lautete ungefhr so: Diese Version von MS-DOS ist fr Neu-
  Installationen.  Ihr Computer hat aber schon ein MS-DOS installiert,
  deshalb bentigen Sie eine Upgrade-Version von Ihrem Hndler. Dabei
  war die Platte aber brandneu.

  So ein Bldsinn! Ich startete also das Linux fdisk erneut und lschte
  Partition 1 aus der Tabelle. Das stellte MS-DOS 6.2 zufrieden. Es
  kreierte anschlieend die exakt gleiche Partition 1, welche ich gerade
  gelschte hatte und konnte sich darauf installieren.  MS-DOS 6.2
  schrieb zwar seinen Master Boot Record auf die Platte, aber konnte
  trotzdem nicht starten.

  Glcklicherweise hatte ich noch einen Slackware Kernel auf einer
  Diskette, welche von dem Slackware Installationsprogramm setup
  erstellt wurde. Mit diesem Kernel bootete ich dann Linux und
  berschrieb den defekten MBR von MS-DOS mit LILO. Das funktionierte
  endlich. Hier ist die /etc/lilo.conf Datei, die ich benutzte:



       boot = /dev/hda
       map = /lilo-map
       delay = 100
       ramdisk = 0             # schaltet ramdisk im Slackware Kernel aus
       timeout = 100
       prompt
       disk = /dev/hda         # BIOS sieht nur die ersten 500 MB.
          bios = 0x80          # gibt an, da die erste IDE-Platte benutzt wird
          sectors = 63         # die Geometriedaten aus der HD Dokumentation
          heads = 16
          cylinders = 2100
       image = /vmlinuz
         append = "hd=2100,16,63"
         root = /dev/hda2
         label = linux
         read-only
         vga = extended
       other = /dev/hda1
         label = msdos
         table = /dev/hda
         loader = /boot/chain.b




  Danach installierte ich diese Partitionen und berprfte, da die
  Partition mit dem zImage, boot.b, map, chain.b und den message Files,
  ein MSDOS-Dateisystem benutzen konnte, wenn dieses nicht mit Stacker
  oder Doublespace behandelt war. So konnte ich dann DOS von der 500MB
  Partition /dev/hda1 booten.

  Ich habe auch gelernt, da OnTrack eine um ein paar Bytes versetzte
  Partitionstabelle geschrieben htte. Es ist zwar mglich den Linux IDE
  Treiber zu ndern, damit er diese erkennt, aber die Installation wre
  unmglich mit dem kompilierten Slackware Kernel. Schlielich erhielt
  ich doch noch die OnTrack Diskette. Ich rief OnTracks Technischen
  Support an, welcher mir erzhlte, da Linux fehlerhaft sei, da es
  nicht das BIOS benutzt. Ich habe ihre Diskette dann verschenkt.


  7.  Booten von einer Notfall-Diskette

  Als nchstes installierte ich Windows95 auf meinem Bro-Rechner. Es
  zerstrte meinen LILO-MBR, aber lie meine Linux-Partitionen
  unverndert.  Da es lange dauert einen Kernel von der Diskette zu
  booten, installierte ich mir LILO auf einer Diskette, um damit den
  Kernel von IDE zu booten.

  Ich erstellte die LILO-Diskette wie folgt:


       fdformat /dev/fd0H1440      #  formatiere eine neue Diskette
       mkfs -t minix /dev/fd0 1440 #  erstelle ein minix Dateisystem
       mount /dev/fd0 /mnt         #  mounte Disk unter Standard Mount-Verzeichnis
       cp -p /boot/chain.b /mnt    #  Kopiere den chain loader
       lilo -C /etc/lilo.flop      #  installiere LILO und map auf Diskette
       umount /mnt




  Bitte beachten: die Diskette mu gemountet sein, wenn der Installierer
  gestartet wird, damit Lilo sein map-File richtig schreiben kann.


  Diese Datei nannte ich /etc/lilo.flop und sie stimmt mit der letzten
  fast  berein:



       # Erstelle Diskette, die den Kernel von HD bootet

       boot = /dev/fd0
       map = /mnt/lilo-map
       delay = 100
       ramdisk = 0
       timeout = 100
       prompt
       disk = /dev/hda     # 1 GB IDE, BIOS sieht nur die ersten 500MB
          bios=0x80
          sectors = 63
          heads = 16
          cylinders = 2100

       image = /vmlinuz
         append = "hd=2100,16,63"
         root = /dev/hda2
         label = linux
         read-only
         vga = extended

       other = /dev/hda1
         label = msdos
         table = /dev/hda
         loader = /mnt/chain.b




  Schlielich brauchte ich noch MS-DOS 6.2 auf meinem Bro-Rechner;
  allerdings wollte ich nicht die erste Platte anrhren. Ich kaufte mir
  einen SCSI-Controller und eine SCSI-Platte, erstellte darauf mit dem
  Linux mkdosfs ein MS-DOS Dateisystem, das Windows-95 als D: sieht.
  Natrlich bootet MSDOS nicht von D:, das ist aber mit LILO kein
  Problem.  Ich fgte folgendes zu der lilo.conf aus Beispiel 2:





  other = /dev/sda1
    label = d6.2
    table = /dev/sda
    loader = /boot/any_d.b




  Mit dieser Ergnzung luft MS-DOS 6.2. MS-DOS glaubt, es befindet sich
  auf C: und Windows-95 ist auf D:.
























































