Garten Eden

#linux #programming #android #online #stuff

Mein erster eigener Kernel

Woohoo! Ist es normal, so euphorisch zu sein, wenn man erfolgreich seinen ersten eigenen Kernel kompiliert hat? Egal, ich bin es.

$ uname -r
2.6.37.1-candela

Das meldet mir die Konsole seit gestern Abend. Und der Kernel läuft einwandfrei. Es folgt eine kleine Erfolgsgeschichte bzw. wie ich vorgegangen bin.

Ist ja schön und gut – aber warum?

Natürlich darf man sich zurecht fragen, warum man sich überhaupt an die Arbeit machen sollte, sich einen Kernel zu backen, wenn es doch so viele fertige, auch aktuelle, gibt. Kurzum: Man soll/muss nicht. Trotzdem kann es gerechtfertigt sein. Das ubuntuusers-Wiki gibt die wichtigsten Gründe dafür ganz treffsicher wieder. Zitat:

Ich bin dann wohl ein Repräsentant des letzten Falles.

Und wie?

Zu meiner Vorgehensweise: Schaut man ins Internet, erschlagen einen die Informationen, die es zum Thema Kernel-Kompilierung gibt und mir ging es so, dass ich nicht wusste, welcher Quelle ich den Vorzug geben soll. Nachdem ich aber ein Werkzeug gefunden hatte, das einem den Großteil der Arbeit abnimmt, waren die meisten How-Tos und Tutorials überflüssig. Dieses magische Tool heißt KernelCheck (Debian-Paket-Download auf der Projektseite/Sourceforge).
KernelCheck lädt die Informationen zu den aktuell erhältlichen Kerneln von kernel.org und kann jeden davon automatisch herunterladen. Anschließend bietet es an, einige empfohlene Einstellungen vom Tool vornehmen zu lassen, wie z. B. die Vorkonfiguration von ALSA und Grafiktreibern. Wählt man dazu noch die benutzerdefinierte Installation, kann man über eine Konsole Patches einspielen. Für ein funktionierendes ureadahead benötigte ich z. B. einen Patch, der im ubuntuusers-Forum veröffentlicht wurde. Im Anschluss kann man die Kernelkonfiguration vornehmen und der Kompiliervorgang startet.

Und was stelle ich ein?

Ja, die Kernelkonfiguration. Damit steht und fällt die Aktion. Mit über 3600 Wahlmöglichkeiten zwischen einkompilieren oder nicht und manchmal auch noch als Modul kompilieren verliert man da schnell den Überblick – so man denn je einen hatte. Ich habe mir nach anfänglichem Schock über ihren Umfang doch die Kernel-Seeds zu Gemüte geführt, eine gut strukturierte Informationsseite über (fast) alle Kerneloptionen. Wobei ich zugeben muss, dass diese Art, jede Stellschraube einzeln abzuklappern, sehr mühsam ist. Trotzdem kann ich es allen Interessenten nur ans Herz legen – schließlich soll die gesamte Aktion ja nicht an der Faulheit scheitern. Ohne die nötige Ausdauer kann man es IMHO auch gleich sein lassen.

Wie lange dauert so eine Kernelkompilierung?

Das Kompilieren selbst dauerte auf meinem 2,3 GHz-Mobilprozessor mit 4 GB RAM ziemlich genau 30 Minuten 15 Minuten. Neben der Systemleistung ist dies aber auch vor allem von den gewählten Einstellungen abhängig – Faustregel: je mehr, desto länger. Ich habe sehr viel abgewählt, weil ich weder Funkmasten noch Netzwerk-Backbones oder 20 Jahre alte Hardware betreibe.
Deutlich mehr Zeit in Anspruch nimmt hingegen das Durchgehen der einzelnen Konfigurationen. Aber wie gesagt: Für einen gut angepassten, minimalistischen Kernel lohnt sich die Arbeit.

Trivia

Fazit

Was will ich mit diesem Beitrag sagen? Vielleicht, dass es Spaß machen kann, so tief in ein System einzugreifen. Dass es in Linux mehr Stellschrauben gibt, als man sieht. Dass auf dieser Ebene eine ungeheure, selten geschätzte Arbeit liegt.
Vielleicht auch, dass Linux-Nutzer zu sein so vieles heißen kann. Wenn man will, benutzt man es wie andere (Multimedia-)Betriebssysteme auch. Möchte man aber mehr, so steht einem auch das frei.
Zu viel erwarten darf man allerdings nicht. Wenn man nicht gerade auf Bleeding-Edge-Treiber aus dem neusten Kernel angewiesen ist, wird sich das erlebte System nicht deutlich von einem mit vorkompiliertem Kernel unterscheiden.

Also: Man kann sich einen eigenen Kernel backen. Man kann es aber auch sein lassen.

Update am 11.03.2011 18:21

Kommentare

Dein Kommentar:






Bisher...

 
11.03.2011 18:24 Eduard Dopler sagt:
Ich habe jetzt noch einige Kernoptionen mehr deaktiviert, die für mein System nutzlos waren. So konnte ich die Kompilierzeit noch einmal halbieren. Danke für die Anregung!
 
07.03.2011 19:05 Eduard Dopler sagt:
Durch Zufall bin ich gerade auf das Theme gestoßen, das du meintest: Orta.
 
22.02.2011 10:45 Eduard Dopler sagt:
Den Rest des Systems? Du meinst Gentoo-mäßig? ;-)

Die -j-Option sollte eigentlich von KernelCheck gesetzt werden (bei number of jobs to send to the CPU habe ich zumindest 2 eingestellt). Der gnome-system-monitor zeigt auch beide Prozessorkerne bei 100%.
 
22.02.2011 01:25 enaut sagt:
hey,
gz zum Kernel :) next step der Rest des Systems ;) aber du sagst 30 Min braucht der kernel zum Kompilieren? zum vergleich ein Time von meinem kernel:

linux-2.6.36.1 # time make -j9
real 1m48.550s
user 10m34.213s
sys 0m52.151s

Das Heißt auf meiner Uhr braucht der grade mal 1min 50 sec.

hast du die -j option eingesetzt? oft ist -j Anzahl der (virtuellen kerne +1 sinnvoll)
 
21.02.2011 18:46 FERNmann sagt:
Leider scheint das Tool mit meinem nVidia-Treiber nicht klar zu kommen:

Traceback (most recent call last):
File "/usr/share/kernelcheck/scripts/build.py", line 496, in
window = KernelCheck()
File "/usr/share/kernelcheck/scripts/build.py", line 115, in __init__
self.build("call")
File "/usr/share/kernelcheck/scripts/build.py", line 364, in build
temp_path = self.get_temp_path(data)
File "/usr/share/kernelcheck/scripts/build.py", line 312, in get_temp_path
nv_version, nv_url, nv_file = self.nv_get_latest()
File "/usr/share/kernelcheck/scripts/build.py", line 225, in nv_get_latest
nv_driver_version = re.findall(Latest Version: /object/linux_display_amd64_(.*).html, buffer)[0]
 
21.02.2011 15:57 hallodri sagt:
Ocki docki. Danke!
 
21.02.2011 15:23 Eduard Dopler sagt:
Oh, das Video ist nicht von mir, sondern von Web Upd8. Vielleicht wirst du dort fündig, sorry.
 
21.02.2011 14:11 hallodri sagt:
Hallo, ich habe mal eine ganz andere Frage. Auf deinem Video verwendest du einen super schicken Theme. Kannst du mir sagen, was das für einner ist, wie heißt er, wo kann ich den runterladen? Auf gnome-look.org habe ich nichts gefunden. Vielleicht magst du mir ja die Frage beantworten.
 
21.02.2011 09:55 AdaMin sagt:
Hallo!

Gratuliere Dir auch!

Ich habe es auch vor ein Paar tagen versucht und geschafft, habe allerdings Gentoo als Testsystem genommen, wollte mal wissen, wie das Aufbauen von einem System funktioniert und kontrolliere das ganze von Ubuntu aus.
Mir ist es auch gelungen meine Festplatten beim Optimieren auszuschliessen und nicht mehr booten zu können...aber dann wieder von einer Sicherung unter Ubuntu zurückgespielt.

Wirklich viel dabei gelernt.
Super finde ich es auch, wenn dann doch etwas fehlt (bei mir ein Mikro) und draufkommt, wo man das einstellen kann.

Die grösste Schwierigkeit bei Gentoo war für mich allerdings wpa_supplicant aus der Konsole einzurichten...
Da habe ich 3 Stunden gebraucht, bis ich es kapiert habe, wie das geht.
 
20.02.2011 23:32 Pirad sagt:
Schön dass es alles klappt. Vielleicht sollte ich das auch mal ausprobieren.
Auf jeden Fall sollte man sich dazu folgenden Link anschauen - der hilft:
http://xkcd.com/456/
;)
 
20.02.2011 20:39 killermoehre sagt:
Also ein Vorteil bietet der selbstgebackene Kernel: man kann ihn auf seine CPU optimieren und nicht nur auf die Architektur. Neben Stabilität bringt das auch (etwas) an der Geschwindigkeit.

killermoehre
 
20.02.2011 20:37 Eduard Dopler sagt:
Nun ja, die anderen Kernel bleiben ja erhalten und werden auch weiterhin per Aktualisierungsverwaltung mit Updates versorgt. Es erscheint einfach ein weiterer in deiner Grub-Liste. Sollte also, aus welchen Gründen auch immer, ein neuerer Kernel verfügbar sein, kannst du deinen selbst kompilierten jederzeit löschen. Wegen der (berechtigten!) Update-Politik von Canonical und Co. wirst du aber wohl keinen aktuelleren angeboten bekommen. Ich hoffe, ich habe deine Frage richtig verstanden.
 
20.02.2011 20:31 Eduard Dopler sagt:
Dann bin ich ja beruhigt ;-)
 
20.02.2011 20:18 Igby sagt:
Zuerst einmal: Glückwünsche zu deinem 1. selbstgebackenen. :)

Um deine Einleitungsfrage zu beantworten: Ja, das ist normal und normalerweise auch gerechtfertigt. Das kernelbacken ist zwar gerade mit solchen Tools, wie Du es benutzt leichter geworden, aber immer noch kein Kinderspiel.

Über den Sinn kann man gut streiten, aber Spass macht es. Das sollte feststehen.

In diesem Sinne
Igby
 
20.02.2011 20:13 engeld sagt:
Na dann sag ich doch mal Gratuliere! :D

Ich wollte auch schon mehrere Male meinen Kernel selbst kompilieren, bin dann aber jeweils sprichwörtlich von der Informationsmenge erschlagen worden.

Werds nun bei der nächsten Gelegenheit nach deinem Schema probieren.

Aber eine Frage noch: Wenn einmal selbst kompiliert = immer selbst kompilieren? oder kann man da auch wieder mal normal per Aktualisierung auf aktuelle Kernel wieder umsteigen?

de

Moment, lade ältere Artikel...

E-Mail (nicht öffentlich)

Homepage (optional)

Kommentar... (code-Tag erlaubt)