Kernelcompliation unter Kali
Neukompilieren des Kali-Linux-Kernels
Die Anpassbarkeit von Kali Linux erstreckt sich bis hinunter in den Linux-Kernel.
Abhängig von Ihren Anforderungen möchten Sie möglicherweise Treiber, Patches oder Kernelfunktionen hinzufügen, die nicht im standardmäßigen Kali Linux-Kernel enthalten sind. Die folgende Anleitung beschreibt, wie der Kali-Linux-Kernel schnell modifiziert und für Ihre Bedürfnisse neu kompiliert werden kann. Beachten Sie, dass globale Wireless-Injection-Patches bereits standardmäßig im Kali-Linux-Kernel vorhanden sind.
Installieren Sie Build-Abhängigkeiten
Alle Build-Abhängigkeiten zu installieren
- sudo apt install -y build-essential libncurses5-dev fakeroot xz-utils
Laden Sie den Kali Linux-Kernel-Quellcode herunter Der Rest dieses Abschnitts konzentriert sich auf die Version 4.9 des Linux-Kernels, aber die Beispiele können natürlich an die bestimmte gewünschte Version des Kernels angepasst werden. Wir gehen davon aus, dass das Binärpaket linux-source-4.9 installiert wurde. Beachten Sie, dass wir ein Binärpaket installieren, das die Upstream-Quellen enthält, wir rufen das Kali-Quellpaket namens linux nicht ab:
Kernel Sourcen installien
- sudo apt install -y linux-source-4.9
Paketlisten lesen... Fertig Abhängigkeitsbaum erstellen Zustandsinformationen lesen... Fertig Die folgenden zusätzlichen Pakete werden installiert: bc libreadline7 Vorgeschlagene Pakete: libncurses-dev | ncurses-dev libqt4-dev Die folgenden NEUEN Pakete werden installiert: bc libreadline7 linux-source-4.9 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Benötigen Sie 95,4 MB an Archiven. Nach diesem Vorgang werden 95,8 MB zusätzlicher Speicherplatz verwendet. [...]
- ls /usr/src
linux-config-4.9 linux-patch-4.9-rt.patch.xz linux-source-4.9.tar.xz
Beachten Sie, dass das Paket /usr/src/linux-source-4.9.tar.xz enthält, ein komprimiertes Archiv der Kernelquellen. Sie müssen diese Dateien in ein neues Verzeichnis extrahieren (nicht direkt unter /usr/src/, da zum Kompilieren eines Linux-Kernels keine besonderen Berechtigungen erforderlich sind). Stattdessen ist ~/kernel/ besser geeignet:
=Wir installieren den Kernel unterhalb ist
- mkdir -p ~/kernel/
- cd ~/kernel/
- tar -xaf /usr/src/linux-source-4.9.tar.xz
Konfigurieren Sie Ihren Kernel
Beim Neukompilieren einer neueren Version des Kernels (evtl. mit zusätzlichem Patch) wird die Konfiguration höchstwahrscheinlich so nah wie möglich an der von Kali Linux vorgeschlagenen bleiben. Anstatt alles von Grund auf neu zu konfigurieren, reicht es in diesem Fall aus, die Datei /boot/config-version (die Version ist die des aktuell verwendeten Kernels, die mit dem Befehl uname -r gefunden werden kann) in eine . config-Datei im Verzeichnis mit den Kernel-Quellen:
- cp /boot/config-4.9.0-kali1-amd64 ~/kernel/linux-source-4.9/.config
Wenn Sie Änderungen vornehmen müssen oder sich entscheiden, alles von Grund auf neu zu konfigurieren, müssen Sie sich die Zeit nehmen, Ihren Kernel zu konfigurieren. Dies kann durch Aufrufen des Befehls make menuconfig erfolgen:
- make menuconfig
Die Einzelheiten zur Verwendung von menuconfig zum Einrichten eines Kernel-Builds würden den Rahmen dieses Handbuchs sprengen. Auf Linux.org gibt es ein ausführliches Tutorial zum Konfigurieren eines Kernel-Builds.
Erstellen Sie den Kernel
Sobald die Kernel-Konfiguration fertig ist, generiert ein einfaches make deb-pkg bis zu 5 Debian-Pakete: linux-image-version, das das Kernel-Image und die zugehörigen Module enthält, linux-headers-version, das die zum Bau erforderlichen Header-Dateien enthält externe Module, linux-firmware-image-version, das die Firmware-Dateien enthält, die von einigen Treibern benötigt werden (dieses Paket könnte fehlen, wenn Sie aus den von Debian oder Kali bereitgestellten Kernel-Quellen bauen), linux-image-version-dbg, das enthält die Debugging-Symbole für das Kernel-Image und seine Module und linux-libc-dev, das Header enthält, die für einige User-Space-Bibliotheken wie GNU glibc relevant sind. Das Linux-Kernel-Image ist ein großer Build, es wird eine Weile dauern, bis es fertig ist:
- make clean
- make deb-pkg LOCALVERSION=-custom KDEB_PKGVERSION=$(make kernelversion)-1
[...]
- ls ../*.deb
../linux-headers-4.9.0-kali1-custom_4.9.2-1_amd64.deb ../linux-image-4.9.0-kali1-custom_4.9.2-1_amd64.deb ../linux-image-4.9.0-kali1-custom-dbg_4.9.2-1_amd64.deb ../linux-libc-dev_4.9.2-1_amd64.deb
Installieren Sie den modifizierten Kernel
Wenn der Build erfolgreich abgeschlossen wurde, können Sie fortfahren und den neuen benutzerdefinierten Kernel installieren und Ihr System neu starten. Bitte beachten Sie, dass die spezifischen Kernel-Versionsnummern variieren - in unserem Beispiel, das auf einem Kali 2016.2-System erstellt wurde, war es 4.9.2. Abhängig von der aktuellen Kernel-Version, die Sie erstellen, müssen Sie Ihre Befehle entsprechend anpassen:
- sudo dpkg -i ../linux-image-4.9.0-kali1-custom_4.9.2-1_amd64.deb
- reboot
Sobald Ihr System neu gestartet wurde, sollte Ihr neuer Kernel ausgeführt werden. Wenn etwas schief geht und Ihr Kernel nicht erfolgreich bootet, können Sie immer noch das Grub-Menü verwenden, um vom originalen Kali-Kernel zu booten und Ihre Probleme zu beheben.