Wie baue ich einen monolithischen Kernel?

N

numx

Jungspund
Hallo Leute,

ich habe schon sämtliche Sachen ausprobiert um einen monolithischen Kernel zu starten. es komt aber immer eine Kernel panic Meldung. Ich mache das ganze mit dem 2.6.20 Kernel, menu config und den Rest mit make-kpkg. Das kompilieren und installieren funktioniert auch jedes mal sehr gut. Aber wie gesagt beim start gibt es die genannten Probleme. Mal kurz mein vorgehen. Ich starte die Konfiguration mit

make menuconfig

und nehme beim Punkt Loadable module support alle Werte raus. Somit wird der Rest der anderen Optionen ja gleich automatisch auf y gesetzt.Vorher habe ich mir mit hwinfo sämtliche Informationen über meine Hardware besorgt und mir jede kleine Information die hinter dem Wert Driver stand notiert und später nochmal in der .config kontrolliert ob der Wert auch auf y gesetzt ist. Es waren alle Werte auf y gesetzt was ja auch klar ist wenn man den lodable module support raus nimmt. Für das Filesystem (xfs) ist auch alles auf y gesetzt. Solche Sachen wie MUltimedia und Sound etc..... habe ich ganz rausgenommen damit der Kernel nicht so groß wird. Habe ich vielleicht irgend etwas vergessen? Muss man wenn man einen monolithischen Kernel einsetzen will evtl. noch was in irgendwelchen Dateien ändern? Eine Step by Step Anleitung wie man einen monolithischen Kenrel beuat habe ich auch nirgendswo gefunden. Was mache ich falsch das er mir beim Start immer eine Kernel Panik macht. Die Meldung sieht dann immer so aus



[<c0323a41>] plattform_device_release+0x6d/0xd2
[<c0323b5b>] device_release+0x85/0x171
[<c0119915>] kobject_cleanup+0x35/0x75
[<c0119977>] kref_put+0x22/0x26
[<c0119b3a>] depca_module_init+0x25/0x30
[<c010481e>] init+0x5e/0x70
[<c0101d2a>] ret_from_fork+0x11c/0x17b
[<c0102e3b>] init+0x23/0x28
[<cc947e2d>] init+0x1b0/0x34b [processor]
[<c0101322>] kernel_thread_helper+0x3a/0x63
=======================
Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 06 00 00 00 d4 55 <9a> cc 38 e0 9c cc 00 00 00 00 00 00 00 00 43 10 00 00 00 00 00
EIP: [<c663604a>] kfree+0x25/0x63 SS:ESP 0068:c147ff38
<0>Kernel panic - not syncing: Attempted to kill init!

ich habe auch schon versucht das System mit sämtlichen Parametern (ACPI=off usw.) zu starten aber es brachte auch nichts. Gibt es irgendwo ne Step by Step Anleitung für einen monolithischen Kernel?
 
Grundlegende Sachen, wie Prozessorunterstützung, Filesystem, Chipsatzunterstützung muß immer fest im Kernel intergriert werden.

Eine weitere Möglichkeit:
mal die Kernel config posten.
 
Lief das System vorher mit einem modularen Kernel 2.6.20?
CU
Tastenklopfer
 
das System lief mit dem standard Distributionskernel von Debain Etch. Das ist der Kernel 2.6.18-4686. Wenn alles auf y ist muss doch alles drin sein. Kann es sein wenn man alles auf y hat bis auf die multimedia und ein paar andere funktionen das der Kernel für einen Start zu groß ist?
 
Der Kernel wurde dann mit make bzimage übersetzt? Wird der Kernel direkt gestartet oder über eine initrd/initramfs? Starte den Kernel mal ohne Ramfloppy.

Zuviel fest einkompilierte Hardwareunterstützung kann auch eine Fehlerursache sein. Versuche erst einmal einen schlanken modularen Kernel zu bauen und dieser optimierte Kernel sollte dann problemlos als monolitisch übersetzter Kernel lauffähig sein.
CU
Tastenklopfer
 
also als modularer Kernel funktioniert das super. Wenn ich dann den modularen support aus dem Kernel nehme ist es ja eigentlich ein monolithischer Kernel. Natürlich muss er dann neu übersetzt werden wenn ich die loadable module support Funktion raus nehme. Meinst du dann läuft das und das er dann automatisch die Dinge die er vorher als Module angezogen hat automatisch fest mit rein nimmt? Warum gibt es eigentlich im Web keine Step by Step Anleitung für einen monolithischen Kernel. Ich kann doch nicht der einzige sein der diese Probleme hat.
 
Wenn Du den Kernel 2.6.20 noch nie modular getestet hast, sondern nur den Standardkernel von Debian, würde ich diesen erst einmal modular zum Laufen bringen. Ich schätze ohne manuelles eingreifen werden ca 200 Module gebaut. Diese dann alle in den Kernel monolitisch einzubinden kann (muss aber nicht) zu Problemen führen, wenn z.B. Hardwaretreiber initialisiert werden zu denen keine Hardware existiert (welches als Modul nie geladen worden wäre). Daher sollte beim Umwandeln modular -> monolitisch der Umfang an Treibern auf die tatsächlich vorhandene Hardware reduziert werden. Anleitungen gibt es dafür nur im Allgemeinen. Du musst Dich mittels lspci über deine Hardware informieren, die geladenen Module deines Standardkernels geben schon viele Hinweise. Übertrage diese im ersten Schritt modular auf den 2.6.20-er und wenn dieser dann läuft, dann mache noch einmal einen monolitischen Kernel.
Tastenklopfer
 

Ähnliche Themen

Festplatte friert ein nach suspend/resume

Ubuntu X / dbus problem

Linux Kernel VFS Panic HP Thin Client

Debian Lenny, ATI proprietary, Skystar2, Kaffeine

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Zurück
Oben