Linux von CD auf Gibraltar-Basis #

Eine Ganze Weile haben wir versucht. GibraltarLinux (http://www.gibraltar.at) als Basis zu nehmen, um ein Linux-System auf eine CD zu bringen. Unter dem Strich haben wir festgestellt, dass die Debian-Pakete, die der Gibraltar-Entwickler zur Verfügung stellt, meist sehr buggy waren und wir nie richtig zum Erfolg kamen. Immer, wenn wir etliche Fehler beseitigt hatten, kam eine neue Version, die wieder mit ganz neuen Problemen aufwartete. Mir scheint, daß es nicht viele Anwender gibt (keine?), die wirklich die Debian-Pakete benutzen, um auf deren Basis ein eigenes System zu erzeugen. Trotzdem haben wir unsere Ergebnisse hier abgelegt:

So haben wir's gemacht: #

In der Debian Woody Distribution gibt es ein Paket mkinitrd-cd. Das enthält Skripte aus GibraltarLinux für das erstellen eines Disketten-Image, das dann später auch für eine bootfähige CD nach dem El Torito Standard gebraucht wird.

Am besten holt man sich statt des Woody-Paketes die aktuellen Pakete des Gibraltar-EEntwicklers. Diese findet man z.B. unter ftp://gd.tuwien.ac.at/opsys/linux/gibraltar/source . Dort sind als Grundausstattung die Pakete mkinitrd-cd (Erstellung einer Bootdiskette) und gibraltar-bootcd (Änderungen an Debian, um es als Gibraltar-CD laufen zu lassen) interessant.

Zunächst bauen wir einen Kernel. Die Woody-Skripte unterstützen zur Zeit nur die Version 2.2.x, aber das geht mit den aktuellen Paketen. Also das Paket mit Kernel-Quellen laden, auspacken, mit make menuconfig konfigurieren. Mit make-kpkg (aus dem Debian Paket: kernel-package) läßt sich der Kernel kompilieren und gleich in ein .deb Kernel-Image-Paket einpacken. Diese .deb Datei kann man mit dpkg-deb -x <deb> <directory> in ein temporäres Verzeichnis entpacken.

Dann wird ein File-System erstellt, dass dann als Init-Ramdisk von der Diskette geladen wird: Dazu dient das Skript mkinitrd-cd, dem das Verzeichnis mit den Kernel-Moduln aus Parameter mitgegeben wird. Im woody-Skript haben wir Anpassungen vorgenommen, die bei den aktuellen Paketen nicht nötig sein sollten: Das Programm busybox kompilieren wir nicht mehr in diesem Skript, sondern wir kopieren unsere lokale Busybox (Debian Paket busybox). Weitere Anpassungen sind für die geänderte Struktur des Verzeichnis /lib/modules/ im Kernel 2.4.x notwendig.

Ein weiteres Problem im Woody-Paket gab es mit dem Skript linuxrc, das in die initrd aufgenommen wird: Unsere Debian ash kann die local-Anweisungen in diesem Skript nicht verarbeiten. Also: Alle local-Variablendeklarationen an den Anfang der jeweiligen Skript-Funktion stellen, dann geht es!

Jetzt kann die initrd mit

  mkinitrd-cd /meintmp/lib/modules/2.../ meineinitrd.gz

erstellt werden.

Mit

  mkbootimg /meintmp/boot/vmlinuz.. meineinitrd.gz meinbootimage.img

kann dann das Disketten-Image erzeugt werden.

Zum Testen mit

  dd if=meinbootimage.img of=/dev/fd0

eine Boot-Diskette erzeugen.

Erzeugen eines ISO=9660-Image mit: #

   mkisofs -R -b boot/boot.img -c boot/boot.catalog -o /root/bootcd.iso .
     -R: Lange Namen nach Rockridge-Standard
     -b: Disketten-Image fuer Boot-Diskette im Image-Filesystem
     -c: nach El Torito notwendiger Boot-Catalog (wird von mkisofs erzeugt)
     -o: Dateiname fuer das erzeuge ISO-Image
     . : das Filesystem, das auf die CD soll

Brennen des Image auf die CD mit: #

   cdrecord dev=0,0,0 /root/bootcd.iso

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-2) was last changed on 13-Nov-2006 15:47 by PeterHormanns