kompilieren von kernel

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Benutzeravatar
unix1988
Beiträge: 693
Registriert: 27.12.2010 00:09:20

kompilieren von kernel

Beitrag von unix1988 » 30.10.2016 13:14:35

Hi wen ich eine kernel kompiliren möchte bekomme ich diese meldund

wie bekomme ich das hin das es gecht
kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
/*

Kbuild:45: die Regel für Ziel »kernel/bounds.s« scheiterte
make[3]: *** [kernel/bounds.s] Fehler 1
Makefile:1015: die Regel für Ziel »prepare0« scheiterte
make[2]: *** [prepare0] Fehler 2
make[2]: Verzeichnis »/misc/src/linux-4.8.5« wird verlassen
debian/ruleset/targets/common.mk:194: die Regel für Ziel »debian/stamp/conf/kernel-conf« scheiterte
make[1]: *** [debian/stamp/conf/kernel-conf] Fehler 2
make[1]: Verzeichnis »/misc/src/linux-4.8.5« wird verlassen
/usr/share/kernel-package/ruleset/minimal.mk:93: die Regel für Ziel »debian/stamp/conf/minimal_debian« scheiterte
make: *** [debian/stamp/conf/minimal_debian] Fehler 2
Failed to create a ./debian directory: at /usr/bin/make-kpkg line 970.
Grus unix1988
Hallo Ich habe eine Rechtschreibschwäche das heis nicht wundern es es manch mal schwer zu schirben ist

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompiliren von kernel

Beitrag von towo » 30.10.2016 13:22:25

Du kannst gcc-5 statt gcc-6 zum Kompilieren benutzen, oder die Sourcen mit dem Ubuntu-Patch https://lists.ubuntu.com/archives/kerne ... 77178.html patchen, dann geht auch gcc-6 problemlos. Manchmal sollte man halt auch ab und an diverse Bugtracker lesen!

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: kompilieren von kernel

Beitrag von habakug » 30.10.2016 13:38:32

Hallo!

Da muss wohl auch noch am Stackprotector gedreht werden [1].

Gruss, habakug

[1] https://bugs.debian.org/cgi-bin/bugrepo ... =841420#94
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompilieren von kernel

Beitrag von towo » 31.10.2016 16:35:17

habakug hat geschrieben:Hallo!

Da muss wohl auch noch am Stackprotector gedreht werden [1].

Gruss, habakug

[1] https://bugs.debian.org/cgi-bin/bugrepo ... =841420#94
Nö.

Code: Alles auswählen

~
towo:Defiant> grep -i stackprotec /boot/config-4.8.6-towo.1-siduction-amd64 
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y

~
towo:Defiant> cat /proc/version 
Linux version 4.8.6-towo.1-siduction-amd64 (towo@siduction.org) (gcc version 6.2.0 20161027 (Debian 6.2.0-10) ) #1 SMP PREEMPT siduction 4.8-13 (2016-10-31)
Nur den Patch benutzt.

segmentationfault
Beiträge: 104
Registriert: 13.02.2011 07:24:43

Re: kompilieren von kernel

Beitrag von segmentationfault » 05.11.2016 16:57:52

Hallo zusammen,

ich hatte das gleiche Problem und bin wie folgt vorgegangen:

1) mit xconfig die Konfiguration des Kernels (bei mir 4.9rc3) aufgerufen und dort im Menü "Options" -> "Show all Options" ausgewählt". Danach über "Edit" -> "Find" nach CC_STACKPROTECTOR_STRONG gesucht und dies deaktiviert.

2) Im Makefile in den Kernel-sourcen des entpackten 4.9rc3 nach folgender Zeile gesucht:

all: vmlinux

# The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
# values of the respective KBUILD_* variables
ARCH_CPPFLAGS :=

dort dann zwischen all:vmlinux und dem folgenden Kommentar "# The arch Makefile...." folgende Zeilen ergänzt:

# force no-pie for distro compilers that enable pie by default
KBUILD_CFLAGS += $(call cc-option, -fno-pie)
KBUILD_CFLAGS += $(call cc-option, -no-pie)
KBUILD_AFLAGS += $(call cc-option, -fno-pie)
KBUILD_CPPFLAGS += $(call cc-option, -fno-pie)

Das Makefile so abgespeichert und dann konnte wie vor diesem Problem der Kernel mit gcc6 kompiliert werden.

Für Experten mag meine Erklärung ein Graus sein, aber ich musste erst mal bei den Beiträgen zuvor länger überlegen um zu verstehen wie die Lösung funktionieren sollte.
So wie ich es beschrieben habe hat es jedenfalls geklappt.

Gruß
Segmentationfault

KP97
Beiträge: 3425
Registriert: 01.02.2013 15:07:36

Re: kompilieren von kernel

Beitrag von KP97 » 07.11.2016 11:01:39

Guter Hinweis.
Nachdem es ja so aussieht, als ob das Problem mit gcc-6 noch länger bestehen bleibt, bin ich auf gcc-5 ausgewichen:

Code: Alles auswählen

make -j2 CC=gcc-5 deb-pkg
-j2 steht für zwei CPU's bzw. Prozesse, wer mehr hat, entsprechend ändern.

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompilieren von kernel

Beitrag von towo » 07.11.2016 11:07:05

Ich frag mich ja immer noch, warum ihr den stackprotector strong deaktiviert.

KP97
Beiträge: 3425
Registriert: 01.02.2013 15:07:36

Re: kompilieren von kernel

Beitrag von KP97 » 07.11.2016 13:03:14

@towo
Mal eine Frage an Dich als Kernelspezi:
Gibt es eine Möglichkeit, bei Verwendung von deb-pkg nur die Pakete für Linux-Image und evtl. auch die Headers zu erstellen?
Auch mit viel Suche habe ich nichts in dieser Richtung gefunden.
An und für sich braucht man ja nur diese beiden Pakete, da sind die anderen eher überflüssig und nur für besondere Fälle.

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompilieren von kernel

Beitrag von towo » 07.11.2016 15:42:46

Ich selbst baue Kernel ja nicht mit deb-pkg, da ich die Kernel ja für siduction baue und somit schon ein paar mehr Debs aus dem Build-Prozess fallen müssen.
Um nur image und header debs zu bauen, wirst Du wohl scripts/package/builddeb manipulieren müssen, so nach einem schnellen Blich auf Selbiges.

KP97
Beiträge: 3425
Registriert: 01.02.2013 15:07:36

Re: kompilieren von kernel

Beitrag von KP97 » 07.11.2016 15:49:50

Ich hatte es schon fast befürchtet. Na ja, noch funktioniert ja make-kpkg, wenn auch im Moment nicht wegen gcc-6.
Danke für Deine Antwort.

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompilieren von kernel

Beitrag von towo » 07.11.2016 16:56:33

Nuja, mit gcc-6 funktioniert das schon, wenn man den Patch aus dem Bugreport anwendet.
Als viel schlimmer empfinde ich, daß auch mit Kernel 4.9-rc4 das Problem mit CONFIG_MODVERSIONS=y noch nicht gelöst wurde, obwohl der notwendige Patch bereits eingereicht wurde.

segmentationfault
Beiträge: 104
Registriert: 13.02.2011 07:24:43

Re: kompilieren von kernel

Beitrag von segmentationfault » 07.11.2016 17:44:10

Hallo zusammen,

towo hat recht.


Ich habe es nochmal mit Kernel 4.8.5 überprüft. Die Option CC_STACKPROTECTOR_STRONG habe ich nicht deaktiviert und nur mit dem Patch im Makefile im Hauptverzeichnis
der Kernel-Source hat es einwandfrei funktioniert.
Meine Aussage oben im Beitrag ist also falsch.

Mit dem 4.9er Kernel hat es nicht funktioniert sowohl mit dem 4.9rc3 als auch dem 4.9rc4 nicht. Da ist wie schon gesagt wohl ein anderes Problem.
Der Kernel läßt sich kompilieren und ich kann ihn dann installieren jedoch bleibt er beim Hochfahren einfach hängen.
Aber das ist ja das was Spaß macht dann nach dem Problem zu suchen auch wenn ich nicht soviel Kenntnis davon habe wie Andere hier.


Gruß
segmentationfault

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompilieren von kernel

Beitrag von towo » 07.11.2016 17:49:14

Für Kernel 4.9 musst Du im Moment CONFIG_MODVERSIONS deaktivieren, oder 2 Patches [1,2] anwenden.

[1] http://paste.debian.net/893346/
[2] http://paste.debian.net/893347/

segmentationfault
Beiträge: 104
Registriert: 13.02.2011 07:24:43

Re: kompilieren von kernel

Beitrag von segmentationfault » 07.11.2016 18:03:12

Hallo KP97,

ich habe noch Deine Frage gesehen bezüglich der Erstellung von Kernel-Image und Kernel-Header.

Da make-kpkg ja mit dem Patch auch mit gcc6 funktioniert kann Du doch einfach so die gewünschten Pakete für Image und Header erstellen:

1) make xconfig oder make menuconfig....

2) make-kpkg clean

3) fakeroot make-kpkg --initrd --revision=4.8.5 kernel_image kernel_headers (hier für einen Kernel 4.8.5)


Gruß
segmentationfault

KP97
Beiträge: 3425
Registriert: 01.02.2013 15:07:36

Re: kompilieren von kernel

Beitrag von KP97 » 08.11.2016 18:33:24

Mit dem Patchen habe ich so mein Problem.
Normalerweise nehme ich den Vanilla-Kernel und passe den an meine Hardware an, ganz ohne Patches.
Ich habe erstmal den Befehl gesucht und hoffentlich auch den richtigen gefunden ( zcat <patchname> | patch -p0 bzw. -p1, wenn nicht in /usr/src)
Der Patch aus dem Bugreport 841500 ist aber nicht gezippt sondern endet auf .cgi, damit muß der Befehl wohl angepaßt werden.
Aber egal wie ich es mache, es funktioniert nicht. Also mache ich was verkehrt...wenn ich nur wüßte, was.
Daher bin ich auf gcc-5 ausgewichen. Da kann ich aber kein make-kpkg einsetzen, also alles nicht so ganz wie gewünscht.
Ich kann so zwar meinen Kernel erstellen, ich nehme den LTS 4.4.30, und kann damit leben.
Aber ärgern tut mich das schon, daß ich da nicht weiterkomme...
Vielleicht verrätst Du mir ja den genauen Ablauf, das wäre schön.

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

Re: kompilieren von kernel

Beitrag von rendegast » 09.11.2016 01:11:13

KP97 hat geschrieben: Gibt es eine Möglichkeit, bei Verwendung von deb-pkg nur die Pakete für Linux-Image und evtl. auch die Headers zu erstellen?
scripts/package/Makefile oder 'make help':

Code: Alles auswählen

make ... bindeb-pkg
Erstellt hier (ohne CONFIG_DEBUG_INFO und den Eintrag von ben hutchings Zertifikat)

Code: Alles auswählen

-rw-r--r--  1 root root     1922 Nov  8 22:53 linux-4.8.6_4.8.6-1_amd64.changes
-rw-r--r--  1 root root   960670 Nov  8 22:49 linux-firmware-image-4.8.6_4.8.6-1_amd64.deb
-rw-r--r--  1 root root 10398066 Nov  8 22:50 linux-headers-4.8.6_4.8.6-1_amd64.deb
-rw-r--r--  1 root root 37342228 Nov  8 22:53 linux-image-4.8.6_4.8.6-1_amd64.deb
-rw-r--r--  1 root root   857108 Nov  8 22:50 linux-libc-dev_4.8.6-1_amd64.deb
und nicht das linux-4.8.6...orig.tar.gz.
Was aber mit ~ 140MB und recht schneller Erstellung (alles auf 4GB-tmpfs) gegenüber dem restlichen Bau nicht groß ins Gewicht fällt.






----------------------------------------------------
Ob ich mit diesem
https://people.debian.org/~benh/package ... g.cert.pem
den Kernel valide signieren kann?
CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/benh@debian.org.cert.pem"

Wäre ein Ding, wenn benh seinen secure-boot-Key so offen herumliegen ließe.

[bin]deb-pkg: kernel 4.8 baut damit und Pakete werden erstellt.
Ein Test ist mir mangels secure-boot-Hardware aber nicht möglich.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

KP97
Beiträge: 3425
Registriert: 01.02.2013 15:07:36

Re: kompilieren von kernel

Beitrag von KP97 » 09.11.2016 12:12:12

@rendegast
OK, das übersteigt aber wohl meine Kenntnisse zum Kernelbau.
Ich mache das ja auch nur für meinen Desktop. Zwar schon seit Jahren, aber wie schon erwähnt, ohne das ich schon mal einen Patch eingespielt hätte.
Über die Schnelligkeit mit deb-pkg war ich auch überrascht. Ich glaube, da ist es einfacher, die nicht benötigten Pakete zu löschen, als in den Makefiles rumzumachen.
Da ist es mit make-kpkg doch bequemer. Wenn der 4.4.31 kommt, werde ich noch mal @segmentationfault's Hinweis ausprobieren.

Vielen Dank an Dich für Deine Antwort.

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

Re: kompilieren von kernel

Beitrag von rendegast » 09.11.2016 15:59:58

KP97 hat geschrieben: OK, das übersteigt aber wohl meine Kenntnisse zum Kernelbau.
Ich mache das ja auch nur für meinen Desktop. Zwar schon seit Jahren, aber wie schon erwähnt, ohne das ich schon mal einen Patch eingespielt hätte.
Über die Schnelligkeit mit deb-pkg war ich auch überrascht. Ich glaube, da ist es einfacher, die nicht benötigten Pakete zu löschen, als in den Makefiles rumzumachen.
Ich mache nicht "im Makefile rum" (zumindest nicht in diesem Fall)
- Die debuginfo zusätzlich erstellen verlängert den Kernelbau um einiges.
- Mit dem Eintrag für das benh-Zertifikat bricht (hier zumindest) der Kernelbau ab.

Wenn du Pakete per 'make deb-pkg' erstellen konntest, dürfte Dir das zweitere bekannt sein.
Das erstere ist ein allgemeiner Tip, den ich einfach nicht unterlassen kann zu verbreiten.

'make deb-pkg' <-> 'make bindeb-pkg'
unterscheidet nur die zusätzlich erstellte debian-Source bestehend aus orig.tar.gz, debian.tar.gz und dsc.
Imo vernachlässigbarer Unterschied, ich verschiebe halt nur die *.deb in mein lokales Repo.

Das 'bindeb-pkg' war mir auch neu, als ich gestern nachgesehen habe.
Im Kernel 4.4 findet es aber schon Verwendung.




Meine Aufruf reichere ich nur noch an mit

Code: Alles auswählen

nice -n15  make -j3 [bin]deb-pkg  KERNELRELEASE=4.8  KDEB_PKGVERSION=4.8.6
(Effektiver Aufruf, die Versionen konstruiert das benutzte Skript aus dem Makefile.
Damit bekomme ich einen stabilen Paketnamen "linux-image-4.8-custom" mit der Version des SUBLEVEL.)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

segmentationfault
Beiträge: 104
Registriert: 13.02.2011 07:24:43

Re: kompilieren von kernel

Beitrag von segmentationfault » 09.11.2016 17:36:10

Hallo KP97,

um auf Deine letzte Frage einzugehen verweise ich auf meinen ersten Beitrag.

Ich habe ehrlich gesagt auch keine Ahnung vom Patchen (sollte ich mal erlernen) aber ich habe einfach pragmatisch folgendes getan.

Wenn die Kernel-source entpackt ist befindet sich ja im Hauptverzeichnis ein Makefile (bitte nicht das makefile unter dem Unterverzeichnis /arch/x86 verwenden!)

Jedenfalls gibt es in dem Makefile im Hauptverzeichnis der Kernelsource eine Passage mit folgenden Zeilen:

all: vmlinux

XXXX

# The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
# values of the respective KBUILD_* variables
ARCH_CPPFLAGS :=

An der Stelle wo ich die XXXX hingeschrieben habe und im Original nichts steht ergänzt Du bitte folgenden Code:

KBUILD_CFLAGS += $(call cc-option, -fno-pie)
KBUILD_CFLAGS += $(call cc-option, -no-pie)
KBUILD_AFLAGS += $(call cc-option, -fno-pie)
KBUILD_CPPFLAGS += $(call cc-option, -fno-pie)


Danach bitte das Makefile abspeichern.

Danach folgt dann "make-kpkg clean" und "fakeroot make-kpkg --initrd --revision=Kernelversion kernel_image kernel_headers (Für Kernelversion dann bitte die gewünschte Version angeben z.B. 4.8.6 oder 4.9rc4)

Dann sollte es eigentlich mit gcc6 klappen. Das war mein Art zu patchen wobei wie oben schon geschrieben ein erfahrener Linuxer wohl den Kopf schütteln wird, aber es funktioniert halt.

Gruß
segmentationfault
Zuletzt geändert von segmentationfault am 10.11.2016 20:05:25, insgesamt 1-mal geändert.

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompilieren von kernel

Beitrag von towo » 09.11.2016 17:40:09

Ein erfahrener Linuxer/Debianer schüttelt schon den Kopf wegen make-kpkg, das is schon so lange kaputt, dass man schon gar nicht mehr weiss, wie lange schon.

segmentationfault
Beiträge: 104
Registriert: 13.02.2011 07:24:43

Re: kompilieren von kernel

Beitrag von segmentationfault » 09.11.2016 17:52:51

Hallo towo,

ok, auch das stimmt, aber funktionieren tut es derweil noch und hat bisher keine Probleme bereitet.
Masn trennt sich eben nicht gerne von (noch) funktionierenden Abläufen.

Gruß
segmentationfault

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

Re: kompilieren von kernel

Beitrag von rendegast » 09.11.2016 19:05:22

OT
towo hat geschrieben: wegen make-kpkg, das is schon so lange kaputt,
Soll das auch für Debiankernel-package 13.018 von 2016-02 gelten?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: kompilieren von kernel

Beitrag von towo » 09.11.2016 19:19:07

rendegast hat geschrieben:OT
towo hat geschrieben: wegen make-kpkg, das is schon so lange kaputt,
Soll das auch für Debiankernel-package 13.018 von 2016-02 gelten?
Da is selbiges schon ewig nicht mehr benutze, weil es eben kaputt war (hat die symlinks in /lib/modules/$(uname -r) nicht erzeugt), weiss ich es nicht.
Aber da auch die Debian-Wikis mittlerweile make deb-pkg empfehlen, könnte es schon sein, da dieser Fehler über mehrer Releases weiter geschleppt wurde.

Die Debian Kernel werden ja sowieso nicht darüber gebaut, deshalb hat das Paket eh' keine sonderliche Priorität.

KP97
Beiträge: 3425
Registriert: 01.02.2013 15:07:36

Re: kompilieren von kernel

Beitrag von KP97 » 09.11.2016 20:41:53

@segmentationfault
Ja, so hatte ich das auch in Deinem ersten Beitrag verstanden und werde das beim nächsten Kernel auch probieren.
Da ist es mir egal, ob die Methode schön ist oder nicht.
Ich wollte eher wissen, ob mein Befehl zum Ausführen des Patches richtig ist, aber da Du auch noch keine selbigen eingespielt hast, kannst Du nichts dazu sagen, klar.

@towo, @rendegast
Mir ist bekannt, daß der Befehl make-kpkg von Debian nicht mehr empfohlen wird. Ich hatte allerdings noch nie einen Fehler feststellen können, und solange das so ist, nutze ich das auch weiterhin. Ist halt angenehmer, wenn ich z.B. nur ein einziges Paket erstellen kann, als vier oder fünf, die ich letztlich nicht brauche.
Anders als bei euch beiden, läuft mein Kernel nur auf meinem Desktop, daher muß ich nicht so ins Detail gehen. Für mich reicht das so...
und wenn ich jetzt auch noch wüßte, wie man richtig einen Patch einspielt, wäre ich zufrieden.
Da der Patch aus dem Bugreport ja nicht gezippt ist, habe ich zur Sicherheit von kernel.org auch noch einen passend zur Kernelversion heruntergeladen.
Mit meinem Befehl wurde der Ablauf zwar gestartet, aber es tat sich nichts weiter. Mit htop konnte ich sehen, daß beide CPU's bei 0,0% bzw. 0,7% vor sich hin dümpelten.
Nach einer Weile habe ich das abgebrochen, und zwar ohne eine weitere Meldung zu erhalten. Daher tappe ich etwas im Dunkeln, was ich falsch gemacht haben könnte.

KP97
Beiträge: 3425
Registriert: 01.02.2013 15:07:36

Re: kompilieren von kernel

Beitrag von KP97 » 10.11.2016 17:52:30

@segmentationfault
So, heute ist ein neuer Kernel 4.4.31 erschienen und ich habe es mit Deinem Hinweis zum Makefile probiert.
Das hat tadellos funktioniert!

Nochmals Dank für Deinen Hinweis.

Antworten