Dieser Artikel erklärt kurz, dass der Linux -Kernel ist und wie man seinen Quellcode durchsucht.
Dieses Tutorial ist für unerfahrene Linux -Benutzer und Programmierer optimiert, die den Kernel -Quellcode lesen oder Linux -Kernel -Entwickler werden möchten. Der Linux -Kernel ist universell; Daher ist das vorliegende Dokument für alle Linux -Verteilungen nützlich.
Durch das Lesen dieses Artikels werden Sie verstehen, was der Kernel ist, wie er strukturiert ist und wie man seine Komponenten durchschaut. Dieser Artikel wurde ursprünglich im Jahr 2019 geschrieben und im Jahr 2022 aktualisiert.
Was ist der Linux -Kernel und wie man ihn durchsucht?
Der Linux -Kernel ist die Hauptkomponente, die die Interaktion zwischen der Software und der Hardware mit Hilfe von Gerätetreibern ermöglicht. Sie können den Linux -Kernel als Übersetzer betrachten, der die Kommunikation zwischen Programmen, Hardware und Benutzeroberfläche ermöglicht.
Das Lernen, wie man den Linux -Kernel surft, ist der erste Schritt für jeden Programmierer, der ein Kernel -Entwickler werden möchte. Es ist auch für Programmierer oder Benutzer nützlich, die seinen Quellcode lesen oder ändern möchten.
Die Linux -Kernelstruktur
Der Linux -Kernel ist mit Verzeichnissen und Unterverzeichnissen strukturiert, die als „Kernelbaum“ bezeichnet werden. Benutzer können durchsuchen, um auf bestimmte Abschnitte des gesamten Codes zuzugreifen. Auf diese Weise können Benutzer und Entwickler sich auf bestimmte Teile des Codes konzentrieren.
Mit Ausnahme der Slackware Linux -Distribution, deren Kernel von einer einzelnen Person aufrechterhalten wird. Im Gegensatz dazu konzentrieren sich mehrere Entwickler auf Treiber, andere konzentrieren sich auf die Sicherheit und andere auf die Virtualisierung.
Der Kernel -Quellbaum ist die folgende Struktur, mit der Benutzer den Quellcode durchsuchen können:
Anzeigen und Surfen des Linux -Kernel -Quellcode
Wenn wir Linux installieren, schließen wir normalerweise den Quellcode nicht an. Wir können Linux installieren und den Quellcode in unserem System behalten. Aber die meisten Benutzer verwerfen es, um ein kleineres ISO -Bild herunterzuladen. Schließlich können Sie den Quellcode später herunterladen, wenn Sie ihn benötigen.
Wenn der Kernel-Quellcode in Ihrem System vorhanden ist, finden Sie ihn unter dem Verzeichnis/usr/src/linux-Verzeichnis, wobei Sie durch die Quellcode-Kernel-Version ersetzt werden müssen, mit der Sie sich befassen.
Sie finden auch den letzten Kernel -Quellcode unter https: // github.com/torvalds/linux.
Wie Sie im vorherigen Screenshot oder an der bereitgestellten URL im Quellcode -Baum sehen können, finden wir die folgenden Hauptverzeichnisse und -dateien:
- Bogen: Dieses Verzeichnis enthält Quellcodes für verschiedene Systemarchitekturen, die vom Linux -Kernel unterstützt werden.
- Block: Das Block -E/A -Schichtverzeichnis enthält Code für die Verwaltung von Blockgeräten (wie Festplatten, DVDs, Diskettenscheiben usw.) und ihre Anfragen.
- Certs: Das Certs -Verzeichnis enthält Zertifikate und Zeichendateien, mit denen Modulsignaturen für den Kernel signierte Module laden können. Dies kann nützlich sein, um zu verhindern.
- KOPIEREN: Diese Datei enthält Informationen zu Lizenzen für den Quellcode
- Credits: Eine teilweise Auflistung von Personen, die zum Linux -Kernel -Quellcode beigetragen haben
- Krypto: Dieses Verzeichnis enthält kryptografische Chiffren, die kryptografische und Kompressionsaufgaben erledigen.
- Dokumentation: Wie der Name schon sagt, enthält dieses Verzeichnis alle Dokumentationen zu allen Kernel -Komponenten.
- Treiber: Das Treiberverzeichnis enthält Quellcode für Gerätetreiber, um Hardware zu unterstützen. In diesem Verzeichnis finden Sie Unterverzeichnisse für jede Hardware wie Video, Bluetooth usw. (jede unterstützte Hardware).
- Fs: Dieses Verzeichnis enthält Quellen für Dateisysteme, einschließlich virtueller Dateisysteme sowie Lesen und Schreibdateisysteme.
- enthalten: Dieses Verzeichnis enthält C -Header für Kerneldateien wie Funktionen zum Kompilieren von Code.
- drin: Das Init -Verzeichnis enthält den Quellcode im Zusammenhang mit dem Startprozess und der Initialisierung des Linux -Kernels. Der Quellcode wird in einer Datei namens MainC gespeichert.c im Verzeichnis /init. Der Code initialisiert den Kernel und einige erste Prozesse.
- IPC: Inter-Process-Kommunikation wie Signale und Rohre.
- Kbuild: Die KBUILD -Datei zeigt Objektdateien für vmlinuz an.
- Kconfig: Die KConfig -Datei wird verwendet, um Kernelfunktionen zu deaktivieren oder zu aktivieren. Benutzer befassen sich mit dem Befehl "Menuconfig" ausführen.
- Kernel: Das Kernel -Verzeichnis enthält Kernsubsysteme wie Scheduler -Signalbearbeitungscode.
- lib: Dieses Verzeichnis enthält Bibliotheksroutinen, gemeinsame String-Operationen, hardwareabhängige Operationen, Debuggingroutinen und Befehlszeilen-Parsing-Code.
- Lizenzen: Es enthält die Lizenzen, die auf die Kernel -Quell- und einzelne Quelldateien angewendet werden sollen, die möglicherweise unterschiedliche Lizenzen haben. In diesem Verzeichnis finden Sie vier wichtigste Unterverzeichnisse mit unterstützten Lizenzen wie LGPL-X, Apache-Lizenz usw.
- Mantainer: Die Datei der Wartemittel zeigt die Liste der Kernel -Wartungsliste und die Anweisungen zur Übermittlung von Kerneländerungen.
- Makefile: Diese Datei liest die .Konfigurationsdatei und erstellt Module und vmlinux.
- mm: Der Linux -Kernel verwaltet Hardware und virtuelles Speicher (Swap). Dies ist das Verzeichnis, in dem der Quellcode für die Speicherverwaltung gespeichert wird.
- Netz: Das Nettoverzeichnis enthält den Netzwerkstapel. Hier finden Sie Code im Zusammenhang mit Kommunikationsprotokollen wie IP, TCP und UP.
- Liesmich: Die ReadMe -Datei bezieht sich auf Anleitungen für Kernelentwickler im zuvor beschriebenen Dokumentationsverzeichnis.
- Proben: Das Musterverzeichnis enthält Kernel- und Konfigurationsdateien Beispielcode.
- Skripte: Hier werden die notwendigen Skripte gespeichert, um den Linux -Kernel zu erstellen.
- Sicherheit: Das Sicherheits-Unterverzeichnis enthält das Sicherheits-Sicherheitsrahmen für die Sicherheitsverbesserung (SELINUX).
- Klang: Hier finden Sie das Sound -Subsystem, einschließlich Tonfahrer, Fahrerarchitekturen und Code, die sich auf Sound beziehen, wie z. B. ALSA.
- Werkzeug: Hier sind Tools für komprimierte Kernelentwicklung wie ACPI, CGroup, USB -Testwerkzeuge, VHOST -Testmodul, GPIO, IIO- und SPI -Tools sowie Inter Energy Policy Tool.
- USR: Hier speichert USR die Initramfs, die das Dateisystem und init im Kernel -Speicher -Cache verwurzelt. Mit dem enthaltenen Code können Sie Code im Startvorgang im Benutzerbereich ausführen, wenn der Kernel nicht vollständig geladen ist.
- virtuell: Das Virtualisierungsverzeichnis enthält das KVM -Modul (Kernel Virtual Machine) für Hypervisoren, einschließlich Architekturen.
Dies sind alles Top -Dateien und Verzeichnisse, die im Hauptkern -Quellverzeichnis enthalten sind. Sie können jeden Abschnitt je nach Ihren Anforderungen durchsuchen. Sobald Sie den Zweck aller oben aufgeführten Dateien und Verzeichnisse verstanden haben, sind Unterverzeichnisse ziemlich intuitiv.
Abschluss
Wie Sie sehen, wurde dieser Artikel für neuartige und mittlere Benutzer geschrieben, um die Grundlagen des Linux -Kernels zu verstehen. Für die praktische Verwendung sind jedoch einige Kenntnisse über die Entwicklung unter Linux-, Hardware- und Betriebssystemmerkmalen erforderlich. Die vorherige Vorlesung ist als Einführung in die Linux -Kernelstruktur und die Linux -Verteilung ausgezeichnet. Denken Sie daran, dass sich der Linux -Kernel regelmäßig entwickelt. Deshalb halten wir den zuvor beschriebenen Inhalt auf dem neuesten Stand.
Wir hoffen, Sie haben diesen Artikel nützlich gefunden. Lesen Sie weiterhin LinuxHint für weitere Linux -professionelle Artikel.