Fedora Kernel kompilieren

Aus ThinkPad-Wiki

Anleitung zum erstellen eines selbstgebaute kernel-rpm mit phc-support bei Fedora 17. (Benutzte Quelle: http://fedoraproject.org/wiki/Building_a_custom_kernel

Vorbereitung

Build Umgebung einrichten

Es werden folgende Pakete benötigt:

  • rpmdevtools
  • yum-utils
  • ncurses-devel
su -c 'yum install rpmdevtools yum-utils ncurses-devel'

Anschließend muss die RPM package building environment im Home-Verzeichnis erstellt werden:

rpmdev-setuptree

Dieses Komando erstellt die Verzeichnisse: ${HOME}/rpmbuild/SOURCES, ${HOME}/rpmbuild/SPECS, ${HOME}/rpmbuild/BUILD.

Quellcode download

Vorlage:Admon/warning Download der kernel-<version>.src.rpm Datei:

cd ~/rpmbuild
yumdownloader --enablerepo=updates-source --source kernel

Build dependencies installieren

su -c 'yum-builddep kernel-<version>.src.rpm'

Kernel-Quellcode ins repo laden

rpm -Uhv kernel-<version>.src.rpm

Kernel kompilieren

Setup

Auspacken des Quellcodes:

cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec

Der Kernel-Quellcode befindet sich jetzt hier: ~/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arch>

Kernel patchen

Kopieren des original-Quellcode-Baum zur Patch erstellung

export arch=x86_64 # replace x86_64 with your arch
export ver=3.3 # replace 3.3 with your kernel version
export fedver=fc17 # replace fc17 with your fedora version 
cp -r ~/rpmbuild/BUILD/kernel-$ver.$fedver/linux-$ver.$arch ~/rpmbuild/BUILD/kernel-$ver.$fedver.orig
cp -al ~/rpmbuild/BUILD/kernel-$ver.$fedver.orig ~/rpmbuild/BUILD/kernel-$ver.$fedver.new

OK, Anleitung funzt net mehr bei fc17. Also Plan B. Kernel 3.2 und 3.3 nutzen die gleiche drivers/cpufreq/acpi-cpufreq.c. Es reicht daher diese Datei durch eine gepachte zu ersetzen.

cp ~/rpmbuild/phc-intel.c ~/rpmbuild/BUILD/kernel-3.3.fc17/linux-3.3.0-1.fc17.x86_64/drivers/cpufreq/acpi-cpufreq.c
cp ~/rpmbuild/phc-intel.c ~/rpmbuild/BUILD/kernel-3.3.fc17/vanilla-3.3/drivers/cpufreq/acpi-cpufreq.c

Build-Dateien vorbereiten

1.

cd ~/rpmbuild/SPECS

2. Editieren der Datei kernel.spec.
3. Dem Kernel einen unique-Namen geben.

Change this line:

#% define buildid .local

To this (note the extra space is removed in addition to the pound sign):

%define buildid .<custom_text>

Kernel bauen

rpmbuild -bb --with baseonly --with firmware --without debuginfo --target=`uname -m` kernel.spec 

Frisch gebackenes Custom-Kernel.rpm installieren

Die frisch erstellten rpm finden sich in $HOME/rpmbuild/RPMS/<arch>/kernel-<version>.<arch>.rpm

Installieren mit

su -c 'yum localinstall RPMS/x86_64/kernel-*.rpm'