[GELÖST] Kernel auf amd64 für X86_32 kompilieren

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
matman
Beiträge: 744
Registriert: 03.07.2008 10:50:07
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Hamburg
Kontaktdaten:

[GELÖST] Kernel auf amd64 für X86_32 kompilieren

Beitrag von matman » 09.07.2011 20:12:15

Ich habe eine 32-Bit Installation (Squeeze) auf der ich gerne Virtualbox nutzen will. Doch die VBox-Kernelmodule wollen sich einfach nicht installieren lessen. Habe es mit meinem selbst kompilierten Kernel 3.0.0-rc6 probiert und auch mit dem Standardkernel von Squeeze. Beim Standardkernel meckert der VBox-Installer, dass die kernel-headers-2.6.32-amd64 fehlen. Höchstwahrscheinlich deshalb, weil ich eine AMD Phenom II X4 CPU habe. Das installieren der Headers bringt aber auch keinen Erfolg. Und bei meinem selbst kompilierten Kernel, da lassen sich die VBox-Module zwar kompilieren, startet man jedoch eine VM, so meckert VBox etwas von inkompatiblen Kernelmodulen.

Nun habe ich mir mal meine Kernel-Konfiguration angesehen. Da finde ich folgendes:

Code: Alles auswählen

CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
Wie ist das möglich? Müsste ich nicht auf einem 32-Bit System auch den Kernel entsprechend für 32 Bit kompilieren? Und wenn ja, wo stelle ich das ein? Das Kommando make menuconfig wählt das nämlich automatisch aus, wenn ich das richtig beobachtet habe.
Zuletzt geändert von matman am 13.07.2011 19:34:05, insgesamt 1-mal geändert.
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Kernel auf amd64 für X86_32 kompilieren

Beitrag von rendegast » 09.07.2011 21:48:25

Beim Standardkernel meckert der VBox-Installer, dass die kernel-headers-2.6.32-amd64 fehlen.
...
Das installieren der Headers bringt aber auch keinen Erfolg.

Code: Alles auswählen

dpkg -l | egrep linux-
dpkg -l | egrep box
Höchstwahrscheinlich deshalb, weil ich eine AMD Phenom II X4 CPU habe.
Nein


Ich habe eine 32-Bit Installation (Squeeze)
...
dass die kernel-headers-2.6.32-amd64 fehlen.
Ein 32bit-System mit dem 64bit-Kernel?
Ist IMO eine Art Spezialfall, zBsp bekomme ich nvidia in der Konstellation nicht zum Laufen.
Versuche es mit dem 686-bigmem + headers.

Für Deinen Kernel 3.0.0-rc6,
existieren die Links build und source und zeigen auf das Quell-Verzeichnis?
(Das Makefile hat auch die Möglichkeit, explizit die headers auszugeben, 'headers_install'.
Die headers landen dann in Kernelquelle/usr/include/.)








----------------------------------------
Nebenbei habe ich eine kleine Differenz beim mit Patches vom 2.6.36 hochgezogenem zum 2.6.39.tar entdeckt:

Code: Alles auswählen

$ diff -rq linux-2.6.39/ linux-2.6.36/  | sort
Nur in linux-2.6.39//Documentation/DocBook/v4l: bayer.pdf.
Nur in linux-2.6.39//Documentation/DocBook/v4l: bayer.png.
Nur in linux-2.6.39//Documentation/DocBook/v4l: nv12mt.gif.
Nur in linux-2.6.39//Documentation/DocBook/v4l: nv12mt_example.gif.
Nur in linux-2.6.39//Documentation/DocBook/v4l: pipeline.pdf.
Nur in linux-2.6.39//Documentation/DocBook/v4l: pipeline.png.
Nur in linux-2.6.39//drivers/staging/ft1000/ft1000-pcmcia: ft1000.img.
Nur in linux-2.6.39//drivers/staging/ft1000/ft1000-usb: ft3000.img.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
matman
Beiträge: 744
Registriert: 03.07.2008 10:50:07
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Hamburg
Kontaktdaten:

Re: Kernel auf amd64 für X86_32 kompilieren

Beitrag von matman » 11.07.2011 13:31:04

rendegast hat geschrieben:
Höchstwahrscheinlich deshalb, weil ich eine AMD Phenom II X4 CPU habe.
Nein
Selbstverständlich liegt es exakt daran. Ich habe nämlich im Grub-Menu noch das Kernel-Image 2.6.32-5-686 entdeckt und einfach mal ausprobiert. Damit lassen sich dann auch die VirtualBox-Module kompilieren und installieren.
rendegast hat geschrieben:Ein 32bit-System mit dem 64bit-Kernel?
Ja, das hat mir Squeeze so installiert. Und wie gesagt, da ja die Kernel-Konfiguration ganz automatisch auf die 64-Bit CPU einstellt, habe ich natürlich auch mit dem selbst kompilierten Kernel keine Chance, die VirtualBox-Module zum Laufen zu bekommen.
rendegast hat geschrieben:Für Deinen Kernel 3.0.0-rc6,
existieren die Links build und source und zeigen auf das Quell-Verzeichnis?
Klar, ich lösche die doch nicht.

Übrigens funktioniert die Installation der VirtualBox-Module auf einem geklonten 64-Bit Squeeze einwandfrei. Wie gesagt, ich muss irgendwie der Kernel-Konfiguration verklickern, dass ich einen Kernel für ein 32-Bit System kompilieren will. Aber wie nur macht man das?
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Kernel auf amd64 für X86_32 kompilieren

Beitrag von rendegast » 11.07.2011 15:11:26

Höchstwahrscheinlich deshalb, weil ich eine AMD Phenom II X4 CPU habe.
Nein
Selbstverständlich liegt es exakt daran.
Nein, wenn die Meldung lautet
dass die kernel-headers-2.6.32-amd64 fehlen.
("linux-headers-2.6.32-5-amd64"?) dann versuchst Du das unter dem Kernel linux-image-2.6.32-5-amd64,
aber ohne dessen kernel-headers installiert zu haben.
Aus dem Grunde wollte ich ja auch

Code: Alles auswählen

dpkg -l | egrep linux-
sehen.
Das hat mit der phenom-CPU erstmal nichts zu tun.
Und wie gesagt, da ja die Kernel-Konfiguration ganz automatisch auf die 64-Bit CPU einstellt,
Die Einstellung 'mach' orientiert sich dabei am laufenden Kernel, nicht an der physischen CPU-Architektur.

Die Installer stolpern über die Möglichkeit bei linux, ein 64bit-Kernel auf einem 32bit-System laufen zu lassen,
als Beispiel nannte ich nvidia und fglrx.


irgendwie der Kernel-Konfiguration verklickern, dass ich einen Kernel für ein 32-Bit System kompilieren will. Aber wie nur macht man das?
menuconfig -> 32bit, 686 + 64G (Jargon "-bigmem" oder neuerdings "-pae")
Schau Dir die Template für die CPU-Auswahl an, unter arch/x86/
http://git.kernel.org/?p=linux/kernel/g ... 86/Kconfig
http://git.kernel.org/?p=linux/kernel/g ... config.cpu
auch
http://git.kernel.org/?p=linux/kernel/g ... ile_32.cpu
Vergleiche die /boot/config-... von -686[-bigmem|-pae] und -amd64.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
matman
Beiträge: 744
Registriert: 03.07.2008 10:50:07
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Hamburg
Kontaktdaten:

Re: Kernel auf amd64 für X86_32 kompilieren

Beitrag von matman » 13.07.2011 19:33:38

Habe noch etwas in Google gestöbert und die Lösung gefunden. Ist eigentlich ganz einfach:

Code: Alles auswählen

make ARCH=i386 oldconfig
make ARCH=i386 menuconfig
make ARCH=i386 modules
make ARCH=i386 bzImage
make ARCH=i386 modules_install
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525

Antworten