Dieser Beitrag stammt von http://www.linuxfocus.org
| von:Mooneer Salem Inhalt: |
Zusammenfassung: Dieser Artikel zeigt, wie man unter Linux seine eigenen
root/boot Disketten erstellt.
Haben Sie schon mal die Webpages gesehen, auf denen Ihnen eine nutzbare Linux-Version
auf einer oder zwei Floppies angeboten wird? In den meisten Fällen haben diese Versionen
nicht viele Programme im Lieferumfang und sind auch sonst nicht sehr funktionsreich.
In diesem Text werde ich Ihnen zeigen, wie Sie eine Boot- und Rootdiskette erstellen, auf
der sich nahezu Alles befindet, was Sie jemals benötigen werden.
Zuerst benötigen wir eine oder zwei leere, formatierte Disketten, je nachdem wie viel
Software Sie in Ihre "eigene Linux-Version" packen wollen.
Im Grunde genommen wird dieses Linux aus einer Startdiskette und vielleicht einer Diskette
mit häufig genutzten Utilities.
Wenn Ihnen "Boot-" oder "Rootdiskette" nichts sagt, dann sollten Sie,
bevor Sie weiterlesen, einen Blick in das Bootdisk-HOWTO, Kapitel 2, werfen.
Zuerst einmal die Grundschritte, die uns zu unserer eigenen Linux-Diskette führen werden:
Da unsere Diskette nur 1,44 MB Daten fassen kann, können Sie nicht einfach Ihren Kernel auf die Floppy kopieren. Besorgen Sie sich die Kernelquellen und entpacken Sie diese nach /usr/src/linux. Wechseln Sie in das Verzeichnis und geben Sie
make config
ein.
Während der Konfiguration wählen Sie nur die Dinge aus, die Sie wirklich benötigen. Auf meinem Kernel habe ich nur die Unterstützung für das ext2-Dateisystem, Floppyunterstützung und PPP aktiviert. Ihre Einstellungen können natürlich variieren, je nachdem was Sie benötigen.
make dep; make clean; make zImage
startet die Kompilierung, wobei zImage sehr wichtig ist: Der Kernel wird komprimiert und befindet sich nach der Kompilation in dem Unterverzeichnis arch/i386/boot/zImage.
Jetzt erstellen wir das Dateisystem für die Diskette. Statt den Disketteninhalt
einfach dorthin zu kopieren, werden wir die Daten vorher komprimieren, was es leicht
umständlicher macht, Dinge im Nachhinein zu modifizieren.
Zuerst führen wir am Kommandoprompt
dd if=/dev/zero of=DEVICE bs=1k count=3000
aus, wobei DEVICE ein Platz auf Ihrer Festplatte ist, in dem Sie ein unkomprimiertes Abbild des Dateisystems erstellen wollen. Danach geben Sie das folgende Kommando ein und ersetzen Sie DEVICE wieder wie oben.
mke2fs -m 0 DEVICE
Wenn Sie mke2fs fragt, ob Sie wirklich sicher sind, antworten Sie mit JA.
Jetzt müssen wir das Device mounten. Da es sich dabei um ein Dateisystem in einem Dateisystem handelt, muß das Loopback-Device im Kernel aktiviert sein, kompilieren Sie es zur Not in Ihren aktiven Linuxkernel hinein, bevor wir fortfahren.
mount -t ext2 DEVICE /mnt
Wenn das Mount-Programm den Befehl nicht ausführen will, versuchen Sie
mount -o loop -t ext2 DEVICE /mnt
Das Dateisystem ist jetzt gemountet und wir können die Verzeichnisstruktur dafür erstellen. Wechseln Sie nach /mnt und erstellen Sie die folgenden Verzeichnisse:
/dev /proc /etc /bin /lib /mnt /usr
Nach /dev kopieren wir die Dateien aus unserem /dev mit
cp -dpR /dev /mnt/dev
wenn Ihnen die Inodes ausgehen, wechseln Sie nach /nt/dev und löschen Sie die Devices, die Sie nicht benötigen. So viel zu unseren Devices, kommen wir jetzt zu /etc. Am sichersten ist es, alle Dateien aus /etc in unser neues Dateisystem zu kopieren:
cp -dpR /etc /mnt/etc
dann noch alles aus /lib nach /mnt/lib
cp -dpR /lib /mnt/lib
... und nur die Sachen, die wir benötigen aus /bin nach /mnt/bin
Um Alles auf die Diskette(n) kopieren zu können, müssen wir zuerst das Dateisystem komprimieren:
cd /
umount /mnt
dd if=DEVICE bs=1k | gzip -9 > rootfs.gz
Danach ist es wichtig, die Größe des Kernels zu überprüfen.
Gehen Sie nach /usr/src/linux/arch/i386/boo und überprüfen Sie die Größe des Kernels
mit "ls -l".
Teilen Sie das Ergebnis durch 1024. Hat der Kernel beispielsweise eine Größe von 250000
Byte, dann sind das 245 Kilobytes. Dieses Ergebnis geben Sie immer dann ein, wenn ich den
Platzhalter ROOTBEGIN verwende.
Kopieren Sie den Kernel auf die Diskette
dd if=zImage of=/dev/fd0
und weisen Sie diesen mit
rdev /dev/fd0 /dev/fd0
an, das Rootsystem auf der Diskette zu suchen.
Jetzt müssen wir uns ein bisschen mit Hex-Rechnungen befassen.
Addieren Sie 4000 zum Hexadezimalwert von ROOTBEGIN (was in unserem Beispiel F5 ist).
Konvertieren Sie das Ergebnis in dezimale Form und tippen Sie das
Folgende ein, wobei Sie 16629 durch das erhaltene Ergebnis ersetzend:
rdev -r /dev/fd0 16629
Zum Schluß kopieren Sie noch das Dateisystem auf die Diskette:
dd if=rootfs.gz of=/dev/fd0 bs=1k seek=ROOTBEGIN
Fertig!
Die Erstellung der zweiten Diskette ist bei Weitem einfacher. Kopieren Sie einfach alle Dateien, die Sie verwenden wollen, dorthin. Geben Sie nach dem Booten von der ersten Diskette
mount /dev/fd0 /usr
ein um diese nutzbar zu machen.
Eine letzter Hinweis: Mit etwas Herumspielen können Sie sich so Ihre eigene Linx-Version erstellen, die ich ja vielleicht irgendwann einmal zu Gesicht bekomme .... nur so ein Gedanke :)
Weitere Informationen finden sich im Bootdisk-Howto aus dem Linux Documentation Project
| Webpages maintained by Miguel
Ángel Sepúlveda © Mooneer Salem 1998 Übersetzt von:Jonas Luster LinuxFocus 1998 |