Motivation und Versionswarnung

Das CD basierte KNOPPIX Life System (von Klaus Knopper) ist eine feine Möglichkeit zu sehen wie weit die Kernel Unterstützung für neue Hardware inzwischen gediehen ist, um Wartungsarbeiten an einem (Windows-)System auszuführen oder um einige der auf der CD enthaltenen Programme auszuprobieren. Also gibt es eine Reihe guter Gründe um KNOPPIX so auf die Festplattte zu bringen dass man es bei Bedarf schnell zum Laufen bekommt.

Dieser ab KNOPPIX 5.1 zutreffende Text entstand weil es zwar viele Anleitungen im Internet gibt wie man KNOPPIX auf Festplatte bringt (installiert), aber diese sind oft zu umständlich oder beziehen sich auf ältere Versionen. Es geht hier nicht um eine volle Installation mit eigener KNOPPIX-Partition sondernd schlicht darum wie man das KNOPPIX Life System schnell und einfach von einer Festplatte bootet.

Was genau wird hier beschrieben?

KNOPPIX verwendet ein komprimiertes Dateisystem und startet normalerweise von CD einen Kernel der darauf zugreift. Ziel ist es hier die Dateien der CD so auf die Festplatte zu bringen dass man die CD nicht mehr braucht. Die Daten stehen dabei in einem Gast-Dateisystem von Windwos (NTFS oder FAT) oder von Linux. Zum Booten nehmen wir den GRUB Bootloader (Grub GNU Project) oder SYSLINUX (von H. Peter Anvin).

Was Wechselmedien betrifft wird hier nur auf USB-Festplatten eingegangen, aber die Informationen sollten auch auf USB-Sticks und IEEE1394 Geräte zutreffen. Achtung: wenn das Medium keine normale Partition Tabelle hat (USB-Stick als Super Floppy formattiert) sind Modifikationen nötig, auf die hier aber nicht eingegangen wird.

Grundlagen der Installation

In allen Fällen wird von der CD genau das Verzeichnis KNOPPIX in das Gast-Dateisystem kopiert. Dabei solte das Zielverzeichnis unbedingt KNOPPIX (in Grossbuchstaben!) heissen. Wichtig darin ist vor Allem die rund 600 MByte grosse Datei Namens KNOPPIX (die das eigentliche komprimierte KNOPPIX System enthält).

Im CD Verzeichnis /boot/isolinux befindet sich ein Teil der Bootmechanik. Die wichtigen Dateien für uns sind:

    linux       # der KNOPPIX Kernel der vom Bootloader geladen werden soll
    minirt.gz   # RAM-Disk mit Treibern und dem Bootscript

Diese beiden Dateien werden Sie später in das Gast-Dateisystem kopieren - das eigentliche boot Verzeichnis oder den Rest der CD brauchen wir nicht. Je nach Typ des Gast-Dateisystems werden wir den GRUB Bootloader oder SYSLINUX einrichten. Ausser bei Verwendung von SYSLINUX zum Booten von einer FAT formattierten USB Platte kopieren Sie die beiden Bootdateien jeweils nach /KNOPPIX auf der Zielpartition.

Hinweis: um beim Ausprobieren Zeit zu sparen können Sie die simple virtuelle Maschine qemu (von Fabrice Bellard) z.B. aus dem Debian Archiv einsetzen. Ein Aufruf zum Testen einer USB Installation ist dann z.B.: qemu /dev/sdb1 . Qemu benötigt keinerlei Konfiguration und ist schnell installiert oder später wieder entsorgt. Achtung Falle: rufen Sie ein umount für die Platte auf bevor Sie auf diese über qemu zugreifen!.

Variante 1 - Linux als Gastgeber

Hier wird ein Standard GRUB als Bootloader eingesetzt (GRUB sollte bereits installiert sein, wenn nicht kann dies von der KNOPPIX CD über grub-install geschehen).

Sie kopieren von der CD das KNOPPIX Verzeichnis in das Wurzelverzeichnis (/) der Zielpartition. Auch die Boot-Dateien linux und minirt.gz kopieren wir direkt in dieses neu angelegte Verzeichnis. In unsere bestehende GRUB Konfiguration (menu.lst) fügen wir folgende Auswahl ein:

# Achtung: (hd0,1) ist nur ein Beispiel, setzen Sie Ihre Partition ein!
title  Knoppix booten
root   (hd0,1)
kernel /knoppix/linux ramdisk_size=100000 init=/etc/init lang=de quiet noprompt noeject
initrd /knoppix/minirt.gz
boot

Weiter unten im Text werden als Beispiele noch einige Boot Optionen genannt, die Sie an die kernel Zeile anfügen könnten.

Hinweis: GRUB braucht nur den MBR einer Platte und überschreibt nicht den Bootsektor der Partition. Die Aufgabe den Bootloader zu finden übernimmt das Helferprogramm /boot/grub/xxx_stage1_5. Die Position der entsprechenden Datei wird von grub-install ermittelt und in den MBR gepatched.

Variante 2 - Windows als Gastgeber (gilt nicht für Vista)

Es beginnt gleich mit einer Verzweigung: wenn Windows sowieso über GRUB gestartet wird findet besser Variante 1 Anwendung (siehe oben). Hier hingegen geht es um den Fall dass Windows über seinen eigenen Bootloader aus dem Bootsektor der Windows Partition gestartet wird und dass dieser NTLDR dann auch unser KNOPPIX zu Auswahl anbieten soll.

Um alternativ zu Windows KNOPPIX starten zu können setzen wir eine spezielle GRUB Version aus dem Projekt grub4dos ein (die entgegen einer grämeligen Bemerkung in der kryptischen Dokumentation auch unter Windows XP ... Windows 2003 mit NTFS läuft). Ein Zip-Archiv mit der nötigen Datei kann unter folgender URL geladen werden: grub4dos.sourceforge.net

Aus diesem Archiv können wir unter Windows einfach die Datei grldr in das Wurzelverzeichnis der Windows Boot Partition extrahieren. Sie müssen jetzt noch zwei Änderungen vornehmen (1) die Windows Datei boot.ini editieren und (2) für GRLDR die Datei menu.lst erstellen:

Normalerweise ist boot.ini eine versteckte Datei, die wir zu einer normalen Datei machen sollten bevor wir sie editieren können (aus dem Explorer z.B.). Sie fügen eine Zeile ein die GRUB aufruft (beim nächsten Boot wird Windows NTLDR dann ein Auswahlmenü anzeigen, von wo aus wahlweise Windows oder KNOPPIX gebootet werden kann):

; boot.ini - dies ist nur ein Beispiel ... VORSICHT ...
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows 2003" /noexecute=optout /fastdetect
c:\grldr="Grub Loader for KNOPPIX"

GRLDR selber kann auch ein Menü anzeigen, soll das aber bei uns nicht. In unserem einfachen Fall sieht die im Wurzelverzeichnis von Windows stehende menu.lst Datei von GRUB dann so aus:

timeout     2
hiddenmenu

title       KNOPPIX
root        (hd0,0)
kernel      /KNOPPIX/linux ramdisk_size=100000 init=/etc/init lang=de quiet noprompt noeject
initrd      /KNOPPIX/minirt.gz
boot

Wenn wir KNOPPIX wie unter Grundlagen beschrieben wurde auf die Windows Partition kopiert haben können wir den Rechner neu starten, der Windows Bootloader führt dann in ein Menü und wenn wir dort KNOPPIX wählen wird unser GRUB bemüht um KNOPPIX zu booten.

Weitere Bootoptionen können an die kernel Zeile angehängt werden, z.B für die Bildschirmauflösung:
 
vga=791 screen=1280x1024
 
oder (um den Rechner mit dem Ein-/Ausschalter herunterfahren zu können):
 
apm=power-off

Achtung Falle: Im Gast-Dateisystem müssen die Dateinamen des KNOPPIX Verzeichnisses und der des komprimierten KNOPPIX Images gross geschrieben sein, also: KNOPPIX/KNOPPIX . Dies ist für Filesysteme mit voller Gross/Kleinschreibsemantik wie NTFS sehr wichtig. Auf einem FAT Filesystem würde die Grosskleinschreibung (des Verzeichnisses) z.B. ignoriert. Auch ntldr ignoriert Gross/Kleinschreibung.

Hinweis: Der Code im Windows MBR sucht die Partition Tabelle (die auch im MBR steht) nach einer als aktiv gekennzeichneten Partition ab und lädt von dieser Partition die ersten 512 Byte die wiederrum Code enthalten um den NTLDR Bootloader zu finden.

Variante 3 - Installation auf Wechselmedien

Es sei vorweg gesagt dass ich diesen Schritt mit meiner Hardware nicht richtig testen konnnte weil der KNOPPIX Kernel (2.6.19) zwar korrekt von meiner USB-Festplatte bootet, aber dann ebendiese Festplatte normalerweise nicht sieht. Immerhin, im Prinzip geht es (wie man auch mit qemu ausprobieren kann), und das auf zwei Wegen:

3.1 Wechselmedium mit GRUB

Achtung Falle: GRUB wird bei seiner Installation den MBR (Master Boot Record) der Festplatte überschreiben. Sichern Sie ggf. vorher den MBR mit dem dd Programm (die Bytes 440 bis 511 enthalten übrigens die Partition Tabelle):

# dies ist nur ein Beispiel, setzen Sie Ihren Plattennamen ein!
sudo dd if=/dev/sdb of=mbr_save bs=440 count=1

Für den Linux-Kenner ist die Verwendung von GRUB am einfachsten und stellt auch den allgemeinsten Fall dar. Wenn die USB Platte unter einem gebooteten KNOPPIX /dev/sdb heisst, sagt man z.B einfach:

# dies ist nur ein Beispiel, setzen Sie Ihren Plattennamen ein!
sudo mount /media/sdb1 -o remount,rw
sudo grub-install --root-directory /media/sdb1 /dev/sdb

Unter /media/sdb1 erzeugt man eine einfache menu.lst Datei und installiert KNOPPIX wie oben unter Grundlagen beschrieben:

timeout     5
hiddenmenu

title       KNOPPIX
root        (hd1,0)
kernel      /KNOPPIX/linux ramdisk_size=100000 init=/etc/init lang=de quiet noprompt noeject
initrd      /KNOPPIX/minirt.gz
boot

Beim meinem Rechner kann ich beim Booten die F8 Taste drücken, erhalte von BIOS ein Boot Menü in dem auch die Weschselplatte steht und kann von hier den GRUB der Wechselplatte starten.

3.2 Wechselmedium mit SYSLINUX (nur FAT Formate)

Falls die Platte mit einer FAT Variante formattiert wurde kann SYSLINUX eingesetzt werden. Während GRUB fett ist und eigentlich immer funktioniert, ist SYSLINUX schlank und funktioniert manchmal. Die Platte braucht einen intakten MBR denn SYSLINUX selber installiert keinen. Haben Sie Ihren Boot Record gesichert (siehe 3.1)? Eventuell können Sie dann sagen:

# dies ist nur ein Beispiel, setzen Sie Ihren Plattennamen ein!
sudo if=mbr_save of=/dev/sdb bs=440 count=1

Mounten Sie nun (im Beispiel) /dev/sdb1 und erzeugen Sie im Wurzelverzeichnis der Partition ein Verzeichnis für die Bootmechanik. Leider kann SYSLINUX beim Booten nur auf das / (Root-) Verzeichnis oder auf syslinux zugreifen. Sie kopieren also den KNOPPIX Kernel und die RAM-Disk nach syslinux:

sudo su    # mit Superuser Rechten ...

   # nur ein Beispiel, setzen Sie Ihre CD- und Plattennamen ein!
   mount /dev/sdb1 /media/sdb1
   mkdir /media/sdb1/syslinux
   cd ihre_knoppix_cd/boot
   cp linux minirt.gz /media/sdb1/syslinux
   umount /dev/sdb1

^D

Der SYSLINUX Bootloader ist nun einfach z.B. von der KNOPPIX CD zu installieren:

# dies ist nur ein Beispiel, setzen Sie Ihren Plattennamen ein!
sudo syslinux -d syslinux /media/sdb1

Und Sie erstellen letztlich eine Konfiguration für SYSLINUX (in syslinux/syslinux.cfg):

LABEL knoppix
KERNEL linux
APPEND ramdisk_size=100000 init=/etc/init lang=de quiet noprompt noeject initrd=minirt.gz

Das war's. Viel Spass.