Was bedeutet Linux Kernel
Der Linux-Kernel ist die unterste Ebene der Software, die auf einem Linux-System läuft. Er ist für die Verwaltung der Hardware (mehr dazu Hardware Schulung) , die Ausführung von Benutzerprogrammen und die Aufrechterhaltung der allgemeinen Sicherheit und Integrität des gesamten Systems zuständig und hat nach seiner ersten Veröffentlichung durch Linus Torvalds im Jahr 1991 die Entwicklung von Linux (siehe auch Linux Schulung) als Ganzes in Gang gebracht. Der Kernel ist ein relativ kleiner Teil der Software auf einem vollständigen Linux-System (viele andere große Komponenten stammen aus dem GNU-Projekt, den GNOME- und KDE-Desktop-Projekten, dem X.org-Projekt und vielen anderen Quellen), aber er ist der Kern, der bestimmt, wie gut das System funktioniert, und ist das Stück, das wirklich einzigartig für Linux ist.Der Linux-Kernel ist aus mehreren Gründen ein interessantes Projekt zum Studium. Er ist eine der größten Einzelkomponenten auf fast jedem Linux-System. Er weist auch einen der schnellsten Entwicklungsprozesse auf und involviert mehr Entwickler als jedes andere Open-Source-Projekt. Seit 2005 ist die Entwicklungsgeschichte des Kernels auch recht gut dokumentiert.
Aktuelle Arbeiten am Linux Kernel
Neue Treiber
Natürlich haben die Kernel-Entwickler im vergangenen Jahr auch Hunderte von neuen Treibern und Tausende von Fehlerkorrekturen hinzugefügt.
Abhärtung
Die Arbeit an der Abhärtung des Kernels gegen Angriffe wird mit dem Hinzufügen mehrerer neuer Technologien fortgesetzt, von denen viele ihren Ursprung in den Patch-Sets grsecurity und PaX haben. Zu den neuen Härtungsfunktionen gehören virtuell gemappte Kernel-Stacks, die Verwendung des GCC-Plugin-Mechanismus für die Randomisierung des Struktur-Layouts, der gehärtete Usercopy-Mechanismus und ein neuer Reference-Count-Mechanismus, der Reference-Count-Überläufe erkennt und entschärft. Jede dieser Funktionen macht den Kernel widerstandsfähiger gegen Angriffe.
Testen
Die Kernel-Testinfrastruktur wird weiter verbessert. Allein das "Zero-Day-Build-and-Boot-Robot"-System fand in diesem Zeitraum 223 Fehler (die alle behoben wurden). Das In-Kernel-Selbsttest-Framework entwickelt sich weiter und wird eines Tages eine umfassende Testsuite für den Kernel sein.
Rekordzahlen
Der 4.9-Entwicklungszyklus war der geschäftigste in der Geschichte des Kernels, was die Anzahl der zusammengeführten Änderungen angeht. 4.12 hingegen stellte einen neuen Rekord auf, sowohl bei der Anzahl der beteiligten Entwickler als auch bei der Anzahl der erstmaligen Mitwirkenden. Nach all diesen Jahren wächst die Gemeinschaft der Kernel-Entwickler immer noch, aber darüber hinaus geht der Prozess der Entwicklung und Verbesserung des Kernels in hohem Tempo weiter. Der Rest dieses Berichts wird sich mit der Gesundheit des Entwicklungsprozesses beschäftigen und damit, woher der ganze Code kam
Entwicklungsmodell
Die Entwicklung des Linux-Kernels erfolgt nach einem lockeren, zeitbasierten Veröffentlichungsmodell, wobei alle neun oder zehn Wochen eine neue Hauptversion des Kernels erscheint. Dieses Modell, das 2005 erstmals formalisiert wurde, bringt neue Funktionen mit einem Minimum an Verzögerung in den Mainline-Kernel und an die Benutzer. Das wiederum beschleunigt das Entwicklungstempo und minimiert die Anzahl der externen Änderungen, die Distributoren vornehmen müssen. Das Ergebnis ist, dass die meisten Distributoren-Kernel relativ wenige distributionsspezifische Änderungen enthalten; dies führt zu höherer Qualität und weniger Unterschieden zwischen den Distributionen.Nach jeder Mainline-Veröffentlichung nimmt das "Stable- Team (mehr dazu Team Schulungen) " des Kernels (derzeit unter der Leitung von Greg Kroah-Hartman) die kurzfristige Wartung auf und wendet wichtige Korrekturen an, sobald sie entwickelt werden. Der Stable-Prozess stellt sicher, dass wichtige Korrekturen den Distributoren und Benutzern zur Verfügung gestellt werden und dass sie auch in zukünftige Mainline-Releases einfließen. In den letzten Jahren haben wir eine zunehmende Anzahl von kooperativen Bemühungen der Industrie gesehen, bestimmte Kernel für Zeiträume von einem Jahr oder mehr zu pflegen.
Häufigkeit der Freigabe
Der gewünschte Veröffentlichungszeitraum für eine Hauptkernelversion beträgt nach allgemeinem Konsens acht bis zwölf Wochen. Ein viel kürzerer Zeitraum würde den Testern nicht Testern nicht genug Zeit geben, um Probleme mit neuen Kerneln zu finden, während ein längerer Zeitraum es erlauben würde, dass sich zu viel Arbeit zwischen den Veröffentlichungen anhäuft. Im Laufe der Jahre hat sich die Länge des Entwicklungszyklus bei neun oder zehn Wochen eingependelt, was die Kernel-Veröffentlichungen recht vorhersehbar macht. Ob ein Entwicklungszyklus neun oder zehn Wochen benötigt, hängt zum Teil davon ab, wie schnell sich der Kernel stabilisiert; manchmal wird eine zusätzliche Woche benötigt, um einige letzte Probleme zu beseitigen. In anderen Fällen, wie bei 4.10, wird die zusätzliche Woche hinzugefügt, um zu vermeiden, dass ein neues Merge-Fenster zu einer ungünstigen Zeit geöffnet wird (wenn wichtige Entwickler auf Reisen sind, zum Beispiel).Der Trend zu kürzeren, vorhersehbareren Veröffentlichungszyklen ist mit ziemlicher Sicherheit das Ergebnis einer verbesserten Disziplin sowohl vor als auch während des Entwicklungszyklus: qualitativ hochwertigere Patches werden zusammengeführt, und die Gemeinschaft macht einen besseren Job, um Regressionen schnell zu beheben. Der vermehrte Einsatz von automatischen Testwerkzeugen hilft der Gemeinschaft auch dabei, Probleme schneller zu finden (und zu beheben).
Änderungsrate
Wenn Entwickler ihre Arbeit für die Einreichung beim Linux-Kernel vorbereiten, zerlegen sie ihre Änderungen in kleine, individuelle Einheiten, die "Patches" genannt werden. Diese Patches verändern in der Regel nur eine Sache am Quellcode; sie bauen aufeinander auf und modifizieren den Quellcode durch Ändern, Hinzufügen oder Entfernen von Codezeilen. Jeder Patch sollte, wenn er angewendet wird, einen Kernel ergeben, der immer noch korrekt gebaut wird und funktioniert. Diese Disziplin zwingt die Kernel-Entwickler dazu, ihre Änderungen in kleine, logische Teile zu zerlegen; als Ergebnis kann jede Änderung auf Code-Qualität und Korrektheit überprüft werden. Ein weiteres Ergebnis ist, dass die Anzahl der einzelnen Änderungen, die in jede Kernel-Veröffentlichung einfließen, groß ist und zunimmt, wie in der Tabelle links zu sehen ist.Es war ein äußerst arbeitsreiches Jahr für die Kernel-Entwicklungsgemeinschaft, mit insgesamt fast 83.000 Patches, die zusammengeführt wurden. Der 4.9-Entwicklungszyklus war der geschäftigste in der Geschichte des Kernel-Projekts, was zum Teil auf das Einbinden der Greybus-Infrastruktur zurückzuführen ist. Wenn man die Zeit berücksichtigt, die für jede Kernel-Veröffentlichung benötigt wird, kann man die Anzahl der in den Kernel aufgenommenen Änderungen pro Stunde ermitteln. Über den gesamten Zeitraum von 406 Tagen, der von diesem Bericht abgedeckt wird, hat die Gemeinschaft Änderungen mit einer durchschnittlichen Rate von 8,5 Patches pro Stunde integriert - ein deutlicher Anstieg gegenüber den 7,8 Patches pro Stunde, die im vorherigen Bericht festgestellt wurden. Die 4.9 und 4.12 Entwicklungszyklen wiesen die höchsten Patch-Raten auf, die jemals in der Geschichte des Kernel-Projekts gesehen wurden. Es ist erwähnenswert, dass die obigen Zahlen die Gesamtaktivität unterbewerten; die meisten Patches durchlaufen eine Reihe von Revisionen, bevor sie in den Mainline-Kernel aufgenommen werden, und viele werden überhaupt nicht angenommen.
Man könnte sich fragen, warum Linux-Kernel-Versionen Hunderte oder sogar Tausende von Korrekturen benötigen, nachdem sie für "fertig" erklärt wurden. Es gibt viele Probleme, die an bestimmte Hardware oder Arbeitslasten gebunden sind, auf die die Entwickler keinen Zugriff haben. Es wird also immer Probleme geben, die auftauchen, sobald ein Kernel zur Verfügung gestellt wird und breitere Tests erhält. Trotz des Fortschritts, der beim Testen des Kernels gemacht wurde, wird die Gemeinschaft immer auf die Benutzer angewiesen sein, um Tests durchzuführen und Probleme zu melden.Letztendlich verwenden die meisten Linux-Benutzer einen Kernel, der auf einem der Stable-Updates basiert; alles andere würde bedeuten, dass sie eine große Anzahl von wichtigen Korrekturen verpassen. Die Stable-Update-Reihe beweist weiterhin ihren Wert, indem sie es ermöglicht, die letzten Korrekturen an veröffentlichten Kerneln vorzunehmen und gleichzeitig die Mainline-Entwicklung voranzutreiben.
Schlussbemerkung
Der Linux-Kernel ist eines der größten und erfolgreichsten Open-Source-Projekte, die jemals entstanden sind. Die enorme Änderungsrate und die Anzahl der einzelnen Mitwirkenden zeigen, dass es eine lebendige und aktive Gemeinschaft gibt, die ständig die Weiterentwicklung des Kernels als Reaktion auf die Anzahl der verschiedenen Umgebungen, in denen er verwendet wird, bewirkt. Diese Änderungsrate nimmt weiter zu, ebenso wie die Anzahl der Entwickler und Firmen, die an dem Prozess beteiligt sind; bisher hat der Entwicklungsprozess bewiesen, dass er in der Lage ist, ohne Probleme auf höhere Geschwindigkeiten zu skalieren, und es gibt genug Firmen, die sich beteiligen, um den Großteil der Entwicklungsarbeit zu finanzieren, auch wenn viele Firmen, die von der Mitarbeit an Linux profitieren könnten, sich bisher dagegen entschieden haben. Mit der aktuellen Expansion von Linux in den Server-, Desktop-, Mobil- und Embedded-Märkten ist es vernünftig zu erwarten, dass die Anzahl der beitragenden Unternehmen - und einzelner Entwickler - weiter steigen wird. Die Kernel-Entwicklungsgemeinschaft heißt neue Entwickler willkommen; Einzelpersonen oder Unternehmen, die daran interessiert sind, einen Beitrag zum Linux-Kernel zu leisten, werden ermutigt, sich unter "How to Participate in the Linux Community" zu informieren oder die Autoren dieses Papiers oder die Linux Foundation zu kontaktieren.
Aktuelle Arbeiten am Linux Kernel
Neue Treiber
Natürlich haben die Kernel-Entwickler im vergangenen Jahr auch Hunderte von neuen Treibern und Tausende von Fehlerkorrekturen hinzugefügt.
Abhärtung
Die Arbeit an der Abhärtung des Kernels gegen Angriffe wird mit dem Hinzufügen mehrerer neuer Technologien fortgesetzt, von denen viele ihren Ursprung in den Patch-Sets grsecurity und PaX haben. Zu den neuen Härtungsfunktionen gehören virtuell gemappte Kernel-Stacks, die Verwendung des GCC-Plugin-Mechanismus für die Randomisierung des Struktur-Layouts, der gehärtete Usercopy-Mechanismus und ein neuer Reference-Count-Mechanismus, der Reference-Count-Überläufe erkennt und entschärft. Jede dieser Funktionen macht den Kernel widerstandsfähiger gegen Angriffe.
Testen
Die Kernel-Testinfrastruktur wird weiter verbessert. Allein das "Zero-Day-Build-and-Boot-Robot"-System fand in diesem Zeitraum 223 Fehler (die alle behoben wurden). Das In-Kernel-Selbsttest-Framework entwickelt sich weiter und wird eines Tages eine umfassende Testsuite für den Kernel sein.
Rekordzahlen
Der 4.9-Entwicklungszyklus war der geschäftigste in der Geschichte des Kernels, was die Anzahl der zusammengeführten Änderungen angeht. 4.12 hingegen stellte einen neuen Rekord auf, sowohl bei der Anzahl der beteiligten Entwickler als auch bei der Anzahl der erstmaligen Mitwirkenden. Nach all diesen Jahren wächst die Gemeinschaft der Kernel-Entwickler immer noch, aber darüber hinaus geht der Prozess der Entwicklung und Verbesserung des Kernels in hohem Tempo weiter. Der Rest dieses Berichts wird sich mit der Gesundheit des Entwicklungsprozesses beschäftigen und damit, woher der ganze Code kam
Entwicklungsmodell
Die Entwicklung des Linux-Kernels erfolgt nach einem lockeren, zeitbasierten Veröffentlichungsmodell, wobei alle neun oder zehn Wochen eine neue Hauptversion des Kernels erscheint. Dieses Modell, das 2005 erstmals formalisiert wurde, bringt neue Funktionen mit einem Minimum an Verzögerung in den Mainline-Kernel und an die Benutzer. Das wiederum beschleunigt das Entwicklungstempo und minimiert die Anzahl der externen Änderungen, die Distributoren vornehmen müssen. Das Ergebnis ist, dass die meisten Distributoren-Kernel relativ wenige distributionsspezifische Änderungen enthalten; dies führt zu höherer Qualität und weniger Unterschieden zwischen den Distributionen.Nach jeder Mainline-Veröffentlichung nimmt das "Stable- Team (mehr dazu Team Schulungen) " des Kernels (derzeit unter der Leitung von Greg Kroah-Hartman) die kurzfristige Wartung auf und wendet wichtige Korrekturen an, sobald sie entwickelt werden. Der Stable-Prozess stellt sicher, dass wichtige Korrekturen den Distributoren und Benutzern zur Verfügung gestellt werden und dass sie auch in zukünftige Mainline-Releases einfließen. In den letzten Jahren haben wir eine zunehmende Anzahl von kooperativen Bemühungen der Industrie gesehen, bestimmte Kernel für Zeiträume von einem Jahr oder mehr zu pflegen.
Häufigkeit der Freigabe
Der gewünschte Veröffentlichungszeitraum für eine Hauptkernelversion beträgt nach allgemeinem Konsens acht bis zwölf Wochen. Ein viel kürzerer Zeitraum würde den Testern nicht Testern nicht genug Zeit geben, um Probleme mit neuen Kerneln zu finden, während ein längerer Zeitraum es erlauben würde, dass sich zu viel Arbeit zwischen den Veröffentlichungen anhäuft. Im Laufe der Jahre hat sich die Länge des Entwicklungszyklus bei neun oder zehn Wochen eingependelt, was die Kernel-Veröffentlichungen recht vorhersehbar macht. Ob ein Entwicklungszyklus neun oder zehn Wochen benötigt, hängt zum Teil davon ab, wie schnell sich der Kernel stabilisiert; manchmal wird eine zusätzliche Woche benötigt, um einige letzte Probleme zu beseitigen. In anderen Fällen, wie bei 4.10, wird die zusätzliche Woche hinzugefügt, um zu vermeiden, dass ein neues Merge-Fenster zu einer ungünstigen Zeit geöffnet wird (wenn wichtige Entwickler auf Reisen sind, zum Beispiel).Der Trend zu kürzeren, vorhersehbareren Veröffentlichungszyklen ist mit ziemlicher Sicherheit das Ergebnis einer verbesserten Disziplin sowohl vor als auch während des Entwicklungszyklus: qualitativ hochwertigere Patches werden zusammengeführt, und die Gemeinschaft macht einen besseren Job, um Regressionen schnell zu beheben. Der vermehrte Einsatz von automatischen Testwerkzeugen hilft der Gemeinschaft auch dabei, Probleme schneller zu finden (und zu beheben).
Änderungsrate
Wenn Entwickler ihre Arbeit für die Einreichung beim Linux-Kernel vorbereiten, zerlegen sie ihre Änderungen in kleine, individuelle Einheiten, die "Patches" genannt werden. Diese Patches verändern in der Regel nur eine Sache am Quellcode; sie bauen aufeinander auf und modifizieren den Quellcode durch Ändern, Hinzufügen oder Entfernen von Codezeilen. Jeder Patch sollte, wenn er angewendet wird, einen Kernel ergeben, der immer noch korrekt gebaut wird und funktioniert. Diese Disziplin zwingt die Kernel-Entwickler dazu, ihre Änderungen in kleine, logische Teile zu zerlegen; als Ergebnis kann jede Änderung auf Code-Qualität und Korrektheit überprüft werden. Ein weiteres Ergebnis ist, dass die Anzahl der einzelnen Änderungen, die in jede Kernel-Veröffentlichung einfließen, groß ist und zunimmt, wie in der Tabelle links zu sehen ist.Es war ein äußerst arbeitsreiches Jahr für die Kernel-Entwicklungsgemeinschaft, mit insgesamt fast 83.000 Patches, die zusammengeführt wurden. Der 4.9-Entwicklungszyklus war der geschäftigste in der Geschichte des Kernel-Projekts, was zum Teil auf das Einbinden der Greybus-Infrastruktur zurückzuführen ist. Wenn man die Zeit berücksichtigt, die für jede Kernel-Veröffentlichung benötigt wird, kann man die Anzahl der in den Kernel aufgenommenen Änderungen pro Stunde ermitteln. Über den gesamten Zeitraum von 406 Tagen, der von diesem Bericht abgedeckt wird, hat die Gemeinschaft Änderungen mit einer durchschnittlichen Rate von 8,5 Patches pro Stunde integriert - ein deutlicher Anstieg gegenüber den 7,8 Patches pro Stunde, die im vorherigen Bericht festgestellt wurden. Die 4.9 und 4.12 Entwicklungszyklen wiesen die höchsten Patch-Raten auf, die jemals in der Geschichte des Kernel-Projekts gesehen wurden. Es ist erwähnenswert, dass die obigen Zahlen die Gesamtaktivität unterbewerten; die meisten Patches durchlaufen eine Reihe von Revisionen, bevor sie in den Mainline-Kernel aufgenommen werden, und viele werden überhaupt nicht angenommen.
Man könnte sich fragen, warum Linux-Kernel-Versionen Hunderte oder sogar Tausende von Korrekturen benötigen, nachdem sie für "fertig" erklärt wurden. Es gibt viele Probleme, die an bestimmte Hardware oder Arbeitslasten gebunden sind, auf die die Entwickler keinen Zugriff haben. Es wird also immer Probleme geben, die auftauchen, sobald ein Kernel zur Verfügung gestellt wird und breitere Tests erhält. Trotz des Fortschritts, der beim Testen des Kernels gemacht wurde, wird die Gemeinschaft immer auf die Benutzer angewiesen sein, um Tests durchzuführen und Probleme zu melden.Letztendlich verwenden die meisten Linux-Benutzer einen Kernel, der auf einem der Stable-Updates basiert; alles andere würde bedeuten, dass sie eine große Anzahl von wichtigen Korrekturen verpassen. Die Stable-Update-Reihe beweist weiterhin ihren Wert, indem sie es ermöglicht, die letzten Korrekturen an veröffentlichten Kerneln vorzunehmen und gleichzeitig die Mainline-Entwicklung voranzutreiben.
Schlussbemerkung
Der Linux-Kernel ist eines der größten und erfolgreichsten Open-Source-Projekte, die jemals entstanden sind. Die enorme Änderungsrate und die Anzahl der einzelnen Mitwirkenden zeigen, dass es eine lebendige und aktive Gemeinschaft gibt, die ständig die Weiterentwicklung des Kernels als Reaktion auf die Anzahl der verschiedenen Umgebungen, in denen er verwendet wird, bewirkt. Diese Änderungsrate nimmt weiter zu, ebenso wie die Anzahl der Entwickler und Firmen, die an dem Prozess beteiligt sind; bisher hat der Entwicklungsprozess bewiesen, dass er in der Lage ist, ohne Probleme auf höhere Geschwindigkeiten zu skalieren, und es gibt genug Firmen, die sich beteiligen, um den Großteil der Entwicklungsarbeit zu finanzieren, auch wenn viele Firmen, die von der Mitarbeit an Linux profitieren könnten, sich bisher dagegen entschieden haben. Mit der aktuellen Expansion von Linux in den Server-, Desktop-, Mobil- und Embedded-Märkten ist es vernünftig zu erwarten, dass die Anzahl der beitragenden Unternehmen - und einzelner Entwickler - weiter steigen wird. Die Kernel-Entwicklungsgemeinschaft heißt neue Entwickler willkommen; Einzelpersonen oder Unternehmen, die daran interessiert sind, einen Beitrag zum Linux-Kernel zu leisten, werden ermutigt, sich unter "How to Participate in the Linux Community" zu informieren oder die Autoren dieses Papiers oder die Linux Foundation zu kontaktieren.