VServer unter Sarge einrichten

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
tsibi
Beiträge: 269
Registriert: 31.08.2004 20:16:35
Wohnort: Oberfranken
Kontaktdaten:

VServer unter Sarge einrichten

Beitrag von tsibi » 27.04.2006 22:16:27

Hallo zusammen,

ich möchte auf meinem System mit einem VServer experimentieren und daher einen Kernel mit dem VServer-Patch kompilieren. Ich bin kerneltechnisch auf dem aktuellen Stand, da ich das Paket kernel-image-2.6-386 verwende. Wie im Linux-Vserver Debian Sarge Howto beschrieben, habe ich den Kernel 2.6.12.4 und den entsprechenden VServer-Patch heruntergeladen und unter /usr/src/ entpackt. Nun spielte ich den Patch ein, kopierte die Debian-Kernelconfig-Datei nach .config und rief make menuconfig auf und aktivierte die VServer-Einstellungen. Nach dem Durchlauf von make-kpkg clean und make-kpkg --revision vs2.0 kernel_image erhielt ich folgende Fehlermeldungen:

Code: Alles auswählen

drivers/char/drm/drm_memory.h:151: error: `drm_ioremap' previously defined here
drivers/char/drm/drm_memory.h:163: error: redefinition of `drm_ioremap_nocache'
drivers/char/drm/drm_memory.h:163: error: `drm_ioremap_nocache' previously defin
ed here
drivers/char/drm/drm_memory.h:174: error: redefinition of `drm_ioremapfree'
drivers/char/drm/drm_memory.h:174: error: `drm_ioremapfree' previously defined h
ere
drivers/char/drm/gamma_drv.c:56:22: drm_proc.h: Datei oder Verzeichnis nicht gef
unden
drivers/char/drm/gamma_drv.c:57:20: drm_vm.h: Datei oder Verzeichnis nicht gefun
den
drivers/char/drm/gamma_drv.c:58:22: drm_stub.h: Datei oder Verzeichnis nicht gef
unden
drivers/char/drm/gamma_drv.c:59:25: drm_scatter.h: Datei oder Verzeichnis nicht
gefunden
drivers/char/drm/gamma_lists.h:161: Warnung: `DRM' defined but not used
drivers/char/drm/gamma_lock.h:36: Warnung: `DRM' defined but not used
drivers/char/drm/gamma_lock.h:69: Warnung: `DRM' defined but not used
make[4]: *** [drivers/char/drm/gamma_drv.o] Fehler 1
make[3]: *** [drivers/char/drm] Fehler 2
make[2]: *** [drivers/char] Fehler 2
make[1]: *** [drivers] Fehler 2
make[1]: Leaving directory `/usr/src/linux-2.6.12.4'
make: *** [stamp-build] Fehler 2
debian:/usr/src/linux-2.6.12.4#
Evtl. liegt es daran, dass meine config-Datei mit dem Debian-Paket ausgeliefert wurde, dass auf dem aktuellsten stabilen Kernel basiert.

Ich patchte also den Kernel erneut und verzichtete auf das Einspielen der Debian-Configdatei. Das erzeugte deb-Archiv war nur knappe 3 MB groß und enthielt offenbar keine Module, obwohl diese in make menuconfig vorgesehen waren.

Wäre für eure Hilfe sehr dankbar, da ich bisher im Netz keine Lösung gefunden habe.

Gruß
Tsibi

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Re: VServer unter Sarge einrichten

Beitrag von storm » 29.04.2006 12:09:01

tsibi hat geschrieben: Nun spielte ich den Patch ein, kopierte die Debian-Kernelconfig-Datei nach .config und rief make menuconfig auf und aktivierte die VServer-Einstellungen.
Nun, der gängige Weg, eine bestehende config eines anderen Kernels zu verwenden, ist make oldconfig zu verwenden. Das fragt dann sozusagen die neu hinzugekommenen Einstellungen ab.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

tsibi
Beiträge: 269
Registriert: 31.08.2004 20:16:35
Wohnort: Oberfranken
Kontaktdaten:

Re: VServer unter Sarge einrichten

Beitrag von tsibi » 29.04.2006 12:27:53

storm hat geschrieben: Nun, der gängige Weg, eine bestehende config eines anderen Kernels zu verwenden, ist make oldconfig zu verwenden. Das fragt dann sozusagen die neu hinzugekommenen Einstellungen ab.
funktioniert das denn auch, wenn sich die Config-Datei auf einen neueren Kernel bezieht? Da ich das oben genannte Debian-Kernelpaket verwende, basiert meine Config ja auf dem 2.6.16 Kernel.

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 29.04.2006 13:15:31

Du hast oben auf das kernel-Paket aus stable verlinkt, da gehört 2.6.8 dazu. Der 2.6.16 ist beim unstable mit drin.
Aber unabhängig davon, make oldconfig sollte damit zurechtkommen. Dein Problem verursachen IMO fehlende/falsche Header. Der sauberste Weg wäre natürlich erst einen funktionierenden 2.6.12.4 zu bauen und zu installieren, und dann dessen .config als Grundlage für deinen vserver-kernel zu verwenden. Möglicherweise musst du auch erst die kernel_headers aus dem 2.6.12.4 erstellen und installieren.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

tsibi
Beiträge: 269
Registriert: 31.08.2004 20:16:35
Wohnort: Oberfranken
Kontaktdaten:

Beitrag von tsibi » 29.04.2006 16:38:54

Hallo,

auf der verlinkten Paketseite steht folgendes:
This package will always depend on the latest 2.6 kernel image available for 386.
Ich gehe also davon aus, dass ich den 2.6.16er Kernel verwende. Beim Installieren flog auch eine 2.6.16 Meldung über den Bildschirm.

Man sollte doch einen sauberen 2.6.12.4 Kernel erstellen können, indem man die Standardvorgaben übernimmt, oder? Bei mir wurde - wie im ersten Posting geschrieben - bei diesem Versuch nur eine knapp 3 MB große .deb-Datei erzeugt, deren Kernel auch nicht funktionierte.

Ich werde jetzt mal den Source vom 2.6.12.4 verwenden und make oldconfig auf die aktuelle Config vom offenbar 2.6.16er loslassen.

tsibi
Beiträge: 269
Registriert: 31.08.2004 20:16:35
Wohnort: Oberfranken
Kontaktdaten:

Beitrag von tsibi » 29.04.2006 17:30:32

Hallo,

beim Kompilieren des 2.6.12.4er Kernel mit der Config-Datei des aktuellen Kernels, traten folgende Fehlermeldungen am Ende auf:

Code: Alles auswählen

drivers/char/drm/drm_memory.h:174: error: `drm_ioremapfree' previously defined h
ere
drivers/char/drm/gamma_drv.c:56:22: drm_proc.h: Datei oder Verzeichnis nicht gef
unden
drivers/char/drm/gamma_drv.c:57:20: drm_vm.h: Datei oder Verzeichnis nicht gefun
den
drivers/char/drm/gamma_drv.c:58:22: drm_stub.h: Datei oder Verzeichnis nicht gef
unden
drivers/char/drm/gamma_drv.c:59:25: drm_scatter.h: Datei oder Verzeichnis nicht
ngefunde
drivers/char/drm/gamma_lists.h:161: Warnung: `DRM' defined but not used
drivers/char/drm/gamma_lock.h:36: Warnung: `DRM' defined but not used
drivers/char/drm/gamma_lock.h:69: Warnung: `DRM' defined but not used
make[4]: *** [drivers/char/drm/gamma_drv.o] Fehler 1
make[3]: *** [drivers/char/drm] Fehler 2
make[2]: *** [drivers/char] Fehler 2
make[1]: *** [drivers] Fehler 2
make[1]: Leaving directory `/usr/src/linux-2.6.12.4'
make: *** [stamp-build] Fehler 2
debian:/usr/src/linux-2.6.12.4#
Wäre für weitere Tipps dankbar.

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 30.04.2006 11:15:22

tsibi hat geschrieben: Ich gehe also davon aus, dass ich den 2.6.16er Kernel verwende. Beim Installieren flog auch eine 2.6.16 Meldung über den Bildschirm.
Aah, toll. Schon mal was von uname gehört?
Man sollte doch einen sauberen 2.6.12.4 Kernel erstellen können, indem man die Standardvorgaben übernimmt, oder? Bei mir wurde - wie im ersten Posting geschrieben - bei diesem Versuch nur eine knapp 3 MB große .deb-Datei erzeugt, deren Kernel auch nicht funktionierte.
Ja; hast du den Kern aus den schon gepatchten Quellen erstellt? Traten fehler beim patchen auf? Hast du mal einen 2.6.12.4 _ohne_ irgendeine kopierte config erstellt (also alles selbst durchgehen) und ohne irgendeinen Patch vorher auszuspielen?
Diese "knapp 3MB große" Datei ist ein image-Paket, das enthält einen Kernel sowie die mapfile und die Module (und weiteren Kleinkram). Die musst du anschliessend installieren und deinen Bootmanager anpassen.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 30.04.2006 17:22:17

wget ... patch-vserver.diff.gz
gunzip patch-vserver.diff.gz
wget ... kernel-2.6.12.4
tar xvf kernel-2.6.12.4
cd kernel-2.6.12.4
cp ../linux/.config .
make oldconfig
....
patch -p1 < ../patch-vserver.diff
make menuconfig
...
make // oder make-kpkg....
führt bei mir zu einem fertigen Kernel bzw. deb-Paket. Die config oben stammt von einem 2.6.16.9 und make oldconfig meckert zwar wegen nicht vorhandener Symbole, erstellt aber trotzdem eine funktionierende Konfiguration.

Da läuft bei dir irgendetwas schief und ich hatte oben schon einen möglichen Fix dafür beschrieben: erstelle und installiere ein Paket kernel_headers aus dem 2.6.12.4 _ohne_ ihn vorher zu patchen. Und entferne aus dem vs-Kernel alles, was du nicht unbedingt brauchst.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

tsibi
Beiträge: 269
Registriert: 31.08.2004 20:16:35
Wohnort: Oberfranken
Kontaktdaten:

Beitrag von tsibi » 01.05.2006 14:48:27

Hallo storm,

auf meinem Zielrechner für den neuen Kernel läuft laut uname der 2.6.8er Kernel:

Code: Alles auswählen

Linux debian 2.6.8-3-386 #1 Thu Feb 9 07:17:13 UTC 2006 i586 GNU/Linux
Ich habe nun die Sourcen für den 2.6.12er heruntergeladen und einen eigenen Kernel übersetzt. Ich habe _keinen_ Patch eingespielt und auch _keine_ alte Config verwendet:

Code: Alles auswählen

debian:/usr/src# tar xzf linux-2.6.12.4.tar.gz
debian:/usr/src# cd linux-2.6.12.4 
debian:/usr/src/linux-2.6.12.4# make menuconfig
debian:/usr/src/linux-2.6.12.4# make-kpkg --revision 2006-05-01 kernel_image
Das Debian-Paket ist 2,4 MB groß und bootet ohne Probleme. Ein vorheriger Versuch scheiterte wohl daran, da der reiserfs-Treiber nicht fest in den Kernel eincompiliert war und er daher nicht auf die Bootpartition zugreifen konnte.

Der Versuch die Konfiguration des 2.6.8er Debiankernels zu übernehmen schlug beim Kompilieren fehl. Ich werde es jetzt noch einmal mit dem Patch versuchen.

Mir ist der Zusammenhang mit den Kernel-Headern icht ganz klar. Werden diese für die Übersetzung oder für die Verwendung des übersetzten Kernels gebraucht? Die Header sind doch im Source-Tarball mit enthalten.

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 01.05.2006 15:47:56

tsibi hat geschrieben: Der Versuch die Konfiguration des 2.6.8er Debiankernels zu übernehmen schlug beim Kompilieren fehl. Ich werde es jetzt noch einmal mit dem Patch versuchen.
Ich kann das zwar nicht hinreichend ausführen, aber du solltest nach Möglichkeit vermeiden, debian-kernel und vanilla zu mischen. Die debian-Varianten können sich erheblich vom vanilla unterscheiden. War das diesmal der gleiche Fehler wie oben, sprich irgendwas mit drm? Dann lass in der Konfiguration mal den Direct Rendering Manager weg.
Wie sieht bei dir /usr/src aus? Gibt es einen symbolischen Link "linux", wenn ja: wohin zeigt der?

Die ganze Situation ist eh etwas merkwürdig, da einzelne Dateien des kernel 2.6.12.4 aus der Ecke DRM nicht vorhandene Header (im Kernel 2.6.x)einbinden wollen. Diese Header stammen alle noch vom 2.4er und sind hier definitiv falsch.
Mir ist der Zusammenhang mit den Kernel-Headern icht ganz klar. Werden diese für die Übersetzung oder für die Verwendung des übersetzten Kernels gebraucht? Die Header sind doch im Source-Tarball mit enthalten.
Sowohl als auch. Stell dir einen bereits laufenden Kernel vor und du möchtest eine neue Version eines externen Treibers erstellen. Der Treiber braucht natürlich die Schnittstellen und Typen des Kernels. Die findet er in den kernel-headers, ohne dass du jetzt die vollen Kernelquellen benötigst.
Meine Vermutung war zuerst, dass make beim Übersetzen Probleme hatte, die richtigen Pfade für die Header zu finden (obwohl mir sowas bislang noch nicht über den Weg gelaufen ist). Ich muss mir das noch mal genauer anschauen.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 01.05.2006 16:10:16

Mmh, das Problem scheint tatsächlich beim Kernel 2.6.12.4 zu liegen, entferne alle Optionen den Direct Rendering Manager betreffend und versuch dann noch mal einen Kernel zu erstellen.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

tsibi
Beiträge: 269
Registriert: 31.08.2004 20:16:35
Wohnort: Oberfranken
Kontaktdaten:

Beitrag von tsibi » 01.05.2006 21:14:53

Hallo Storm,

ich habe jettzt den Kernel mit dem Patch übersetzt ohne die Debian-Config zu verwenden. Es hat super geklappt :-). Das Debian-Paket wurde unter dem Namen kernel-image-2.6.12.4-vs2.0_vs2.0_i386.deb gespeichert und ist 2,4 MB groß. Der Kernel wäre wohl flexibler, wenn er auf der Config-Datei config-2.6.8-3-386 des Debian-Kernels basieren würde. Es wäre praktisch, wenn man ganze Konfigurations-Blöcke auf einmal als Modul selektieren könnte. So müsste man nicht alles öffnen und jeden Punkt evtl. als Modul festlegen.

Ich kann jetzt nicht mehr sagen, ob bei der Übersetzung mit der Debian-Config auch Meldungen mit DRM auftauchten. Wo kann ich den Direct Rendering Manager deaktivieren? Bin bei der Konfiguration nicht auf ihn gestoßen. Dann könnte ich es ja noch einmal probieren.

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 02.05.2006 11:57:59

Offtopic der Vserverpatch in Sarge lässt sich ohne Probleme im Packet kernel-source-2.6.8 integrieren. Ich habe daraus incl- Debianpatch mit der Config vom 2.6.8-2-686 ein DEB erstellen können und der Kernel läuft ohne Probleme. Geändert habe ich nur den Prozessor und natürlich habe ich Vserver hinzugefügt

Ach ja, Klugscheiss 8)
Schau mal bei "make menuconfig" unter 'Device Drivers ---> Character Devices --> Direct Rendering Manager' nach
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Antworten