Kernel komp.: Abbruch bevor er richtig anfängt [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.: Abbruch bevor er richtig anfängt [gelöst]

Beitrag von sai » 13.03.2007 23:57:47

Hallo,

Ich bin dabei ein neues System aufzusetzen via debootstrapping aus Ubuntu 64bit.
ich versuche einen Kernel zu kompilieren und bekomme folgendes Problem:
http://nopaste.debianforum.de/5390

Hat jemand eine Idee? Ich habe schon gegoogelt und vereinzelt solche Zeilen finden können (einmal ging es um einen Patch, ein anderes Mal war es das 64bit - 32bit Problem*), konnte damit aber leider nicht viel anfangen.

*Ich versuche den Kernel aus einem 64bit System zu erstellen.
Sicherheitshalber habe ich extra eine Live-CD erstellt und so einmal einen 32bit Kernel gestartet. Das ergebnis bleibt jedoch gleich. Ich habe auch schon versucht, make-kpkg über linux32 zu starten, gleiches Problem.

sai
Zuletzt geändert von sai am 14.03.2007 10:53:50, insgesamt 2-mal geändert.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 14.03.2007 01:11:19

Welchen Kernel versuchst du zu kompilieren?
Die structs deren members als fehlend bemängelt werden werden in ../include/asm-i386/sigcontext.h bzw. ../include/asm-i386/processor.h in deklariert, existieren diese Datei in deinen Kernelquellen?
Wird von make-kpkg ein symbolischer Link im ../include Verzeichnis angelegt?

Code: Alles auswählen

ls -l
lrwxrwxrwx   1 bert bert     8 2007-03-14 01:06 asm -> asm-i386

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

Beitrag von sai » 14.03.2007 08:28:34

Welchen Kernel versuchst du zu kompilieren?
Steht doch eigentlich in der ersten Zeile des Pastes: Kernel 2.6.8
Die structs deren members als fehlend bemängelt werden werden in ../include/asm-i386/sigcontext.h bzw. ../include/asm-i386/processor.h in deklariert, existieren diese Datei in deinen Kernelquellen?
Ja!
http://paste.debian.net/23648
http://paste.debian.net/23649
Wird von make-kpkg ein symbolischer Link im ../include Verzeichnis angelegt?

Code: Alles auswählen

lrwxrwxrwx    1 root root    10 2007-03-12 20:02 asm -> asm-x86_64
Ich glaube allerdings, das hier doch eigentlich kein "64" drin stehen dürfte, da ich doch ein 32bit System aufsetzen möchte?!
Wenn es das also ist, dann würde ich gerne wissen, bei welchem Schritt genau make-kpkg hier was falsch macht, und was ich hätte dort richtig machen müssen.
Reicht ein einfacher neuer symbolischer Link auf das asm-i386 Verzeichnis?
Würde make-kpkg nicht noch mehr falsch machen, wenn es irgendwie auf 64bit hinaus will?

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

Beitrag von gms » 14.03.2007 10:04:24

sai hat geschrieben: Steht doch eigentlich in der ersten Zeile des Pastes: Kernel 2.6.8
Hat zwar nichts mit dem Problem zu tun, wollte dich aber schon letztens fragen, warum du so einen alten Kernel baust.
sai hat geschrieben:
Wird von make-kpkg ein symbolischer Link im ../include Verzeichnis angelegt?

Code: Alles auswählen

lrwxrwxrwx    1 root root    10 2007-03-12 20:02 asm -> asm-x86_64
Ich glaube allerdings, das hier doch eigentlich kein "64" drin stehen dürfte, da ich doch ein 32bit System aufsetzen möchte?!
stimmt, der Link ist falsch, dieser wird vom "make ARCH=i386 prepare" gesetzt

make-kpkg dürfte aber nicht dafür verantwortlich sein:

Code: Alles auswählen

"make[1]: Leaving directory `/usr/src/kernel-source-2.6.8'
/usr/bin/make    \
                                ARCH=i386 prepare
Ich habe jetzt auch einmal versucht einen Kernel unter 64 bit Debian in einem 32 bit Chroot zu bauen

so hat es einwandfrei funktioniert:

Code: Alles auswählen

make ARCH=i386 menuconfig
make-kpkg kernel-image
den/die Fehler konnte ich aber so reproduzieren:

Code: Alles auswählen

make menuconfig
make prepare
make ARCH=i386 menuconfig
make-kpkg  kernel-image
danach mußte ich "make clean mrproper" aufrufen um wieder einen "sauberen Zustand" zu bekommen und um wieder ( über die ersten Kommandosequenz ) einen Kernel bauen zu können.

Diesen Test habe ich allerdings unter Etch durchgeführt, es ist daher auch nicht ganz auszuschließen, daß das kernel-package aus Sarge mitverantwortlich für dein Problem ist

Gruß
gms

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

Beitrag von sai » 14.03.2007 10:44:55

Juhu.

Tatsächlich, es geht auch unter sarge so, wie du es beschrieben hast.

Ich habe also mrproper gemacht und dann entsprechende Kommandosequenz, und es klappt!

Der Fehler lag also darin, dass ich zuerst fälschlicherweise menuconfig ohne den Zusatz für die Architektur (ARCH=i386) aufgerufen habe.

Ob das dann alles so ganz logisch ist, sei dahin gestellt. (Ich meine, es dürfte doch eigentlich nicht zu dem Problem kommen)...

Trotzdem vielen Dank nochmal.

Ich kompilieren den Kernel, weil es der offizielle Kernel für Debian stable ist.
Sehr wahrscheinlich werde oder muss ich sowieso noch mal einen aktuelleren Kernel kompilieren, der für meine recht neue Hardware dann besser passt. Nichts desto trotz, unabhängig vom Kernel, hätte ich wohl dieselben Problematik gehabt. Außerdem möchte ich grundlegendes über Debian/Linux lernen. Da ist es ja unabhängig, welchen Kernel ich kompiliere. Hauptsache ich lerne Fehler zu beheben und merke mir, wie und woran es lag.

Danke nochmal,
sai

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

Beitrag von gms » 14.03.2007 11:27:17

sai hat geschrieben: Ob das dann alles so ganz logisch ist, sei dahin gestellt. (Ich meine, es dürfte doch eigentlich nicht zu dem Problem kommen)...
In diesen Fehler (Falle) wäre ich zwar genauso hineingetappt, nachträglich betrachtet ist aber alles so wie es sein soll.
In Wirklichkeit gibt es nämlich unter einem 64 bit System keine "reine 32 bit Chroot Umgebung". Du müßtest nur die 64 bit Libraries hineinkopieren und könntest dann auch 64 bit Programme drinnen laufen lassen
Wenn du daher ein "make menuconfig" ohne Angabe der Architektur startest, wird richtigerweise ein 64 bit Kernel konfiguriert.
"make-kpkg" ist dagegen ein debianspezifisches Tool und "weiß daher" für welche Architektur diese Chroot-Umgebung gebaut wurde

Gruß
gms

Antworten