Kernel komp.: make-kpkg ruft Script auf [gelöst]
Kernel komp.: make-kpkg ruft Script auf [gelöst]
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
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.
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: 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.
für ein 32 bit System brauchst du einen 32 bit Kernel, Pentium-4 ist die richtige Wahl für den Kernelsai 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?
Gruß
gms
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 seinsai hat geschrieben: Ich möchte außerdem eine Frage ergänzen: Ich habe einen AMD Athlon 64 AM2 3800+ Prozessor.
Zuletzt geändert von gms am 13.03.2007 15:25:06, insgesamt 1-mal geändert.
Verstehe ich nicht ganz. Was bedeutet "zieht .config auf die aktuelle Kernelversion hoch"?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.
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
Hast du diese Zeile bemerkt:sai hat geschrieben:Er soll doch einfach nur die .config Datei nehmen.
Code: Alles auswählen
# using defaults found in .config
#
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).
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?
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).
Und noch weiter:#
.config:61: trying to assign nonexistent symbol MPSC
.config:62: trying to assign nonexistent symbol GENERIC_CPU
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?
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:
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
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 ...
Weiß leider nicht, was mrproper ist. Also nein.rufst du vielleicht danach "make mrproper" auf ?
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?
so sehe ich das auchsai hat geschrieben: Mag sein, dass ich etwas falsch mache, aber dann muss es doch auch ne Möglichkeit geben, es richtig zu machen
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
Ich befinde mich in Ubuntu 64bit und "chroote" dann in das 32bit-werdende System.hast du vielleicht das "make menuconfig" noch unter 64 bit aufgerufen ?
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...du könntest auch make-kpkg mit der Option "--config menuconfig" aufrufen und deine vorher gesicherte ".config" importieren
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.
an diese Fehlerquelle habe ich zwar nicht gedacht, aber möglicherweise wird dadurch wirklich der Fehler ausgelöstsai hat geschrieben:Ich befinde mich in Ubuntu 64bit und "chroote" dann in das 32bit-werdende System.hast du vielleicht das "make menuconfig" noch unter 64 bit aufgerufen ?
Code: Alles auswählen
.config:62: trying to assign nonexistent symbol GENERIC_CPU
Gruß
gms
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:
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
Heißt das denn jetzt, ich muss bei der Kernelkonfiguration einen 32bit oder 64bit Prozessor auswählen?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
nein, du hättest aber wahrscheinlichsai hat geschrieben: Ich kann aus einem 64bit(-Kernel) System kein 32bit Kernel oder sonst irgendwas kompilieren, was für 32bit gedacht ist?
Code: Alles auswählen
make ARCH=i386 menuconfig
du kannst entweder Pentium-Pro für höchste Kompatibilität oder Athlon64 für höchste Performance auswählensai hat geschrieben: Heißt das denn jetzt, ich muss bei der Kernelkonfiguration einen 32bit oder 64bit Prozessor auswählen?
erstellt wird unter i386 immer ein 32bit Kernel ( außer du würdest cross-compilen )
Gruß
gms
Klasse! Das wird mir enorm helfen, Fehlermeldungen beim Kompilieren zu reduzieren *g*Code: Alles auswählen
make ARCH=i386 menuconfig
Wirklich vielen Dank, ich weiß es zu schätzen!
sai