
Linux-Kernel-4.1.15-Quellbaum mit Schwerpunkt auf CVE-2018-5873, der eine Referenz für Schwachstellenanalyse und Exploit-Forschung darstellt.
Linux-Kernel, Version 4.x http://kernel.org/
Dies sind die Versionshinweise für Linux Version 4. Lesen Sie sie sorgfältig, da sie erklären, worum es geht, wie der Kernel installiert wird und was zu tun ist, wenn etwas schiefgeht.
WAS IST LINUX?
Linux ist ein Klon des Betriebssystems Unix, der von Grund auf von Linus Torvalds mit Unterstützung eines locker verbundenen Teams von Hackern im gesamten Netz geschrieben wurde. Es strebt die Einhaltung von POSIX und der Single UNIX Specification an.
Es verfügt über alle Funktionen, die Sie von einem modernen vollwertigen Unix erwarten würden, einschließlich echtem Multitasking, virtuellem Speicher, gemeinsam genutzten Bibliotheken, Demand Loading, gemeinsam genutzten Copy-on-Write-Executables, ordnungsgemäßer Speicherverwaltung und Multistack-Netzwerk (einschließlich IPv4 und IPv6).
Es wird unter der GNU General Public License vertrieben – weitere Einzelheiten finden Sie in der beiliegenden COPYING-Datei.
AUF WELCHER HARDWARE LÄUFT ES?
Obwohl ursprünglich für 32-Bit-x86-basierte PCs (386 oder höher) entwickelt, läuft Linux heute auch auf (mindestens) den Architekturen Compaq Alpha AXP, Sun SPARC und UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, Tilera TILE, AVR32 und Renesas M32R.
Linux ist leicht auf die meisten 32- oder 64-Bit-Allzweckarchitekturen portierbar, sofern sie über eine Paged Memory Management Unit (PMMU) und einen Port des GNU C Compilers (gcc) (Teil der GNU Compiler Collection, GCC) verfügen. Linux wurde auch auf eine Reihe von Architekturen ohne PMMU portiert, wobei die Funktionalität dann offensichtlich etwas eingeschränkt ist. Linux wurde auch auf sich selbst portiert. Sie können den Kernel jetzt als Userspace-Anwendung ausführen – dies wird UserMode Linux (UML) genannt.
DOKUMENTATION:
Es gibt sowohl in elektronischer Form im Internet als auch in Büchern eine Fülle von Dokumentationen, die sowohl Linux-spezifisch als auch allgemeine UNIX-Fragen betreffen. Ich empfehle, in den Dokumentations-Unterverzeichnissen auf einer beliebigen Linux-FTP-Site nach den LDP-Büchern (Linux Documentation Project) zu suchen. Diese README ist nicht als Dokumentation des Systems gedacht: Es gibt viel bessere Quellen.
Im Unterverzeichnis Documentation/ befinden sich verschiedene README-Dateien: Diese enthalten normalerweise kernelspezifische Installationshinweise für einige Treiber. Siehe Documentation/00-INDEX für eine Liste dessen, was in jeder Datei enthalten ist. Bitte lesen Sie die Datei Changes, da sie Informationen über Probleme enthält, die durch ein Upgrade Ihres Kernels entstehen können.
Das Unterverzeichnis Documentation/DocBook/ enthält mehrere Leitfäden für Kernelentwickler und -benutzer. Diese Leitfäden können in verschiedenen Formaten ausgegeben werden: PostScript (.ps), PDF, HTML und man-Seiten, unter anderem. Nach der Installation werden mit "make psdocs", "make pdfdocs", "make htmldocs" oder "make mandocs" die Dokumentationen im gewünschten Format erstellt.
INSTALLATION des Kernelquellcodes:
Wenn Sie die vollständigen Quellen installieren, legen Sie das Kernel-Tarball in ein Verzeichnis, für das Sie Schreibrechte haben (z.B. Ihr Home-Verzeichnis) und entpacken Sie es:
xz -cd linux-4.X.tar.xz | tar xvf -
Ersetzen Sie "X" durch die Versionsnummer des neuesten Kernels. Verwenden Sie NICHT das Verzeichnis /usr/src/linux! In diesem Bereich befindet sich ein (normalerweise unvollständiger) Satz von Kernel-Headern, die von den Bibliotheks-Header-Dateien verwendet werden. Diese sollten mit der Bibliothek übereinstimmen und nicht durch den jeweils aktuellen Kernel durcheinandergebracht werden.
Sie können auch zwischen 4.x-Versionen durch Patchen aktualisieren. Patches werden im xz-Format verteilt. Um durch Patchen zu installieren, holen Sie alle neueren Patch-Dateien, wechseln Sie in das oberste Verzeichnis des Kernelquellcodes (linux-4.X) und führen Sie aus:
xz -cd ../patch-4.x.xz | patch -p1
Ersetzen Sie "x" für alle Versionen, die größer als die Version "X" Ihres aktuellen Quellbaums sind, der Reihe nach, und alles sollte in Ordnung sein. Möglicherweise möchten Sie die Sicherungsdateien (ein-dateiname~ oder ein-dateiname.orig) entfernen und sicherstellen, dass es keine fehlgeschlagenen Patches gibt (ein-dateiname# oder ein-dateiname.rej). Falls doch, haben entweder Sie oder ich einen Fehler gemacht.
Im Gegensatz zu Patches für die 4.x-Kernel sind Patches für die 4.x.y-Kernel (auch als -stable-Kernel bekannt) nicht inkrementell, sondern werden direkt auf den Basis-4.x-Kernel angewendet. Wenn Ihr Basiskernel beispielsweise 4.0 ist und Sie den 4.0.3-Patch anwenden möchten, dürfen Sie nicht zuerst die Patches 4.0.1 und 4.0.2 anwenden. Wenn Sie Kernelversion 4.0.2 ausführen und auf 4.0.3 springen möchten, müssen Sie zuerst den 4.0.2-Patch rückgängig machen (d. h. patch -R) bevor Sie den 4.0.3-Patch anwenden. Weitere Informationen hierzu finden Sie in Documentation/applying-patches.txt
Alternativ kann das Skript patch-kernel verwendet werden, um diesen Prozess zu automatisieren. Es ermittelt die aktuelle Kernelversion und wendet alle gefundenen Patches an.
linux/scripts/patch-kernel linux
Das erste Argument im obigen Befehl ist der Speicherort des Kernelquellcodes. Patche werden aus dem aktuellen Verzeichnis angewendet, aber ein alternatives Verzeichnis kann als zweites Argument angegeben werden.
Stellen Sie sicher, dass keine veralteten .o-Dateien und Abhängigkeiten herumliegen:
cd linux make mrproper
Sie sollten nun die Quellen korrekt installiert haben.
SOFTWAREANFORDERUNGEN
Das Kompilieren und Ausführen der 4.x-Kernel erfordert aktuelle Versionen verschiedener Softwarepakete. Konsultieren Sie Documentation/Changes für die erforderlichen Mindestversionsnummern und Informationen zum Erhalt von Updates für diese Pakete. Beachten Sie, dass die Verwendung extrem alter Versionen dieser Pakete indirekte Fehler verursachen kann, die sehr schwer zu lokalisieren sind. Gehen Sie daher nicht davon aus, dass Sie Pakete einfach aktualisieren können, wenn während des Builds oder Betriebs offensichtliche Probleme auftreten.
BUILD-Verzeichnis für den Kernel:
Wenn Sie den Kernel kompilieren, werden alle Ausgabedateien standardmäßig zusammen mit dem Kernelquellcode gespeichert. Mit der Option "make O=output/dir" können Sie einen alternativen Ort für die Ausgabedateien (einschließlich .config) angeben. Beispiel:
kernel source code: /usr/src/linux-4.X
build directory: /home/name/build/kernel
Um den Kernel zu konfigurieren und zu bauen, verwenden Sie:
cd /usr/src/linux-4.X
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
sudo make O=/home/name/build/kernel modules_install install
Bitte beachten: Wenn die Option 'O=output/dir' verwendet wird, muss sie für alle make-Aufrufe verwendet werden.
KONFIGURATION des Kernels:
Überspringen Sie diesen Schritt nicht, auch wenn Sie nur eine Nebenversion aktualisieren. In jeder Version werden neue Konfigurationsoptionen hinzugefügt, und es treten seltsame Probleme auf, wenn die Konfigurationsdateien nicht wie erwartet eingerichtet sind. Wenn Sie Ihre vorhandene Konfiguration mit minimalem Aufwand auf eine neue Version übertragen möchten, verwenden Sie "make oldconfig", das Sie nur nach den Antworten auf neue Fragen fragt.
Alternative Konfigurationsbefehle sind:
"make config" Einfache Textoberfläche.
"make menuconfig" Textbasierte Farbmenüs, Radiolisten und Dialoge.
"make nconfig" Erweiterte textbasierte Farbmenüs.
"make xconfig" X-Windows (Qt) basiertes Konfigurationswerkzeug.
"make gconfig" X-Windows (Gtk) basiertes Konfigurationswerkzeug.