Linux kernel

Linux Kernel
Tux
Smoking das Pinguin, Maskottchen von Linux[1]
Linux 3.0.0 boot.png
Linux -Kernel 3.0.0 Booting
Originalautor (en) Linus Torvalds
Entwickler (en) Community -Mitwirkende
Linus Torvalds
Erstveröffentlichung 0,02 (5. Oktober 1991; vor 30 Jahren)
Stabile Version
5.19[2] Edit this on Wikidata / 31. Juli 2022
Vorschau -Version
5.19-RC8[3] Edit this on Wikidata / 24. Juli 2022
Repository
Geschrieben in C (C11 seit 5.18),,[4]
Montagesprache
Verfügbar in Englisch
Lizenz Nur GPL-2.0 mit Linux-syscall-note.[5][6][7][a]
Webseite Kernel.org

Das Linux Kernel ist ein frei und offen,[11] monolithisch, modular, Multitasking, Unix-artig Betriebssystem Kernel. Es wurde ursprünglich 1991 von verfasst von Linus Torvalds für ihn i386-Basierter PC, und es wurde bald als Kernel für die übernommen GNU -Betriebssystem, was geschrieben wurde, um a zu sein kostenlos (libre) Ersatz für Unix.

Linux wird unter dem bereitgestellt GNU Allgemeine öffentliche Lizenzversion Version 2 nur, aber es enthält Dateien unter anderen Kompatible Lizenzen.[10]

Seit Ende der neunziger Jahre wurde es als Teil einer großen Anzahl von Aufnahme aufgenommen Betriebssystemverteilungenviele davon werden allgemein auch genannt Linux.

Linux wird in einer Vielzahl von Computersystemen bereitgestellt, wie z. Eingebettete Geräte, mobile Geräte (einschließlich der Verwendung in der Android Betriebssystem), persönliche Computer, Server, Mainframes, und Supercomputer.[12] Es kann auf bestimmte Architekturen und auf mehrere Verwendungsszenarien zugeschnitten werden, indem es eine Familie einfacher Befehle unter Verwendung einfacher Befehle (dh ohne die Notwendigkeit des manuellen Bearbeitens des Quellcode vor der Zusammenstellung);[13][14][15] Privilegierte Benutzer können auch zur Laufzeit Kernelparameter fein abteilen.[16][17][18] Der größte Teil des Linux -Kernelcodes wird unter Verwendung der GNU -Erweiterungen von geschrieben GCC[19][20] zum Standard C Programmiersprache und mit der Verwendung von architekturspezifischen Anweisungen (IST EIN) in begrenzten Teilen des Kernels. Dies erzeugt eine hoch optimierte ausführbare Datei (vmlinux) in Bezug auf die Nutzung von Speicherraum und Aufgabenausführungszeiten.[21]

Alltägliche Entwicklungsdiskussionen finden auf dem Linux -Kernel -Mailingliste (LKML). Änderungen werden mit dem Versionskontrollsystem verfolgt Git, das ursprünglich von Torvalds als kostenlose Software -Austausch verfasst wurde Bitkeeper.

Geschichte

Linus Torvalds bei der Linuxcon Europe 2014 in Düsseldorf

Im April 1991, Linus Torvaldszu der Zeit ein 21-Jähriger Informatik Student am Universität von Helsinki, Finnlandbegann, an einigen einfachen Ideen für ein von UNIX inspirierter Betriebssystem für einen PC zu arbeiten.[22] Er begann mit einem Aufgabenschalter in Intel 80386 Assemblersprache und ein Terminalfahrer.[22] Am 25. August 1991 verzeichnete Torvalds Folgendes an Folgendes comp.os.minix, a Newsgroup an Usenet:[23]

Ich mache ein (kostenloses) Betriebssystem (nur ein Hobby, wird für 386 (486) nicht groß und professionell sein) BEI Klone. Dies ist seit April gebraut und beginnt sich fertig zu machen. Ich möchte, dass Feedback zu Dingen, die Menschen in Minix mögen/nicht mögen, da mein Betriebssystem es etwas ähnelt (das gleiche physische Layout des Dateisystems (aus praktischen Gründen) unter anderem). Ich habe derzeit portiert verprügeln(1.08) und GCC(1.40) und die Dinge scheinen zu funktionieren. Dies impliziert, dass ich innerhalb weniger Monate etwas Praktisches bekomme [...] ja - es ist frei von jedem Minix -Code und hat einen Multi -Thread -FS. Es ist nicht protabel [sic] (verwendet 386 Task-Switching usw.) und es wird wahrscheinlich nie etwas anderes als Harddisks unterstützen, da das alles ist, was ich habe :-(.

Am 17. September 1991 erstellte Torvalds Version 0.01 von Linux und stellte den "ftp.funet.fi" - FTP -Server der finnischen Universität und des Forschungsnetzwerks (FTP -Server "vor (Funet). Es war nicht einmal ausführbar, da sein Code noch Minix für die Zusammenstellung und das Spiel benötigte.[24]

Am 5. Oktober 1991 kündigte Torvalds die erste "offizielle" Version von Linux, Version 0.02, bekannt.[25] Zu diesem Zeitpunkt konnte Linux Bash, GCC und einige andere GNU -Dienstprogramme ausführen:[25][24]

[Wie] ich vor einem Monat erwähnt habe, arbeite ich an einer kostenlosen Version eines Minix-Lookalike für AT-386-Computer. Es hat endlich die Stufe erreicht, in der es überhaupt verwendbar ist (obwohl es möglicherweise nicht von dem, was Sie wollen), und ich bin bereit, die Quellen für eine breitere Verteilung herauszubringen. Es ist nur Version 0.02 ... aber ich habe Bash, GCC, Gnu-Make, Gnu-Sed, Komprimierung usw. erfolgreich ausgeführt.

Danach gewann Linux trotz der begrenzten Funktionalität der frühen Versionen Entwickler und Benutzer schnell. Viele Menschen haben Code zum Projekt beigesteuert, einschließlich einiger Entwickler aus dem Minix Gemeinschaft. Zu der Zeit die GNU -Projekt hatte viele der Komponenten erstellt, die für den kostenlosen Unix -Ersatz erforderlich sind, die GNU -Betriebssystem, aber sein eigener Kernel, Gnu Hurd, war unvollständig. Aus diesem Grund nahm es bald auch den Linux -Kernel an.[26] Das Berkeley Software Distribution hatte sich noch nicht von sich befreit rechtliche Belastungen und war nicht im Raum um einen kostenlosen OS -Kernel.

Torvalds legte der Version 0 dem Kernel zu, um anzuzeigen, dass es hauptsächlich zum Testen war und nicht für den produktiven Gebrauch bestimmt war.[27] Version 0.11, veröffentlicht im Dezember 1991, war die erste selbst veranstaltet Linux, denn es könnte von einem Computer kompiliert werden, der denselben Kernel ausführt.

Als Torvalds im Februar 1992 Version 0.12 veröffentlichte, übernahm er die GNU Allgemeine öffentliche Lizenz Version 2 (GPLV2) über seine frühere selbst hergestellte Lizenz, die keine kommerzielle Umverteilung erlaubt hatte.[28] Im Kontrast zu Unix, alle Quelldaten von Linux sind frei verfügbar, einschließlich Gerätetreiber.[29] Der anfängliche Erfolg von Linux wurde von Programmierern und Tester auf der ganzen Welt angetrieben. Mit Unterstützung der Posix APIs durch die LIBC, dass, ob benötigt, als Einstiegspunkt zum Kernel -Adressraum fungiert, Linux Software und Anwendungen ausführen kann, die für UNIX entwickelt wurden.[30]

Der Linux -Kernel unterstützt verschiedene Hardware -Architekturen und bietet eine gemeinsame Plattform für Software, einschließlich proprietäre Software.

Am 19. Januar 1992, dem ersten Beitrag der neuen Newsgroup Alt.os.linux wurde übermittelt.[31] Am 31. März 1992 wurde die Newsgroup umbenannt comp.os.linux.[32] Die Tatsache, dass Linux a ist monolithischer Kernel eher als ein Mikrokernel war das Thema einer Debatte zwischen Andrew S. Tanenbaum, der Schöpfer von Minix und Torvalds.[33] Das Tanenbaum -Torvalds Debatte begann 1992 auf der Usenet Gruppe comp.os.minix als allgemeine Diskussion über Kernelarchitekturen.[34][35]

Linux Version 0.95 war der erste, der das ausführen konnte X Fenstersystem.[36] Im März 1994 wurde Linux 1.0.0 mit 176.250 Codezeilen veröffentlicht.[37] Es war die erste Version, die für die Verwendung in der Verwendung geeignet war Produktionsumgebungen.[27]

Es startete ein Versioningsystem für den Kernel mit drei oder vier Zahlen, die durch Punkte getrennt waren, in denen das erste die darstellte Haupt Veröffentlichung war der zweite der Kleinere Veröffentlichungund der dritte war das Revision.[38] Zu dieser Zeit merkwürdig unerheblich Veröffentlichungen waren für Entwicklung und Tests, während sie sogar zählte unerheblich Veröffentlichungen waren für die Produktion. Die optionale vierte Ziffer zeigte einen Satz von Patches zu a Revision.[27] Entwicklungsveröffentlichungen wurden mit angezeigt -rc ("Kandidat für Release") Suffix.

Die aktuelle Versionsnummerierung unterscheidet sich geringfügig von den oben genannten. Die gleichmäßige vs. ungerade Nummerierung wurde fallen gelassen und eine bestimmte Haupt Die Version wird jetzt durch die ersten beiden Zahlen angezeigt, die als Ganzes aufgenommen wurden. Während der Zeitrahmen für die Entwicklung des nächsten geöffnet ist HauptDas -RCN -Suffix wird verwendet, um das n'th zu identifizieren Kandidat freigeben Für die nächste Version.[39] Beispielsweise wurde der Veröffentlichung der Version 4.16 sieben 4.16 -RCN (von -RC1 bis -rc7) vorausging. Sobald eine stabile Veröffentlichung erfolgt, wird die Wartung an das "stabile Team" weitergegeben. Gelegentliche Aktualisierungen zu stabilen Freisetzungen werden durch ein Drei -Nummerierungs -Schema identifiziert (z. B. 4.13.1, 4.13.2, ..., 4.13.16).[39]

Nach Version 1.3 des Kernels entschied Torvalds, dass sich Linux genug entwickelt hatte, um einen neuen zu rechtfertigen Haupt Nummer, also veröffentlichte er Version 2.0.0 im Juni 1996.[40][41] Die Serie umfasste 41 Veröffentlichungen. Das Hauptmerkmal von 2.0 war die Unterstützung für Symmetrische Multiprozessierung (SMP) und Unterstützung für mehr Arten von Prozessoren.

Ausgehend von Version 2.0 kann Linux für die Auswahl bestimmter Hardwareziele und für die Aktivierung von architekturspezifischen Funktionen und Optimierungen konfigurierbar sind.[30] Das *Konfiguration machen Befehlsfamilie von Kbuild werden verwendet, um Tausende von Optionen zum Erstellen von ad -hoc -Kernel -Executables zu aktivieren und zu konfigurieren (vmlinux) und ladbare Module.[13][14]

Version 2.2, veröffentlicht am 20. Januar 1999,[42] Verbesserte Verriegelung Granularität und SMP -Management, hinzugefügt, hinzugefügt M68K, Powerpc, SPARC64, Alphaund andere 64-Bit-Plattformen unterstützen.[43] Darüber hinaus fügte es neue hinzu Dateisysteme einschließlich Microsoft's NTFS schreibgeschützte Fähigkeit.[43] 1999 veröffentlichte IBM seine Patches im Linux 2.2.13 Code für die Unterstützung des S/390 die Architektur.[44]

Version 2.4.0, veröffentlicht am 4. Januar 2001,[45] Unterstützung für Unterstützung für IST EIN Stecker und Spiel, USB, und PC -Karten. Linux 2.4 fügte Unterstützung für die hinzu Pentium 4 und Itanium (Letzteres führte die vor Ia64 Isa, das gemeinsam von Intel und Hewlett-Packard entwickelt wurde, um die Älteren zu ersetzen Pa-risc) und für die neueren 64-Bit MIPS Prozessor.[46] Entwicklung für 2.4.x Ein wenig geändert, da während der gesamten Dauer der Serie weitere Funktionen zur Verfügung gestellt wurden, einschließlich der Unterstützung für Bluetooth, Logischer Volumenmanager (LVM) Version 1, ÜBERFALLEN Unterstützung, Intermezzo und ext3 Dateisysteme.

Version 2.6.0 wurde am 17. Dezember 2003 veröffentlicht.[47] Die Entwicklung für 2.6.x Veränderte sich weiterhin neue Funktionen während der gesamten Dauer der Serie. Zu den Änderungen, die in der 2.6 -Serie vorgenommen wurden, gehören: Integration von µClinux in die Hauptkern -Quellen, Pae Unterstützung, Unterstützung für mehrere neue Zeilen von CPUs, Integration der Advanced Linux Sound Architecture (ALSA) in die Hauptkern -Quellen der Hauptkern, Unterstützung für bis zu 232 Benutzer (gegenüber 216), Unterstützung für bis zu 229 Prozess-IDs (nur 64-Bit, 32-Bit-Bögen immer noch auf 2 beschränkt15),[48] Die Anzahl der Gerätetypen und die Anzahl der Geräte jedes Typs erheblich erhöhte sich erheblich. 64-Bit Unterstützung, Unterstützung für Dateisysteme welche Dateigrößen von bis zu 16 unterstützen Terabyte, In-Kernel PräsentationUnterstützung für die Native POSIX Thread Library (Nptl), User-Mode Linux Integration in die Mainline -Kernelquellen, Selinux Integration in die Mainline -Kernelquellen, Infiniband Unterstützung und erheblich mehr.

Bemerkenswert sind auch die Hinzufügung einer großen Auswahl von Dateisystemen, die mit dem 2.6 beginnen.x Veröffentlichungen: Jetzt unterstützt der Kernel eine große Anzahl von Dateisystemen, von denen einige für Linux entwickelt wurden ext3, ext4, SICHERUNG, Btrfs,[49] und andere, die aus anderen Betriebssystemen stammen JFS, Xfs, Minix, Xenix, Irrix, Solaris, System v, Fenster und MS-DOS.[50]

Im Jahr 2005 die stabiles Team wurde als Reaktion auf das Fehlen eines Kernelbaums gebildet, an dem Menschen arbeiten konnten Fehlerbehebungund es würde weiter aktualisieren stabil Versionen.[51] In February 2008 the Linux-Next Der Baum wurde geschaffen, um als ein Ort zu dienen, an dem Flecken während des nächsten Entwicklungszyklus zusammengeführt werden sollen.[52][53] Mehrere Subsystemerwartungen haben auch das Suffix übernommen -nächste Für Bäume, die Code enthalten, die sie für die Aufnahme in den nächsten Release -Zyklus einreichen. Ab Januar 2014Die Inentwicklungsversion von Linux wird in einer instabilen Filiale mit dem Namen gehalten Linux-Next.[54]

Linux wurde früher ohne die Hilfe eines automatisierten gehalten Quellcodeverwaltung System bis im Jahr 2002 wechselte die Entwicklung auf Bitkeeper. Es war für Linux -Entwickler frei verfügbar, aber es war nicht gratis Software. Im Jahr 2005 wegen der Bemühungen dazu Rückwärtsgut Das Unternehmen, dem die Software gehörte, hat ihre Unterstützung für die Linux -Community widerrufen. Als Reaktion darauf schrieben Torvalds und andere Git. Das neue System wurde innerhalb von Wochen geschrieben, und in zwei Monaten wurde der erste offizielle Kernel, der es verwendete, veröffentlicht.[55]

Details zur Geschichte der 2.6 -Kernel -Serie finden Sie in den ChangeLog -Dateien auf dem Quellcode -Release -Bereich der 2.6 -Kernel -Serie von kernel.org.[56]

Der 20. Jahrestag von Linux wurde im Juli 2011 von Torvalds mit der Veröffentlichung der 3.0,0 -Kernel -Version gefeiert.[40] Da 2,6 die Versionsnummer seit 8 Jahren ist, ist eine neue uname26 Persönlichkeit, die 3.x als 2,6.40+x berichtet, musste dem Kernel hinzugefügt werden, damit alte Programme funktionieren würden.[57]

Version 3.0 wurde am 22. Juli 2011 veröffentlicht.[58] Am 30. Mai 2011 kündigte Torvalds an, dass die große Veränderung "nichts. Absolut nichts" sei. Und fragte: "... stellen wir sicher, dass wir die nächste Veröffentlichung wirklich nicht nur zu einer neuen, glänzenden Zahl, sondern auch zu einem guten Kernel machen."[59] Nach den erwarteten 6–7 Wochen des Entwicklungsprozesses würde es nahe dem 20. Jahrestag von Linux veröffentlicht.

Am 11. Dezember 2012 beschloss Torvalds, die Komplexität der Kernel zu verringern, indem sie die Unterstützung für die Unterstützung für i386 Prozessoren, die die 3,7 -Kernel -Serie zum letzten, was den ursprünglichen Prozessor immer noch unterstützt.[60][61] Die gleiche Serie einheitliche Unterstützung für die ARM Prozessor.[62]

Version 3.11, veröffentlicht am 2. September 2013,[63] Fügt viele neue Funktionen hinzu, wie neue O_tmpfile Flagge für offen (2) Verringerung der temporären Datei -Schwachstellen, experimentelle AMD Radeon Dynamisches Leistungsmanagement, Niedrig-Latenz-Netzwerkabfragen und Zswap (Komprimierter Swap -Cache).[64]

Die Nummerierung änderte sich von 2,6.39 auf 3,0 und von 3.19 auf 4,0 keine aussagekräftige technische Differenzierung. Die Hauptversionszahl wurde erhöht, um große geringfügige Zahlen zu vermeiden.[58][65] Stable 3.x.Y -Kerne wurden bis 3.19 im Februar 2015 veröffentlicht.

Im April 2015 veröffentlichte Torvalds Kernel Version 4.0.[40] Bis Februar 2015 hatte Linux Beiträge von fast 12.000 Programmierern von mehr als 1.200 Unternehmen erhalten, darunter einige der weltweit größten Software- und Hardware -Anbieter.[66] Version 4.1 von Linux, veröffentlicht im Juni 2015, enthält über 19,5 Millionen Codezeilen von fast 14.000 Programmierern.[67]

Insgesamt 1.991 Entwickler, von denen 334 Erstkollaborateure waren, fügten mehr als 553.000 Code-Zeilen zu Version 5.8 hinzu, was den zuvor von Version 4.9 gehaltenen Rekord brach.[68]

Laut der jährlichen Entwicklerumfrage des Stack Overflows von 2019 haben mehr als 53% aller Befragten Software für entwickelt Linux und ungefähr 27% für Android,[69] Obwohl sich nur etwa 25% mit Linux-basierten Betriebssystemen entwickeln.[70]

Die meisten Websites laufen auf Linux-basierte Betriebssysteme,[71][72] und alle von der 500 der 500 mächtigsten Supercomputer der Welt Verwenden Sie eine Art Betriebssystem basierend auf Linux.[73]

Linux -Verteilungen Bündeln Sie den Kernel mit Systemsoftware (z. B. die GNU C -Bibliothek, systemd, und andere Unix Dienstprogramme und Daemons) und eine große Auswahl von Anwendungssoftware, Aber ihre Nutzungsanteil In Desktops ist im Vergleich zu anderen Betriebssystemen gering.

Android, was den Großteil der installierten Basis aller Betriebssysteme für mobile Geräte ausmacht,[74][75][76] ist verantwortlich für die steigende Verwendung des Linux -Kernels,[30] zusammen mit seiner großen Verwendung in einer Vielzahl von Eingebettete Geräte.

Architektur und Merkmale

Karte des Linux -Kernels

Linux ist a monolithischer Kernel Mit einem modularen Design (z. B. kann es einfügen und entfernen Ladbare Kernelmodule zur Laufzeit),[77][78] Unterstützen Sie die meisten Funktionen, die einmal nur in geschlossenen Quellkernel nicht freier Betriebssysteme erhältlich sind. Der Rest des Artikels nutzt die Unix- und Unix-ähnliche Betriebssystemkonvention auf dem Beamten Handbuchseiten. Die Zahlen, die dem Namen von Befehlen, Schnittstellen und anderen Merkmalen folgen, haben den Zweck, den Abschnitt (d. H. Der Typ der Komponente oder Merkmal des Betriebssystems) anzugeben, zu dem sie gehören (z. B.. ausführen (2) bezieht sich auf einen Systemaufruf, während Exec (3) bezieht sich auf eine UserSpace -Bibliothekswrapper). Die folgende Liste und die nachfolgenden Abschnitte beschreiben einen nicht verständlichen Überblick über Linux-Architekturdesign und einige seiner bemerkenswerten Merkmale.

Die meisten Gerätetreiber und Kernelverlängerungen laufen in Kernelraum (Ring 0 in vielen Zentralprozessor Architekturen) mit vollen Zugriff auf die Hardware. Einige Ausnahmen laufen in Benutzerraum; Bemerkenswerte Beispiele basieren auf Dateisystemen auf SICHERUNG/Cuse und Teile von UIO.[97][98] Außerdem die X Fenstersystem und WaylandDas Fenstersystem und die Anzeigeserverprotokolle, die die meisten Menschen mit Linux verwenden, werden im Kernel nicht ausgeführt. Unterschiedlich die tatsächliche Schnittstelle mit GPUS von Grafikkarten ist ein In-Kernel-Subsystem genannt Direkter Rendering -Manager (DRM).

Im Gegensatz zu monolithischen körpern standardmäßigen Geräte -Treibern können Gerätetreiber leicht konfiguriert werden als Module, geladen oder entladen, während das System ausgeführt wird, und kann auch unter bestimmten Bedingungen vorgegeben werden, um zu handhaben Hardware unterbricht richtig und besser unterstützen Symmetrische Multiprozessierung.[81] Nach der Wahl hat Linux keinen stabilen Gerätetreiber Anwendung Binärschnittstelle.[99]

Linux verwendet normalerweise von Gedächtnisschutz und virtueller Speicher und kann auch umgehen ungleichmäßiger Speicherzugriff,[100] Das Projekt hat jedoch absorbiert μclinux Dies ermöglicht es auch, Linux aufzunehmen Mikrocontroller ohne virtuelles Gedächtnis.[101]

Die Hardware wird in der Dateihierarchie dargestellt. Benutzeranwendungen interagieren mit Gerätetreiber über Einträge in der /dev oder /sys Verzeichnisse.[102] Verarbeitet auch Informationen über die Dateisystem /Proc Verzeichnis.[102]

Verschiedene Schichten innerhalb von Linux, die auch eine Trennung zwischen dem zeigen Userland und Kernelraum
Benutzermodus Benutzeranwendungen verprügeln, Libreoffice, Gimp, Mixer, 0 a.d., Mozilla Firefox, ...
Systemkomponenten Init Dämon:
OpenRC, starte es, systemd...
Systemdämonen:
Polkitd, SMBD, sshd, Udevd...
Fenstermanager:
X11, Wayland, Oberflächenflinger (Android)
Grafik:
Mesa, AMD -Katalysator, ...
Andere Bibliotheken:
Gtk, Qt, Efl, SDL, Sfml, Fltk, Gn .p, ...
C Standardbibliothek fopen, execv, Malloc, memcpy, Ortszeit, pthread_create... (bis zu 2000 Unterroutinen)
Glibc Ziel ist schnell, schnell zu sein, Musl Ziel ist es, leicht zu sein, UCLIBC Ziele eingebettete Systeme, bionisch wurde geschrieben für Androidusw. alle zielen darauf ab zu sein Posix/Sus-kompatibel.
Kernelmodus Linux Kernel Stat, spleißen, DUP, lesen, offen, ioctl, schreiben, MMAP, nah dran, Ausfahrtusw. (ca. 380 Systemaufrufe)
Der Linux -Kernel Systemanrufschnittstelle (SCI), zielt darauf ab, zu sein Posix/Sus-kompatibel[103]
Prozessplanung
Teilsystem
IPC
Teilsystem
Speicherverwaltung
Teilsystem
Virtuelle Dateien
Teilsystem
Netzwerk
Teilsystem
Andere Komponenten: Alsa, Dri, Evdev, Klibc, LVM, Geräte -Mapper, Linux -Netzwerkplaner, Netfilter
Linux -Sicherheitsmodule: Selinux, Tomoyo, Apparmor, Klatschen
Hardware (Zentralprozessor, Haupterinnerung, Datenspeichergeräte, etc.)

Schnittstellen

Vier Schnittstellen werden unterschieden: zwei interne zum Kernel und zwei zwischen dem Kernel und dem Benutzerspace.

Linux ist ein Klon von Unix und zielt darauf ab Posix und Einzel -Unix -Spezifikation Beachtung.[104] Der Kernel bietet auch Systemaufrufe und andere Schnittstellen, die Linux-spezifisch sind. Um in den offiziellen Kernel aufgenommen zu werden, muss der Code eine Reihe von Lizenzregeln entsprechen.[5][10]

Der Linux Anwendung Binärschnittstelle (ABI) zwischen dem Kernel und dem Benutzerraum hat vier Grad an Stabilität (stabil, testen, veraltet, entfernt);[105] Allerdings die Systemaufrufe Es wird erwartet, dass sie sich nie ändern, um die nicht zu brechen UserSpace Programme, die auf sie beruhen.[106]

Ladbare Kernelmodule (LKMS), von Design nicht auf einen stabilen ABI.[99] Daher müssen sie immer neu kompiliert werden, wenn ein neu ausführbarer Kernel -Kern in einem System installiert ist, andernfalls werden sie nicht geladen. In-Tree-Treiber, die so konfiguriert sind, dass sie ein integraler Bestandteil des ausführbaren Kernels werden (ausführbar (vmlinux) werden statisch durch den Bauprozess verknüpft.

Es gibt auch keine Garantie für die Stabilität der In-Kernel-API auf Quellenebene[99] und deswegen, Gerätetreiber Der Code sowie der Code eines anderen Kernel -Subsystems müssen mit der Kernel -Evolution aktualisiert werden. Jeder Entwickler, der eine API -Änderung vornimmt, ist erforderlich, um jeden Code zu beheben, der als Ergebnis seiner Änderung bricht.[107]

Kernel-zu-Benutzer-Space-API

Der Satz der Linux -Kernel -API Dass die Schnittstellen, die Benutzeranwendungen ausgesetzt sind Systemaufrufe.[108] Ein Systemanruf ist ein Einstiegspunkt in den Linux -Kernel.[109] Zum Beispiel gibt es unter den Linux-spezifischen die Familie der Familie Klon (2) Systemaufrufe.[110] Die meisten Erweiterungen müssen aktiviert werden, indem die definiert werden _Gnu_source Makro in einem Header-Datei oder wenn der Benutzer-Land-Code zusammengestellt wird.[111]

Systemaufrufe können nur durch Verwendung von Montageanweisungen aufgerufen werden Ring 0. Aus diesem Grund die C Standardbibliothek (LIBC) fungiert als Wrapper für die meisten Linux -Systemaufrufe, indem C -Funktionen aufgedeckt werden, nur ob es benötigt wird,[112] kann transparent in den Kernel eintreten, der im Namen des Anrufprozesses ausgeführt wird.[108] Für diese Systemaufrufe, die nicht von LIBC ausgesetzt sind, z. das Schneller Benutzerspace mutex (Futex),[113] Die Bibliothek bietet eine Funktion namens namens SYSCALL (2) Welches kann verwendet werden, um sie explizit aufzurufen.[114]

Pseudo -Dateisysteme (z. B. die sysfs und Procfs Dateisysteme) und Sonderdateien (z.B., /dev/random, /dev/sda, /dev/ttyund viele andere) bilden eine andere Grenzfläche zu Kernel -Datenstrukturen, die Hardware- oder logische (Software-) Geräte darstellen.[115][116]

Kernel-zu-Benutzerspace Abi

Aufgrund der Unterschiede zwischen den Hunderten verschiedener Implementierungen des Linux -Betriebssystems, ausführbaren Objekten, obwohl sie kompiliert, zusammengestellt und verknüpft werden, um auf einer bestimmten Hardware -Architektur auszuführen (dh die Verwendung der Verwendung der IST EIN der Zielhardware) können häufig nicht auf verschiedenen Linux -Verteilungen ausgeführt werden. Dieses Problem ist hauptsächlich auf verteilungsspezifische Konfigurationen und eine Reihe von Patches zurückzuführen, die auf den Code des Linux-Kernels angewendet werden, Unterschiede in Systembibliotheken, Diensten (DAEMONS), Dateisystemhierarchien und Umgebungsvariablen.

Der Hauptstandard für die Anwendung und binäre Kompatibilität von Linux -Verteilungen ist die Linux Standard Base (LSB).[117][118] Das LSB geht jedoch über das hinaus, was den Linux -Kernel betrifft, da er auch die Desktop -Spezifikationen, die X -Bibliotheken und die QT definiert, die wenig damit zu tun haben.[119] Die LSB -Version 5 basiert auf mehreren Standards und Entwürfen (POSIX, SUS, X/Open, Dateisystem Hierarchie (FHS) und andere).[120]

Die Teile des LSB sind für den Kern der weitgehend relevanten General Abi (Gabi),[121] insbesondere das System v Abi[122][123] und die Ausführbares und Verknüpfungsformat (ELF),[124][125] und die Prozessorspezifisch Abi (psabi), zum Beispiel die Kernspezifikation für x86-64.[126][127]

Der Standard -ABI für die Aufnahme von X86_64 -Benutzerprogrammen ist das Laden der Syskallnummer in die Rax registrieren und die anderen Parameter in RDI, RSI, RDX, R10, R8, und R9und schließlich, um das zu setzen symall Montageanweisung im Code.[128][129][130]

In-Kernel-API

Bei XDC2014 kündigte Alex Deucher von AMD den Unified Kernel-Mode-Treiber an.[131] Der proprietäre Linux -Grafik -Treiber, libgl-fglrx-glx, wird das gleiche teilen DRM Infrastruktur mit Mesa 3d. Da es keinen stabilen In-Kernel gibt Abi, AMD musste das erstere ständig anpassen binärer Blob verwendet vom Katalysator.

Zwischen den verschiedenen Subsystemen werden mehrere interne Kernel -APIs verwendet. Einige sind nur innerhalb der Kernel-Subsysteme verfügbar, während ein etwas begrenzter Satz von In-Kernel-Symbolen (d. H. Variablen, Datenstrukturen und Funktionen) ebenfalls dynamisch ladbaren Modulen ausgesetzt ist (z. B. auf Bedarf geladen), unabhängig davon exportiert mit dem Export_symbol () und Export_symbol_gpl () Makros[132][133] (Letztere sind den Modulen reserviert, die unter einer GPL-kompatiblen Lizenz veröffentlicht wurden).[134]

Linux liefert In-Kernel-APIs, die Datenstrukturen manipulieren (z. B.,, verlinkte Listen, Radixbäume,[135] Rotschwarzbäume,[136] Warteschlangen) oder übliche Routinen ausführen (z. B. Daten aus und an den Benutzerbereich kopieren, Speicher zuweisen, Zeilen für das Systemprotokoll usw. drucken und so weiter), die zumindest seit Linux Version 2.6 stabil geblieben sind.[137][138][139]

In-Kernel-APIs umfassen Bibliotheken von gemeinsamen Diensten mit niedrigem Niveau, die von Gerätetreiber verwendet werden:

In-Kernel Abi

Die Linux-Entwickler entschieden sich dafür, einen stabilen In-Kernel-Abi nicht aufrechtzuerhalten. Module, die für eine bestimmte Version des Kernels kompiliert wurden, kann nicht in eine andere Version geladen werden, ohne neu zu kompilieren, vorausgesetzt, die In-Kernel-API ist auf Quellenebene gleich geblieben. Andernfalls muss der Modulcode auch entsprechend geändert werden.[99]

Prozesse und Fäden

Linux erstellt Prozesse mithilfe der Klon (2) oder von der neueren Clone3 (2)[149] Systemaufrufe. Abhängig von den angegebenen Parametern kann das neue Unternehmen die meisten oder keine der Ressourcen des Anrufers teilen. Diese Systeme können neue Einheiten erstellen, die von neuen unabhängigen Prozessen reichen (jeweils eine spezielle Kennung genannt Tgid innerhalb der task_struct Datenstruktur im Kernelraum, obwohl dieselbe Kennung genannt wird PID im userspace) zu neuen Ausführungsfäden innerhalb des aufrufenden Prozesses (mithilfe der Verwendung Clone_Thread Parameter). In diesem letzteren Fall besitzt die neue Entität dasselbe Tgid des Berufungsprozesses und folglich auch das gleiche PID im userspace.[150][151]

Wenn die ausführbare Datei dynamisch mit gemeinsam genutzten Bibliotheken verknüpft ist, ist a Dynamischer Linker (Für Elf -Objekte ist es normalerweise /lib/ld-linux.so.2) wird verwendet, um die erforderlichen Objekte zu finden und zu laden, das Programm zum Ausführen vorzubereiten und dann auszuführen.[152]

Das Native POSIX Thread Library, einfach als nptl bekannt,[153] Bietet die Standard -POSIX -Thread -Schnittstelle (phreads) in den Benutzerspace.[154] Immer wenn ein neuer Thread mit der phread_create (3) posix -Schnittstelle erstellt wird,[155] das Klon (2) Die Familie von Systemanrufen muss auch die Adresse der Funktion erhalten, auf die der neue Thread springen muss. Der Linux -Kernel liefert die Futex (7) (Akronym für "schnelle Benutzer-Raum-Mutexes") Mechanismen für schnelle Benutzer-Raum-Verriegelung und -Synchronisation;[156] Der Großteil der Operationen wird im UserSpace ausgeführt, kann jedoch mit dem Kernel mit dem Kernel kommunizieren Futex (2) Systemanruf.[113]

Eine ganz besondere Kategorie von Threads ist die sogenannte Kernelfäden. Sie dürfen nicht mit den oben genannten Fäden der Ausführung der Benutzerprozesse verwechselt werden. Kernelfäden existieren nur im Kernelraum und ihr einziger Zweck ist es, gleichzeitig Kernelaufgaben auszuführen.[157]

Anders, wenn ein unabhängiger Prozess erstellt wird Elternteil Prozess und in Kind eins (d. H. Ein Programm, zwei Prozesse). Unterschiedliche Rückgaberwerte (einer pro Prozess) ermöglichen es dem Programm, in welcher der beiden Prozesse es derzeit ausführt. Programme benötigen diese Informationen, da der Kinderprozess, einige Schritte nach der Duplikation mit Prozess, normalerweise die ausführen (2) Systemaufruf (möglicherweise über die Familie von Exec (3) Wrapper -Funktionen in GLIBC) und ersetzen das Programm, das derzeit durch den Anrufprozess durch ein neues Programm mit neu initialisiertem Stack, Heap und (initialisierter und nicht initialisierter) Datensegmente ausgeführt wird.[158] Wenn dies erledigt ist, führt dies zu zwei Prozessen, in denen zwei verschiedene Programme durchgeführt werden.

Abhängig von Effektive Benutzer -ID (EUID) und auf der Effektive Gruppen -ID (Egid), ein Prozess, der mit Benutzer Zero -Berechtigungen ausgeführt wird (Berechtigungen (Wurzel, Der Systemadministrator besitzt die Kennung 0) kann alles ausführen (z. B. alle anderen Prozesse abtöten oder rekursiv ganze Dateisysteme auslöschen), stattdessen nicht Null -Benutzerprozesse können dies nicht tun. Fähigkeiten (7) Unterteilt die Privilegien, die traditionell mit Superuser verbunden sind, in verschiedene Einheiten, die durch den übergeordneten Prozess unabhängig aktiviert und deaktiviert oder vom Kind selbst fallen gelassen werden können.[159]

Planung und Voraussetzung

Der Linux -Scheduler ist modular, in dem Sinne, dass es unterschiedliche Planungsklassen und Richtlinien ermöglicht.[160][161] Scheduler -Klassen sind plugbare Scheduler -Algorithmen, die mit dem Basisplaner -Code registriert werden können. Jede Klasse plant verschiedene Arten von Prozessen. Der Kerncode des Scheduler iteriert über jede Klasse in der Reihenfolge der Priorität und wählt den höchsten Prioritätsplaner, der über eine planmäßige Entität des Typs struct ender_entity verfügt.[162] Entitäten können Threads, Gruppen von Threads und sogar alle Prozesse eines bestimmten Benutzers sein.

Linux liefert beides Benutzerpräsentation sowie voll und voll Kernel -Präsentation.[163] Die Präsentation verringert sich Latenz, erhöht die Reaktionsfähigkeit,[164] und macht Linux besser für Desktop und geeigneter und Echtzeit Anwendungen.

Für normale Aufgaben verwendet der Kernel standardmäßig die Ganz fairer Zeitplaner (CFS) Klasse, eingeführt in der 2.6.23 -Version des Kernels.[82] Intern ist diese Standard-Scheduler-Klasse in einem Makro eines C-Headers als definiert als Sched_Normal. In anderen POSIX -Kerneln eine ähnliche Politik als bekannt als SCHLAUT Zuteilt CPU -Zeitlizen (d. H., Abhängig von der vorbestimmten oder dynamisch berechneten Priorität jedes Prozesses). Die Linux -CFS beseitigen absolute Zeitflüsse und weist einen angemessenen Anteil der CPU -Zeit als Funktion von Parametern wie der Gesamtzahl der laufbaren Prozesse und der Zeit, die sie bereits ausgeführt haben. Diese Funktion berücksichtigt auch eine Art Gewicht, das von ihren relativen Prioritäten abhängt (nette Werte).[165]

Mit der Benutzerpräsentation kann der Kernel -Scheduler den aktuellen Vorgang durch die Ausführung von a ersetzen Kontextschalter zu einem anderen, der daher die Rechenressourcen für das Ausführen erwirbt (CPU, Speicher und mehr). Es macht es nach dem CFS Algorithmus (insbesondere verwendet es eine Variable genannt vruntime Für die Sortierung von Einheiten und für die Auswahl des kleineren VRUNTIME, d. H. Die Planbare Einheit, die den geringsten Anteil an CPU -Zeit hatte), an der aktiven Scheduler -Richtlinie und an den relativen Prioritäten.[166] Mit der Kernel -Abtretung kann sich der Kernel bei der Rückkehr eines Interrupt -Handlers, wenn Kernelaufgaben blockieren, und wenn ein Subsystem explizit die Funktion plan () aufruft.

Der Kernel enthält auch zwei posix-konforme[167] Echtzeit-Planungskurse benannt Plant_fifo (Echtzeit als Erster rein, als erster raus) und Plan_rr (Echtzeit Round-Robin), die beide Vorrang vor der Standardklasse haben.[160] Eine zusätzliche Planungsrichtlinie als bekannt als als ZeitplanImplementierung der früheste Deadline Erster Algorithmus (EDF) wurde in Kernel Version 3.14 hinzugefügt, veröffentlicht am 30. März 2014.[168][169] SCHLASTE hat Vorrang vor allen anderen Planungsklassen.

Echtzeit Preempt_rt Patches, die seit Version 2.6 in die Hauptlinie enthalten sind, bieten a Deterministischer Scheduler, Die Entfernung von Präsentationen und Interrupts Deaktivieren (wo möglich), pi mutexes (d. H. Primitive, die Prioritätsinversion vermeiden),[170][171] Unterstützung für hochpräzise Ereignis -Timer (Hpet), präventive Read-Copy-Update, (erzwungene) IRQ-Threads und andere kleinere Merkmale.[172][173][174]

Parallelität und Synchronisation

Der Kernel hat unterschiedliche Ursachen für die Parallelität (z. B. Interrupts, untere Hälften, Präsentation von Kern- und Benutzernaufgaben, symmetrische Multiprozessierung).[175] Zum Schutz kritischer Regionen (Codeabschnitte, die atomisch ausgeführt werden müssen), gemeinsame Speicherorte (wie globale Variablen und andere Datenstrukturen mit globalem Umfang) und Speicherregionen, die durch Hardware asynchron modifizierbar sind (z. B. mit dem c flüchtig Geben Sie Qualifikation ein) Linux bietet einen großen Satz von Werkzeugen. Sie bestehen aus Atomtypen (die nur durch eine Reihe bestimmter Operatoren manipuliert werden können), Spinlocks, Semaphoren, Mutexes,[176][177][178] und locklose Algorithmen (z.B., Rcus).[179][180][181] Die meisten locklosen Algorithmen sind oben aufgebaut Gedächtnisbarrieren zum Zweck der Durchsetzung Speicherbestellung und verhindern unerwünschte Nebenwirkungen aufgrund von Compiler -Optimierung.[182][183][184][185]

Preempt_rt Code in Mainline Linux enthalten RT-Mutexes, eine besondere Art von Mutex, die die Präsentation nicht deaktiviert und die Prioritätsvererbung unterstützt.[186][187] Fast alle Schlösser werden in Schlafschlösser umgewandelt, wenn die Konfiguration für den Echtzeitbetrieb verwendet wird.[188][174][187] Prioritätsvererbung Vermeidet vorrangige Inversion durch Erteilung einer Aufgabe mit niedriger Priorität, bei der die Priorität eines Kellners mit höherer Priorität bis zur Veröffentlichung dieser Sperre eingehalten wird.[189][190]

Linux enthält einen Kernel Lock Validator namens namens Lockdep.[191][192]

Interrupts Management

Das Management der InterruptsObwohl es als einzelner Job angesehen werden könnte, wird sie in zwei getrennte Teile geteilt. Diese Aufteilung in zwei ist auf die unterschiedlichen Zeitbeschränkungen und auf die Synchronisationsbedürfnisse der Aufgaben zurückzuführen, deren Management besteht. Der erste Teil besteht aus einem asynchronen Teil Service Routine unterbrechen Das unter Linux ist als das bekannt obere Hälfte, während der zweite Teil von einer von drei Arten der sogenannten Arten durchgeführt wird Bodenhälften (Softirq, Tasklets, und Arbeitswarteschlangen).[193] Linux -Interrupt -Service -Routinen können verschachtelt werden (d. H. Ein neuer IRQ kann zu einem ISR mit hoher Priorität fangen, das andere ISRs mit niedrigerer Priorität vorgibt).

Speicherverwaltung

Die Speicherverwaltung in Linux ist ein komplexes Thema. Erstens ist der Kernel nicht lächerlich (d. H. Es ist immer im physischen Gedächtnis ansässig und kann nicht auf die Festplatte ausgetauscht werden). Im Kernel gibt es keinen Gedächtnisschutz (Nein Sigsegv Signale, im Gegensatz zu UserSpace), führen Speicherverstöße zu Instabilität und Systemabstürzen.[194]

Linux implementiert virtueller Speicher mit 4 und 5 Ebenen Seitentabellen. Wie gesagt, nur der Benutzerspeicherraum ist immer lächerlich. Es unterhält Informationen zu jedem Seitenrahmen von RAM in praktischen Datenstrukturen (vom Typ Struktur Seite) die unmittelbar nach den Stiefeln besiedelt und bis zum Herunterfahren gehalten werden, unabhängig davon, ob sie virtuelle Seiten sind oder nicht. Darüber hinaus klassifiziert es alle Seitenrahmen in Zonen nach ihren architekturabhängigen Einschränkungen und beabsichtigten Verwendung. For example, pages reserved for DMA operations are in ZONE_DMA, pages that are not permanently mapped to virtual addresses are in ZONE_HIGHMEM (in x86_32 architecture this zone is for physical addresses above 896 MB, while x86_64 does not need it because x86_64 can permanently map physical Seiten, die sich in höheren Adressen befinden), und alles, was übrig bleibt (mit Ausnahme anderer weniger verwendeter Klassifikationen), sind in Zone_Normal.

Kleine Speicherbrocken können über die Familie von dynamisch zugewiesen werden kmalloc () API und befreit mit der entsprechenden Variante von kfree (). vMalloc () und kvfree () werden für große praktisch zusammenhängende Stücke verwendet. alloc_pages () weist die gewünschte Anzahl der gesamten Seiten zu.

Das Linux -Speicher -Stack -Diagramm[195]

Kernel umfasst Platten-, SLub- und Slob -Allocatoren als konfigurierbare Alternativen.[196][197] SLUB ist der neueste und auch der Standard -Allocator. Es zielt auf Einfachheit und Effizienz ab.[197] Slub wurde gemacht Preempt_rt kompatibel.[198]

Unterstützte Architekturen

Tivo DVR, ein Verbrauchergerät, das Linux läuft

Obwohl nicht ursprünglich so konzipiert, um zu sein tragbar,[23][199] Linux ist jetzt eines der am weitesten verbreiteten Kernel des Betriebssystems und läuft auf einer Vielzahl von Systemen aus dem Armarchitektur zu IBM Z/Architektur Mainframe -Computer. Der erste Hafen wurde auf der durchgeführt Motorola 68000 Plattform. Die Modifikationen am Kernel waren so grundlegend, dass Torvalds die Motorola -Version als A betrachtete Gabel und ein "Linux-ähnliches Betriebssystem".[199] Dies bewegte jedoch Torvalds, um eine größere Umstrukturierung des Codes zu führen, um die Portierung für mehr Computerarchitekturen zu erleichtern. Das erste Linux, der in einem einzigen Quellbaum für mehr als i386 nur Code hatte, unterstützte die Dez Alpha AXP 64-Bit-Plattform.[200][201][199]

Linux läuft als Hauptbetriebssystem auf IBM's Gipfel; Ab Oktober 2019, alle Welt der Welt 500 schnellste Supercomputer Führen Sie etwas Betriebssystem basierend auf dem Linux -Kernel aus,[12] Eine große Änderung gegenüber 1998, als der erste Linux -Supercomputer in die Liste hinzugefügt wurde.[202]

Linux wurde auch auf verschiedene Handheld -Geräte portiert, wie z. Äpfel iPhone 3g und iPod.[203]

Unterstützte Geräte

Im Jahr 2007 wurde das LKDDB -Projekt begonnen, um eine umfassende Datenbank mit Hardware und Protokollen zu erstellen, die von Linux -Kerneln bekannt sind.[204] Die Datenbank wird automatisch durch statische Analyse der Kernelquellen erstellt. Später im Jahr 2014 wurde das Linux -Hardware -Projekt gestartet, um automatisch eine Datenbank aller getesteten Hardwarekonfigurationen mit Hilfe von Benutzern verschiedener Linux -Verteilungen zu sammeln.[205]

Live -Patching

Neustart -Updates können sogar auf den Kernel verwendet werden Live -Patching Technologien wie KSPLICE, Kpatch und KGRALT. Minimalistische Grundlagen für das Live -Kernel -Patching wurden in die Linux -Kernel -Mainline in Kernel Version 4.0 zusammengefasst, die am 12. April 2015 veröffentlicht wurde. Livepatch und basiert in erster Linie auf dem Kernel des Kernels ftrace Funktionalität bilden einen gemeinsamen Kern, der das heiße Patching sowohl durch KGRALT als auch durch KPatch unterstützt, indem Sie eine bereitstellen Programmierschnittstelle (API) für Kernelmodule, die heiße Patches und eine enthalten Anwendung Binärschnittstelle (ABI) für die UserSpace -Verwaltungsversorgungsunternehmen. Der in Linux Kernel 4.0 enthaltene Common Core unterstützt jedoch nur die x86 Architektur und liefert keine Mechanismen zur Gewährleistung Funktion-Ebene Konsistenz, während die heißen Patches angewendet werden. Ab April 2015Es gibt laufende Arbeiten zum Portieren von Kpatch und KGRAMT zum gemeinsamen Live -Patching -Kern, das von der Linux -Kernel -Mainline bereitgestellt wird.[206][207][208]

Sicherheit

Kernelfehler weisen potenzielle Sicherheitsprobleme auf. Zum Beispiel können sie zulassen Privilegienkalation oder erstellen Denial-of-Service-Angriff Vektoren. Im Laufe der Jahre wurden zahlreiche Fehler, die die Systemsicherheit beeinflussen, gefunden und behoben.[209] Neue Funktionen werden häufig implementiert, um die Sicherheit des Kernels zu verbessern.[210][211]

Fähigkeiten (7) wurden bereits im Abschnitt zu den Prozessen und Threads eingeführt. Android nutzt sie und systemd gibt Administratoren eine detaillierte Kontrolle über die Funktionen von Prozessen.[212]

Linux bietet eine Fülle von Mechanismen, um die Kernel -Angriffsfläche zu reduzieren und die Sicherheit zu verbessern, die gemeinsam als die bezeichnet werden Linux -Sicherheitsmodule (LSM).[213] Sie umfassen die Sicherheitsverstärktes Linux (Selinux) Modul, dessen Code ursprünglich entwickelt und dann von der an die Öffentlichkeit veröffentlicht wurde NSA,[214] und Apparmor[96] unter anderen. Selinux ist jetzt aktiv entwickelt und aufrechterhalten GitHub.[95] Selinux und Apparmor bieten Unterstützung für Sicherheitsrichtlinien zur Zugriffskontrolle, einschließlich Obligatorische Zugangskontrolle (MAC), obwohl sie sich in Komplexität und Umfang zutiefst unterscheiden.

Eine weitere Sicherheitsfunktion ist die SECCompf-BPF (Secure Computing mit Berkeley-Paketfiltern), die durch Filterparameter und Reduzierung der für Benutzer-Land-Anwendungen zur Verfügung stehenden Systemaufrufe funktioniert.[215]

Kritiker haben den Kernelentwicklern beschuldigt, Sicherheitsfehler zu vertuschen oder sie zumindest nicht anzukündigen. Im Jahr 2008 reagierte Linus Torvalds mit Folgendem darauf:[216][217]

Ich persönlich betrachte Sicherheitsfehler nur als "normale Fehler". Ich vertusche sie nicht, aber ich habe auch keinen Grund, was ich auch für eine gute Idee habe, sie zu verfolgen und sie als etwas Besonderes anzukündigen ... ein Grund, warum ich mich weigere, mich mit der gesamten Sicherheit zu beschäftigen Zirkus ist, dass ich denke, dass er das falsche Verhalten verherrlicht - und so ermutigt -. Es macht "Helden" aus Sicherheitsleuten heraus, als ob die Leute, die nicht nur normale Fehler beheben, nicht so wichtig sind. In der Tat sind alle langweiligen normalen Fehler Weg Wichtiger, nur weil es viel mehr von ihnen gibt. Ich glaube nicht, dass ein spektakuläres Sicherheitsloch wegen einer schlechten Verriegelung verherrlicht oder als "besonderer" als ein zufälliger spektakulärer Absturz verherrlicht werden sollte.

Linux -Verteilungen veröffentlichen in der Regel Sicherheitsupdates, um Schwachstellen im Linux -Kernel zu beheben. Viele bieten an Langzeitunterstützung Veröffentlichungen, die Sicherheitsaktualisierungen für eine bestimmte Linux -Kernel -Version für einen längeren Zeitraum erhalten.

Entwicklung

Keiner
Unbekannt
Berater
Suse
Google
Fast 500 andere
Firmen


Unternehmenszugehörigkeit von Beiträgen zum Linux -Kernel, 4.8–4.13.[218]

Entwicklergemeinschaft

Die Community of Linux -Kernelentwickler umfasst etwa 5000–6000 Mitglieder. Laut der "State of Linux Kernel Development 2017", einer von der Linux Foundation veröffentlichten Studie, die die Commits für die Veröffentlichungen von 4,8 bis 4,13 abdeckte, trugen rund 1500 Entwickler im Durchschnitt von etwa 200-250 Unternehmen bei. Die Top 30 Entwickler haben etwas mehr als 16% des Code beigetragen. Nach Unternehmen sind die Top -Mitwirkenden Intel (13,1%) und Red Hat (7,2%), Linaro (5,6%), IBM (4,1%), die zweite und fünfte Plätze werden von 'None' (8,2%) und gehalten. 'Unbekannte' (4,1%) Kategorien.[218]

Anstelle einer Roadmap gibt es technische Richtlinien. Anstelle einer zentralen Ressourcenzuweisung gibt es Personen und Unternehmen, die alle an der weiteren Entwicklung des Linux -Kernels beteiligt sind, ganz unabhängig voneinander: Menschen wie Linus Torvalds und ich plane die Kernelentwicklung nicht. Wir sitzen nicht dort und denken in den nächsten zwei Jahren die Roadmap aus und weisen dann den verschiedenen neuen Funktionen Ressourcen zu. Das liegt daran, dass wir keine Ressourcen haben. Die Ressourcen sind alle den verschiedenen Unternehmen gehören, die Linux verwenden und zu den verschiedenen unabhängigen Mitwirkenden dort draußen beitragen. Es sind die Menschen, die die Ressourcen besitzen, die sich entscheiden ...

Wie bei vielen großen Open-Source-Softwareprojekten müssen Entwickler sich an die halten Mitwirkender Bund, a Verhaltenskodex beabsichtigt, die Belästigung von Mitwirkenden von Minderheiten anzugehen.[219][220] Zusätzlich, um die Verwendung der Verwendung von zu verhindern inklusive Terminologie Innerhalb des Quellcode ist vorgeschrieben.[221]

Quellcodeverwaltung

Die Linux Development Community verwendet Git um das zu verwalten Quellcode. Git -Benutzer klonen die neueste Version von Torvalds 'Baum mit Git-Clone (1)[222] und halten Sie es auf dem neuesten Stand Git-Pull (1).[223][224] Beiträge werden als Patches in Form von Textnachrichten auf dem eingereicht Lkml (und oft auch auf anderen Mailinglisten, die bestimmten Subsystemen gewidmet sind). Die Patches müssen einer Reihe von Regeln und einer formalen Sprache entsprechen, die unter anderem beschreibt, welche Codezeilen gelöscht werden sollen und welche anderen den angegebenen Dateien hinzugefügt werden sollen. Diese Patches können automatisch verarbeitet werden, damit Systemadministratoren sie anwenden können, um nur einige Änderungen am Code vorzunehmen oder in die nächste Version inkrementell ein Upgrade zu verbessern.[225] Linux ist auch in verteilt GNU ZIP (gzip) und BZIP2 Formate.

Code an den Kernel senden

Ein Entwickler, der den Linux -Kernel ändern möchte, beginnt mit der Entwicklung und Prüfung dieser Änderung. Je nachdem, wie wichtig die Änderung ist und wie viele Subsysteme sie ändert, wird die Änderung entweder als einzelner Patch oder in mehreren Patches von eingereicht Quellcode. Im Falle eines einzelnen Subsystems, das von einem einzigen Betreuer aufrechterhalten wird, werden diese Patches als E-Mail an den Betreuer des Subsystems mit der entsprechenden Mailingliste in CC gesendet. Der Betreuer und die Leser der Mailingliste überprüfen die Patches und geben Feedback. Sobald der Überprüfungsprozess abgeschlossen hat, akzeptiert der Subsystem -Betreuer die Patches in den Relevanten Git Kernelbaum. Wenn die Änderungen am Linux -Kernel Fehlerbehebungen sind, die als wichtig genug angesehen werden, wird innerhalb weniger Tage eine Pull -Anfrage für die Patches an Torvalds gesendet. Andernfalls wird während des nächsten Zusammenführungsfensters eine Pull -Anfrage an Torvalds gesendet. Das Zusammenführungsfenster dauert normalerweise zwei Wochen und beginnt unmittelbar nach der Veröffentlichung der vorherigen Kernelversion.[226] Der Git -Kernel -Quellbaum nennt alle Entwickler, die zum Linux -Kernel in der beigetragen haben Credits Verzeichnis und alle Subsystem -Betreuer sind in aufgeführt Betreuer.[227]

Programmiersprache und Codierungsstil

Linux ist in einem besonderen Geschrieben geschrieben C Programmiersprache unterstützt durch GCC, ein Compiler, der sich in vielerlei Hinsicht aus dem C -Standard erweitert, beispielsweise verwendet Inline -Codeabschnitte geschrieben in der Montagesprache (In GCCs "AT & T-Style" -Syntax) der Zielarchitektur. Seit 2002 muss der Code an die 21 Regeln, die die ausmachen, einhalten Linux -Kernel -Codierungsstil.[228][229]

GNU Toolchain

Das GNU Compiler -Sammlung (GCC oder GNU CC) ist der Standardwert Compiler Für die Hauptquellen der Hauptlinux und wird von einem Dienstprogramm genannt machen. Dann ist die GNU Assembler (häufiger als Gas oder GNU bezeichnet) gibt die aus Objektdateien vom GCC erzeugt Montage Code. Endlich, das GNU -Linker (GNU LD) wird verwendet, um eine statisch verknüpfte ausführbare Kernel -Datei mit dem Namen vmlinux. Beide wie und ld sind Teil von Binärversorger GNU (Binutils). Die oben genannten Werkzeuge werden gemeinsam als die bezeichnet GNU Toolchain.

Compiler -Kompatibilität

GCC war für eine lange Zeit der einzige Compiler, der in der Lage war, Linux korrekt aufzubauen. In 2004, Intel behauptete, den Kernel so geändert zu haben, so Sein C -Compiler war auch in der Lage, es zusammenzustellen.[230] 2009 gab es einen weiteren Bericht über einen solchen berichteten Erfolg mit einer modifizierten 2,6.22 -Version.[231][232]

Seit 2010 sind Anstrengungen unternommen, um Linux mitzubauen Klang, ein alternativer Compiler für die C -Sprache;[233] Ab dem 12. April 2014 konnte der offizielle Kernel fast von Clang zusammengestellt werden.[234][235] Das Projekt, das diesen Bemühungen gewidmet ist, wird benannt Llvmlinux nach dem Llvm Compiler -Infrastruktur, auf der Clang gebaut wird.[236] LLVMLINUX zielt weder auf Linux noch das LLVM ab. Daher handelt es sich um ein Metaprojekt, das aus Patches besteht, die letztendlich an die vorgelagerten Projekte eingereicht werden. Durch die Ermöglichung von Linux können Entwickler von kürzeren Zusammenstellungszeiten profitieren.[237]

Im Jahr 2017 absolvierten die Entwickler vorgelagerte Patches, um den Bau des Linux -Kernels mit zu unterstützen Klang in der Veröffentlichung von 4.15, haben zurückportiert Unterstützung für X86-64 und Aarch64 auf die Äste 4.4, 4,9 und 4,14 des stabilen Kernelbaums. Google Pixel 2 mit dem ersten versandt Klang gebaut Linux Kernel,[238] obwohl Patches für Pixel (1. Generation) existierte.[239] 2018 Säge Chromeos Wechseln Sie zum Bau von Kerneln mit Klang standardmäßig,[240] während Android (Betriebssystem) gemacht Klang[241] und Llvm's Linker lld[242] Erforderlich für Kernel -Builds im Jahr 2019. Google bewegte seinen Produktionskernel, der in seinen Rechenzentren verwendet wurde, um mit dem Gebäude gebaut zu werden Klang im Jahr 2020.[243] Heute, den Clangbuiltlinux Gruppenkoordinaten beheben sich auf beides Linux und Llvm Um die Kompatibilität zu gewährleisten, bestehen beide aus Mitgliedern aus Llvmlinux und nach vorgelagerte Patches von Llvmlinux.

Kernel -Debugging

Ein Beispiel für Linux -Kernel -Panik

Fehler, die den Linux -Kernel beteiligen, können schwer zu beheben sein. Dies liegt an der Interaktion des Kernels mit UserSpace und Hardware. Und auch, weil sie im Vergleich zu den Benutzerprogrammen aus einer größeren Auswahl an Gründen verursacht werden könnten. Einige Beispiele für die zugrunde liegenden Ursachen sind semantische Fehler im Code, den Missbrauch von Synchronisationsprimitiven und eine falsche Hardwareverwaltung.[244]

Ein Bericht über einen nicht tödlichen Fehler im Kernel wird als "bezeichnet"Hoppla"Solche Abweichungen vom korrekten Verhalten des Linux -Kernels können einen fortgesetzten Betrieb mit einer beeinträchtigen Zuverlässigkeit ermöglichen.[245]

Ein kritischer und tödlicher Fehler wird über die angegeben Panik() Funktion. Es druckt eine Nachricht und hält dann den Kernel an.[246]

Eine der häufigsten Techniken, die zur Ermittlung von Fehler im Code verwendet werden, ist Debugging durch Drucken. Zu diesem Zweck liefert Linux eine In-Kernel-API namens printk() Das speichert Nachrichten in einem kreisförmigen Puffer. Das syslog (2) Der Systemaufruf wird zum Lesen und/oder Löschen des Kernel -Nachrichtenringpuffers und zum Einstellen des Maximums verwendet Protokollebene der Nachrichten, die an die Konsole gesendet werden sollen (d. H. Eine der acht KERN_* Parameter von printk (), die die Schwere der angegebenen Erkrankung erkennen); Normalerweise wird es über die GLIBC -Wrapper aufgerufen klogctl (3).[247] Kernel -Nachrichten werden auch durch die nach Userland exportiert /dev/kmsg Schnittstelle[248] (z.B., Systemd-Journald[249][250] Liest diese Schnittstelle und fügen Sie standardmäßig die Nachrichten an /var/log/journal).

Eine weitere grundlegende Technik zum Debuggen eines Laufkerns ist die Verfolgung. Das ftrace Mechanismus ist ein Linux -interner Tracer; Es wird zur Überwachung und Debugie von Linux zur Laufzeit verwendet und kann auch die Latenzen des Benutzerraums aufgrund von Kernel -Fehlverhalten analysieren.[251][252][253][254] Außerdem, ftrace Ermöglicht Benutzern, Linux zur Kartonzeit zu verfolgen.[255]

KPROBES und Kretprobes Kann (wie Debugger in UserSpace) in Linux brechen und nicht destrupt Informationen sammeln.[256] KPROBES kann in Code unter (fast) jeder Adresse eingefügt werden, während KretProbes bei der Funktionsrendite arbeiten. vorroben haben ähnliche Zwecke, haben aber auch einige Unterschiede in der Nutzung und Implementierung.[257]

Mit KGDB Linux kann in ähnlicher Weise wie Benutzerspace -Programme debuggen werden. KGDB benötigt eine zusätzliche Maschine, die ausgeführt wird GDB und das hängt mit dem Ziel zusammen, um mit a debuggen zu werden Serienkabel oder Ethernet.[258]

Entwicklungsmodell

Das Linux -Kernel -Projekt integriert neuen Code auf rollierender Basis. Software, die in das Projekt eingecheckt werden muss und kompilieren ohne Fehler. Jedem Kernel -Subsystem wird ein Betreuer zugewiesen, der für die Überprüfung von Patches gegen die Kernel -Code -Standards verantwortlich ist, und führt eine Warteschlange von Patches, die in einem Merge -Fenster von mehreren Wochen an Linus Torvalds übermittelt werden können. Patches werden von Torvalds in den Quellcode der vorherigen stabilen Linux -Kernel -Version verschmolzen, um die zu erstellen -rc Kandidat für den nächsten stabilen Kernel freigeben. Sobald das Zusammenführungsfenster geschlossen ist, werden nur die Korrekturen auf dem neuen Code in der Entwicklungsveröffentlichung akzeptiert. Das -rc Entwicklungsveröffentlichung des Kernels durchläuft durch Regressionstests Und sobald es von Torvalds und dem Kernel -Subsystem -Betreuer stabil beurteilt wird, wird ein neuer Linux -Kernel veröffentlicht und der Entwicklungsprozess beginnt erneut.[259]

Entwickler, die sich ungerecht behandelt fühlen, können dies dem melden Linux Foundation'S Technical Advisory Board.[260] Im Juli 2013 der Betreuer des USB 3.0 -Treibers Salbei scharf bat Torvalds, den missbräuchlichen Kommentar in der Kernel -Entwicklungsgemeinschaft anzusprechen. Im Jahr 2014 stützte sich scharf aus der Entwicklung von Linux -Kernel und sagte, dass "der Fokus auf technische Exzellenz in Kombination mit überlasteten Betreuern und Menschen mit unterschiedlichen kulturellen und sozialen Normen, dass Linux -Kernel -Betreuer oft stumpf, unhöflich oder brutal sind, um zu bekommen ihre Arbeit erledigt ".[261] Auf der Linux.conf.au (LCA) -Sonferenz im Jahr 2018 äußerten die Entwickler die Ansicht, dass die Kultur der Gemeinschaft in den letzten Jahren viel besser geworden ist. Daniel Vetter, der Betreuer des Intel DRM/I915 -Grafik -Kernel -Treibers, kommentierte, dass die "ziemlich gewalttätige Sprache und Diskussion" in der Kernel -Community verringert oder verschwunden ist.[262]

Laurent Pinchart bat Entwickler um Feedback zu ihren Erfahrungen mit der Kernel -Community auf der Embedded Linux Conference Europe 2017. Die aufgebrachten Probleme wurden einige Tage später auf dem Gipfeltreffen des Warders erörtert. Bedenken hinsichtlich der mangelnden Konsistenz darüber, wie die Inhaber auf von Entwicklern eingereichte Patches reagierten, wurden von Shuah Khan, dem Betreuer des Kernel-Selbsttest-Rahmens, wiederholt. Torvalds machte geltend, dass es beim Umgang mit Patches niemals eine Konsistenz geben würde, da verschiedene Kernel -Subsysteme im Laufe der Zeit unterschiedliche Entwicklungsprozesse angewendet haben. Daher wurde vereinbart, dass jeder Kernel -Subsystem -Betreuer die Regeln für die Patch -Akzeptanz dokumentieren würde.[263]

Mainline Linux

Das Git Baum von Linus Torvalds Das enthält den Linux -Kernel wird als bezeichnet als Mainline Linux. Jede stabile Kernelfreisetzung stammt aus dem Hauptbaum,[264] und wird häufig veröffentlicht auf kernel.org. Mainline Linux hat nur eine solide Unterstützung für eine kleine Untergruppe der vielen Geräte, die Linux ausführen. Nicht-Mainline-Unterstützung wird von unabhängigen Projekten bereitgestellt, wie z. Yocto oder LinaroAber in vielen Fällen wird der Kernel des Gerätehalbers benötigt.[265] Die Verwendung eines Verkäuferkernels erfordert wahrscheinlich a Board -Support -Paket.

Die Aufrechterhaltung eines Kernelbaums außerhalb der Hauptlinie Linux hat sich als schwierig erwiesen.[266]

Hauptlinie bezieht sich auf den Aufwand, dem Hauptkern ein Gerät hinzuzufügen.[267] Obwohl es früher nur Unterstützung in einer Gabel oder überhaupt nicht unterstützte. Dies beinhaltet normalerweise das Hinzufügen von Treibern oder Gerätebaum Dateien. Wenn dies fertig ist, wird die Funktions- oder Sicherheitsbehandlung berücksichtigt Hauptlager.[268]

Linux-ähnlicher Kernel

Der Betreuer des stabilen Zweigs, Greg Kroah-Hartman, hat den Begriff angewendet Linux-ähnlich zu stromabwärts Kernel -Gabeln von Anbietern, die dem Hauptkern Millionen Code -Zeilen hinzufügen.[269] Im Jahr 2019, Google erklärte, dass sie den Hauptlinux -Kernel in der Hauptlinie verwenden wollten Android Die Anzahl der Kernelgabeln würde also reduziert.[270] Der Begriff Linux-ähnlich wurde auch auf die angewendet Einbettbare Linux -Kernel -Untergruppe, der nicht den vollständigen Linux -Kernel der Hauptlinie enthält, sondern eine kleine modifizierte Teilmenge des Codes.[271]

Linux -Gabeln

Ein iPod Booten iPodlinux

Es gibt bestimmte Gemeinschaften, die Kerne entwickeln, die auf dem offiziellen Linux basieren. Einige interessante Code -Teile von diesen Gabeln (d. H. Ein Slang -Begriff, der "abgeleitete Projekte" bedeutet), die enthalten Linux-Libre, Berechnen Sie Knoten Linux, TINTE, L4linux, Rtlinux, und User-Mode Linux (UML) wurden in die Hauptlinie zusammengefasst.[272] Einige Betriebssysteme, die für Mobiltelefone entwickelt wurden, verwendeten zunächst stark modifizierte Versionen von Linux, einschließlich Google Android, Firefox OS, HP webos, Nokia Maemo und Jolla Segelfisch os. Im Jahr 2010 kritisierte die Linux -Community Google dafür, dass er einen eigenen Kernelbaum effektiv gegründet hat:[273][274]

Dies bedeutet, dass alle für Android -Hardware -Plattformen geschriebenen Treiber nicht in den Hauptkernbaum verschmolzen werden können, da sie Abhängigkeiten von Code haben, die nur im Kernelbaum von Google leben, was dazu führt, dass er im Kernel.org -Baum nicht baut. Aus diesem Grund hat Google jetzt ein großes Stück Hardware -Treiber und Plattformcode daran gehindert, jemals in den Hauptkernbaum verschmolzen zu werden. Effektiv erstellen Sie einen Kernel -Zweig, auf den sich jetzt eine Reihe verschiedener Anbieter verlassen.[275]

Heute verwendet Android ein individuelles Linux[276] Wenn größere Änderungen in Gerätefahrern implementiert werden, jedoch einige Änderungen am Kernkern -Code erforderlich sind. Android -Entwickler senden auch Patches an den offiziellen Linux, der das Android -Betriebssystem schließlich booten kann. Zum Beispiel a Nexus 7 kann das Hauptlinux booten und ausführen.[276]

Bei einer Präsentation von 2001 bei der Computergeschichte Museum, Linus Torvalds hatte dies als Antwort auf eine Frage zu Verteilungen von Linux mit genau den gleichen Kernelquellen zu sagen oder nicht:

Sie sind nicht ... nun, das sind sie und sie sind es nicht. Es gibt keinen einzigen Kernel. Jede einzelne Verteilung hat ihre eigenen Veränderungen. Das ist seit dem ersten Tag so viel los. Ich weiß nicht, ob Sie sich vielleicht daran erinnern, dass Yggdrasil dafür bekannt war, extreme Veränderungen am Kernel zu haben, und noch heute haben alle wichtigen Anbieter ihre eigenen Verbesserungen, weil sie einen Teil des Marktes haben, an dem sie interessiert sind, und ehrlich gesagt, so ist es so, wie es so ist es sollte sein. Denn wenn jeder eine Person erwartet, um alles zu verfolgen, was nicht der Sinn von GPL ist. Das ist nicht der Grund, ein offenes System zu haben. Tatsächlich ist die Tatsache, dass eine Verteilung entscheidet, dass für sie etwas so wichtig ist, dass sie Patches hinzufügen, auch wenn es nicht im Standardkern ist, das ist ein wirklich gutes Zeichen für mich. Das ist also zum Beispiel, wie etwas wie Reiserfs hinzugefügt wurde. Und der Grund, warum Reiserfs das erste Journaling -Dateisystem ist, das in den Standardkern integriert wurde, war nicht, weil ich Hans Reiser liebe. Es lag daran, dass Suse tatsächlich begann, mit Reiserfs als Standardkernel zu versenden, was mir "ok" sagte. Dies ist tatsächlich in der Produktion. Normale Menschen tun das. Sie müssen etwas wissen, das ich nicht kenne. In einem sehr realen Sinne, was viele Vertriebshäuser tun, sind sie Teil dieser "Wir machen unsere eigene Zweigstelle" und "Lassen Sie uns unsere Änderungen daran vornehmen". Und wegen der GPL kann ich die besten Teile davon nehmen.[277]

Entwicklungsgemeinschaft Konflikte

Es gab mehrere bemerkenswerte Konflikte zwischen Linux -Kernelentwicklern. Beispiele für solche Konflikte sind:

  • Im Juli 2007, Con Kolivas kündigte an, dass er sich für den Linux -Kernel entwickeln würde.[278][279]
  • Im Juli 2009, Alan Cox verlassen seine Rolle als die Tty Schichtbär Das nach Meinungsverschiedenheit mit Linus Torvalds.[280]
  • Im Dezember 2010 gab es eine Diskussion zwischen dem Linux -SCSI -Betreuer James Bottomley und dem SCST -Betreuer Wladislav Bolkhovitin, über den SCSI -Zielstapel in den Linux -Kernel aufgenommen werden sollte.[281] Dies machte einige Linux -Benutzer verärgert.[282]
  • Im Juni 2012 machte Torvalds sehr deutlich, dass er nicht zustimmte, mit dem er nicht zustimmte Nvidia seine Fahrer als geschlossen freigeben.[283]
  • Im April 2014 verboten Torvalds Kay Sievers vom Senden von Patches in den Linux -Kernel, weil er nicht mit dem Umgang mit Käfer das verursachte systemd negativ mit dem Kernel zu interagieren.[284]
  • Im Oktober 2014, Lennart Poettering Beschuldigte Torvalds, den groben Diskussionsstil auf Linux -Kernel -Mailing -Listen zu toleriert und ein schlechtes Vorbild zu sein.[285]
  • Im März 2015 reichte Christoph Hellwig eine Klage gegen VMware Für Verletzung des Urheberrechts am Linux -Kernel.[286] Linus Torvalds machte deutlich, dass er dieser und ähnlichen Initiativen nicht zustimmte, indem er Anwälte als eine arrierende Krankheit bezeichnete.[287]
  • Im April 2021 ein Team aus dem Universität von Minnesota Es wurde festgestellt, dass es als Teil ihrer Forschung "böse Absicht" Patches dem Kernel einreicht. Dies führte zur sofortigen Umkehrung aller Patches, die jemals von einem Mitglied der Universität eingereicht wurden. Darüber hinaus wurde eine Warnung von einem leitenden Intensiver ausgestellt, dass jeder zukünftige Patch der Universität auf Sicht abgelehnt wird.[288][289]

Prominente Linux -Kernelentwickler haben sich der Bedeutung der Vermeidung von Konflikten zwischen Entwicklern bewusst.[290] Für eine lange Zeit gab es keinen Verhaltenskodex für Kernelentwickler aufgrund der Opposition durch Linus Torvalds.[291] Ein Linux -Kernel jedoch Konfliktkodex wurde am 8. März 2015 eingeführt.[292] Es wurde am 16. September 2018 durch einen neuen ersetzt Verhaltenskodex basierend auf Mitwirkender Bund. Dies fiel mit einer öffentlichen Entschuldigung von Torvalds und einer kurzen Pause von der Kernelentwicklung zusammen.[293][294] Am 30. November 2018, um die Einhaltung der Verhaltenskodex, Jarkko Sakkinen von Intel gesendete Patches, die Instanzen von "Fuck" ersetzen, die in Quellcode -Kommentaren mit geeigneten Versionen erscheinen, die sich auf das Wort "Umarmung" konzentrieren.[295]

Codebasis

Ab 2021Die 5.11 -Veröffentlichung des Linux -Kernels hatte rund 30,34 Millionen Codezeilen. Etwa 14% des Code sind Teil des "Kerns" (Arch-, Kernel- und MM -Verzeichnisse), während 60% Treiber sind.

Linux ist Evolution, kein intelligentes Design!

Geschätzte Kosten für die Sanierung

Sanierungskosten des Linux -Kernels

Die Kosten für die Sanierung der Version 2.6.0 des Linux -Kernels in einer traditionellen proprietären Entwicklungsumgebung wurden auf 612 Mio. USD (467 Mio. €, 394 Mio. GBP) im Jahr 2004 geschätzt Kokomo Persönlichkeitsschätzungsmodell.[299] Im Jahr 2006 erhöhte eine von der Europäischen Union finanzierte Studie die Sanierungskosten der Kernelversion 2,6,8 höher, bei 882 Mio. € (1,14 Mrd. $, £ 744 Mio.).[300]

Dieses Thema wurde im Oktober 2008 von Amanda McPherson, Brian Proffitt und Ron Hale-Evans überarbeitet. Mit der Methodik von David A. Wheeler kostet sie die Sanierung des 2,6,25 -Kernels jetzt 1,3 Mrd. USD (Teil von insgesamt 10,8 Mrd. USD für die Sanierung von Fedora 9).[301] Auch hier schätzen Garcia-Garcia und Alonso de Magdaleno von der University of Oviedo (Spanien), dass der Wert des Kernels jährlich zwischen 2005 und 2007 etwa 100 Mio. € und 2008 225 Mio. € lag. Es würde auch mehr als 1 Mrd. € kosten (ca. 1,4 Mrd. USD (ca. 1,4 Mrd. $ Ab Februar 2010) in der Europäischen Union zu entwickeln.[302]

Ab dem 7. März 2011mit dem damaligen Strom Loc (Codezeilen) eines 2,6.X -Linux -Kernels und Lohnzahlen mit David A. Wheelers Berechnungen würden ungefähr 3 Mrd. USD (ca. 2,2 Mrd. EUR) kosten, um den Linux -Kernel zu sanieren, da er immer größer wird. Eine aktualisierte Berechnung vom 26. September 2018Mit dem damaligen Strom 20.088.609 LOC (Code-Zeilen) für den 4,14,14 Linux-Kernel und das derzeitige US-amerikanische Durchschnittsprogrammierergehalt von 75.506 USD würde es ungefähr 14.725.449.000 US-Dollar (11.191.341.000 GBP) kosten, um den bestehenden Code zu verschreiben.[303]

Wartung und langfristige Unterstützung

Startnachrichten eines Linux -Kernels 2.6.25.17

Die neueste Kernelversion und ältere Kernelversionen werden getrennt gehalten. Die meisten neuesten Kernel -Veröffentlichungen wurden von Linus Torvalds überwacht.[304] Aktuelle Versionen werden von veröffentlicht von Greg Kroah-Hartman.[305]

Die Linux -Kernel -Entwickler -Community unterhält einen stabilen Kernel, indem es Fixes für anwendet Software -Fehler diese wurden während der Entwicklung des nachfolgenden stabilen Kernels entdeckt. Daher wird www.kernel.org immer zwei stabile Kerne auflisten. Der nächste stabile Linux -Kernel wird nun nur 8 bis 12 Wochen später veröffentlicht. Daher haben die Linux -Kernel -Betreuer einige stabile Kernel -Releases als als bezeichnet langfristig, diese Langzeitunterstützung Linux -Kernel werden zwei oder mehr Jahre mit Fehlerbehebungen aktualisiert.[306] Ab Februar 2022Es gibt sechs Langzeit -Linux -Kerne: 5.15.23, 5.10.100, 5.4.179, 4.19.229, 4.14.266 und 4.9.301.[307] Die vollständige Liste der Veröffentlichungen ist bei Linux -Kernelversion Historie.

Beziehung zu Linux -Verteilungen

Die meisten Linux -Benutzer führen einen von ihren gelieferten Kernel aus Linux -Verteilung. Einige Verteilungen versenden die "Vanille" oder "stabilen" Kerne. Mehrere Linux -Verteilungsanbieter (wie z. roter Hut und Debian) Walten Sie einen weiteren Satz von Linux -Kernelzweigen bei, die in ihre Produkte integriert sind. Diese werden in der Regel langsamer im Vergleich zur "Vanille" -Ast aktualisiert und enthalten normalerweise alle Korrekturen der relevanten "stabilen" Filiale, aber gleichzeitig können sie auch Unterstützung für Fahrer oder Funktionen hinzufügen, die nicht veröffentlicht wurden, in Die "Vanilla" -Version des Vertriebshändlers begann, ihre Filiale aus zu stützen.

Legale Aspekte

Lizenzbedingungen

Zunächst veröffentlichte Torvalds Linux unter einer Lizenz, die jede kommerzielle Nutzung verboten hat.[308] Dies wurde in Version 0.12 durch einen Schalter zum Schalter geändert GNU Allgemeine öffentliche Lizenz Version 2 (GPLV2).[28] Diese Lizenz ermöglicht die Ausschüttung und den Verkauf möglicherweise geänderter und unmodifizierter Versionen von Linux, erfordert jedoch, dass alle Kopien unter derselben Lizenz veröffentlicht werden und auf Anfrage auf Anfrage den vollständigen entsprechenden Quellcode begleitet werden.[309] Torvalds hat Lizenzierung Linux unter dem GPLV2 als das "Beste, was ich je getan" bezeichnet hat.[308]

Der Linux -Kernel ist explizit unter lizenziert GNU Allgemeine öffentliche Lizenz Nur Version 2 (nur GPL-2.0) mit einer expliziten Syscall-Ausnahme (Linux-Syscall-Note),[5][8][9] Ohne dem Lizenznehmer die Möglichkeit zu bieten, eine spätere Version auszuwählen, die eine gemeinsame GPL -Erweiterung darstellt. Der beitragende Code muss unter verfügbar sein unter GPL-kompatible Lizenz.[10][107]

Es gab beträchtliche Debatten darüber, wie leicht die Lizenz geändert werden konnte, um spätere GPL -Versionen (einschließlich Version 3) zu verwenden und ob diese Änderung überhaupt wünschenswert ist.[310] Torvalds selbst zeigte sich speziell bei der Veröffentlichung von Version 2.4.0 an, dass sein eigener Code nur unter Version 2 veröffentlicht wird.[311] Die Begriffe des GPL geben jedoch an, dass, wenn keine Version angegeben ist, jede Version verwendet werden kann.[312] und Alan Cox wies darauf hin, dass nur sehr wenige andere Linux -Mitwirkende eine bestimmte Version der GPL angegeben hatten.[313]

Im September 2006 zeigte eine Umfrage unter 29 wichtigsten Kernel-Programmierern, dass 28 GPLV2 dem damaligen Strom-GPLV3-Entwurf bevorzugte. Torvalds kommentierte: "Ich denke, eine Reihe von Außenstehenden ... glaubte, dass ich persönlich nur der seltsame Mann war, weil ich so öffentlich kein großer Fan des GPLV3 war."[314] Diese Gruppe hochkarätiger Kernelentwickler, einschließlich Torvalds, Greg Kroah-Hartman und Andrew Morton, kommentierte Massenmedien über ihre Einwände gegen die GPLV3.[315] Sie bezog sich auf Klauseln in Bezug auf DRM/Tivoisierung, Patente, "zusätzliche Einschränkungen" und warnte a Balkanisierung des "Open -Source -Universums" durch die GPLV3.[315][316] Linus Torvalds, der beschloss, den GPLV3 für den Linux -Kernel nicht zu übernehmen, wiederholte seine Kritik noch Jahre später.[317]

Ladbare Kernelmodule

Es wird diskutiert, ob einige Ladbare Kernelmodule (LKMs) sind in Betracht zu ziehen Ableitungen Nach dem Urheberrecht und dadurch fallen sie unter die Bedingungen der GPL.

In Übereinstimmung mit den Lizenzregeln verwenden LKMS nur eine öffentliche Untergruppe der Kernel -Schnittstellen[132][133] sind nicht abgeleitete Arbeiten, daher gibt Linux Systemadministratoren die Mechanismen, um binäre Objekte außerhalb der Bräuche in den Kernel-Adressraum zu laden.[10]

Es gibt einige ladbare Module außerhalb der Bräuche, die die legitime Nutzung des DMA_BUF Kernel -Funktion.[318] GPL -konformer Code kann ihn sicherlich verwenden. Ein anderer möglicher Anwendungsfall wäre jedoch Nvidia Optimus Das kombiniert eine schnelle GPU mit einer Intel -integrierten GPU, in der die Nvidia -GPU in die schreibt Intel FrameBuffer, wenn es aktiv ist. Nvidia kann diese Infrastruktur jedoch nicht verwenden, da es erforderlich ist, eine Regel zu umgehen, die nur von LKMs verwendet werden kann, die ebenfalls GPL sind.[134] Alan Cox antwortete auf LkmlAblehnung einer Anfrage eines seiner Ingenieure, diese technische Durchsetzung von der API zu entfernen.[319] Torvalds stellte eindeutig auf dem LKML fest, dass "[ich] behaupten, dass nur binäre Kernelmodule" standardmäßig "'"' abgeleitet seien.[320]

Auf der anderen Seite hat Torvalds auch gesagt, dass "[eine] Grauzone insbesondere so etwas wie ein Treiber ist, der ursprünglich für ein anderes Betriebssystem geschrieben wurde (d. H. Eindeutig kein abgeleitetes Werk von Linux in Herkunft). Das ist ein Graubereich , und _That_ ist der Bereich, in dem ich persönlich glaube, dass einige Module nicht als abgeleitete Werke angesehen werden, nur weil sie nicht für Linux ausgelegt waren und nicht von einem speziellen Linux -Verhalten abhängen. "[321] Proprietär Insbesondere Grafiktreiber werden stark diskutiert.

Immer wenn proprietäre Module in Linux geladen werden, markiert sich der Kernel als "verdorben".[322] und daher werden Fehlerberichte von verdorbenen Kerneln oft von Entwicklern ignoriert.

Binärblobs Firmware

Der offizielle Kernel, dh der Linus Git -Zweig im Kernel.org -Repository, enthält binäre Blobs, die unter den Bestimmungen der GNU GPLV2 -Lizenz veröffentlicht wurden.[5][10] Linux kann auch Dateisysteme durchsuchen, um binäre Blobs, proprietäre Firmware, Treiber oder andere ausführbare Module zu lokalisieren, und sie können sie laden und in den Kernelraum verknüpfen.[323]

Wenn es benötigt wird (z. B. für den Zugriff auf Bootsgeräte oder für die Geschwindigkeit) kann Firmware in den Kernel integriert werden, dies bedeutet, dass die Firmware in die Firmware aufgebaut wird vmlinux; Dies ist jedoch nicht immer eine praktikable Option für technische oder rechtliche Probleme (z. B. darf dies nicht mit Firmware tun, die nicht-gpl-kompatibel ist, obwohl dies dennoch häufig vorkommt).[324]

Warenzeichen

Linux ist registriert Warenzeichen von Linus Torvalds In den Vereinigten Staaten, in der Europäischen Union und in einigen anderen Ländern.[325][326] Ein Rechtsstreit um die Marke begann 1996, als William Della Croce, ein Anwalt, der nie an der Entwicklung von Linux beteiligt war, begann, Lizenzgebühren für die Verwendung des Wortes zu beantragen Linux. Nachdem sich nachgewiesen hatte, dass das Wort lange bevor Della Croces erstmalige Gebrauch behauptete, wurde die Marke an Torvalds verliehen.[327][328][329]

Siehe auch

Anmerkungen

  1. ^ Insgesamt wird die Linux -Quelle unter den Bedingungen der Nur GPL-2.0 Lizenz mit einer expliziten Ausnahme von sysum.[8][9] Abgesehen davon können einzelne Dateien unter einer anderen Lizenz zur Verfügung gestellt werden, die mit der Nur-GPL-2.0-Lizenz (d. H. Die GNU General Public Lizenz Version 2) oder eine doppelte Lizenz kompatibel sein muss, wobei eine der Auswahlmöglichkeiten die Auswahl ist GPL Version 2 oder eine GPLV2 -kompatible Lizenz. [10]

Verweise

  1. ^ "Linux -Logos und Maskottchen". Linux online. 2008. archiviert von das Original am 15. August 2010. Abgerufen 11. August 2009.
  2. ^ "Linux 5.19".31. Juli 2022. Abgerufen 1. August 2022.
  3. ^ "Linux 5.19-RC8". 24. Juli 2022. Abgerufen 24. Juli 2022.
  4. ^ Bergmann, Arnd (3. März 2022). "KBUILD: Wechsel zu -std = gnu11". git.kernel.org.
  5. ^ a b c d "KOPIEREN". git.kernel.org. Archiviert vom Original am 2. September 2021. Abgerufen 2. September 2021.
  6. ^ "GPL-2.0-Nur". SPDX.org. Abgerufen 2. September 2021.
  7. ^ "Linux-syscall-note". SPDX.org. Abgerufen 2. September 2021.
  8. ^ a b "GPL-2.0". git.kernel.org.
  9. ^ a b "Linux-syscall-note". git.kernel.org.
  10. ^ a b c d e f "Linux -Kernel -Lizenzregeln - Die Linux -Kernel -Dokumentation". www.kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 6. Januar 2020.
  11. ^ Liebe, Robert (2010). Linux -Kernelentwicklung. Addison-Wesley. p. 4. ISBN 978-0-672-32946-3. OCLC 268788260.
  12. ^ a b "Top500 Supercomputer -Websites: Betriebssystemfamilie / Linux". Top500.org. Archiviert Aus dem Original am 19. November 2012. Abgerufen 5. Oktober 2019.
  13. ^ a b c "Kernel -Build -System - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert Aus dem Original am 22. Juli 2020. Abgerufen 17. Juli 2020.
  14. ^ a b c "Kconfig Made config - die Linux -Kernel -Dokumentation". Kernel.org. Archiviert Aus dem Original am 17. Juli 2020. Abgerufen 13. September 2020.
  15. ^ a b "Kernelbuild - Linux -Kernel -Neulinge". kernelnewbies.org. Archiviert Aus dem Original am 19. Oktober 2020. Abgerufen 13. September 2020.
  16. ^ a b "Die SYSCTL -Schnittstelle". Linux.it. Archiviert vom Original am 17. Februar 2020. Abgerufen 13. September 2020.
  17. ^ a b "sysctl (8) - Linux -Handbuch" Seite ". Man7.org. Archiviert vom Original am 30. September 2020. Abgerufen 13. September 2020.
  18. ^ a b "Procfs (5) - Linux Manual Page". Man7.org. Archiviert vom Original am 24. September 2020. Abgerufen 13. September 2020.
  19. ^ Liebe, Robert (2010). Linux -Kernelentwicklung. Addison Wesley. p. 18. ISBN 978-0-672-32946-3. OCLC 268788260.
  20. ^ "C -Erweiterungen (unter Verwendung der GNU Compiler Collection (GCC))". gcc.gnu.org. Archiviert vom Original am 20. November 2020. Abgerufen 13. November 2020.
  21. ^ Liebe, Robert (2010). Linux -Kernelentwicklung. USA: Addison Wesley. S. 379–380. ISBN 9780672329463.
  22. ^ a b Richardson, Marjorie (1. November 1999). "Interview: Linus Torvalds". Linux Journal. Archiviert Aus dem Original am 14. Mai 2011. Abgerufen 20. August 2009.
  23. ^ a b Torvalds, Linus Benedict (26. August 1991). "Was möchten Sie am meisten in Minix sehen?". Newsgroup:comp.os.minix. Usenet: [email protected]. Archiviert vom Original am 9. Mai 2013. Abgerufen 14. September 2016.
  24. ^ a b Welsh, Matt; Dalheimer, Matthias Kalle; Kaufman, Lar (1999). "1". Laufen Linux (3. Aufl.). Sebastopol, CA: O'Reilly Media, Inc. ISBN 1-56592-976-4. OCLC 50638246.
  25. ^ a b "Kostenlose minixartige Kernelquellen für 386-at-Google Groups". Groups.google.com. 5. Oktober 1991. Archiviert vom Original am 1. März 2021. Abgerufen 19. März 2020.
  26. ^ Williams, Sam (März 2002). "Kapitel 9: Die GNU Allgemeine öffentliche Lizenz". Free wie in Freedom: Richard Stallmans Kreuzzug für kostenlose Software. O'Reilly. ISBN 0-596-00287-4. Abgerufen 12. November 2010.
  27. ^ a b c Christine Bresnahan & Richard Blum (2016). LPIC-2: Linux Professional Institute Certification Study Leitfaden: Prüfung 201 und Prüfung 202. John Wiley & Sons. p. 107. ISBN 9781119150794.
  28. ^ a b Torvalds, Linus. "Versionshinweise für Linux v0.12". Das Linux -Kernel -Archive. Archiviert Aus dem Original am 19. August 2007. Abgerufen 21. Februar 2007.
  29. ^ Fred Hantelmann (2016). Linux Start-up-Handbuch: Eine in sich geschlossene Einführung. Springer Science & Business Media. p. 1. ISBN 9783642607493.
  30. ^ a b c Fred Hantelmann (2016). Linux Start-up-Handbuch: Eine in sich geschlossene Einführung. Springer Science & Business Media. p. 16. ISBN 9783642607493.
  31. ^ Summers, David W. (19. Januar 1992). "Probleme mit Partitionen". Newsgroup:Alt.os.linux. Usenet: [email protected]. Archiviert Aus dem Original am 2. Juni 2013. Abgerufen 7. Januar 2007.
  32. ^ Clegg, Alan B. (31. März 1992). "Es ist hier!". Newsgroup:comp.os.linux. Usenet: [email protected]. Archiviert Aus dem Original am 2. Juni 2013. Abgerufen 7. Januar 2007.
  33. ^ "Anhang A: Die Tanenbaum-Torvalds-Debatte". Offene Quellen: Stimmen aus der Open -Source -Revolution. O'Reilly. 1999. ISBN 1-56592-582-3. Abgerufen 22. November 2006.
  34. ^ Tanenbaum, Andy (29. Januar 1992). "Linux ist veraltet". Newsgroup:comp.os.minix. Usenet: [email protected]. Archiviert Aus dem Original am 17. Oktober 2011. Abgerufen 10. Mai 2006.
  35. ^ Tanenbaum, Andy (12. Mai 2006). "Tanenbaum-Torvalds Debatte: Teil II". VU University Amsterdam. Archiviert Aus dem Original am 5. August 2015. Abgerufen 6. Januar 2007.
  36. ^ November 2012, David Hayward22 (22. November 2012). "Die Geschichte von Linux: Wie die Zeit den Pinguin geprägt hat". TechRadar. Archiviert Aus dem Original am 19. März 2020. Abgerufen 19. März 2020.
  37. ^ November 2012, David Hayward22 (22. November 2012). "Die Geschichte von Linux: Wie die Zeit den Pinguin geprägt hat". TechRadar. Archiviert Aus dem Original am 19. März 2020. Abgerufen 26. März 2020.
  38. ^ Love, Robert (Robert M.) (2010). Linux -Kernelentwicklung (3. Aufl.). Upper Saddle River, NJ: Addison-Wesley. p. 9. ISBN 978-0-672-32946-3. OCLC 268788260.
  39. ^ a b "Wie der Entwicklungsprozess funktioniert - die Linux -Kernel -Dokumentation". Kernel.org. Archiviert Aus dem Original am 9. Dezember 2017. Abgerufen 26. März 2020.
  40. ^ a b c Christine Bresnahan & Richard Blum (2016). LPIC-2: Linux Professional Institute Certification Study Leitfaden: Prüfung 201 und Prüfung 202. John Wiley & Sons. p. 108. ISBN 9781119150794.
  41. ^ Torvalds, Linus (9. Juni 1996). "Linux 2.0 Wirklich _is_ veröffentlicht." Lkml (Mailingliste). Archiviert Aus dem Original am 2. April 2015. Abgerufen 8. März 2015.
  42. ^ Torvalds, Linus (20. Januar 1999). "2.2.0-final". Lkml (Mailingliste). Archiviert Aus dem Original am 2. April 2015. Abgerufen 8. März 2015.
  43. ^ a b "Die wundervolle Welt von Linux 2.2". 26. Januar 1999. Archiviert Aus dem Original am 6. November 2014. Abgerufen 27. Oktober 2008.
  44. ^ "Linux/390 Beobachtungen und Notizen". Linuxvm.org. Archiviert Aus dem Original am 26. Februar 2019. Abgerufen 29. März 2020.
  45. ^ Torvalds, Linus (4. Januar 2001). "Und oh, übrigens." Lkml (Mailingliste). Archiviert Aus dem Original am 26. Januar 2016. Abgerufen 8. März 2015.
  46. ^ "Die wundervolle Welt von Linux 2.4". Archiviert von das Original am 17. März 2005. Abgerufen 27. Oktober 2008.
  47. ^ Torvalds, Linus (17. Dezember 2003). "Linux 2.6.0". Lkml (Mailingliste). Archiviert Aus dem Original am 2. April 2015. Abgerufen 28. Februar 2015.
  48. ^ "Proc (5) - Linux Manual Page" (Siehe/proc/sys/kernel/pid_max). Archiviert Aus dem Original am 7. Februar 2014. Abgerufen 19. Februar 2014.
  49. ^ "Btrfs Wiki". btrfs.wiki.kernel.org. Archiviert Aus dem Original am 25. April 2012. Abgerufen 17. Juli 2020.
  50. ^ Fred Hantelmann (2016). Linux Start-up-Handbuch: Eine in sich geschlossene Einführung. Springer Science & Business Media. S. 1–2. ISBN 9783642607493.
  51. ^ Kroah-Hartman, Greg (3. August 2006). "Adrian Bunk übernimmt jetzt den 2,6.16-stabilen Zweig". Lkml (Mailingliste). Archiviert Aus dem Original am 26. Januar 2016. Abgerufen 21. Februar 2015.
  52. ^ Rothwell, Stephen (12. Februar 2008). "Ankündigen: Linux-Next (oder Andrews Traum :-))". Lkml (Mailingliste). Archiviert Aus dem Original am 24. November 2010. Abgerufen 30. Oktober 2010.
  53. ^ Corbet, Jonathan (21. Oktober 2010). "Linux-Next- und Patch-Management-Prozess". Lwn.net. EKLKTIX, Inc. Archiviert Aus dem Original am 21. Juni 2010. Abgerufen 30. Oktober 2010.
  54. ^ "Das Linux -Kernel -Archiv". Kernel.org. Archiviert Aus dem Original am 30. Januar 1998. Abgerufen 22. Januar 2014.
  55. ^ Linux Kernel Mailingliste (17. Juni 2005). "Linux 2.6.12". Git-Commits-Head (Mailingliste). Archiviert Aus dem Original am 26. Januar 2016. Abgerufen 23. Januar 2008.
  56. ^ "Index von /pub/linux/kernel/v2.6". Kernel.org. Archiviert Aus dem Original am 10. Februar 2014. Abgerufen 2. März 2014.
  57. ^ "Fügen Sie eine Persönlichkeit hinzu, um 2.6.x -Versionsnummern [lwn.net] zu melden". lwn.net. Archiviert Aus dem Original am 16. Juli 2020. Abgerufen 15. Juli 2020.
  58. ^ a b Torvalds, Linus (21. Juli 2011). "Linux 3.0 Release". Linux -Kernel -Mailingliste. Archiviert Aus dem Original am 18. Oktober 2019. Abgerufen 16. Mai 2013.
  59. ^ Torvalds, Linus (30. Mai 2011). "Linux 3.0-RC1". Lkml (Mailingliste). Archiviert von das Original am 31. Mai 2011. Abgerufen 1. Juli 2013.
  60. ^ Vaughan-Nichols, Steven J. (13. Dezember 2012). "Auf Wiedersehen 386: Linux, um die Unterstützung für i386 Chips mit der nächsten großen Veröffentlichung abzugeben". ZDNET. CBS interaktiv. Archiviert Aus dem Original am 17. Februar 2015. Abgerufen 6. Februar 2013.
  61. ^ Fingas, Jon (15. Dezember 2012). "Linux, um die Unterstützung von i386 im 3.8 -Kernel zu fallen, machen Sie unsere Doom -Rig -Aktualisierung.". Engadget. AOL. Archiviert Aus dem Original am 2. April 2015. Abgerufen 22. März 2015.
  62. ^ Vaughan-Nichols, Steven J. (11. Dezember 2012). "Linux 3.7 kommt an, Armentwickler freuen sich". ZDNET. CBS interaktiv. Archiviert Aus dem Original am 5. November 2014. Abgerufen 6. Februar 2013.
  63. ^ Torvalds, Linus (2. September 2013). "Linux 3.11". Lkml (Mailingliste). Archiviert Aus dem Original am 26. Februar 2014. Abgerufen 3. September 2013.
  64. ^ "Linux 3.11". kernelnewbies.org. 2. September 2013. Abgerufen 21. Januar 2014.
  65. ^ Torvalds, Linus (12. April 2015). "Linux 4.0 veröffentlicht". Lkml (Mailingliste). Archiviert Aus dem Original am 13. April 2015. Abgerufen 12. April 2015.
  66. ^ "Der Linux Foundation veröffentlicht Linux -Entwicklungsbericht". Linux Foundation. 18. Februar 2015. Archiviert von das Original am 19. Juli 2016. Abgerufen 20. Februar 2015.
  67. ^ Michael Larabel (23. Juni 2014). "Linux -Kernel mit 19,5 Millionen Codezeilen, steigt fort.". Phoronix. Archiviert vom Original am 23. November 2020. Abgerufen 23. Juni 2015.
  68. ^ Corbet, Jonathan (3. August 2020). "Einige Statistiken aus dem 5.8 -Kernel -Zyklus". LWN - Linux Weekly News. Archiviert Aus dem Original am 4. September 2020. Abgerufen 11. August 2020.
  69. ^ "Stack Overflow Developer Survey 2019 - beliebteste Technologien". Paketüberfluss. Archiviert Aus dem Original am 8. Oktober 2020. Abgerufen 17. März 2020.
  70. ^ "Stack Overflow Developer Survey 2019 - Entwicklungsumgebungen und Tools". Paketüberfluss. Archiviert vom Original am 7. März 2020. Abgerufen 17. März 2020.
  71. ^ "Nutzungsstatistik und Marktanteil der Betriebssysteme für Websites, März 2020". w3techs.com. Abgerufen 17. März 2020.
  72. ^ "Nutzungsstatistik und Marktanteil der Unix für Websites, März 2020". w3techs.com. Abgerufen 17. März 2020.
  73. ^ "Top500 Supercomputer -Websites: Betriebssystemfamilie / Linux". Top500.org. Archiviert Aus dem Original am 19. November 2012. Abgerufen 5. Oktober 2019.
  74. ^ "Gartner sagt, dass der Verkauf von Tablets im Jahr 2014 weniger als 10 Prozent aller Geräte ausmachen wird" (Pressemitteilung). Egham, Großbritannien: Gärtner. 15. Oktober 2014. archiviert von das Original am 17. Oktober 2014. Abgerufen 19. Oktober 2014.
  75. ^ Lunden, Ingrid (15. Oktober 2014). "Das Umsatzwachstum des Tablets sinkt im Jahr 2014, da Android -Smartphones weiter steigen: Gartner". Techcrunch. AOL. Archiviert Aus dem Original am 23. Oktober 2014. Abgerufen 23. Oktober 2014.
  76. ^ "Globale PC -Sendungen übersteigen die Prognose mit einer leichten Verbesserung der Verbrauchernachfrage, während Apple laut IDC auf Platz 5 der Spot überschreitet." (Pressemitteilung). Framingham, MA: IDC. 8. Oktober 2014. archiviert von das Original am 11. Oktober 2014. Abgerufen 19. Oktober 2014.
  77. ^ Liebe, Robert (2010). Linux -Kernelentwicklung. Addison-Wesley. p. 338. ISBN 978-0-672-32946-3. OCLC 268788260.
  78. ^ "LIESMICH". git.kernel.org. Archiviert von das Original am 24. Juli 2012. Abgerufen 24. März 2021.
  79. ^ "Schedule (7) - Linux -Handbuch Seite". Man7.org. Archiviert Aus dem Original am 17. Juli 2020. Abgerufen 27. Juli 2020.
  80. ^ "FAQ: Präsentation". kernelnewbies.org. 22. August 2009. Archiviert vom Original am 7. August 2020. Abgerufen 7. Mai 2015.
  81. ^ a b Jonathan Corbet (24. Februar 2003). "Treiberporting: Der präventible Kernel". Lwn.net. Archiviert vom Original am 10. August 2020. Abgerufen 7. Mai 2015.
  82. ^ a b Molnár, Ingo (13. April 2007). "[Patch] Modular Scheduler Core und völlig fairer Scheduler [CFS]". Lkml (Mailingliste). Archiviert vom Original am 3. November 2020. Abgerufen 30. März 2020.
  83. ^ "Ganzer fairer Scheduler | Linux Journal". Linuxjournal.com. Archiviert Aus dem Original am 3. August 2020. Abgerufen 30. März 2020.
  84. ^ "IOCTL (2) - Linux -Handbuch Seite". Man7.org. Archiviert Aus dem Original am 20. Juli 2020. Abgerufen 11. August 2020.
  85. ^ "AIO (7) - Linux Manual Page". Man7.org. Archiviert vom Original am 12. April 2020. Abgerufen 11. August 2020.
  86. ^ "io_setup (2) - Linux Manual Page". Man7.org. Archiviert vom Original am 20. August 2020. Abgerufen 11. August 2020.
  87. ^ "KVM". Linux-kvm.org. Archiviert vom Original am 28. März 2020. Abgerufen 29. März 2020.
  88. ^ "TechComparison - Linux Virtualisierung Wiki". Virt.kernelnewbies.org. Archiviert Aus dem Original am 3. August 2020. Abgerufen 29. März 2020.
  89. ^ "Virtualisierung_support_through_kvm in Linux_2_6_20 - Linux -Kernel -Neulinge". Kernelnewbies.org. Archiviert vom Original am 29. November 2019. Abgerufen 29. März 2020.
  90. ^ Coekaerts, Wim. "Linux Mainline enthält alle Xen -Code -Bits für DOM0- und DOMU -Unterstützung". blogs.oracle.com. Archiviert Aus dem Original am 3. August 2020. Abgerufen 29. März 2020.
  91. ^ "Xen feiert die Full DOM0- und DOMU -Unterstützung in Linux 3.0 - blog.xen.org". 7. Juni 2011. archiviert von das Original am 7. Juni 2011. Abgerufen 29. März 2020.
  92. ^ Wilk, Konrad Rzeszuutek (31. Januar 2014). "Linux 3.14 und PVH". Xen -Projekt. Archiviert vom Original am 29. März 2020. Abgerufen 29. März 2020.
  93. ^ "Einführung in die Xen Virtualisierung | Virtualisierungshandbuch | OpenSuse Sprung 15.2". doc.opensuse.org. Archiviert Aus dem Original am 28. September 2020. Abgerufen 29. September 2020.
  94. ^ "Virtualisierungstechnologie | Virtualisierungshandbuch | OpenSuse Sprung 15.3". doc.opensuse.org. Abgerufen 30. September 2021.
  95. ^ a b "Selinux -Projekt". GitHub. Archiviert Aus dem Original am 12. Dezember 2019. Abgerufen 10. Januar 2020.
  96. ^ a b "Apparmor - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 8. Mai 2020. Abgerufen 10. Januar 2020.
  97. ^ Jake Edge (25. November 2008). "Charaktergeräte im Benutzerbereich". Lwn.net. Archiviert vom Original am 26. Januar 2021. Abgerufen 7. Mai 2015.
  98. ^ Jonathan Corbet (2. Mai 2007). "UIO: Benutzer-Raum-Treiber". Lwn.net. Archiviert vom Original am 11. November 2020. Abgerufen 7. Mai 2015.
  99. ^ a b c d "Stabil-api-Nonsense-Linux-Kernel-Quellbaum". git.kernel.org. Archiviert vom Original am 5. März 2021. Abgerufen 18. April 2020.
  100. ^ Gorman, Mel (15. Februar 2004). Verständnis des Linux Virtual Memory Managers (PDF). Prentice Hall. p. 26. ISBN 0-13-145348-3. Archiviert (PDF) Aus dem Original am 3. Mai 2019. Abgerufen 27. Januar 2020.
  101. ^ Greg Ungerer. "Uclinux Mainline -Ankündigung". Archiviert von das Original am 31. Oktober 2007. Abgerufen 15. Januar 2008.
  102. ^ a b Nguyen, Binh (30. Juli 2004). "Linux -Dateisystem Hierarchie: Kapitel 1. Linux -Dateisystem Hierarchie". Das Linux -Dokumentationsprojekt. Archiviert vom Original am 2. Dezember 2020. Abgerufen 28. November 2012.
  103. ^ "Admin -Handbuch Readme". git.kernel.org.
  104. ^ "Linux Kernel Release 5.x - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 4. Januar 2020.
  105. ^ "Readme \ Abi \ Dokumentation - Kernel/Git/Torvalds/Linux.git - Linux -Kernel -Quellbaum". git.kernel.org. Archiviert Aus dem Original am 1. Oktober 2020. Abgerufen 18. April 2020.
  106. ^ "syscalls \ stabil \ abi \ documentation - Kernel/git/torvalds/linux.git - Linux Kernel Quellbaum". git.kernel.org. Archiviert Aus dem Original am 2. Oktober 2020. Abgerufen 18. April 2020.
  107. ^ a b "1.Intro.rst - Dokumentation/Prozess/1.Intro.rst - Linux -Quellcode (v5.8) - Bootlin". elixir.bootlin.com. Abgerufen 8. August 2020.
  108. ^ a b "symalls". Man7. Archiviert Aus dem Original am 15. Januar 2020. Abgerufen 28. Januar 2020.
  109. ^ "Intro (2) - Linux Manual Page". Man7.org. Archiviert Aus dem Original am 17. Juli 2020. Abgerufen 16. Juli 2020.
  110. ^ "Klon". Man7.org. Archiviert Aus dem Original am 18. Januar 2020. Abgerufen 28. Januar 2020.
  111. ^ "feature_test_macros". Man7.org. Archiviert Aus dem Original am 19. Januar 2020. Abgerufen 28. Januar 2020.
  112. ^ "VDSO (7) - Linux Manual Page". Man7.org. Archiviert vom Original am 2. Februar 2020. Abgerufen 2. Februar 2020.
  113. ^ a b "Futex (2) - Linux Manual Page". Man7.org. Archiviert vom Original am 31. Januar 2020. Abgerufen 2. Februar 2020.
  114. ^ "SYSCALL (2) - Linux Manual Page". Man7.org. Archiviert Aus dem Original am 21. Januar 2020. Abgerufen 2. Februar 2020.
  115. ^ "sysfs (5) - Linux Manual Page". Man7.org. Archiviert Aus dem Original am 18. Januar 2020. Abgerufen 6. Januar 2020.
  116. ^ "Regeln zum Zugriff auf Informationen in SYSFs - der Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 6. Januar 2020.
  117. ^ "Linux Foundation Referenzierte Spezifikationen". refSpecs.linuxbase.org. Abgerufen 3. Februar 2020.
  118. ^ "LSB -Spezifikationen". refSpecs.linuxbase.org. Abgerufen 3. Februar 2020.
  119. ^ "Linux Standard Base Desktop -Spezifikation, generischer Teil". refSpecs.linuxbase.org. Abgerufen 3. Februar 2020.
  120. ^ "Normative Verweisungen". RefSpecs.LinuxFoundation.org. Archiviert vom Original am 12. August 2020. Abgerufen 3. Februar 2020.
  121. ^ "Linux -Standard -Basis -Kernspezifikation, generischer Teil". RefSpecs.LinuxFoundation.org. Archiviert vom Original am 29. November 2019. Abgerufen 3. Februar 2020.
  122. ^ "System V -Anwendung Binärschnittstelle - Ausgabe 4.1" (PDF). SCO.com. Archiviert (PDF) vom Original am 13. Dezember 2019. Abgerufen 3. Februar 2020.
  123. ^ "Xinuos Inc. | Entwickler | Gabi | 2003-12-17 | System V Application Binary Interface-Entwurf". SCO.com. Archiviert vom Original am 3. Februar 2020. Abgerufen 3. Februar 2020.
  124. ^ "Ausführbares und Verknüpfungsformat (Elf)". RefSpecs.linuxbase.org. Abgerufen 3. Februar 2020.
  125. ^ "Elf (5) - Linux -Handbuch Seite". Man7.org. Archiviert vom Original am 30. November 2020. Abgerufen 18. November 2020.
  126. ^ "Linux-Standard-Basis-Kernspezifikation für x86-64". RefSpecs.linuxbase.org. Abgerufen 3. Februar 2020.
  127. ^ "System -V -Anwendung Binärschnittstelle - Entwurf". RefSpecs.linuxbase.org. Abgerufen 3. Februar 2020.
  128. ^ Seyfarth, Ray (2012). Einführung in 64 -Bit -Intel -Assembler -Sprachprogrammierung für Linux.p.170. ISBN 9781478119203.
  129. ^ "Anatomie eines Systemaufrufs, Teil 1 [lwn.net]". lwn.net. Archiviert Aus dem Original am 18. August 2020. Abgerufen 16. Juli 2020.
  130. ^ "Anatomie eines Systemaufrufs, Teil 2 [lwn.net]". lwn.net. Archiviert Aus dem Original am 6. August 2020. Abgerufen 16. Juli 2020.
  131. ^ Deucher, Alex (7. Oktober 2014). "AMDs neuer einheitlicher Open Source -Treiber". X.org Foundation. Archiviert Aus dem Original am 21. Januar 2015. Abgerufen 21. Januar 2015.
  132. ^ a b "Symbole - unzuverlässige Anleitung zum Hacken des Linux -Kernels - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert Aus dem Original am 3. August 2020. Abgerufen 8. Februar 2020.
  133. ^ a b "Exportierte Symbole und die interne API [lwn.net]". Lwn.net. Archiviert vom Original am 31. März 2020. Abgerufen 15. März 2020.
  134. ^ a b "Unerporting kallsyms_lookup_name () [lwn.net]". Lwn.net. Archiviert vom Original am 1. April 2020. Abgerufen 15. März 2020.
  135. ^ "Bäume I: Radix -Bäume [lwn.net]". lwn.net. Archiviert vom Original am 8. November 2020. Abgerufen 13. November 2020.
  136. ^ "Bäume II: Rotschwarz [lwn.net]". lwn.net. Archiviert vom Original am 13. November 2020. Abgerufen 13. November 2020.
  137. ^ "Unzuverlässige Anleitung zum Hacken des Linux -Kernels". Kernel.org (1. Aufl.). 2005. Archiviert vom Original am 16. Februar 2020. Abgerufen 15. März 2020.
  138. ^ "Unzuverlässige Anleitung zum Hacken des Linux -Kernels - der Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 15. März 2020.
  139. ^ "Unzuverlässige Anleitung zum Sperren - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 15. März 2020.
  140. ^ "SCSI Interfaces Guide - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 2. Juni 2020. Abgerufen 11. Juni 2020.
  141. ^ "Libata Developer's Guide - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 30. Mai 2020. Abgerufen 11. Juni 2020.
  142. ^ "DRM -Interna - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 1. Juni 2020. Abgerufen 11. Juni 2020.
  143. ^ "Kernel -Modus -Einstellung (KMS) - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 11. Juni 2020. Abgerufen 11. Juni 2020.
  144. ^ "Einführung von DMA -Puffer -Sharing -Mechanismus [LWN.net]". lwn.net. Archiviert vom Original am 11. Juni 2020. Abgerufen 11. Juni 2020.
  145. ^ "Teilen von CPU- und GPU -Puffern unter Linux*". 01.org. 12. Mai 2016. Archiviert vom Original am 11. Juni 2020. Abgerufen 11. Juni 2020.
  146. ^ "Pufferfreigabe und Synchronisation - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 1. Juni 2020. Abgerufen 11. Juni 2020.
  147. ^ "Über Mac80211". Linux Kernel Organization, Inc. Archiviert vom Original am 1. Februar 2021. Abgerufen 8. Juni 2014.
  148. ^ "Linux 802.11 Treiberentwicklerhandbuch - Die Linux -Kernel -Dokumentation". Kernel.org. Abgerufen 19. November 2021.
  149. ^ "[Patch v3 1/2] Fork: Clone3 hinzufügen [lwn.net]". lwn.net. Archiviert Aus dem Original am 16. Juli 2020. Abgerufen 16. Juli 2020.
  150. ^ "Klon (2) - Linux Manual Page". Man7.org. Archiviert Aus dem Original am 15. Juli 2020. Abgerufen 15. Juli 2020.
  151. ^ "Clone3 (), fchmodat4 () und fsinfo () [lwn.net]". lwn.net. Archiviert vom Original am 15. Juni 2020. Abgerufen 15. Juli 2020.
  152. ^ "ld -linux.so (8) - Linux Manual Page". Man7.org. Archiviert vom Original am 26. November 2020. Abgerufen 18. November 2020.
  153. ^ "NPTL (7) - Linux Manual Page". Man7.org. Archiviert vom Original am 25. Juli 2020. Abgerufen 25. Juli 2020.
  154. ^ "PTHREADS (7) - Linux Manual Page". Man7.org. Archiviert Aus dem Original am 15. Juli 2020. Abgerufen 25. Juli 2020.
  155. ^ "pthread_create (3) - Linux Manual Page". Man7.org. Archiviert vom Original am 25. Juli 2020. Abgerufen 25. Juli 2020.
  156. ^ "Futex (7) - Linux -Handbuch Seite". Man7.org. Archiviert Aus dem Original am 15. Juli 2020. Abgerufen 25. Juli 2020.
  157. ^ "Kernel -Threads einfach [lwn.net]". lwn.net. Archiviert vom Original am 31. März 2020. Abgerufen 15. August 2020.
  158. ^ "Execve (2) - Linux Manual Page". Man7.org. Archiviert Aus dem Original am 15. Juli 2020. Abgerufen 17. Juli 2020.
  159. ^ "Funktionen (7) - Linux Manual Page". Man7.org. Archiviert Aus dem Original am 15. Juli 2020. Abgerufen 2. August 2020.
  160. ^ a b Bar, Moshe (1. April 2000). "Der Linux -Scheduler". Linux Journal. Belltown Media, Inc. Archiviert vom Original am 2. Februar 2021. Abgerufen 14. April 2012.
  161. ^ BKK19 -TR03 - Der Linux -Kernel -Scheduler - Übersicht, archiviert vom Original am 15. Dezember 2021, abgerufen 17. Mai 2021
  162. ^ Liebe, Robert (2010). "4". Linux -Kernelentwicklung. Addison-Wesley. S. 46–47. ISBN 978-0-672-32946-3. OCLC 268788260.
  163. ^ Liebe, Robert (2010). "4". Linux -Kernelentwicklung (3. Aufl.). Addison Wesley. S. 62–63. ISBN 9780672329463.
  164. ^ "Senkung unter Linux: Einführung eines präventiblen Kernels | Linux Journal". Linuxjournal.com. Archiviert vom Original am 9. August 2020. Abgerufen 17. August 2020.
  165. ^ Liebe, Robert (2010). "4". Linux -Kernelentwicklung (3. Aufl.). Addison Wesley. S. 46–50. ISBN 9780672329463.
  166. ^ "CFS Scheduler - Die Linux -Kernel -Dokumentation". Kernel.org. Abgerufen 1. Mai 2021.
  167. ^ "IEEE-Standard für Informationstechnologie-Tragbare Betriebssystemschnittstelle, POSIX.1B, Echtzeit-Erweiterungen (IEEE STD 1003.1B-1993)". Archiviert Aus dem Original am 16. November 2010. Abgerufen 17. März 2016.
  168. ^ Larabel, Michael (24. Januar 2014). "Der Linux 3.14 -Kernel hat bereits viele aufregende Funktionen". Phoronix. Archiviert vom Original am 13. August 2020. Abgerufen 3. Februar 2014.
  169. ^ "Linux-Kernel 3.14, Abschnitt 1.1. Deadline Planungsklasse für eine bessere Echtzeitplanung". kernelnewbies.org. 30. März 2014. Archiviert Aus dem Original am 15. Januar 2021. Abgerufen 2. April 2014.
  170. ^ "RT-Mutex-Implementierungsdesign-Die Linux-Kernel-Dokumentation". Kernel.org. Abgerufen 17. Dezember 2021.
  171. ^ "RT-Mutex-Subsystem mit PI-Unterstützung-Die Linux-Kernel-Dokumentation". Kernel.org. Abgerufen 17. Dezember 2021.
  172. ^ McKenney, Paul (10. August 2005). "Eine Übersicht über die Vorausstellung in Echtzeit". Lwn.net. Archiviert vom Original am 10. August 2020. Abgerufen 5. Februar 2012.
  173. ^ "OSADL -Projekt: Echtzeit Linux". Osadl. Archiviert vom Original am 4. Februar 2021. Abgerufen 5. Februar 2012.
  174. ^ a b "Steven-Rostedt_on_Preempt_Rt" (PDF).
  175. ^ Liebe, Robert (2010). "9". Linux -Kernelentwicklung (3. Aufl.). Addison Wesley. p. 167. ISBN 9780672329463.
  176. ^ "Sperren - Die Linux -Kernel -Dokumentation". Kernel.org. Abgerufen 17. Dezember 2021.
  177. ^ Liebe, Robert (2010). "10". Linux -Kernelentwicklung (3. Aufl.). Addison Wesley. S. 176–198. ISBN 9780672329463.
  178. ^ "Locking.RST - Dokumentation/Kernel -Hacking/Locking.RST - Linux -Quellcode (v5.11.10) - Bootlin". elixir.bootlin.com. Abgerufen 29. März 2021.
  179. ^ "Was ist RCU grundsätzlich? [Lwn.net]". lwn.net. Abgerufen 29. März 2021.
  180. ^ "Was ist RCU? Teil 2: Verwendung [lwn.net]". lwn.net. Abgerufen 29. März 2021.
  181. ^ "RCU Teil 3: Die RCU -API [lwn.net]". lwn.net. Abgerufen 29. März 2021.
  182. ^ "Linux-Kernel-Speichermodell". Open-STD.org. Abgerufen 29. März 2021.
  183. ^ "Ein formales Kernel-Speicherbestellmodell (Teil 1) [lwn.net]". lwn.net. Abgerufen 29. März 2021.
  184. ^ "Ein formales Kernel-Speicherbestellmodell (Teil 2) [LWN.NET]". lwn.net. Abgerufen 29. März 2021.
  185. ^ Stern, Alan. "Erklärung des Linux-Kernel-Speicherkonsistenzmodells".
  186. ^ "Kernel/Git/Torvalds/Linux.git - Linux -Kernel -Quellbaum". git.kernel.org. Abgerufen 17. Dezember 2021.
  187. ^ a b "Sperrtypen und ihre Regeln - die Linux -Kernel -Dokumentation". Kernel.org. Abgerufen 17. Dezember 2021.
  188. ^ "Kurze Themen: Echtzeit, Futexes und NTFS3". Lwn.net. Abgerufen 20. Februar 2022.
  189. ^ "RT-Mutex-Subsystem mit PI-Unterstützung-Die Linux-Kernel-Dokumentation". Kernel.org. Abgerufen 20. Februar 2022.
  190. ^ "RT-Mutex-Implementierungsdesign-Die Linux-Kernel-Dokumentation".
  191. ^ "Laufzeitverriegelungskorrektheit Validator - Die Linux -Kernel -Dokumentation". Kernel.org. Abgerufen 17. Dezember 2021.
  192. ^ "Interrupts, Threads und Lockdep [lwn.net]". lwn.net. Abgerufen 17. Dezember 2021.
  193. ^ Liebe, Robert (2010). Linux -Kernelentwicklung. Addison Wesley. S. 133–137. ISBN 9780672329463.
  194. ^ Liebe, Robert (2010). Linux -Kernelentwicklung. Addison Wesley. p. 20. ISBN 9780672329463.
  195. ^ "Das Linux -Speicher -Stack -Diagramm". Thomas-krenn.com. Archiviert Aus dem Original am 3. August 2020. Abgerufen 19. März 2020.
  196. ^ "Der Slub -Allocator". Lwn.net. 11. April 2007. Abgerufen 20. Februar 2022.
  197. ^ a b "Plattenallocatoren im Linux -Kernel: Platte, Slb, Slub" (PDF). Events.static.linuxfound.org. Abgerufen 20. Februar 2022.
  198. ^ "Kernel/Git/Torvalds/Linux.git - Linux -Kernel -Quellbaum". Git.kernel.org.
  199. ^ a b c Torvalds, Linus (Januar 1999). "Die Linux -Kante". Offene Quellen: Stimmen aus der Open -Source -Revolution. O'Reilly. ISBN 1-56592-582-3. Abgerufen 13. Oktober 2013.
  200. ^ "Linux auf das DEC -Alpha portieren: Der Kernel und die Shell". Archiviert Aus dem Original am 5. September 2019. Abgerufen 5. Oktober 2019.
  201. ^ "Linux über Alpha: Eine strategische Wahl". Archiviert Aus dem Original am 4. September 2019. Abgerufen 5. Oktober 2019.
  202. ^ "Avalon Cluster | Top500 Supercomputer -Websites". Top500.org. Archiviert Aus dem Original am 5. Oktober 2019. Abgerufen 5. Oktober 2019.
  203. ^ Wang, David (6. Mai 2010). "Android läuft jetzt auf dem iPhone 3G". Techhive. Idg. Archiviert Aus dem Original am 22. Juli 2010. Abgerufen 11. Juli 2010.
  204. ^ "Lkddb". LKDDB -Projekt. Archiviert vom Original am 25. Februar 2021. Abgerufen 26. Januar 2021.
  205. ^ "Linux -Hardware". Linux -Hardwareprojekt. Archiviert vom Original am 26. Januar 2021. Abgerufen 26. Januar 2021.
  206. ^ "Linux -Kernel 4.0, Abschnitt 1.2. Live -Patching". kernelnewbies.org. 26. April 2015. Archiviert Aus dem Original am 4. Mai 2015. Abgerufen 27. April 2015.
  207. ^ Jonathan Corbet (25. Februar 2015). "Ein schwieriger Patch für Live -Patching". Lwn.net. Archiviert Aus dem Original am 27. April 2015. Abgerufen 27. April 2015.
  208. ^ "KERNEL/GIT/TORVALDS/Linux.git: Ziehen Sie die Live -Patching -Infrastruktur von Jiri Kosina (Linux -Kernel -Quellbaum)" an. ". kernel.org. 11. Februar 2015. Archiviert Aus dem Original am 11. Juni 2015. Abgerufen 27. April 2015.
  209. ^ Mookhey, K. K.; Burghat, Nilesh (1. Juli 2005). Linux: Sicherheits-, Prüfungs- und Steuerfunktionen. VEREINIGTE STAATEN VON AMERIKA: Isaca. p. 14. ISBN 1-893209-78-4. Archiviert Aus dem Original am 2. Juni 2013. Abgerufen 31. Dezember 2010.
  210. ^ Hatch, Brian (15. Juli 2008). Hacking Exponte Linux: Linux -Sicherheitsgeheimnisse und Lösungen. McGraw-Hill Osborne Media. p. 524. ISBN 978-0-07-226257-5. Archiviert Aus dem Original am 2. Juni 2013. Abgerufen 31. Dezember 2010.
  211. ^ Jaeger, Trent (7. Oktober 2008). Betriebssystemsicherheit. Morgan und Claypool Publishers. p. 122. ISBN 978-1-59829-212-1. Archiviert Aus dem Original am 2. Juni 2013. Abgerufen 31. Dezember 2010.
  212. ^ "Cap_perfmon - und neue Funktionen im Allgemeinen [lwn.net]". lwn.net. Archiviert Aus dem Original am 4. August 2020. Abgerufen 2. August 2020.
  213. ^ "Verbrauch des Linux -Sicherheitsmoduls - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 2. Mai 2020. Abgerufen 10. Januar 2020.
  214. ^ "National Security Agency | Zentraler Sicherheitsdienst> Was wir tun> Forschung> SE Linux> SE Linux FAQs". Nsa.gov. Archiviert Aus dem Original am 18. September 2019. Abgerufen 10. Januar 2020.
  215. ^ "SecCompp BPF (Secure Computing with Filter) - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 10. Januar 2020.
  216. ^ Andrews, Jeremy (16. Juli 2008). "Sicherheitsfehler und vollständige Offenlegung". Kerneltrap. Archiviert von das Original am 19. Juli 2008. Abgerufen 31. Dezember 2010.
  217. ^ Spengler, Brad (16. Juli 2008). "Linux 'inoffizielle Sicherheits-durch-Überdeckungspolitik". Vollständige Offenlegung (Mailingliste). Archiviert vom Original am 7. August 2020. Abgerufen 31. Dezember 2010.
  218. ^ a b Foundation, The Linux (25. Oktober 2017). "2017 State of Linux -Kernelentwicklung". Die Linux Foundation. Archiviert vom Original am 27. Mai 2020. Abgerufen 27. Mai 2020.
  219. ^ "Mitwirkender Covenant -Verhaltenskodex". Die Linux -Kernel -Dokumentation. Abgerufen 6. Oktober 2021.
  220. ^ "Linux -Kernel -Mitarbeiterin Covenant of Conduct Interpretation". Die Linux -Kernel -Dokumentation. Abgerufen 6. Oktober 2021.
  221. ^ Williams, Dan. "[Patch] CodingStyle: inklusive Terminologie". Linux -Kernel -Mailingliste.
  222. ^ "Git -Clone (1) - Linux Manual Page". Man7.org. Archiviert vom Original am 14. Oktober 2020. Abgerufen 16. August 2020.
  223. ^ "Git -Pull (1) - Linux -Handbuch Seite". Man7.org. Archiviert vom Original am 12. November 2020. Abgerufen 16. August 2020.
  224. ^ Robert Love (2010). Entwicklung von Linux -Kernel: Linux -Kernelentwicklung. Pearson Ausbildung. p. 11. ISBN 9780768696790.
  225. ^ Robert Love (2010). Entwicklung von Linux -Kernel: Linux -Kernelentwicklung. Pearson Ausbildung. p. 12. ISBN 9780768696790.
  226. ^ "Wie der Entwicklungsprozess funktioniert". Archiviert Aus dem Original am 9. Dezember 2017. Abgerufen 4. Februar 2018.
  227. ^ Robert Love (2010). Entwicklung von Linux -Kernel: Linux -Kernelentwicklung. Pearson Ausbildung. p. 13. ISBN 9780768696790.
  228. ^ "Howto to linux Kernel -Entwicklung - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 4. Januar 2020.
  229. ^ "Linux -Kernel -Codierungsstil - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert Aus dem Original am 5. Januar 2020. Abgerufen 4. Januar 2020.
  230. ^ Kubbilun, Ingo A. (2. Juni 2004). "Linux -Kernel -Patch für Intel Compiler" (auf Deutsch). Pyrillion.org. Archiviert von das Original am 22. Juli 2011. Abgerufen 12. November 2010.
  231. ^ Timothy (26. Februar 2009). "Hochleistungs -Linux -Kernel -Projekt - LinuxDNA". Slashdot Linux. Würfelbestände. Archiviert Aus dem Original am 18. Oktober 2019. Abgerufen 30. Oktober 2010.
  232. ^ Ryan, Justin (25. Februar 2009). "LinuxDNA lädt Linux mit dem Intel C/C ++ - Compiler aus". Linux Journal. Belltown Media, Inc. Archiviert vom Original am 9. November 2020. Abgerufen 30. Oktober 2010.
  233. ^ Lelbach, Bryce (25. Oktober 2010). "Clang baut einen funktionierenden Linux -Kernel (Stiefel bis RL5 mit SMP, Networking und X, Selbsthosts)". CFE-dev (Mailingliste). Archiviert von das Original am 7. September 2015.
  234. ^ Larabel, Michael (12. April 2014). "Linux 3.15 kann fast unter LLVMs Klang zusammengestellt werden". Phoronix. Archiviert vom Original am 13. August 2020. Abgerufen 10. Juni 2014.
  235. ^ Larabel, Michael. "Patch von Patch von Patch, LLVM Clang kann besser den Linux -Kernel bauen". Phoronix. Archiviert vom Original am 13. August 2020. Abgerufen 20. November 2014.
  236. ^ Edge, Jake (7. Mai 2013). "LFCS: Das LLVMlinux -Projekt". Lwn.net. Archiviert vom Original am 10. August 2020. Abgerufen 3. März 2015.
  237. ^ Möller, Jan-Simon (2. Februar 2014). "LLVMLINUX: Der Linux -Kernel mit Drachenflügeln" (PDF). LLVM -Projekt. Archiviert (PDF) Aus dem Original am 3. August 2020. Abgerufen 3. März 2015.
  238. ^ Desaulniers, Nick; Hackmann, Greg; Hines, Stephen (18. Oktober 2017). "2017 LLVM Developers 'Meeting: Erstellung von Android UserSpace und Linux -Kernel mit LLVM". Youtube. Archiviert vom Original am 31. Dezember 2020. Abgerufen 7. Dezember 2020.
  239. ^ Hackmann, Greg (2. Februar 2017). "Marlin-Nougat-MR1-Clang Patch-Serie". Archiviert vom Original am 10. Dezember 2020. Abgerufen 6. Dezember 2020.
  240. ^ Kaehlcke, Matthias (22. Oktober 2018). "CROS-KERNEL2: Machen Sie den Standard-Compiler für Kernel-Builds.". Archiviert vom Original am 10. Dezember 2020. Abgerufen 6. Dezember 2020.
  241. ^ Larabel, Michael (4. Februar 2019). "Verwenden von LLVM Clang zum Kompilieren des Linux -Kernels erhitzt sich dank Google erneut.". Phoronix. Archiviert vom Original am 25. November 2020. Abgerufen 6. Dezember 2020.
  242. ^ Desaulniers, Nick (10. Dezember 2019). "VTS: KERNEL: Durchsetzen von VTS_KERNEL_TOOLCHAIN ​​für alle Target_arch für R". Archiviert vom Original am 10. Dezember 2020. Abgerufen 6. Dezember 2020.
  243. ^ Desaulniers, Nick (19. November 2020). "Re: Verstoß gegen Funktion Zeiger Signatur". Lkml. Abgerufen 6. Dezember 2020.
  244. ^ Liebe, Robert (2010). Linux -Kernelentwicklung (3. Aufl.). Addison-Wesley. p. 364. ISBN 978-0-672-32946-3. OCLC 268788260.
  245. ^ Bradford, John (8. März 2003). "Re: Was ist ein oops". Lkml (Mailingliste). Archiviert vom Original am 31. Oktober 2014. Abgerufen 30. Oktober 2010.
  246. ^ Liebe, Robert (2010). Linux -Kernelentwicklung. Addison Wesley. p. 371. ISBN 9780672329463. OCLC 268788260.
  247. ^ "Syslog (2) - Linux -Handbuch" Seite ". Man7.org. Archiviert vom Original am 13. Oktober 2020. Abgerufen 15. August 2020.
  248. ^ "KMSG: Export -Printk -Datensätze in die Schnittstelle /dev /kmsg [lwn.net]". lwn.net. Archiviert Aus dem Original am 2. Oktober 2015. Abgerufen 16. August 2020.
  249. ^ "systemd". Freedesktop.org. Archiviert Aus dem Original am 18. August 2020. Abgerufen 16. August 2020.
  250. ^ "Systemd -Journald (8) - Linux Manual Page". Man7.org. Archiviert vom Original am 12. August 2020. Abgerufen 15. August 2020.
  251. ^ Sehen Sie, was Ihr Computer mit FTRACE -Dienstprogrammen macht, archiviert vom Original am 15. Dezember 2021, abgerufen 9. Mai 2021
  252. ^ "Debugging des Kernels mit FTRACE - Teil 1 [lwn.net]". lwn.net. Archiviert vom Original am 9. November 2020. Abgerufen 15. September 2020.
  253. ^ "Debugging des Kernels mit FTRACE - Teil 2 [lwn.net]". lwn.net. Archiviert vom Original am 31. März 2020. Abgerufen 15. September 2020.
  254. ^ "Ftrace - Funktionstracer - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert Aus dem Original am 19. September 2020. Abgerufen 15. September 2020.
  255. ^ "Boot-Zeitverfolgung-Die Linux-Kernel-Dokumentation". Kernel.org. Archiviert vom Original am 31. Oktober 2020. Abgerufen 19. September 2020.
  256. ^ "Kernel Sonden (KPROBES) - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert Aus dem Original am 11. Oktober 2020. Abgerufen 6. Oktober 2020.
  257. ^ "UProbe-Tracer: UProbe-basierte Ereignisverfolgung-Die Linux-Kernel-Dokumentation". Kernel.org. Archiviert vom Original am 4. Dezember 2020. Abgerufen 6. Oktober 2020.
  258. ^ "Verwenden von KGDB, KDB und The Kernel Debugger Interna". Mirrors.Edge.kernel.org. Archiviert vom Original am 26. Januar 2021. Abgerufen 3. November 2020.
  259. ^ Gene Sally (2010). Pro Linux -eingebettete Systeme. Apress. p. 252. ISBN 9781430272267.
  260. ^ "Konfliktkodex". Abgerufen 4. Februar 2018.[Permanent Dead Link]
  261. ^ Sharwood, Simon (6. Oktober 2015). "Linux Kernel Dev, der Linus Torvalds gebeten hat, den mündlichen Missbrauch zu stoppen, beendet über verbalen Missbrauch.". Das Register. Archiviert vom Original am 29. März 2020. Abgerufen 4. Februar 2018.
  262. ^ Edge, Jake (31. Januar 2018). "Zu viele Lords, nicht genug Verwalter". Lwn.net. Archiviert vom Original am 9. November 2020. Abgerufen 4. Februar 2018.
  263. ^ Corbet, Jonathan (6. November 2017). "Schlagen Sie die Kernel -Betreuer". Lwn.net. Archiviert vom Original am 26. Januar 2021. Abgerufen 4. Februar 2018.
  264. ^ Billimoria, Kaiwan N. (2021). Linux -Kernel -Programmierung Ein umfassender Leitfaden für Kernel -Interna, Schreibkernmodule und Kernel -Synchronisation. Birmingham: Packt Publishing, Limited. p. 55. ISBN 978-1-78995-592-7. OCLC 1240585605.
  265. ^ Vaduva, Alexandru (2016). Linux: Embedded Development: Nutzen Sie die Leistung von Linux, um faszinierende und leistungsstarke eingebettete Linux -Projekte zu entwickeln: Ein Kurs in drei Modulen. Alex Gonzalez, Chris Simmonds. Birmingham, Großbritannien. p. 663. ISBN 978-1-78712-445-5. OCLC 960471438.
  266. ^ Gebäude eingebettete Linux -Systeme bauen. Karim Yaghmour (2. Aufl.). Sebastopol [Kalifornien]: O'Reilly Media. 2008. p. 387. ISBN 978-0-596-52968-0. OCLC 273049576.{{}}: CS1 Wartung: Andere (Link)
  267. ^ Yaghmour, Karim (2011). Eingebettetes Android. Sebastopol, CA: O'Reilly Media. p. 44. ISBN 978-1-4493-2798-9. OCLC 812180000.
  268. ^ "SOC (System auf einem Chip)". OpenWrt Wiki. 6. November 2014. Abgerufen 15. März 2021.
  269. ^ "Was zu tun mit CVE -Zahlen [LWN.net]". lwn.net. Abgerufen 15. März 2021.
  270. ^ Amadeo, Ron (20. November 2019). "Google skizziert Pläne für den Hauptunterstützung für Linux -Kernel in Android". ARS Technica. Abgerufen 31. März 2021.
  271. ^ Bruchon, Jody (24. April 2021), JBRUCHON/ELKS, abgerufen 27. April 2021
  272. ^ "Der Zustand des Preempt-Rt". linuxplumbersconf.org. Archiviert von das Original am 15. Oktober 2016. Abgerufen 14. Juni 2016.
  273. ^ Meyer, David (3. Februar 2010). "Linux Developer erklärt die Entfernung von Android -Kernelcode". ZDNET. CBS interaktiv. Archiviert Aus dem Original am 15. Oktober 2016. Abgerufen 3. Februar 2010.
  274. ^ "KAPITEL 03: MAEMO -Plattformübersicht". Maemo -Technologieübersicht. Nokia. 2008. archiviert von das Original am 16. Juni 2008. Abgerufen 9. April 2010.
  275. ^ Kroah-Hartman, Greg (2. Februar 2010). "Android und die Linux -Kernel -Community". Archiviert Aus dem Original am 27. April 2019. Abgerufen 3. Februar 2010.
  276. ^ a b Roger Ye (2017). Android -Systemprogrammierung. Packt Publishing. p. 14. ISBN 9781787120389.
  277. ^ Torvalds, Linus (19. September 2001). "Die Ursprünge von Linux - Linus Torvalds". Youtube. Archiviert vom Original am 15. Dezember 2021. Abgerufen 6. Dezember 2020.
  278. ^ "Warum ich aufhörte: Kernelentwickler Con Kolivas". APC Magazine. ACP -Magazine. 24. Juli 2007. archiviert von das Original am 7. Juli 2011. Abgerufen 15. August 2011.
  279. ^ Corbet, Jonathan (25. Juli 2007). "Re: -mm Fusion Pläne für 2.6.23". Lwn.net. Archiviert Aus dem Original am 11. Februar 2018. Abgerufen 10. Februar 2018.
  280. ^ Cox, Alan (28. Juli 2009). "Re: [Patch] kdesu kaputt". Archiviert Aus dem Original am 11. Februar 2018. Abgerufen 10. Februar 2018.
  281. ^ Rodrigues, Goldwyn (22. Januar 2011). "Eine Geschichte von zwei SCSI -Zielen". Archiviert Aus dem Original am 15. Februar 2018. Abgerufen 14. Februar 2018.
  282. ^ Steinmetz, Andreas (17. Januar 2013). "Lio - die kaputte ISCSI -Zielimplementierung". Archiviert Aus dem Original am 15. Februar 2018. Abgerufen 14. Februar 2018.
  283. ^ Paul, Ryan (19. Juni 2012). "Linus Torvalds sagt" f - k yo du "zu nvidia". Archiviert Aus dem Original am 15. Februar 2018. Abgerufen 14. Februar 2018.
  284. ^ John Gold (3. April 2014). "Linus Torvalds spielt den Schlüsseleluxentwickler: Kernel -Panik als Systemd Dev den Bären an.". Archiviert Aus dem Original am 24. März 2019. Abgerufen 24. März 2019.
  285. ^ Poettering, Lennart (6. Oktober 2014). "Über die Krankheit der Linux -Kernel -Community". Google+. Archiviert von das Original am 27. Mai 2018. Abgerufen 10. Februar 2018.
  286. ^ Brodkin, Jon (6. März 2015). "VMware soll jahrelang gegen Linux 'Open Source -Lizenz verstoßen haben". ARS Technica. Archiviert Aus dem Original am 15. Februar 2018. Abgerufen 14. Februar 2018.
  287. ^ McCarthy, Kieren (26. August 2016). "Nachdem Linus Torvalds alle anderen auf der Welt beleidigt hat, nennt er eigene Anwälte eine" böse, öftige Krankheit ".". Das Register. Archiviert Aus dem Original am 15. Februar 2018. Abgerufen 14. Februar 2018.
  288. ^ Kroah-Hartman, Greg. "[Patch 000/190] Revertion aller Umn.edu -Commits". Linux -Kernel -Mailinglistenarchiv. Abgerufen 13. Januar 2022.
  289. ^ Chin, Monica (30. April 2021). "Wie eine Universität selbst aus dem Linux -Kernel verbannt wurde". Der Verge. Abgerufen 13. Januar 2022.
  290. ^ Corbet, Jonathan (10. September 2007). "KS2007: Entwicklerbeziehungen und Entwicklungsprozess". Lwn.net. Archiviert Aus dem Original am 12. Februar 2018. Abgerufen 11. Februar 2018.
  291. ^ Brodkin, Jon (16. Juli 2013). "Linus Torvalds verteidigt sein Recht, Linux -Kernel -Entwickler zu beschämen". ARS Technica. Archiviert Aus dem Original am 17. Februar 2018. Abgerufen 11. Februar 2018.
  292. ^ Corbet, Jonathan (9. März 2015). "Der Konfliktkodex des Kernels". Lwn.net. Archiviert Aus dem Original am 12. Februar 2018. Abgerufen 11. Februar 2018.
  293. ^ Corbet, Jonathan (18. September 2018). "Code, Konflikt und Verhalten". Lwn.net. Archiviert Aus dem Original am 19. September 2018. Abgerufen 19. September 2018.
  294. ^ Cohen, Noam (19. September 2018). "Nach Jahren missbräuchlicher E-Mails tritt der Schöpfer von Linux beiseite". Der New Yorker. Archiviert vom Original am 20. Februar 2020. Abgerufen 24. September 2018.
  295. ^ Larabel, Michael. "Obszönität in Kernelcode fallen lassen: Linux erhält" Umarmungen "". Phoronix. Archiviert Aus dem Original am 21. April 2019. Abgerufen 15. Juni 2019.
  296. ^ "Linux Evolution" (PDF). 26. März 2008. Archiviert (PDF) Aus dem Original am 14. Dezember 2013. Abgerufen 6. November 2013.
  297. ^ "Ewige Entwicklung: Ein Modell des Linux -Kernel -Lebenszyklus" (PDF). 25. Oktober 2011. Archiviert (PDF) Aus dem Original am 17. Oktober 2013. Abgerufen 6. November 2013.
  298. ^ Kroah-Hartman, Greg (12. Februar 2008). "Re: Ankündigen: Linux-Next (oder Andrews Traum :-))". Linux -Kernel -Mailingliste (Mailingliste). Archiviert Aus dem Original am 2. Februar 2017. Abgerufen 30. Januar 2017.
  299. ^ Wheeler, David A. "Linux Kernel 2.6: Es ist mehr wert!". Archiviert Aus dem Original am 20. August 2011. Abgerufen 18. Januar 2007.
  300. ^ "Wirtschaftliche Auswirkungen der Zahnseide auf die Innovation und Wettbewerbsfähigkeit des EU -IKT -Sektors" (PDF) (Tabelle 3 auf Seite 50). Archiviert (PDF) Aus dem Original am 15. Februar 2010. Abgerufen 8. Januar 2011.
  301. ^ "Schätzung der Gesamtentwicklungskosten einer Linux -Verteilung" (PDF) (Tabelle auf Seite 6). Archiviert von das Original (PDF) am 11. Juli 2010.
  302. ^ "Der Milliarden -Dollar -Kernel". Linux.Slashdot.org. 24. Februar 2010. Archiviert Aus dem Original am 15. Mai 2011. Abgerufen 12. November 2010.
  303. ^ Wheeler, David. "Der Linux -Kernel: Es ist mehr wert!". Archiviert vom Original am 24. Februar 2021. Abgerufen 17. September 2012.
  304. ^ "Linux Warders -Datei". Archiviert von das Original am 12. Januar 2013.
  305. ^ Torvalds, Linus (16. September 2018). "Linux 4.19-RC4 veröffentlicht, eine Entschuldigung und ein Wartungsschiff-Note". Lkml. Archiviert Aus dem Original am 23. September 2018. Abgerufen 23. September 2018.
  306. ^ Alexandru Vaduva, Alex Gonzalez & Chris Simmonds (2016). Linux: Embedded Development. Packt Publishing. p. 663. ISBN 9781787124455.
  307. ^ "Das Linux -Kernel -Archiv". Archiviert vom Original am 15. Februar 2022. Abgerufen 15. Februar 2022.
  308. ^ a b Yamagata, Hiroo (3. August 1997). "Der Pragmatiker freier Software". Heiß verdrahtet. Archiviert von das Original am 10. Februar 2007. Abgerufen 21. Februar 2007.
  309. ^ "GPL-V2". gnu.org. Archiviert vom Original am 25. Dezember 2019. Abgerufen 28. Januar 2020.
  310. ^ Corbet, Jonathan (31. Januar 2006). "GPLV3 und der Kernel". Lwn.net. Archiviert vom Original am 10. August 2020. Abgerufen 21. Februar 2007.
  311. ^ Torvalds, Linus (8. September 2000). "Linux-2.4.0-Test8". Lkml (Mailingliste). Archiviert vom Original am 15. Mai 2020. Abgerufen 21. Februar 2007.
  312. ^ "gnu.org". Gnu.org. Archiviert vom Original am 2. Februar 2021. Abgerufen 18. Oktober 2017.
  313. ^ Cox, Alan (20. Januar 2006). "Re: GPL V3 und Linux". Lkml (Mailingliste). Archiviert vom Original am 26. Januar 2021. Abgerufen 21. Februar 2007.
  314. ^ Shankland, Stephen (25. September 2006). "Top Linux -Programmierer pan GPL 3". News.com. CNET. Abgerufen 21. Februar 2007.
  315. ^ a b James E.J. Bottomley, Mauro Carvalho Chehab, Thomas Gleixner, Christoph Hellwig, Dave Jones, Greg Kroah-Hartman, Tony Luck, Andrew Morton, Trond Myklebust, David Woodhouse (15. September 2006). "Die Position der Kernelentwickler zu GPLV3: Die Gefahren und Probleme mit GPLV3". Lwn.net. Archiviert Aus dem Original am 18. Januar 2021. Abgerufen 11. März 2015.{{}}: CS1 Wartung: Verwendet Autorenparameter (Link)
  316. ^ Petreley, Nicholas (27. September 2006). "Ein Kampf gegen das Böse oder einen Kampf um Aufmerksamkeit?". Linuxjournal.com. Archiviert Aus dem Original am 2. März 2018. Abgerufen 11. März 2015.
  317. ^ "Linus Torvalds sagt, GPL V3 verstößt gegen alles, wofür GPLV2 steht". Debconf 2014. 2014. Archiviert vom Original am 8. Mai 2018. Abgerufen 21. März 2018.
  318. ^ Clark, Rob; Semwal, Sumit (1. November 2012). "DMA Puffer Sharing Framework: Eine Einführung" (PDF). Eingebettete Linux -Konferenz. Archiviert (PDF) Aus dem Original am 8. August 2014. Abgerufen 2. August 2014.
  319. ^ Cox, Alan (10. Oktober 2012). "[Patch] DMA-BUF: Verwenden Sie Export_Symbol". Direkte Rendering -Infrastruktur (Mailingliste). Archiviert Aus dem Original am 22. Januar 2013. Abgerufen 3. September 2013.
  320. ^ Torvalds, Linus (10. Dezember 2003). "Re: Linux GPL und Binärmodul -Ausnahmeklausel?". Lkml (Mailingliste). Archiviert Aus dem Original am 15. Juni 2011. Abgerufen 31. Dezember 2010.
  321. ^ Torvalds, Linus (3. Dezember 2003). "Re: Linux GPL und Binärmodul -Ausnahmeklausel?". Lkml (Mailingliste). Archiviert vom Original am 28. April 2020. Abgerufen 12. November 2010.
  322. ^ "Verdorbene Kerne - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 7. März 2020. Abgerufen 13. Januar 2020.
  323. ^ "Linux -Firmware -API - Die Linux -Kernel -Dokumentation". Kernel.org. Archiviert vom Original am 13. Januar 2020. Abgerufen 13. Januar 2020.
  324. ^ "Integrierte Firmware-Die Linux-Kernel-Dokumentation". Kernel.org. Archiviert vom Original am 10. Juni 2020. Abgerufen 10. Juni 2020.
  325. ^ "Linux TM Registrierung in den USA". Uspto.gov. Archiviert vom Original am 24. Februar 2021. Abgerufen 6. September 2019.
  326. ^ "Linux TM -Registrierung in der EU". Euipo.europa.eu. Archiviert Aus dem Original am 9. Juni 2016. Abgerufen 28. November 2020.
  327. ^ Hughes, Phil (1. August 1997). "Linux -Markenstreit". Linux Journal. Belltown Media, Inc. Archiviert vom Original am 30. April 2010. Abgerufen 8. Dezember 2010.
  328. ^ Hughes, Phil (1. März 1997). "Maßnahmen gegen Linux -Marke". Linux Journal. Belltown Media, Inc. Archiviert Aus dem Original am 3. März 2010. Abgerufen 8. Dezember 2010.
  329. ^ Gisselberg, Tonya (2010). "Die Markengeschichte von Linux, dem Betriebssystem" (PDF). Gisselberg Anwaltskanzlei, Inc. archiviert aus das Original (PDF) am 11. Juli 2011. Abgerufen 8. Dezember 2010.

Weitere Lektüre

Externe Links