2.6.7 Kernel, Fehler beim Kompilieren

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

2.6.7 Kernel, Fehler beim Kompilieren

Beitrag von reedbeat » 02.12.2004 15:29:53

Hi Board!

Ist jetzt mein erstes Posting hier!

Ich kämpfe seit gut einem Tag mit der Kompilierung eines 2.6.7 Vanilla Kernels unter Debian Sarge (rc2,netinst).

Ich benötige aufgrund der Sicherheit einen monoliothischen Kernekl und habe deswegen den
loadable module support deaktiviert. Ansonsten habe ich die Komponenten welche ich brauche mit einem " * " versehen, alle anderenEinträge nach bestem Gewissen entfernt.

Der Kernel kompiliert nach eingabe von make bzImage install , bricht aber nach 15 Minuten ab:

Code: Alles auswählen

drivers/built-in.o(.init.text+0x142cd): In function `init_scx200_docflash':
: undefined reference to `add_mtd_partitions'
drivers/built-in.o(.exit.text+0x1f34): In function `cleanup_scx200_docflash':
: undefined reference to `del_mtd_partitions'
make: *** [.tmp_vmlinux1] Error 1

Hab dann nachträglich Support für"National Semiconductor SCX200 unter "Busoptions" und noch irgendwo anders herausgenommen weil sich die Fehlermeldung "scx200" drauf bezieht. Hat aber auch nix gebracht. Gleiche Fehlermeldung.

Zuvor hatte ich auch noch "aha1542" dabeistehen, nachdem ich die Adaptec Controller herusgenommen hatte, verschwand zumindest die Fehlermeldungmit "aha1542".

Wenn ich den Kernel modular kompiliere (mit loadalbe module support) funktionierts aber!

Ich möchte einen Monolithischen Kernel mit GrSec nutzen.
Was muss ich tun um den Fehler wegzubekommen , um die Kompilierung abschliessen zu können?

reedbeat

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.12.2004 16:05:09

du mußt wahrscheinlich auch dem "Memory Technology Device (MTD) support" abschalten

[edit]

Begründung:

Code: Alles auswählen

root@csxgen4:/usr/src/linux# grep -r init_scx200_docflash *
drivers/mtd/maps/scx200_docflash.c:int __init init_scx200_docflash(void)
drivers/mtd/maps/scx200_docflash.c:module_init(init_scx200_docflash);

[/edit]

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 03.12.2004 08:08:55

Hi gms!

Hat funktioniert! Danke!!! :D :D :D :D
Habe nun meinen ersten monolithischen Kernel gebaut!

Und den Hinweis dass mit grep -r auf /usr/src die Abhängigkeiten herausgefunden werden können, werd ich mir merken.

vielen Dank!!

reedbeat

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 03.12.2004 08:43:20

Hoppla...

ich kann zwar den Server per SSH erreichen, aber wenn ich den Server neu boote, dann bleibt der Bootvorgang mitten drinnen stehen. Debian bootet aber fertig,ich kann mit SSH drauf. Nur kann ich mich lokal am Rechner nicht anmelden, weil der Bootvorgang nicht soweit kommt.

Kann es sein dass ich zuviel Module entfernt hab?

Kann mir jemand die notwendigen Module sagen , die zur Anzeige der Console aktiviert werden müssen?

dankschön
reedbeat

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 03.12.2004 09:01:44

Als Graka hab ich unter Graphics Support "VGA 16-color graphics support" und die ATI Rage Karte mit 3D Rage Support drinnen. Außerem "Support for frame buffer Devices".

Unter Graphics Support/Console Display Driver Support/ steht --- VGA text Console, unterhalb einige Punkte welche mit " * " angeführt sind:

Video Mode Selection Support
MDA Text console (Experimental)
Framebuffer Console Support

Bei LogoConfiguration eine Ebene höher habe ich alle 3 Logos mit " * " aktiviert.

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 03.12.2004 09:55:57

Ich habe nun nochmal den 2.6.7 Kernel mit einer lockereren Config kompiliert. Bootvorgang bleibt jetzt woanders stehen, nämlich dass er kein Sony VAIO Hardware finden kann... Ich hab kein Sony Vaio.

Ich hab da glaub ich was falsch verstanden. Es schaut also so aus, als würden Module welche statisch einkompiliert wurden, auch automatisch verwendet.
Blöd halt, wenn man nicht zu 100% die korrekte Hardware zuvor mit make menuconfig angegeben hat!

Ich steh jetzt irgendwie an,
einserseits möchte ich einen monolithischen Kernel wegen der Sicherheit, andererseits weiss ichjetzt nicht welche Hardware ich angeben muss um das System zu Booten.

Ich glaube ich werde auf einen Modularen Kernel umsteigen müssen?
Wie macht Ihr dass wen Ihr einen monolithischen Kernel macht?

reedbeat
Zuletzt geändert von reedbeat am 03.12.2004 11:08:59, insgesamt 1-mal geändert.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 03.12.2004 10:14:39

ich wollte dir auch gerade schreiben, daß du eher zuviel ausgewählt hast.
Du könntest es einmal ohne framebuffer, mda text console und der logo configuration versuchen

laufen deine getty processe eigentlich ?

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 03.12.2004 11:03:04

gms hat geschrieben: laufen deine getty processe eigentlich ?
meinst du , dass ich mit Strg+Alt+F1-F7 die Console wechseln kann?
Nein, das funktioniert nicht.

Bin grad dabei nach einem make clean und make mrproper nochmal einen modularen Kernel zu erzeugen.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 03.12.2004 11:39:42

ich wollte unser problem nur ein wenig eingrenzen, wenn die getty prozesse laufen, können wir relativ sicher sein, daß es sich nur um ein anzeige/console problem handelt,
und es kein problem mit den tty ports oder der configuration gibt

Code: Alles auswählen

ps -ef | grep getty

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 03.12.2004 13:16:15

Mit dem jetzt funtkionierenden modularen Kernel:

Code: Alles auswählen

tux:~# ps -ef | grep getty
root     32219     1  0 12:38 tty2     00:00:00 /sbin/getty 38400 tty2
root     26425     1  0 12:38 tty3     00:00:00 /sbin/getty 38400 tty3
root     25257     1  0 12:38 tty4     00:00:00 /sbin/getty 38400 tty4
root     23713     1  0 12:38 tty5     00:00:00 /sbin/getty 38400 tty5
root      8655     1  0 12:38 tty6     00:00:00 /sbin/getty 38400 tty6
tux:~#

Mit dem monolithischen Kernel, der beim Booten stehen bleibt :

Code: Alles auswählen

tux:~# ps -ef | grep getty
root      3196     1  0 13:13 tty1     00:00:00 /sbin/getty 38400 tty1
root     13961     1  0 13:13 tty2     00:00:00 /sbin/getty 38400 tty2
root      2747     1  0 13:13 tty3     00:00:00 /sbin/getty 38400 tty3
root     15644     1  0 13:13 tty4     00:00:00 /sbin/getty 38400 tty4
root      1545     1  0 13:13 tty5     00:00:00 /sbin/getty 38400 tty5
root     22341     1  0 13:13 tty6     00:00:00 /sbin/getty 38400 tty6
root      9117  8222  0 13:14 pts/0    00:00:00 grep getty
tux:~#

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 03.12.2004 13:50:18

reedbeat hat geschrieben:Mit dem monolithischen Kernel, der beim Booten stehen bleibt :
Der ist sicherlich nicht beim booten stehen geblieben, da hat nur die anzeige des login prompts nicht funktioniert.
[edit] natürlich auch die ausgabe der boot messages [/edit]
Egal hauptsache es funkt :)

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 03.12.2004 15:25:37

Danke jetzt mal für deinen Support! Ohne Dich hätt ich es bis hierher nie geschafft.

Hab jetzt :

Video Mode Selection Support
MDA Text console (Experimental)
Framebuffer Console Support

entfernt.

Er bootet , dann verschwindet kurz das Bild, es blinkt ein Cursor, dann kommt das Bild wieder, ich kann mich am Login anmelden. :lol:

ABER:
Mit modconf kann ich Module auswählen! Ich hab aber zuvor " loadable module support" unter menuconfig deaktiviert.
Hab den Menupunkt 3mal kontrolliert, ist sicher draussen. Hab auch mrproper zuvor ausgeführt, config geladen, und dann kompiliert.

ich checks einfach nicht...

reedbeat

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 03.12.2004 17:22:18

Ich habe zwar auch keine erfahrung mit monolithischen kernels, denke mir aber, das man auch bei denen die "module" irgendwie konfigurieren können muß.

Wichtiger ist, daß es es keine module in /lib/modules/`uname -r` gibt. D.h wenn ein

Code: Alles auswählen

find /lib/modules/`uname -r` -name "*.ko" 
kein ergebnis liefert, sollte alles in ordnung sein

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 06.12.2004 08:16:43

gms hat geschrieben: Wichtiger ist, daß es es keine module in /lib/modules/`uname -r` gibt. D.h wenn ein

Code: Alles auswählen

find /lib/modules/`uname -r` -name "*.ko" 
kein ergebnis liefert, sollte alles in ordnung sein
Negativ. Es werden ".ko" Module aufgelistet.

Schon komisch, hab es anfangs geschafft, dass keine Module über zb. modconf geladen werden (es ist dann kein Menueintrag vorhanden). Das Entfernen von " Loadable Modules Support" aus dem Kernel hat keinen Nutzen mehr.


Ich werde mich also mit einem modularen Kernel zufrieden geben müssen. Wenn mehr Zeit ist, werd ichs nochmal von Vorne versuchen einen monolithischen Kernel zu backen.

Danke für die Hilfe! Hab eine Menge dazugelernt!
reedbeat

reedbeat
Beiträge: 32
Registriert: 02.12.2004 15:16:55

Beitrag von reedbeat » 06.12.2004 09:00:47

Des Rätsels Lösung:

hab Debian neu aufgesetzt. Dann zuvor gesicherten Kernel incl. SystemMap,config in /boot eingespielt.

Code: Alles auswählen

update-grub
init 6
Dann mit lsmod und neu installiertem modconf verucht Module zu Laden oder Anzuzeigen: geht nix mehr 8)


Ich denk , das kann man jetzt monolithischen Kernel nennen.
:lol:

grüsse
reedbeat

Antworten