Kernel-Bau - Frage zu Init

Diskussionen um Bootloader, Kernel, Busybox
stephanwib
Einsteiger
Einsteiger
Beiträge: 145
Registriert: Sonntag 27. Juni 2004, 18:09

Kernel-Bau - Frage zu Init

Beitrag 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
stephanwib
Einsteiger
Einsteiger
Beiträge: 145
Registriert: Sonntag 27. Juni 2004, 18:09

Beitrag 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
stephanwib
Einsteiger
Einsteiger
Beiträge: 145
Registriert: Sonntag 27. Juni 2004, 18:09

Beitrag 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
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag 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/
stephanwib
Einsteiger
Einsteiger
Beiträge: 145
Registriert: Sonntag 27. Juni 2004, 18:09

Beitrag 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
woglinde
Einsteiger
Einsteiger
Beiträge: 261
Registriert: Donnerstag 15. November 2001, 00:00

Beitrag 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