Hallo Gruppe,
in der vagen Vermutung es kennst sich neben Heiko noch einer mit DEB Paketen aus, frage ich mal hier statt direkt.
Ich baue aus den Vanilla-Sourcen auf einer amd64 Plattform Kerne für verschiedene Plattformen ('make ARCH='). Dazu habe ich ein Script, welches mir das Ergebnis mit ein paar Steuerdateien (CONTROL, changelog, postinst usw.) mittels 'dpkg-deb' zusammenpappt. Resultierend daraus habe ich DEB Pakete, die einen installierbaren Kernel enthalten. Noch habe ich Probleme mir das changelog mittels apt-listchanges bei der Installation anzeigen zu lassen, aber dazu an andere Stelle vielleicht mehr.
Nun gibt es Zielsysteme mit der Anforderung, nachträglich Software zu installieren, die Kernel-Header erfordert. Nun möchte ich mein Zeug dahingehend erweitern und denke, da muss doch was mit den fertigen Tools gehen.
'make-kpkg' gilt als veraltet - ok. Mit 'make kernel_headers' komme ich auch nicht so recht weiter. Dokumentationen von 'make deb-pkg' gehen immer davon aus, dass ich als Quellpaket auch schon ein DEB installiert habe. Ich habe es trotzdem gegen meine Vanillaquellen angewendet und erhalte einen installierbaren Kern und auch ein header-Paket. Leider greift die Drittsoftware dann auf scripts/basic/fixdep zu und das ist ein amd64 Binary. Auch ein Kompilieren direkt in den Quellen ('make ARCH=i386 fixdep') erzeugt wieder ein amd64 auf der Kompiliermaschine.
Könnte mich bitte jemand auf einen erfolgversprechenden Pfad bringen?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
Hallo Gruppe,
ich formuliere meine Fragestellung mal um:
Ich habe eine amd64 Debian jessie Plattform. Auf der lade ich einen Vanilla Kernel und lege den in zwei Verzeichnissen einmal für amd64 und einmal für i386 ab. Da rein kopiere ich je eine passend vorbereitete .config. Dann wird der amd64 Kern gebaut mit 'make oldconfig && make -j4'. Für den i386er Kern wähle ich stattdessen 'make ARCH=i386 oldconfig && make -j4'. Das liefert mir unter den jeweiligen Plattformen laufende Kerne. Lassen wir mal weg, dass ich daraus mühevoll noch DEB-Pakete baue, was sicher einfacher geht als mit meinem Scripthaufen.
Nun habe ich die Anforderung, speziell für den i386 Zweig, auch die Header mitzuliefern. Egal welches Werkzeug ich da zur Paketierung verwende, zu den Headern gehören offenbar auch ein paar Tools wie z.B scripts/basic/fixdep. Leider sind das nach o.g. Methode für i386 trotzdem 64-bit ELF. Dieser Umstand führt dazu, dass Drittsoftware auf der Zielplattform dann mit diesen Headern und Tools nicht in der Lage ist, sich zu installieren / seine Module zu bauen.
Nun habe ich den Befehl/Alias 'linux32' gefunden und den o.g. 'make' Befehlen vorangestellt - das macht leider keinen Unterschied. Auch habe ich noch keine für mich verständliche und funktionierende Anleitung gefunden, wie ich mir eine vernünftige cross-compile-Umgebung in debian einrichte.
Hat denn hier keiner einen Tipp für mich, wie ich einen i386 Kernel komplett und sauber in einer amd64 Umgebung bauen kann?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
-----Ursprüngliche Nachricht----- Von: Lug-dd [mailto:lug-dd-bounces@mailman.schlittermann.de] Im Auftrag von Ronny Seffner Gesendet: Dienstag, 7. März 2017 19:11 An: lug-dd@mailman.schlittermann.de Betreff: Debian Paketierung - Kernel
Hallo Gruppe,
in der vagen Vermutung es kennst sich neben Heiko noch einer mit DEB Paketen aus, frage ich mal hier statt direkt.
Ich baue aus den Vanilla-Sourcen auf einer amd64 Plattform Kerne für verschiedene Plattformen ('make ARCH='). Dazu habe ich ein Script, welches mir das Ergebnis mit ein paar Steuerdateien (CONTROL, changelog, postinst usw.) mittels 'dpkg-deb' zusammenpappt. Resultierend daraus habe ich DEB Pakete, die einen installierbaren Kernel enthalten. Noch habe ich Probleme mir das changelog mittels apt-listchanges bei der Installation anzeigen zu lassen, aber dazu an andere Stelle vielleicht mehr.
Nun gibt es Zielsysteme mit der Anforderung, nachträglich Software zu installieren, die Kernel-Header erfordert. Nun möchte ich mein Zeug dahingehend erweitern und denke, da muss doch was mit den fertigen Tools gehen.
'make-kpkg' gilt als veraltet - ok. Mit 'make kernel_headers' komme ich auch nicht so recht weiter. Dokumentationen von 'make deb-pkg' gehen immer davon aus, dass ich als Quellpaket auch schon ein DEB installiert habe. Ich habe es trotzdem gegen meine Vanillaquellen angewendet und erhalte einen installierbaren Kern und auch ein header-Paket. Leider greift die Drittsoftware dann auf scripts/basic/fixdep zu und das ist ein amd64 Binary. Auch ein Kompilieren direkt in den Quellen ('make ARCH=i386 fixdep') erzeugt wieder ein amd64 auf der Kompiliermaschine.
Könnte mich bitte jemand auf einen erfolgversprechenden Pfad bringen?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
So, unter Debian habe ich bisher nur einmal einen Kernel gebaut und gepackt. Das war aber auch der installierte Kernel, in dem ich einen Patch eingespielt habe. Damit war make-deb mein Freund. Das war aber kinderliecht und ich brauchte irgendwie keinen Scripthaufen. Dennoch kompiliere ich des Oefteren einen Kernel. Also nach einer kurzen Suche konnte ich nichts finden, dass make-kpkg veraltet ist. Vielleicht solltest du es also mal probieren. Nebenbei habe ich auch noch make deb-pkg gefunden. Ich installiere mir gerade mal zwei debian-Systeme, um es zu testen. Welche Kernel-Version benutzt du?
Welche Software hast du genau, die die Kernel-Header benutzt, damit ich nicht selber eine passende suchen muss?
On Thu, Mar 09, 2017 at 05:21:46PM +0100, Ronny Seffner wrote:
Hallo Gruppe,
ich formuliere meine Fragestellung mal um:
Ich habe eine amd64 Debian jessie Plattform. Auf der lade ich einen Vanilla Kernel und lege den in zwei Verzeichnissen einmal für amd64 und einmal für i386 ab. Da rein kopiere ich je eine passend vorbereitete .config. Dann wird der amd64 Kern gebaut mit 'make oldconfig && make -j4'. Für den i386er Kern wähle ich stattdessen 'make ARCH=i386 oldconfig && make -j4'. Das liefert mir unter den jeweiligen Plattformen laufende Kerne. Lassen wir mal weg, dass ich daraus mühevoll noch DEB-Pakete baue, was sicher einfacher geht als mit meinem Scripthaufen.
Nun habe ich die Anforderung, speziell für den i386 Zweig, auch die Header mitzuliefern. Egal welches Werkzeug ich da zur Paketierung verwende, zu den Headern gehören offenbar auch ein paar Tools wie z.B scripts/basic/fixdep. Leider sind das nach o.g. Methode für i386 trotzdem 64-bit ELF. Dieser Umstand führt dazu, dass Drittsoftware auf der Zielplattform dann mit diesen Headern und Tools nicht in der Lage ist, sich zu installieren / seine Module zu bauen.
Nun habe ich den Befehl/Alias 'linux32' gefunden und den o.g. 'make' Befehlen vorangestellt - das macht leider keinen Unterschied. Auch habe ich noch keine für mich verständliche und funktionierende Anleitung gefunden, wie ich mir eine vernünftige cross-compile-Umgebung in debian einrichte.
Hat denn hier keiner einen Tipp für mich, wie ich einen i386 Kernel komplett und sauber in einer amd64 Umgebung bauen kann?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
-----Ursprüngliche Nachricht----- Von: Lug-dd [mailto:lug-dd-bounces@mailman.schlittermann.de] Im Auftrag von Ronny Seffner Gesendet: Dienstag, 7. März 2017 19:11 An: lug-dd@mailman.schlittermann.de Betreff: Debian Paketierung - Kernel
Hallo Gruppe,
in der vagen Vermutung es kennst sich neben Heiko noch einer mit DEB Paketen aus, frage ich mal hier statt direkt.
Ich baue aus den Vanilla-Sourcen auf einer amd64 Plattform Kerne für verschiedene Plattformen ('make ARCH='). Dazu habe ich ein Script, welches mir das Ergebnis mit ein paar Steuerdateien (CONTROL, changelog, postinst usw.) mittels 'dpkg-deb' zusammenpappt. Resultierend daraus habe ich DEB Pakete, die einen installierbaren Kernel enthalten. Noch habe ich Probleme mir das changelog mittels apt-listchanges bei der Installation anzeigen zu lassen, aber dazu an andere Stelle vielleicht mehr.
Nun gibt es Zielsysteme mit der Anforderung, nachträglich Software zu installieren, die Kernel-Header erfordert. Nun möchte ich mein Zeug dahingehend erweitern und denke, da muss doch was mit den fertigen Tools gehen.
'make-kpkg' gilt als veraltet - ok. Mit 'make kernel_headers' komme ich auch nicht so recht weiter. Dokumentationen von 'make deb-pkg' gehen immer davon aus, dass ich als Quellpaket auch schon ein DEB installiert habe. Ich habe es trotzdem gegen meine Vanillaquellen angewendet und erhalte einen installierbaren Kern und auch ein header-Paket. Leider greift die Drittsoftware dann auf scripts/basic/fixdep zu und das ist ein amd64 Binary. Auch ein Kompilieren direkt in den Quellen ('make ARCH=i386 fixdep') erzeugt wieder ein amd64 auf der Kompiliermaschine.
Könnte mich bitte jemand auf einen erfolgversprechenden Pfad bringen?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
Am Donnerstag, den 09.03.2017, 17:21 +0100 schrieb Ronny Seffner:
[Kernel-Bau auf amd64]
Nun habe ich die Anforderung, speziell für den i386 Zweig, auch die Header mitzuliefern. Egal welches Werkzeug ich da zur Paketierung verwende, zu den Headern gehören offenbar auch ein paar Tools wie z.B scripts/basic/fixdep. Leider sind das nach o.g. Methode für i386 trotzdem 64-bit ELF. Dieser Umstand führt dazu, dass Drittsoftware auf der Zielplattform dann mit diesen Headern und Tools nicht in der Lage ist, sich zu installieren / seine Module zu bauen.
Nun habe ich den Befehl/Alias 'linux32' gefunden und den o.g. 'make' Befehlen vorangestellt - das macht leider keinen Unterschied. Auch habe ich noch keine für mich verständliche und funktionierende Anleitung gefunden, wie ich mir eine vernünftige cross-compile-Umgebung in debian einrichte.
Ja, das vermisse ich auch. Aber amd64 und i386 sind IMO unproblematisch. Für Debian-Pakete habe ich mit pbuilder entsprechende CHROOTs eingerichtet und nutze die regelmäßig, um Binärpakete für amd64 und i386 zu bauen. In deinem Fall würde ich jetzt nur meine CHROOT starten und darin das Paket bauen.
Hat denn hier keiner einen Tipp für mich, wie ich einen i386 Kernel komplett und sauber in einer amd64 Umgebung bauen kann?
IMO hat Debian viele Anstrengungen unternommen, um das Cross-Compiling einfach zu machen. Nach meinem Verständnis können alle Architekturen parallel installiert werden und die Werkzeuge sollten sich nicht überlagern. Deine Situation sollte rein theoretisch gar nicht auftreten und ist damit evtl. eine Fehlermeldung wert, wenn du dir sicher bist, dass du nichts übersehen hast.
VG Daniel
lug-dd@mailman.schlittermann.de