Holen Sie sich und kompilieren Sie den Mainline-Kernel, Git-Methode:
Siehe auch: https://wiki.ubuntu.com/KernelTeam/GitKernelBuild
Ich mache die Dinge etwas anders (was gibt es sonst noch Neues?).
Voraussetzungen (Muss):
Schritt 1 ist zu apt-get update
und apt-get dist-upgrade
(dh stellen Sie sicher, dass alles auf dem neuesten Stand ist)
Schritt 2
sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
Schritt 3
sudo apt-get build-dep linux
Schritt 4
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
Voraussetzungen ab Kernel 4.3:
sudo apt-get install libssl-dev
Schritt 5 - basierend darauf, dass auf einer neuen 20.04 Server-Installation 2019.12.02 nicht kompiliert werden kann
sudo apt install flex bison
Voraussetzungen (optional):
sudo apt-get install git-email git-doc
Der Git-Teil:
mkdir temp-k-git
cd temp-k-git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
Mach niemals Sachen in der Standard-Hauptniederlassung. Machen Sie immer einen Arbeitsbereich.
git checkout -b k44rc8_stock v4.4-rc8
Stehlen Sie die Ubuntu-Kernel-Konfigurationsdatei (bereits installiert):
ls -l /boot
cp /boot/config-4.4.0-040400rc8-generic .config
Die Ubuntu-Konfigurationsdatei verfügt über ein vollständiges Debugging. Macht einen riesigen Kernel und dauert doppelt so lange zum Kompilieren
scripts/config --disable DEBUG_INFO
Besonderer Hinweis ab Kernel 4.4 und beim Kompilieren mit Ubuntu 14.04 (ich kenne 15.10 nicht) mit einer älteren Version des c-Compilers: Es kann nicht mit CONFIG_CC_STACKPROTECTOR_STRONG kompiliert werden.
scripts/config --disable CC_STACKPROTECTOR_STRONG
Kompilieren Sie den Kernel:
time make -j9 bindeb-pkg <<< Suggest use number of CPUs + 1. Use less for some responsiveness to be left for other uses
<<< I always time the kernel build.
oder
time make -j9 bindeb-pkg LOCALVERSION=-stock <<< For a localized verion name append
oder
time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-stock <<< To automatically use defaults for any new config stuff (particuarly useful when bisecting the kernel).
Wenn der Build abgeschlossen ist, installieren Sie ihn:
sudo dpkg -i ../linux-headers-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
sudo dpkg -i ../linux-image-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
An diesem Punkt wissen wir also, dass der Hauptkernel OK kompiliert. Wechseln Sie also zum benutzerdefinierten Kernel. Erstellen Sie einen neuen Zweig, wenden Sie die Patches an und kompilieren Sie:
$ git checkout -b k44rc8_custom v4.4-rc8
Switched to a new branch 'k44rc8_custom'
$ git am plv6_1_3.patch
Applying: cpufreq: intel_pstate: configurable algorithm to get target pstate
$ git am plv6_2_3.patch
Applying: cpufreq: intel_pstate: account for non C0 time
$ git am plv6_3_3.patch
Applying: cpufreq: intel_pstate: Account for IO wait time
$ time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-custom
Beachten Sie, dass ich absichtlich keine mache make clean
, da es wünschenswert ist, durch einen inkrementellen Build viel Zeit zu sparen. Die erste Kompilierung dauerte 21 Minuten und 26 Sekunden, die nächste benutzerdefinierte Kompilierung jedoch nur 4 Minuten und 43 Sekunden.
Wenn Sie auf die Seite http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc8-wily gehen, finden Sie eine README-Datei, die angibt, wie Sie die Quelldateien für 4.4rc8 erhalten
Anweisungen zum Erstellen sind etwas verwirrend. Ich habe verschiedene Rezepte zum Erstellen der Kernel gesehen, alle etwas anders. Es gibt mehrere Voraussetzungen: Möglicherweise sind einige andere für den 4.4-Kernel erforderlich
Dann sind die Befehle, die ich für einen erfolgreichen Build ausgegeben habe:
Ändern der Änderungsprotokolldatei, um anzuzeigen, dass ich meinen eigenen Kernel erstelle, indem am Ende der ersten angezeigten Versionsnummer etwas hinzugefügt wird.
quelle
debian/rules.d/2-binary-arch.mk:50: recipe for target '/home/ryan/dev/mainline/debian/stamps/stamp-build-generic' failed
irgendwelchen Ideen fehlerhaft ?fakeroot debian/rules clean
hat Fehler beim Ausführendebian.master/reconstruct
aufgrund des fehlendenubuntu/
Verzeichnisses. Ich konnte das umgehen, verstehe aber nicht warum. Siehe meine Frage unter askubuntu.com/questions/729469/… .