Kernel komp.: make-kpkg ruft Script auf [gelöst]

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Kernel komp.: make-kpkg ruft Script auf [gelöst]

Beitrag von sai » 13.03.2007 15:02:47

Hallo!

Ich möchte gern ein Debian System aufsetzen: Debian Sarge (stable)
Ich tue dies über Bootstrapping.
Ich möchte mir für eine optimale Bootzeit einen eigenen Kernel bauen. Ich habe das bereits einige Male gemacht, für Debian als auch für Gentoo (allerdings noch nicht für mein jetziges, neueres System).
Dieses mal möchte ich ein Debian-Kernel-Paket erzeugen, also ein .deb Kernelpaket, mittels make-kpkg, wie beschrieben auf http://www.debian.org/doc/manuals/refer ... el.de.html.

Ich habe vorher mit make menuconfig die Kernelkonfiguration für mein System entsprechend optimiert, wobei mit Sicherheit noch einige Änderungen gemacht werden müssen, bevor der Kernel wirklich funktioniert... aber dazu später.

Hier ein Log-Auszug nach make-kpkg:
http://nopaste.debianforum.de/5383
Die Frage ist also, warum make-kpkg das Skript für die Kernel-Konfiguration aufruft, wenn sich eine .config Datei im entsprechenden Kernel-Verzeichnis befindet.

Die Howto beschreibt außerdem, dass make-kpkg direkt make oldconfig aufruft. Wenn ich allerdings make oldconfig "normal" aufrufe, wird mir die gesamte Kernelkonfiguration(sdatei) präsentiert. Also ein anderes Ergebnis als make-kpkg. Sprich: make-kpkg ruft nicht direkt make oldconfig auf.

Eine Vermutung von mir wäre, dass make-kpkg bereits die Konfiguration auf Kompatibilität mit dem System überprüft und feststellt, dass diese Konfiguration nicht funktionieren kann... aber doch eher unwahrscheinlich.

Bitte: Erspart mir jeden Hinweis auf die Testing Version "Etch". Ich weiß, dass diese existiert, und ich weiß welche Vorteile sie bringt. Ich möchte hier aber gerne etwas über Linux (Debian) lernen und dem Problem nicht ausweichen. Danke.

Ich möchte außerdem eine Frage ergänzen: Ich habe einen AMD Athlon 64 AM2 3800+ Prozessor. Nach einer halbjährigen Erfahrung mit Ubuntu 64bit habe ich mich entschieden, ein rein 32bit System aufzusetzen. Ich bin nun leider etwas verwirrt, wo ich 32bit und wo 64bit angeben muss. Beim Bootstrapping habe ich definitv 32bit (i386) angegeben. Doch wie sieht es dann im Kernel aus? Beim Prozessor muss ich doch K8 64bit auswählen, oder nicht?

Vielen Dank,
sai
Zuletzt geändert von sai am 13.03.2007 17:21:48, insgesamt 2-mal geändert.

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

Beitrag von gms » 13.03.2007 15:15:50

sai hat geschrieben: Die Frage ist also, warum make-kpkg das Skript für die Kernel-Konfiguration aufruft, wenn sich eine .config Datei im entsprechenden Kernel-Verzeichnis befindet.
make-kpkg ruft (wenn nicht anders angegeben) nur "make oldconfig" auf, und zieht damit die aktuelle ".config" auf die aktuelle Kernelversion hoch. Wurde die ".config" schon für die gleiche Kernelversion erstellt, sollte sie bei diesem Vorgang gleich bleiben.
sai hat geschrieben: Ich bin nun leider etwas verwirrt, wo ich 32bit und wo 64bit angeben muss. Beim Bootstrapping habe ich definitv 32bit (i386) angegeben. Doch wie sieht es dann im Kernel aus? Beim Prozessor muss ich doch K8 64bit auswählen, oder nicht?
für ein 32 bit System brauchst du einen 32 bit Kernel, Pentium-4 ist die richtige Wahl für den Kernel

Gruß
gms
sai hat geschrieben: Ich möchte außerdem eine Frage ergänzen: Ich habe einen AMD Athlon 64 AM2 3800+ Prozessor.
das AMD hat mich jetzt verunsichert, 686 geht auf alle Fälle, ob Pentium-4 auch auf AMD funkt, glaub ich jetzt eigentlich auch nicht, sollte wohl irgendein 32 bit AMD sein
Zuletzt geändert von gms am 13.03.2007 15:25:06, insgesamt 1-mal geändert.

sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Beitrag von sai » 13.03.2007 15:21:55

make-kpkg ruft (wenn nicht anders angegeben) nur "make oldconfig" auf, und zieht damit die aktuelle ".config" auf die aktuelle Kernelversion hoch. Wurde die ".config" schon für die gleiche Kernelversion erstellt, sollte sie bei diesem Vorgang gleich bleiben.
Verstehe ich nicht ganz. Was bedeutet "zieht .config auf die aktuelle Kernelversion hoch"?

Ich habe doch vorher für den entsprechenden Kernel, den ich da vorher entpackt habe, make menuconfig durchlaufen und alles konfiguriert. Warum denn dann noch das Skript? Er soll doch einfach nur die .config Datei nehmen.

Wie kann ich das Skript umgehen. Ich will doch nicht nochmal nach jeder möglichen Einstellung gefragt werden. Welchen Sinn hat das denn?

Danke,
sai

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

Beitrag von gms » 13.03.2007 15:28:45

sai hat geschrieben:Er soll doch einfach nur die .config Datei nehmen.
Hast du diese Zeile bemerkt:

Code: Alles auswählen

# using defaults found in .config
#

sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Beitrag von sai » 13.03.2007 15:56:00

bitte löschen.
Zuletzt geändert von sai am 13.03.2007 16:10:13, insgesamt 1-mal geändert.

sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Beitrag von sai » 13.03.2007 16:05:27

Aha. Ich dachte es beziehe sich auf irgendeine config, die dem Skript beiliegt...

Ok, weiter:

Was bedeuten diese Einträge? Ich deute das so, dass in der Konfigdatei Einträge sind, mit der der PC nichts anfangen kann. Demnach muss doch irgendwas verkehrt (ge)laufen (sein).
#
.config:61: trying to assign nonexistent symbol MPSC
.config:62: trying to assign nonexistent symbol GENERIC_CPU
Und noch weiter:
Warum fragt er nach dem Prozessor, der doch in der Konfigdatei angegeben ist.

Und wenn ich die Frage beantworte, geht's zur nächsten Frage, und er rattert die gesamte Kernelkonfig durch (ich habe das dann nicht fort geführt).

Ich meine, es ist doch klar, was mein Ziel ist, oder?
Wie beschrieben soll mir make-kpkg ein .deb Kernelpaket bringen.

Übrigens: Ich habe in der Konfiguration folgende Prozessoren zur Auswahl:
│ │ (X) AMD-Opteron/Athlon64 │ │
│ │ ( ) Intel x86-64 │ │
│ │ ( ) Generic-x86-64 │ │
Was nun? Da is ja kein 32bit Prozessor bei. Woran liegts?

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

Beitrag von gms » 13.03.2007 16:05:44

irgendwas machst du auch falsch, das ist nicht das normale Verhalten :?
wenn du vorher "make menuconfig" in dem Verzeichnis aufgerufen hast, dürften nachher eigentlich keine Fragen kommen
rufst du vielleicht danach "make mrproper" auf ?
In meinem "Kernelerstellungs Script" mache ich auch nichts anderes:

Code: Alles auswählen

cd /usr/src/linux
cp /boot/config-`uname -r`  .config
make menuconfig
make-kpkg kernel_image ...
Nochmals zum Prozessor: Dort kannst du auch den 64bit AMD auswählen und für die i386er Architektur bauen lassen, das wird dann ein 32bit Kernel

sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Beitrag von sai » 13.03.2007 16:09:23

rufst du vielleicht danach "make mrproper" auf ?
Weiß leider nicht, was mrproper ist. Also nein.

Mag sein, dass ich etwas falsch mache, aber dann muss es doch auch ne Möglichkeit geben, es richtig zu machen ;-)

Wo soll ich denn jetzt neu ansetzen? Ich gehe auch davon aus, wenn ich alles nochmal so mache wie bisher, erhalte ich auch dasselbe Ergebnis.

Übrigens entspricht die Prozessorauswahl unter make menuconfig (oben angegeben) ja auch nicht der von dem Skript. Was bedeutet das?

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

Beitrag von gms » 13.03.2007 16:19:09

sai hat geschrieben: Mag sein, dass ich etwas falsch mache, aber dann muss es doch auch ne Möglichkeit geben, es richtig zu machen ;-)
so sehe ich das auch :)
hast du vielleicht das "make menuconfig" noch unter 64 bit aufgerufen ?

du könntest auch make-kpkg mit der Option "--config menuconfig" aufrufen und deine vorher gesicherte ".config" importieren

sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Beitrag von sai » 13.03.2007 16:24:51

hast du vielleicht das "make menuconfig" noch unter 64 bit aufgerufen ?
Ich befinde mich in Ubuntu 64bit und "chroote" dann in das 32bit-werdende System.
du könntest auch make-kpkg mit der Option "--config menuconfig" aufrufen und deine vorher gesicherte ".config" importieren
HA! Cool, es funktioniert. Klasse! Jetzt bricht er nur noch bein Kompilieren ab. Aber das wusste ich schon, dass das passieren würde. Das ist aber wohl ein anderes Thema dann...

Trotzdem wüsste ich gerne, warum es denn nur mit --config menuconfig klappt? Welche .config Datei nimmt er denn dann für die Kompilierung, wenn --config nicht angegegen ist? Verstehe ich noch nicht ganz.

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

Beitrag von gms » 13.03.2007 16:33:52

sai hat geschrieben:
hast du vielleicht das "make menuconfig" noch unter 64 bit aufgerufen ?
Ich befinde mich in Ubuntu 64bit und "chroote" dann in das 32bit-werdende System.
an diese Fehlerquelle habe ich zwar nicht gedacht, aber möglicherweise wird dadurch wirklich der Fehler ausgelöst

Code: Alles auswählen

.config:62: trying to assign nonexistent symbol GENERIC_CPU
diese Option sollte es nur unter x86_64 geben

Gruß
gms

sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Beitrag von sai » 13.03.2007 16:34:59

Mit anderen Worten:

Ich kann aus einem 64bit(-Kernel) System kein 32bit Kernel oder sonst irgendwas kompilieren, was für 32bit gedacht ist?

Und nochmal:
für ein 32 bit System brauchst du einen 32 bit Kernel, Pentium-4 ist die richtige Wahl für den Kernel
[...]
das AMD hat mich jetzt verunsichert, 686 geht auf alle Fälle, ob Pentium-4 auch auf AMD funkt, glaub ich jetzt eigentlich auch nicht, sollte wohl irgendein 32 bit AMD sein
Nochmals zum Prozessor: Dort kannst du auch den 64bit AMD auswählen und für die i386er Architektur bauen lassen, das wird dann ein 32bit Kernel
Heißt das denn jetzt, ich muss bei der Kernelkonfiguration einen 32bit oder 64bit Prozessor auswählen?

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

Beitrag von gms » 13.03.2007 17:10:43

sai hat geschrieben: Ich kann aus einem 64bit(-Kernel) System kein 32bit Kernel oder sonst irgendwas kompilieren, was für 32bit gedacht ist?
nein, du hättest aber wahrscheinlich

Code: Alles auswählen

make ARCH=i386 menuconfig
aufrufen müssen
sai hat geschrieben: Heißt das denn jetzt, ich muss bei der Kernelkonfiguration einen 32bit oder 64bit Prozessor auswählen?
du kannst entweder Pentium-Pro für höchste Kompatibilität oder Athlon64 für höchste Performance auswählen

erstellt wird unter i386 immer ein 32bit Kernel ( außer du würdest cross-compilen )

Gruß
gms

sai
Beiträge: 37
Registriert: 14.08.2006 09:29:10

Beitrag von sai » 13.03.2007 17:21:20

Code: Alles auswählen

make ARCH=i386 menuconfig
Klasse! Das wird mir enorm helfen, Fehlermeldungen beim Kompilieren zu reduzieren *g* ;-)

Wirklich vielen Dank, ich weiß es zu schätzen!
sai

Antworten