Alle Kernelmodule bauen

Moien

Ich muss auf einem PC einen selbst gebauten 2.6’er Kernel verwenden da der 2-3 Kernel-Patches braucht.

Nun ist es absolut nervtötend bei jedem zusätzlich benötigten Kernelmodul wieder die ganze Kernelkonfig zu durchsuchen und die module neu zu bauen.

Gibt es die Möglichkeit alle module zu bauen ? Also eine Art „make every_f**king_module“ ?

cu

Moien

'n Abend,

Gibt es die Möglichkeit alle module zu bauen ? Also eine Art
„make every_f**king_module“ ?

(0) frank@harbard [/usr/src/linux] % make help |grep config
 clean - remove most generated files but keep the config
 mrproper - remove all generated files + config + various backup files
 config - Update current config utilising a line-oriented program
 menuconfig - Update current config utilising a menu based program
 xconfig - Update current config utilising a QT based front-end
 gconfig - Update current config utilising a GTK based front-end
 oldconfig - Update current config utilising a provided .config as base
 randconfig - New config with random answer to all options
 defconfig - New config with default answer to all options
 allmodconfig - New config selecting modules when possible
 allyesconfig - New config where all options are accepted with yes
 allnoconfig - New minimal config
 make O=dir [targets] Locate all output files in "dir", including .config
(0) frank@harbard [/usr/src/linux] %

Hm, welches von denen koennte es denn sein…?

HTH,
Gruss vom Frank.

Moien

Das rattert 4 Stunden und erzeugt insgesamt 3 neue .ko Dateien. OK, nächster Versuch …

cu

Das rattert 4 Stunden und erzeugt insgesamt 3 neue .ko
Dateien.

Neu verglichen womit? Ich wuerde unterstellen, dass es insgesamt deutlich mehr erzeugt:

(0) frank@harbard [/usr/src/linux] % sudo make allmodconfig \>/dev/null 
(0) frank@harbard [/usr/src/linux] % grep -c '=m$' .config 
1625
(0) frank@harbard [/usr/src/linux] %

Gruss vom Frank.

Moien

Das rattert 4 Stunden und erzeugt insgesamt 3 neue .ko
Dateien.

Neu verglichen womit?

Mit meiner aktuellen .config (150 .ko-Dateien unter /lib/modules). Die neuen hatten mit bluetooth zu tun. Fehlen also noch runde 1000 möglichweise irgendwann interessante. Wie komm ich an die ran ? Einzeln aus .config fischen ?

cu

Moien

Das rattert 4 Stunden und erzeugt insgesamt 3 neue .ko
Dateien.

Neu verglichen womit?

Mit meiner aktuellen .config (150 .ko-Dateien unter
/lib/modules). Die neuen hatten mit bluetooth zu tun. Fehlen
also noch runde 1000 möglichweise irgendwann interessante. Wie
komm ich an die ran ? Einzeln aus .config fischen ?

Du hast vielleicht „make modules_install“ vergessen? Deine Methode ist aber völlig krank. Du solltest schon ungefähr eine Ahnung davon haben, welche Module Deine Hardware braucht. Wenn später was dazukommt, es es im übrigen kein Problem, mal eben per „make menuconfig“ entsprechend nachzusetzen. Es werden dann nur neu hinzugekommene Module kompiliert, nicht wieder der ganze Kernel. Per „make oldconfig“ ist es auch kein Problem, vorher gespeicherte Konfigurationen wieder herzustellen.

Gruß

Fritze

Moien

Du hast vielleicht „make modules_install“ vergessen?

Ich lass nach .ko-Dateien unter /usr/src/linux suchen. Das modules_install kopiert ja nur nach /lib/modules/xyz… vom kopieren werden’s hoffentlich nicht mehr werden.

Deine
Methode ist aber völlig krank. Du solltest schon ungefähr eine
Ahnung davon haben, welche Module Deine Hardware braucht.

Bis der User einen neuen USB-Scanner vom Aldi anschleppt. Oder der Kumpel eine digicam. Oder ein Shaper so ziemlich alles aus dem Bereich QOS/ip_chains braucht. Oder ein neues IrDA-fähiges Gerät einzieht…

Was ich brauch wär der Stockkernel mit den 2-3 Patches/Addons (squashfs, ipw2200, ibm_acpi,…). Der kompliert aber zu Brei und steigt mit Kernel-Panic noch immerhalb der initrd aus…

Wenn
später was dazukommt, es es im übrigen kein Problem, mal eben
per „make menuconfig“ entsprechend nachzusetzen.

 HOSTCC scripts/kconfig/kconfig\_load.o
 HOSTCXX scripts/kconfig/qconf.o
scripts/kconfig/qconf.cc:6:26: error: qapplication.h: No such file or directory
scripts/kconfig/qconf.cc:7:25: error: qmainwindow.h: No such file or directory
scripts/kconfig/qconf.cc:8:22: error: qtoolbar.h: No such file or directory
scripts/kconfig/qconf.cc:9:19: error: qvbox.h: No such file or directory
scripts/kconfig/qconf.cc:10:23: error: qsplitter.h: No such file or directory
scripts/kconfig/qconf.cc:11:23: error: qlistview.h: No such file or directory
scripts/kconfig/qconf.cc:12:23: error: qtextview.h: No such file or directory
scripts/kconfig/qconf.cc:13:23: error: qlineedit.h: No such file or directory
scripts/kconfig/qconf.cc:14:22: error: qmenubar.h: No such file or directory
scripts/kconfig/qconf.cc:15:25: error: qmessagebox.h: No such file or directory
scripts/kconfig/qconf.cc:16:21: error: qaction.h: No such file or directory
scripts/kconfig/qconf.cc:17:21: error: qheader.h: No such file or directory
scripts/kconfig/qconf.cc:18:25: error: qfiledialog.h: No such file or directory
scripts/kconfig/qconf.cc:19:21: error: qregexp.h: No such file or directory
In file included from scripts/kconfig/qconf.cc:26:
scripts/kconfig/qconf.moc:10:25: error: qmetaobject.h: No such file or directory
....

und die qt-header/dev-packages sowie alle Abhängigkeiten/Sugests des kernel-image sind installiert, die aufgeführten Dateien alle vorhanden.

Selbst wenn du das menu hast: wie soll ich z.B. wissen dass die IrDA-Packages vom ISA-Bus abhängen ?

cu

Moien

Was soll das „Moien“ eigentlich heissen?

Du hast vielleicht „make modules_install“ vergessen?

Ich lass nach .ko-Dateien unter /usr/src/linux suchen. Das
modules_install kopiert ja nur nach /lib/modules/xyz… vom
kopieren werden’s hoffentlich nicht mehr werden.

Unter /usr/src/linux sind genau Null .ko Dateien. Unter /lib/modules sind sie nach dem Ausführen von „make modules_install“. Sonst findest Du sie unter /usr/src/linux/drivers/ in diversen Unterverzeichnissen.

Du solltest schon genau angeben, wo Du nach etwas suchst. Woher soll ich wissen, dass Du was ganz anderes meinst, wenn Du /lib/modules schreibst?

Deine
Methode ist aber völlig krank. Du solltest schon ungefähr eine
Ahnung davon haben, welche Module Deine Hardware braucht.

Bis der User einen neuen USB-Scanner vom Aldi anschleppt. Oder
der Kumpel eine digicam.

Sollte beides über die usbdev Treiber abgedeckt sein. Es sei denn die Digicam braucht Firewire.

und die qt-header/dev-packages sowie alle
Abhängigkeiten/Sugests des kernel-image sind installiert, die
aufgeführten Dateien alle vorhanden.

Um welche Kernelversion mit welchen Patches handelt es sich denn genau? Mein 2.6.16.14 würde bei „make allmodconfig“ genau 2482 Module generieren, von denen ich ca. ein Prozent brauche.

Selbst wenn du das menu hast: wie soll ich z.B. wissen dass
die IrDA-Packages vom ISA-Bus abhängen ?

Indem Du die Dokumentation bemühst. Unter „Help“ bekommst Du unter anderem die „Depends on“ Hinweise. Wenn Du nun (was meiner Meinung nach Unfug ist) einfach stumpf *alle* Module generieren lässt, dann werden natürlich auch alle Abhängigkeiten aufgelöst. Die ISA Abhängigkeit bekommst Du bei IrDA dann bei einigen Treibern, die dort „ISA_DMA_API“ eingetragen haben. Wenn man aber gar keinen NSC PC87108 oder PC87338 IrDA Chipset auf dem Board hat, dann braucht man dieses Module gar nicht. Es kommt auch nur äußerst selten vor, dass man sowas „nachrüstet“.

Die einzigen, die viele Module vorsorglich kompilieren und Kernel auf Teufel komm raus modular aufbauen sollten, sind Distributoren. Für Dich wäre daher ein standard SuSE Kernel besser geeigneet, als ein Eigenbau.

Gruß

Fritze

Moien

Was soll das „Moien“ eigentlich heissen?

„Guten Morgen“ in meiner Muttersprache. Sei froh dass ich die Sonderzeichen weglasse, sonst würd’s bei dir noch komischer aussehen.

Du hast vielleicht „make modules_install“ vergessen?

Ich lass nach .ko-Dateien unter /usr/src/linux suchen. Das
modules_install kopiert ja nur nach /lib/modules/xyz… vom
kopieren werden’s hoffentlich nicht mehr werden.

Unter /usr/src/linux sind genau Null .ko Dateien.

Auf einem normalen System weil das andere gerade nicht greifbar ist:

/usr/src/linux# find -iname „*.ko“ | wc -l
209

Unter
/lib/modules sind sie nach dem Ausführen von „make
modules_install“.

/lib/modules/2.6.11# find -iname „*.ko“ | wc -l
209

Ich hoffe es sind die gleichen Dateien.

Sonst findest Du sie unter
/usr/src/linux/drivers/ in diversen Unterverzeichnissen.

Das Verzeichniss gibt’s bei mir nicht.

(Dir ist schon klar dass alle auf .deb aufbauten Systeme die .ko-Dateien in den sourcen speichern und es nur eine einzige Ausnahme, nämlich das Build-script von suse, von dieser Regel gibt ?)

Du solltest schon genau angeben, wo Du nach etwas suchst.
Woher soll ich wissen, dass Du was ganz anderes meinst, wenn
Du /lib/modules schreibst?

Also genauer: /lib/modules, das Verzeichniss unter dem sich alle fertigen Module und andere dem Kernel zur Laufzeit wichtige Dateien befinden. Einschliesslich einiger depmod-listen, aliase… usw.

und die qt-header/dev-packages sowie alle
Abhängigkeiten/Sugests des kernel-image sind installiert, die
aufgeführten Dateien alle vorhanden.

Um welche Kernelversion mit welchen Patches handelt es sich
denn genau?

2.6.11 + patches. Später geht nicht weil dann die binären closed-source Module nicht mehr laden.

Selbst wenn du das menu hast: wie soll ich z.B. wissen dass
die IrDA-Packages vom ISA-Bus abhängen ?

Indem Du die Dokumentation bemühst.

Das ist nicht praktikabel und will ich ja gerade vermeiden. Ich will nicht wissen was modprobe alles nachlädt wenn Treiber für XY geladen wird. Ich bin ja an Treiber XY interessiert und nicht an dem was davor kommt.

Für Dich wäre daher ein standard SuSE Kernel
besser geeigneet, als ein Eigenbau.

Die Standardkernel aus Gentoo, Debian, Suse/Fedora, DSL und ubuntu crashen beim starten auf diesem Ding (Teils erst im initrd, teils beim ACPI. Bis zum Platten Controller hat’s noch keiner geschafft). Stockkernel ist definitiv keine Lösung.

cu

Hallo,

/usr/src/linux# find -iname „*.ko“ | wc -l
209

Wenn Du Dir mal anschaust, wo diese „ko“ Dateien zu finden sind, siehst Du auch die Unterverzeichnisse. Aber sei’s drum.

/usr/src/linux/drivers/ in diversen Unterverzeichnissen.

Das Verzeichniss gibt’s bei mir nicht.

Dann hast Du ein massives Problem.

(Dir ist schon klar dass alle auf .deb aufbauten Systeme die
.ko-Dateien in den sourcen speichern und es nur eine einzige
Ausnahme, nämlich das Build-script von suse, von dieser Regel
gibt ?)

Reden wir von irgendwelchen Distributions-Kerneln oder von „Vanilla“ Kerneln? Ich beziehe mich hier auf die offiziell unter http://www.kernel.org/ angebotenen Kernelquellen.

Du solltest schon genau angeben, wo Du nach etwas suchst.
Woher soll ich wissen, dass Du was ganz anderes meinst, wenn
Du /lib/modules schreibst?

Also genauer: /lib/modules, das Verzeichniss unter dem sich
alle fertigen Module und andere dem Kernel zur Laufzeit
wichtige Dateien befinden. Einschliesslich einiger
depmod-listen, aliase… usw.

2.6.11 + patches. Später geht nicht weil dann die binären
closed-source Module nicht mehr laden.

Was meinst Du mit patches? 2.6.11 mit Patches ist für mich identisch mit 2.6.16.16.

Selbst wenn du das menu hast: wie soll ich z.B. wissen dass
die IrDA-Packages vom ISA-Bus abhängen ?

Indem Du die Dokumentation bemühst.

Das ist nicht praktikabel und will ich ja gerade vermeiden.
Ich will nicht wissen was modprobe alles nachlädt wenn Treiber
für XY geladen wird. Ich bin ja an Treiber XY interessiert und
nicht an dem was davor kommt.

Es geht nicht um modprobe sondern um die Konfiguration des Kernel!

Die Standardkernel aus Gentoo, Debian, Suse/Fedora, DSL und
ubuntu crashen beim starten auf diesem Ding (Teils erst im
initrd, teils beim ACPI. Bis zum Platten Controller hat’s noch
keiner geschafft). Stockkernel ist definitiv keine Lösung.

Dann schalte doch erstmal ACPI aus. Und was ist ein Stockkernel? Kannst Du mal „dieses Ding“ näher beschreiben? Willst Du, dass man Dir hilft? Dann lass Dir nicht alle Informationen mühsam aus der Nase ziehen.

Gruß

Fritze

Moien

Hallo pumpkin,

Sonst findest Du sie unter
/usr/src/linux/drivers/ in diversen Unterverzeichnissen.

Das Verzeichniss gibt’s bei mir nicht.

Dann ist was kaputt.
Das ist hier vollzählig vorhanden (Debian SID).

Host/Kernel/OS „box2“ running Linux 2.6.16.14-kanotix-up-1 i686 [KANOTIX 2006 Easter]
CPU Info Intel Pentium M 2048 KB cache flags( nx ) clocked at [798.000 MHz]
Videocard ATI Radeon Mobility X700 (PCIE) X.Org 7.0.0 [1280x800 @60hz]
Network cards Intel PRO/Wireless 2200BG
Marvell 88E8001 Gigabit Ethernet Controller, at port: a800
Processes 88 | Uptime 51min | Memory 330.977/1010.27MB | HDD FUJITSU MHV2100AT Size 100GB (57%used) | GLX Renderer MOBILITY RADEON X700 Generic | GLX Version 2.0.5755 (8.24.8) | Client Shell | Infobash v2.50rc10

Für Dich wäre daher ein standard SuSE Kernel
besser geeigneet, als ein Eigenbau.

Die Standardkernel aus Gentoo, Debian, Suse/Fedora, DSL und
ubuntu crashen beim starten auf diesem Ding (Teils erst im
initrd, teils beim ACPI. Bis zum Platten Controller hat’s noch
keiner geschafft). Stockkernel ist definitiv keine Lösung.

Probier mal einen gepatchten Debian 2.6.16.16er Kanotix kernel (Vanilla).
http://www.kanotix.com/
Der erste ist ein smp Kernel
Der Zweite „up“ für single prozessor.

HTH

Gruß Norbert