Kernel HowTo wie man einen kompletten Kernel Satz nur aus dem kernel-source-2.6.xxxx.src.rpm erstellt
Ursprünglicher Text von: Schmolle ( R.I.P. )
Überarbeitet und weitergepflegt von: Dr.SuSE
Vorwort:
Dieses Howto ist absolut nichts für Anfänger, sondern richtet sich an schon sehr versierte SuSEuser.[/size]
Suse 10.x User können ohne gravierende Systemänderungen nur Kernel der Version bis 2.6.24.... übersetzen.
Ab openSUSE_11.0 gibt es keine Einschränkungen.
Wer als SuSE 10.x Anwender noch Bedarf am Kernelsource Paket 2.6.24.1-76.4 haben sollte (oder auch an fertig kompilierten Kernelversionen), das war die letzte Version welche im Kernelrepo davon aufgetaucht war, schickt bitte eine PM an mich ( Dr. Suse ).
Als Erstes möchte ich zum besseren Verständnis der Materie, auf dieses HowTo verweisen, welches echt das Beste ist, das ich kenne
http://www.thomashertweck.de/kernel26.html
Doch nun zu diesem Howto.
Nachfolgend möchte ich euch beschreiben wie man aus einem kernel-source-xxxxx.src.rpm einen neuen Kernel für seine SuSE bauen kann
Zuerst besorgt man sich erst mal die Ausgangsdatei kernel-sourcexxxxx von nachfolgender Adresse (kernel-source) Wichtig ist diese Endung src.rpm
ftp://ftp5.gwdg.de/pub/opensuse/repositories/Kernel:/HEAD/openSUSE_Factory/src
Man sollte aber nicht unbedingt einen Releasekandiaten benutzen. Das sind experimentelle Kernel, bei denen nicht immer alles funktionieren muss, erkennbar an der Buchstabenkombination RC im Dateinamen. Dann lieber zu einem späteren Zeitpunkt noch mal ins Repo schauen ob es dann eine Version ohne RC im Dateinamen gibt.
Das meist auch verfügbare Kernel-syms Paket braucht ihr nicht herunterladen. Dies erzeugen wir am Ende dieses HowTo's passend zu unserem System selbst.
Doch bevor wir loslegen, schauen wir erst mal nach, ob alles was man an Softwarepaketen für unser Vorhaben benötigt auch installiert ist, um dieses Howto erfolgreich abzuschließen zu können!
Siehe folgenden Beitrag, der für ein openSUSE Linux System wichtig ist
(Immer die neuesten Pakete haben)
http://www.computerhilfen.de/hilfen-6-58786-0.html
Folgende Pakete müssen installiert sein (bei Bedarf nach installieren):
Wichtig: Der Midnight Commander (mc) ist bei der Standardinstallation von openSuse nicht installiert, drum auch bitte nachinstallieren. Als Suchbegriff mc in yast oder smart verwenden !
Unser Wichtigstes Arbeitswerkzeug ist der MC (Midnight Commander), mit dem wir am Schnellsten voran kommen, um die Kopierarbeiten zu erledigen !
Den starten wir aus der Rootkonsole wie folgt :
So das Vorgehen :
Als Erstes wird das heruntergeladene src.rpm Paket installiert. Ohne diesen Schritt geht's nun mal nicht.
Anschliessend wird gewechselt in folgendes Verzeichnis:
nun werden noch nachfolgende Dateien aus dem Verzeichnis /usr/src/packages/SOURCES nach /usr/src/packages/SPECS kopiert damit man ein kernel-default Paket und die anderen Kernelpakete bauen kann (kernel-source, kernel-syms)
Wechseln wir in das Verzeichnis:
Dort kopiert man folgende *spec Files
(Wenn man noch andere Kernel Versionen bauen möchte, kann man natürlich die anderen *spec Files,welche man wünscht auch noch kopieren)
jetzt befinden sich folgende Dateien in /usr/src/packages/SPECS/
Jetzt die *spec Files anpassen auf die gleichen Versionsnummer mit mc (Taste F4), ausser kernel-module-subpackage. Das bleibt unverändert
Dazu schauen wir zuerst in das Kernel-source.spec File und merken uns die Versionsnummern um sie in die kernel-default und kernel-syms.specs übertragen zu können. Der Schritt ist wichtig. Vergisst man diesen Schritt lassen sich zwar die Pakete bauen, jedoch hinterher nicht verwenden.
Halten wir also nach folgenden Zeilen Ausschau:
Version sollte so bleiben aber Release muss in allen spec-Files identisch sein!
Das kernel-syms Paket ist erst zu bauen wenn man kernel-source und kernel-default erfolgreich gebaut,installiert und den Rechner mit dem neuen Kernel gebootet hat
Damit es nachher auch alles passt ! geben wir folgenden Befehl ein um den Kernel neu zu übersetzen, Alle *spec Files in nachfolgender Reihenfolge abarbeiten :
Tipp:
Besitzer von Rechnern mit MehrkernCPU's wie AMD x2, Phenom oder deren Gegenstücke aus dem Hause Intel können alle CPU Kerne an der Komplierung beteiligen, was die Geschwindigkeit erheblich steigert. Dazu vor den rpmbuild Befehlen folgenden Befehl eintippen:
Kernel kompilieren:
(--nodeps erklärt sich hier eigentlich selbst)
kernel-syms erst bauen wenn die vorher gebauten Pakete installiert und der neue Kernel erfolgreich gebootet wurde, sonst funktioniert es nicht!
Also nach Installation des neuen Kernels per rpm -ivh kernel-default-xxx und Neustart mit diesem hier weitermachen:
Hat alles geklappt , hat man folgende Pakete für seine Architektur in folgenden Verzeichnis liegen
/usr/src/packages/RPMS/i586/
Dann werden die Pakete wie folgt installiert
Da nun die Frage aufkommen wird was ist mit x86_64 (64bit?)
Die Vorgehensweise ist die Gleiche, bloß das wir folgende Pakete hier wieder finden werden :
Und schon hat man ein kompletten neuen Kernel auf dem neuesten Stand ! Es ist noch zu erwähnen, dass Treiber wie AMD/ATI NVIDIA (Grafik) nach dem Kernelupdate erneut installiert werden müssen. Das gilt auch für WLAN etc. Ab Kernel 2.6.26 sind viele, viele neue Treiber in den Kernel eingeflossen für die keine Module mehr separat gebaut werden müssen, wie es noch bei älteren Kernel der Fall war. Das betrifft viele Wlanchips und Webcammodule. Genaueres ist dem Kernelchangelog auf http://kernelnewbies.org zu entnehmen!
Viel Erfolg
Dr.Suse
Ursprünglicher Text von: Schmolle ( R.I.P. )
Überarbeitet und weitergepflegt von: Dr.SuSE
Vorwort:
Dieses Howto ist absolut nichts für Anfänger, sondern richtet sich an schon sehr versierte SuSEuser.[/size]
Suse 10.x User können ohne gravierende Systemänderungen nur Kernel der Version bis 2.6.24.... übersetzen.
Ab openSUSE_11.0 gibt es keine Einschränkungen.
Wer als SuSE 10.x Anwender noch Bedarf am Kernelsource Paket 2.6.24.1-76.4 haben sollte (oder auch an fertig kompilierten Kernelversionen), das war die letzte Version welche im Kernelrepo davon aufgetaucht war, schickt bitte eine PM an mich ( Dr. Suse ).
Als Erstes möchte ich zum besseren Verständnis der Materie, auf dieses HowTo verweisen, welches echt das Beste ist, das ich kenne
http://www.thomashertweck.de/kernel26.html
Doch nun zu diesem Howto.
Nachfolgend möchte ich euch beschreiben wie man aus einem kernel-source-xxxxx.src.rpm einen neuen Kernel für seine SuSE bauen kann
Zuerst besorgt man sich erst mal die Ausgangsdatei kernel-sourcexxxxx von nachfolgender Adresse (kernel-source) Wichtig ist diese Endung src.rpm
ftp://ftp5.gwdg.de/pub/opensuse/repositories/Kernel:/HEAD/openSUSE_Factory/src
Man sollte aber nicht unbedingt einen Releasekandiaten benutzen. Das sind experimentelle Kernel, bei denen nicht immer alles funktionieren muss, erkennbar an der Buchstabenkombination RC im Dateinamen. Dann lieber zu einem späteren Zeitpunkt noch mal ins Repo schauen ob es dann eine Version ohne RC im Dateinamen gibt.
Das meist auch verfügbare Kernel-syms Paket braucht ihr nicht herunterladen. Dies erzeugen wir am Ende dieses HowTo's passend zu unserem System selbst.
Doch bevor wir loslegen, schauen wir erst mal nach, ob alles was man an Softwarepaketen für unser Vorhaben benötigt auch installiert ist, um dieses Howto erfolgreich abzuschließen zu können!
Siehe folgenden Beitrag, der für ein openSUSE Linux System wichtig ist
(Immer die neuesten Pakete haben)
http://www.computerhilfen.de/hilfen-6-58786-0.html
Folgende Pakete müssen installiert sein (bei Bedarf nach installieren):
Code: [Auswählen]
attr, autoconf, automake, bind-utils, binutils, bison, build, cpp .....lib, cvs, cyrus-sasl, e2fsprogs,fdupes, flex, gawk, gcc, gdbm-devel, gettext-devel, glibc-devel, glibc-locale, gpm, klogd, less, libtool, make, man, module-init-tools, ncurses-devel, patch, procinfo, procps, psmisc, pwdutils, rpm, strace, sysvinit, tar, tcpd, texinfo, timezone, unzip, util-linux, vim, zlib-devel, db-devel, gcc-c++, gcc-fortran, gcc-info, gcc-objc, glibc-info, gperf, libaio-devel, libelf, libobjc41, libstdc++-devel, m4, openldap2-devel, pam-devel, pkgconfig, rcs, subversion, mc, kernel-source, kernel-syms, audit-libs, bzip2, coreutils, cpio, grep, groff, gzip, linux-kernel-headers, nettools, netcfg, pam
Wichtig: Der Midnight Commander (mc) ist bei der Standardinstallation von openSuse nicht installiert, drum auch bitte nachinstallieren. Als Suchbegriff mc in yast oder smart verwenden !
Unser Wichtigstes Arbeitswerkzeug ist der MC (Midnight Commander), mit dem wir am Schnellsten voran kommen, um die Kopierarbeiten zu erledigen !
Den starten wir aus der Rootkonsole wie folgt :
Code: [Auswählen]
mc
So das Vorgehen :
Als Erstes wird das heruntergeladene src.rpm Paket installiert. Ohne diesen Schritt geht's nun mal nicht.
Code: [Auswählen]
rpm -ihv kernel-source-2.6.2*.src.rpm
Anschliessend wird gewechselt in folgendes Verzeichnis:
Code: [Auswählen]
cd /usr/src/packages/SPECS/
nun werden noch nachfolgende Dateien aus dem Verzeichnis /usr/src/packages/SOURCES nach /usr/src/packages/SPECS kopiert damit man ein kernel-default Paket und die anderen Kernelpakete bauen kann (kernel-source, kernel-syms)
Wechseln wir in das Verzeichnis:
Code: [Auswählen]
cd /usr/src/packages/SOURCES/
Dort kopiert man folgende *spec Files
Code: [Auswählen]
kernel-syms.spec
kernel-default.spec
ab Kernel 2.6.27 auch
kernel-module-subpackage
(Wenn man noch andere Kernel Versionen bauen möchte, kann man natürlich die anderen *spec Files,welche man wünscht auch noch kopieren)
jetzt befinden sich folgende Dateien in /usr/src/packages/SPECS/
Code: [Auswählen]
kernel-syms.spec
kernel-default.spec
kernel-source.spec
ggf. kernel-module-package
Jetzt die *spec Files anpassen auf die gleichen Versionsnummer mit mc (Taste F4), ausser kernel-module-subpackage. Das bleibt unverändert
Dazu schauen wir zuerst in das Kernel-source.spec File und merken uns die Versionsnummern um sie in die kernel-default und kernel-syms.specs übertragen zu können. Der Schritt ist wichtig. Vergisst man diesen Schritt lassen sich zwar die Pakete bauen, jedoch hinterher nicht verwenden.
Halten wir also nach folgenden Zeilen Ausschau:
Code: [Auswählen]
Version: 2.6.27.13
Release: 1.1
Version sollte so bleiben aber Release muss in allen spec-Files identisch sein!
Das kernel-syms Paket ist erst zu bauen wenn man kernel-source und kernel-default erfolgreich gebaut,installiert und den Rechner mit dem neuen Kernel gebootet hat
Damit es nachher auch alles passt ! geben wir folgenden Befehl ein um den Kernel neu zu übersetzen, Alle *spec Files in nachfolgender Reihenfolge abarbeiten :
Tipp:
Besitzer von Rechnern mit MehrkernCPU's wie AMD x2, Phenom oder deren Gegenstücke aus dem Hause Intel können alle CPU Kerne an der Komplierung beteiligen, was die Geschwindigkeit erheblich steigert. Dazu vor den rpmbuild Befehlen folgenden Befehl eintippen:
Code: [Auswählen]
export MAKE="make -jN"
wobei N für die Anzahl der verfügbaren CPU Kerne steht und durch die entsprechende Ziffer zu ersetzen ist
Kernel kompilieren:
Code: [Auswählen]
rpmbuild --bb --nodeps kernel-source.spec ENTER
rpmbuild --bb --nodeps kernel-default.spec ENTER
(--nodeps erklärt sich hier eigentlich selbst)
kernel-syms erst bauen wenn die vorher gebauten Pakete installiert und der neue Kernel erfolgreich gebootet wurde, sonst funktioniert es nicht!
Also nach Installation des neuen Kernels per rpm -ivh kernel-default-xxx und Neustart mit diesem hier weitermachen:
Code: [Auswählen]
rpmbuild --bb --nodeps kernel-syms.spec
Hat alles geklappt , hat man folgende Pakete für seine Architektur in folgenden Verzeichnis liegen
/usr/src/packages/RPMS/i586/
Code: [Auswählen]
kernel-default-2.6.27.13-1.1.i586.rpm
kernel-source-2.6.27.13-1.1.i586.rpm
kernel-syms-2.6.27.13-1.1.i586.rpm
Dann werden die Pakete wie folgt installiert
Code: [Auswählen]
rpm -ihv kernel-default-2.6.27.13-1.1.i586.rpm
rpm -ihv kernel-source-2.6.27.13-1.1.i586.rpm
rpm -ihv kernel-syms-2.6.27.13-1.1.i586.rpm
Da nun die Frage aufkommen wird was ist mit x86_64 (64bit?)
Die Vorgehensweise ist die Gleiche, bloß das wir folgende Pakete hier wieder finden werden :
Code: [Auswählen]
cd /usr/src/packages/RPMS/x86_64/
Code: [Auswählen]
kernel-default-2.6.27.13-1.1.x86_64.rpm
kernel-source-2.6.27.13-11.1.x86_64.rpm
kernel-syms-2.6.27.13-1.1.x86_64.rpm
Und schon hat man ein kompletten neuen Kernel auf dem neuesten Stand ! Es ist noch zu erwähnen, dass Treiber wie AMD/ATI NVIDIA (Grafik) nach dem Kernelupdate erneut installiert werden müssen. Das gilt auch für WLAN etc. Ab Kernel 2.6.26 sind viele, viele neue Treiber in den Kernel eingeflossen für die keine Module mehr separat gebaut werden müssen, wie es noch bei älteren Kernel der Fall war. Das betrifft viele Wlanchips und Webcammodule. Genaueres ist dem Kernelchangelog auf http://kernelnewbies.org zu entnehmen!
Viel Erfolg
Dr.Suse