Seite 1 von 1

Kernel-Bau - Frage zu Init

Verfasst: Samstag 23. Oktober 2004, 17:39
von stephanwib
Hallo,

eine Frage an die Profis:

Ich baue gerade meine eigene Linux-Distri für eine Surfbox mit einem DiskOnChip-Flash-Speicher. Meine Desktop-Distri ist RedHat 8.0 (Kernel 2.4.18-14, gcc 3.2). Ich habe den offiziellen Treiber für die DOC von M-Systems (http://www.m-sys.com) in den offiziellen 2.4.19-Kernel eingebaut und das ganze auf den DOC kopiert. Als bootloader kommt der neuste Lilo zum Einsatz.

Es gibt auf dem DOC eine Partition. Sie ist unter /dev/msys/fla1 erreichbar. Meine Lilo-Config-Datei sieht so aus:

Code: Alles auswählen

boot=/dev/msys/fla
    compact
    install=/boot/boot.b
    map=/boot/System.map
    disk=/dev/msys/fla
        bios=0x80

    prompt
    delay=50
    timeout=50

    image=/boot/vmlinuz
        label=linux
        root=/dev/msys/fla1
        initrd=/boot/initrd.img
        read-only
Es erscheint beim hochfahren dann folgender Fehler:

Code: Alles auswählen

VFS: Mounted root (ext2 filesystem) readonly. 
Trying to move old root to /initrd ... failed 
Unmounting old root 
Trying to free ramdisk memory ... okay 
Freeing unused Kernel memory: 132k freed 
Kernel panic: No init found. Try passing init= option to the kernel. 
Es deutet ja darauf hin, das das init-Programm fehlt. Gibt es das nicht bei dem Kernel mit dabei? Wenn nein, wo bekomme ich was passendes her?

Gruß Stephan

Verfasst: Samstag 23. Oktober 2004, 19:24
von stephanwib
Alles Käse, nix tuts.

Also, hab alles nochmal gemacht. Es ist alles da; auch /sbin/init.
Da die Dateiliste für die zu kopierenden Dateien sehr alt ist (für RedHat 7.1), sind viele Bibliotheken nicht mitgekommen. Braucht der Kernel vielleicht welche, die ihm jetzt fehlen?


Vielleicht kann mir ja jemand sagen, welche Dateien ich benötige, damit Linux mit einer minimalkonfiguration läuft; d.H. der Kernel und die shell.

Ich bin bis jetzt so vorgegangen:
---------------------------
-Kernelquellen installiert
-Kernel gepatcht
-Konfiguration gemacht / DOC-Treiber als modul mit rein; Support für Ramdisk und Loopback aktiviert
-make dep clean bzImage modules install modules_install
-mit insmod doc das Modul geladen
-Nodes erstellt (mit mitgeliefertem Script; sind glaube ich dafür gut das der DOC über /dev ansprechbar ist)
-mit fdisk ne ext2-Partition erstellt
-mit nem Script die Ramdisk erstellt
-dann noch n Script ausgeführt, das alle Dateien auf den DOC kopiert
-lilo.conf geschrieben und mit "lilo -v -C /etc/lilo.conf -r /mnt/fla1" initialisiert
-Mit Dformat (mitgeliefertes Tool) das Teil startfähig gemacht.

Ich möchte aber lieber keine Scripts verwenden, damit ich die volle kontrolle habe und das System so klein wie möglich halten kann. (Wenn ich mal überlege was alles auf den 8 MB-Flash der D-Box passt...)
Wo finde ich geeignete Hilfe?

Gruß Stephan

Verfasst: Samstag 23. Oktober 2004, 21:52
von stephanwib
Einen Schritt bin ich weiter gekommen:

Es fehlten einige libs; INIT und bash starten jetzt. Allerdings sind viele Dateien vom Hostsystem so kompiliert, das sie spezielle libs brauchen. Die passen aber unmöglich auf den 16MB-DOC; deshalb muss ich sie neu kompilieren. Auch die init-scripts enthalten Dinge, die ich auf keinen Fall benötige und müssen somit noch beschnitten werden.

Der Stand: Die Box meldet 1000 fehlende libs beim init-prozess, stellt einen dateisystemfehler fest, möchte eine shell starten; das geht aber nicht, weil irgendwas fehlt und dann startet sie neu...

Soweit der Stand..

Gruß Stephan

Verfasst: Samstag 23. Oktober 2004, 22:54
von Npq
Die 2er verwendet die busybox, die deckt init, shell und noch jede Menge anderes Zeugs ab.

http://www.busybox.net/

Außerdem werden aus sämtlichen Libs nicht genutzte Funktionen entfernt. Man sollte eigentlich versuchen, sich auch die libc zu ersparen. Mit der uclibc lief es aber wohl noch nicht (auf der 2er).

http://uclibc.org/

Verfasst: Sonntag 24. Oktober 2004, 11:57
von stephanwib
Danke für die Auskunft! Ich habe diese Information, das Busybox für meinen Zweck gut zu gebrauchen ist, auch schon erhalten und werde versuchen, das so zu implementieren.

Gruß Stephan

Verfasst: Montag 25. Oktober 2004, 22:00
von woglinde
Hi,

deine kernels sind alt und wenn nicht gepachted, so offen wie ein neuinstalliertes windows. Zum zweiten empfehle ich dir mal http://www.openembedded.org/ anzuschauen. Da wird einem alles komplett gebaut aehnlich wie beim cdk, nur fuer viel mehr plattformen.

Gruss woglinde