Du bist nicht angemeldet.

#1 04.07.2007 22:42:00

blue-dev
Gast

Eigenen Kernel backen

Hallo,
Ich habe vorher Ubuntu genutzt und mir dort immer den aktuellen Kernel selber gebacken, auch mit vielen Veränderungen im Quelltext.
Meine Frage ist nun _nicht_ wie das unter Archlinux Funktioniert sondern wie das mit Treibern und Kernelmodulen ist.

Aktuell habe ich glaube ich nur die Nvidia Treiber als Kernel Modul und die Virtualbox Treiber für die Kapazitäten Aufteilung.
Wie kann ich die in einen neuen Kernel wieder einbinden?

Das nächste wäre dann die Konfiguration, ich habe mir bei meinen eigenen Kerneln immer total viel angepasst und auch viel gepatcht, gibt es bei Arch etwas an dem ich nicht rumwerkeln sollte, bzw. Einstellungen die so erhalten bleiben müssen?

Kann ich mehrere Kernel gleichzeitig Installieren?

Und zu letzt, gibt es ein Archlinux Kernel-Source Paket? ich konnte nichts finden und ein bisschen mit git nach Änderungen gucken wäre ja nicht schlecht.

#2 05.07.2007 08:27:37

GerBra
Mitglied

Re: Eigenen Kernel backen

blue-dev schrieb:

Aktuell habe ich glaube ich nur die Nvidia Treiber als Kernel Modul und die Virtualbox Treiber für die Kapazitäten Aufteilung.
Wie kann ich die in einen neuen Kernel wieder einbinden?

Das nächste wäre dann die Konfiguration, ich habe mir bei meinen eigenen Kerneln immer total viel angepasst und auch viel gepatcht, gibt es bei Arch etwas an dem ich nicht rumwerkeln sollte, bzw. Einstellungen die so erhalten bleiben müssen?

Kann ich mehrere Kernel gleichzeitig Installieren?

Und zu letzt, gibt es ein Archlinux Kernel-Source Paket? ich konnte nichts finden und ein bisschen mit git nach Änderungen gucken wäre ja nicht schlecht.

Zu 1.: externe Module mußt du für neue Kernel (die nicht als Binär-Paket kommen)
immer wieder selbst kompilieren, was mit abs aber ein Kinderspiel ist.
Du kannst dir zur Bequemlichkeit auch ein kleines Script schreiben.

Zu 2.: Mir würde auf Anhieb nichts einfallen.

Zu 3.: Ja, kein Problem sofern sich die Namen unterscheiden. Du kannst natürlich
auch am Paketsystem "vorbeiarbeiten" und Kernel zu Fuß bauen - ich finde abs
aber praktisch.

Zu 4.: Es gibt kein Kernel-Source-Paket. Das wird alles über das ABS gemacht.
Schau dir mal diese Links an.

http://wiki.archlinux.de/?title=Arch_Build_System
http://wiki.archlinux.org/index.php/Patching_in_ABS
http://wiki.archlinux.org/index.php/Ker … n_with_ABS
http://wiki.archlinux.org/index.php/Cus … n_with_ABS

Offline

#3 05.07.2007 15:16:46

Schrauber
Mitglied

Re: Eigenen Kernel backen

Kleiner Tip dazu, da ich öfter neue Kernel baue:

Mach in das PKGBUILD vor 'make config' ein 'return 1' rein.
Dann bricht die Paketerstellung an der Stelle ab.

Danach hast Du die fertig gepatchte Kernelsource im Verzeichniss ./src liegen. Da kannst Du rein gehen und einen make menuconfig machen und Deine Config erstellen. Dann noch einen cp .config ../../config. Damit kopierst Du die eben erstellte Kernelconfig in das Build-Verzeichniss für makepkg.
Nach löschen der Verzeichnisse src und pkg kannst Du mit makepkg den Kernel mit der veränderten Config bauen. Ach so, vorher nicht vergessen, das 'return 1' aus dem PKGBUILD wieder raus zu nehmen, sonst läufts nicht durch.

Ansonsten, für Patches:
Hab ich für den viafb gebraucht. Da gibts kein passendes diff für den Arch-Kernel.
Oben beschriebener Weg,um an die Sourcen zu kommen. Dann hab ich erstmal im src-Pfad das linux-2.6.21 nach linux-2.6.21.orig kopiert. Dann linux-2.6.21 auf dem vorgesehenen Weg mit viafb gepatcht.
Nun aus linux-2.6.21 und linux-2.6.21.orig ein diff erstellt. Für dieses diff hab ich dann noch im PKGBUILD eine zusätzliche patch-Zeile eingebaut.
So kann ich wieder mit makepkg einen kompletten Kernel erstellen.

Klingt vielleicht alles etwas kompliziert. Aber das sind die Methoden, die ich mir angewöhnt habe. Vielleicht gibts einfachere/bessere Wege.
Auf jeden Fall hat es den Vorteil, das man über ABS und pacman geht. Somit wird man die selbstgebauten Sachen auch einfach wieder los. Wenn der neu gebaute Kernel nicht funktioniert, dann boote ich von der Arch-Installations-CD mit 'arch root=/dev/sdaX' in mein installiertes System. Dann ein pacman -Sy kernel26 und schon ist der originale Kernel wieder da.

EDIT: ein 'make menuconfig' direkt im PKGBUILD funktioniert bei mir übrigens nicht. Ich krieg dann ein flackerndes Bild vom Config-Screen und komm da auch nur noch mit Ctrl+C wieder raus.

Beitrag geändert von Schrauber (05.07.2007 15:19:03)

Offline

#4 05.07.2007 16:41:29

blue-dev
Mitglied

Re: Eigenen Kernel backen

Die Links hab ich mir gestern schon angeguckt, das mit abs hab ich aber eben erst richtig verstanden.
Ich habe mir jetzt erstmal die pkgbuild vom Kernel so angepasst das er ein make oldconfig an der Standard Arch Kernelkonfiguration durchführt und ich nicht alles neu machen muss.

Im Moment habe ich nur den rt patch an den Kernel mit angehängt und keine eigenen Änderungen gemacht, erstmal nur zum testen.

Was mir beim bauen der kernel header aufgefallen ist (ich habe die pkgbuild aus /var/abs/base/kernel-headers genommen) das er nichts in /usr/src kopiert, wie kommen dann die header vom neuen Kernel in das Verzeichnis?

Und noch eine letzte Frage, ich habe den Paketnamen für mich umbenannt, nun ist es doch kein Problem zwei Kernel parallel laufen zu lassen oder?

Offline

#5 05.07.2007 17:24:21

Schrauber
Mitglied

Re: Eigenen Kernel backen

Die Kernel Header stehen in /usr/include, nicht in /usr/src.

Da hin kommen sie erst bei der Paketinstallation mit pacman -U paketname.pkg.tar.gz

Beim Bau des Paketes werden sie im Build-Verzeichniss unter ./pkg erstellt. Und von dort pakt sie makepkg zu einem Paket zusammen, das dann installiert werden kann.

Aber die Header, die Du sicherlich meinst, kommen im normalen kernel26-Paket mit. Und die werden nach /usr/src/linux-2.6.21-ARCH installiert.
Das Paket kernel-headers hab ich noch nie neu gebaut.

Was zwei Kernel angeht:
Grundsätzlich geht das ohne Probleme.
Du musst allerdings bei Deinem eigenen Kernel die Extraversion (siehe PKGBUILD) umbenennen. Normal heißen die Kernel immer Version-ARCH. Sprich aktuell also 2.6.21-ARCH. Die Module werden dementsprechend nach /lib/modules/2.6.21-ARCH installiert. Dein eigenes Paket würde die jetzt überschreiben. Das läuft so also nicht. Deswegen musst Du eine andere Extraversion als ARCH verwenden, z.B. CUSTOM. Dann gehen sie nach 2.6.21-CUSTOM.

Beitrag geändert von Schrauber (05.07.2007 17:25:19)

Offline

#6 05.07.2007 18:39:00

blue-dev
Mitglied

Re: Eigenen Kernel backen

Danke für die Infos, das mit der Extraversion mach ich immer die hab ich schon verändert.
Der Buildprozess ist auch ohne Fehler durchgelaufen, jetzt mach ich mich erstmal ans umschreiben mit git.
Falls Interesse besteht kann ich den fertigen Kernel gerne mit eigenen Patches und diff-file zum Download anbieten.
Da der Kernel auf 3 unterschiedlichen Rechnern laufen muss ist er auch nicht direkt an mein System angepasst, deswegen sollte es für andere Nutzer keine Probleme geben.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums