Linux-Mainline-Treiber backporten
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Part Number | 64 | |
Number of Parts | 79 | |
Author | ||
License | CC Attribution 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/19579 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
SoftwareDevice driverAxiom of choiceDevice driverCodeHome pageMoment (mathematics)Computer hardwareKernel (computing)Wireless LANCompilerEnterprise architectureXMLUML
02:29
KAM <Programm>Kernel (computing)CodeDevice driverVersion <Informatik>LINUXModule (mathematics)Compact spaceICONValue-added networkLimit (category theory)Data conversionWireless LANHome pageKernel (computing)EthernetLINUXWalkthroughDevice driverVersion <Informatik>Data conversionDevice driverCodeSoftware developerAPIPatch (Unix)Revision controlmakeMenu (computing)Axiom of choiceAutomatonSpeciesConflict (process)StatisticsEckeLecture/Conference
09:57
CodecKernel (computing)CodeLINUXNewton's law of universal gravitationConstraint (mathematics)Module (mathematics)Device driverDevice driverCodeFunction (mathematics)Parameter (computer programming)Constraint (mathematics)SystemdateiComputer fileStatisticsAutomatonAttribute grammarIndexRow (database)Computer hardwareSet (mathematics)Disk read-and-write headKernel (computing)APIGraphical user interfaceAtomic nucleusModule (mathematics)Graphics tabletTape driveWireless LANLecture/Conference
17:25
SoftwareLecture/ConferenceComputer animation
Transcript: German(auto-generated)
00:08
Ja danke für die Ankündigung. Ja irgendwie so ein bisschen Technikprobleme. Ich fange mal an, also es geht da drum. Ja das Problem ist irgendwie man hat irgendwie kriegt man irgendwo hier einen
00:21
alten Kernel und also komme ich gleich noch dazu wieso man das vielleicht hat. Und hat aber irgendwie aktuellen Upstream Kernel gibt es irgendwie für seine Hardware einen coolen Treiber, der hat irgendwie entweder mehr Features die man unbedingt braucht oder unterstützt überhaupt erst die Hardware die man da drin hat. Ja wenn die Hersteller das nicht hinkriegen alles Upstream zu bringen.
00:44
Was ja leider oft der Fall ist. Ja es gibt irgendwie so zwei Situationen wo man einen Backport braucht, also irgendwie was zurückportiertes. Einmal ist das wenn man jetzt also man ist jetzt irgendwie Hardwarehersteller hat so einen tollen Chip
01:02
gebastelt und dann muss man ja auch einen Treiber mit ausliefern damit die Kunden das nutzen können. Dann haben wir aber oft die Kunden kommen ja haben zum Beispiel einen Red Hat Enterprise da laufen da läuft ja normalerweise ein zwei drei Jahre alter Kernel drauf. Da bringt es dem Kunden noch nicht viel wenn das im Mainline drin ist. Oder man hat
01:22
irgendwie so ein System ohne Chip gekriegt mit irgendwie einem alten das auf einem alten Kernel basiert. Da hat man dann auch ein bisschen Probleme und ja also da gibt es denn Kunden die irgendwelche verlangen dass man ja auch uralte Kernel mit unterstützt. Deswegen fangen viele Hersteller an Out of Tree Treiber zu machen also die kann man dann auf der Homepage runterladen.
01:47
Kompilieren wenn man Glück hat funktioniert es auch. Und ja meistens sieht der Code ziemlich komisch aus. Also diese ganzen IFTFs drin damit das dann also wenn man den uralt Kernel hat dann muss dieser Code laufen und beim neuen nicht und andersrum.
02:05
Oft funktioniert es mit einem ganz aktuellen Kernel nicht weil da irgendjemand das noch nicht getestet hat und angepasst hat. Oft benutzen diese auch ja irgendwie die veralteten Interfaces. Also wenn jetzt irgendwie im Kernel jemand auf die Idee kommt ja irgendwie dieses Interface ist nicht mehr so toll wir brauchen irgendwie was Neues.
02:25
Also zum Beispiel sieht man bei den WLAN Treibern noch dass die dieses Wireless Extension Interface benutzen was jetzt sind fünf sechs Jahre auf deprecated ist. Es gibt immer noch viele Treiber also die Out of Tree Treiber die das benutzen. Ja und diese Treiber meistens auch kein Review von irgendwelchen Mainline Entwicklern
02:45
gekriegt sondern vielleicht haben da zwei drei in der Firma das gemacht. Die haben vielleicht ein Review gemacht aber jetzt nicht irgendwie jemand extern ist der sich vielleicht mit diesem System super auskennt. Ja die andere was ich eben schon gesagt hatte dass man man hat jetzt irgendwie so ein tolles System oder Chip gekauft kriegt er noch irgendwie Code dazu.
03:03
Aber da ist dann irgendwie ein drei Jahre alter Kernel mit bei und wenn man irgendwie man kann jetzt versuchen das selber zu portieren auf einen super neuen. Denn gibt es aber das Problem ja da muss man das alles selber machen. Man kriegt auch keine Unterstützung mehr vom Hersteller weil der sagt wir haben doch hier mitgeliefert.
03:21
Sourcecode ist doch dabei funktioniert doch alles super haben wir alles super getestet. Entschuldigung ja und binary blobs die nur mit diesem lustigen alten Kernel laufen das ist denn das Andauer. Wenn man irgendwas ändert die meiner Version dann funktioniert nichts mehr.
03:43
Ja und ja das ist jetzt so ein bisschen die Hersteller dazu zu kriegen dass sie ja upstream entwickeln und trotzdem noch irgendwie Kunden die gerne ja uralt Kernel benutzen wollen zu unterstützen.
04:05
Ja wurde irgendwie vor ich glaube fünf Jahren oder so ein paar Leute angefangen so ein Projekt zu machen das wir aus dem Mainline Kernel die nehmen und zurückportieren das ging mit WLAN Treibern los. Deswegen hieß das auch Combat Wireless als erstes und dann irgendwann Combat Drivers und jetzt Linux Backboards Project.
04:26
Ja und das Ziel ist mehr oder minder automatisch so ein Tar Archiv zu generieren auf Basis irgendwas im aktuellen Linux Kernel drin ist und das denn ja komponiert gegen alles gegen ältere Kernel.
04:42
Ja das geht zur Zeit runter bis 3 0 also das ist eher so eine Grenze die gesetzt wurde. Darunter hatten wir keine Lust mehr das zurückportieren weil das wird dann immer mehr Aufwand und wenn das keinen interessiert ist das auch egal. Es geht aber auch nicht alles bis 3 0 also teilweise wenn das denn zu kompliziert wird und sagt man einfach Nö das geht denn nicht wenn da jemand wirklich nachschreit kann er das
05:02
ja nochmal selber machen und den Pets uns schicken dann können wir das auch weiter zurück unterstützen. Ja zur Zeit sind da so circa 700 Module drin. Ja vor allen Dingen aus dem WLAN Bereich also die meisten WLAN Treiber dieses 815.4 also ZigBee, NFC, Bluetooth, einige Mediatreiber, Webarn und ja einige Ethernet Treiber.
05:32
Ja wenn man jetzt irgendwie noch das benutzen will kann man noch einige eigene Treiber hinzufügen die jetzt noch fehlen oder eigene Subsystem hinzufügen.
05:44
Ja wenn man das jetzt benutzen will man kann jetzt einfach auf unserer Homepage das runterladen das Paket also so ein TAR Archiv runterladen und dann versuchen gegen seinen eigenen Kernel zu kompilieren und dann die Module nachher da draus laden. Wir stellen irgendwie ja Pakete auf Linux Next zur Verfügung dass man das auf der Basis machen kann
06:03
auf den RC Kernel und Stable Kernel also jetzt nicht für jede Version das ist ein bisschen aufwendig. Aber ja immer mal wieder also meistens versuche ich irgendwie für den RC1 das hinzukriegen und dann wenn die erste also wenn die Nuller Version rauskommt ja und alle paar Wochen auf Linux Next was.
06:25
Ja das wird auch von einigen benutzt zum Testing also vor allen Dingen im WLAN Bereich benutzen das viele Hersteller um ja einmal an ihre Kunden das auszuliefern und auch um ihre Treiber dazu testen und ich glaube auch irgendwelche entwickeln damit. Damit sie nicht immer ja den neuesten Kernel benutzen können wo dann irgendwie wir wollen
06:43
ja ein WLAN entwickeln und dann funktioniert irgendwie Grafik nicht das ist denen ziemlich egal. Damit sie sich damit nicht rum ärgern können müssen. Ja das ganze benutzt Make Menu Config also das ist eigentlich das ist das K-Config System aus dem Kernel kopiert so dass man das alles einstellen kann also da werden noch die K-Config Files rauskopiert.
07:03
Alles Automatisch so dass man die gleichen Optionen hat die Mainer also die im normalen Kernel zur Verfügung stehen. Ja es sind noch ein paar Default-Config eingeboden also irgendwie ich möchte gerne diesen Treiber haben oder alle WLAN Treiber damit man sich da zu Tode konfigurieren muss.
07:25
Ja und dann mit Make und Make Installer kann man es installieren das geht auch mit Cross Compiling und Co. Es ist glaube ich auch bei irgendwelchen Stock Android-Images drin und auf irgendwelchen Chromebooks findet man das glaube ich auch.
07:42
Ja dann die andere Seite also wenn man jetzt irgendwie nicht das was also irgendwelche Spezialwünsche hat also irgendwie ein Spezial Gitri oder nur irgendwie seinen eigenen Treiber verteilen möchte und nicht irgendwie so ein riesen Dings dann kann man das ja selber generieren. Das ist auch das was sozusagen bei uns unter Versionsverwaltung liegt also die eigenen die
08:03
Treiber selber die werden immer nur wenn so ein Tar generiert wird aus dem Kernel kopiert. Und sozusagen nur der Code der benötigt wird um diese Sachen zu erstellen und nicht die Treiber selber so dass es da nicht irgendwie ja dass man das halbwegs automatisch machen kann.
08:22
Das Problem ist nur dass wir ja wenn man einen Patch hat die erkleidet nicht immer und also ein Kram oder wieder eine neue API eingeführt wurde. Ja die Ziele davon waren sind so dass es erleichtern die Treiber aus einem Mainline Kernel also was da drin ist mit alten Körnen zu benutzen.
08:49
Und ein Ziel damit das Verwalten nicht so aufwendig ist dass man möglichst wenig Änderungen die sich wirklich auf einen Treiber beziehen hat. Sondern ja möglichst versucht da jetzt irgendwie die API sich irgendwo geändert hat was ja im
09:04
Linux Kernel öfter vorkommt dass man versucht irgendwie den neuen Aufruf auf den alten zu mappen.
09:30
Ja die Umsetzung das sind so ein paar Schritte also wenn man so einen Tag in der Reaktion oder so ein paar Schritte hat man so ein paar Schritte in der Reaktion.
09:51
Ja hier sieht man dass diese StructUSB-Driver hat irgendwie so ein Attribut mal gekriegt und
10:00
das gibt es irgendwie wenn das kleiner als unter drei Fünf ist gibt es das nicht. Und ich glaube dieses Attribut hängt so bei bestimmt 50 oder mehr. Anstatt das jetzt an 50 Stellen mit einem Pads zu ändern gibt es dann so einen Semantic -Pads der also hier wird richtig Pattern-Matching gemacht es wird überall nach dieser StructUSB-Driver gesucht.
10:23
Das wird größtenteils ignoriert. Und dann dieser Code da drum eingefügt. Ja damit könnte man denn vorher hatten wir glaube ich irgendwie einen so einen Pad der 20 Dateien angefasst hat jetzt haben wir diesen hier und der funktioniert immer.
10:41
Und ja sonst das wird auch oft im Kern benutzt um also wenn eine API geändert wird zum Beispiel irgendeine Funktion kriegt einen zusätzlichen Parameter. Dann wird die wenn solche semantischen Patches auch angewendet um die ganzen alten
11:00
sozusagen Aufrufer entsprechend zu ändern wenn es da irgendwie so einen generischen Aufruf gibt. Ja noch irgendwie normale Patches für irgendwie obskure Sachen die jetzt irgendwie nur einen Treiber betreffen und vor allen Dingen Header-Dateien. Also das ist ja wenn jetzt irgendwie zum Beispiel der neueste Kern hat irgendwie eine bestimmte Header
11:21
-Datei irgendwie eine Funktion im Header die jetzt irgendwie ja die auf alten noch nicht da ist. Und ja man hat irgendwann jetzt mal auf die Idee gekommen ja das könnte man ja Auslager machen ja irgendwie viele wird ja in vielen Stellen gemacht. Ja das wird dann auch mit dazu gepackt und das wird dann extra ein Backbots-Project mit verwaltet.
11:42
So dass dann ja ein bestimmter Teil dahindringt. Ja da benutzen wir dieses interessante include next. Damit kann man zum Beispiel also wir bauen die include-Hierarchie so um dass unsere includes vorne hängen. Also der würde zuerst in diesem Fall unsere linuxkernel.h wenn man jetzt linuxkernel.h inkludiert würde er erst diese Datei nehmen.
12:10
Da steht als erstes drin guck einfach weiter im include pass und hol dir da die inkludiere denn da die kernel.h die wird da irgendwo im original kernels rausfinden.
12:27
Und dann kann man sozusagen was hinzufügen was jetzt ja eigenen Code noch dazu fügen. So können wir zum Beispiel ja Header Files erweitern. Das ist glaube ich eine new extension dieses include next aber für sowas ganz praktisch.
12:42
Ja es gibt noch so ein bisschen so ein C-Layer zum zurückportieren wo dann irgendwie ja Funktionen jetzt irgendwie neu hinzugekommen werden und von vielen benutzt werden denn auch noch drin sind. Ja das hatten wir eben schon.
13:00
Die Einschränkungen sind das ganze funktioniert nur mit Modulen. Also wir können jetzt kein irgendwie was direkt im Code drin ist austauschen. Es gibt so ein paar Leute die versucht haben das Backbots-Project in den Kernel reinzubauen. Wo war es glaube ich zu Anfang mal in dem Chrome OS drin und das funktioniert glaube
13:23
ich jetzt auch so halbwegs aber wenn man es nicht unbedingt muss würde ich es nicht empfehlen. Und ja wenn man zum Beispiel ein Subsystem ausgetauscht hat also zum Beispiel das wireless Subsystem ausgetauscht hat dann muss man auch alle Treiber also dann kann man nicht die beiden Subsysteme gleichzeitig laden.
13:42
Ja dann sind dann halt beide würden dann die gleichen Symbole exportieren und dann würden würde zu lustigen Problemen führen. Also wenn man ein Subsystem hat muss man dann alles aus dem Backbots-Layer nehmen. Da gab es glaube ich auch schon mal welche die versucht hatten alle exportierten Symbole umzubenennen. Aber ja so richtig funktioniert das glaube ich ganz zufällig hat es auch nicht funktioniert.
14:05
Gibt es denn auch noch wieder das Problem wenn man ein Proc-System-Dateien hat und die würden dann auch wieder kollidieren. Also es gibt noch viele Stellen wo irgendwas kollidieren könnte. Deswegen ist eigentlich wenn man das aus dem Backbots-Ding nimmt dann kann man nicht das gleiche auch noch aus dem Mainline Kernel gegen den man kompiliert hat benutzen.
14:22
Ja also eigentlich wollte ich so ein bisschen zeigen dass wenn man irgendwie Code hat dass der ja in den Mainline kommt. Also am besten ist wenn man das alles gar nicht braucht. Wenn alles im Mainline ist also wenn ich die super neue Hardware kriege. Dass ich dann den aktuellsten Kernel runterladen kann kompilieren und es geht alles. So das ist das beste was denn irgendwann kommen könnte.
14:42
Sind wir leider noch weit von entfernt. Also spätestens dann wenn man so ein komisches System ohne Chips hat und so weiter. Ja deswegen wenn man jetzt soll man trotzdem also nicht wenn man jetzt nur irgendwie die Kunden an Forderungen sind. Ich hätte gerne irgendwie Unterstützung für den 310er sagen ja dann machen wir jetzt einen Treiber für den 310er und alles andere ignorieren wir.
15:06
Sondern trotzdem Upstream bringen da kommt bestimmt noch jemand der das mal auch für den aktuellen braucht. Und dann kann man ja das Backbots Projekt benutzen um das dann trotzdem für den 310er zur Verfügung zu stellen.
15:21
Ja das war es eigentlich auch schon ziemlich ich glaube im Stream ist jetzt nichts passiert. Ja habt ihr Fragen.
15:49
Das hängt bestimmt also erstmal hängt es bestimmt von der Situation ab. Was da jetzt gerade so alles passiert ist. Ja ich glaube das ist alles relativ ähnlich weil du hast ja meistens bleiben die allen Interfaces da.
16:03
Also du hast bei beiden also ich meine du hast einen ähnlichen Aufwand den du betreiben musst. Also in mehr oder weniger hast du es ja auch wenn du irgendwie einen Treiber da drin hast und irgendwann auf die Idee kommt eine API zu ändern oder so. Dann werden noch alle die die benutzen mit geändert oder die alte API wird noch da gelassen.
16:21
Also ich meine der Aufwand ist relativ ähnlich. Noch was.
16:41
Das läuft relativ automatisch also hat denn nur noch die. Also auf dem 3 ich glaube auf dem 3.0er laufen von den 700 Modulen auch nur irgendwie 100 oder so. Also größtenteils die WLAN Sachen laufen dann drauf bei dem Rest eigentlich nicht. Also meistens ist dann ja gucken das sieht kaum zu kompliziert das habe ich keine Lust zu denn.
17:03
Also ausschalten auf dem. Noch eine Frage. War es das.