staging.inyokaproject.org

Kernel selbst aus Quellen bauen

Status: Gelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

Actron

Anmeldungsdatum:
31. Oktober 2007

Beiträge: Zähle...

Hallo!

Ich habe Ubuntu 8.04 auf meinem Laptop installiert und möchte gerne versuchen mir einen Kernel selber zu bauen. Spez. Anforderungen habe ich dabei nicht, will das aus Interesse einfach mal probieren. Quasi als Lernprojekt bei dem ich im Idealfall wieder den Standardkernel bekomme, den ich jetzt schon hab (nur dann halt selbst gebaut). Möchte mich da langsam rantasten und dann später mal Anpasungen machen, wenn ich weiß, wie das alles generell funktioniert.

Die Kernel-Seite im wiki habe ich schon gelesen und im Ubuntu Handbuch von Galileo Computing gibts auch ein Kapitel dazu. Soweit ich das verstehe wird am System nichts geändert bis ich dpkg -i zur Installieren des Kernels aufrufe, stimmt dads?

Kann ich danach noch zum alten Standardkernel wechseln wenn mein Selbstbau irgendwie nicht läuft (zusätzlicher Eintrag in Grubs menu.lst oder so)? Oder ist der dann weg? Und wenn ich später ein apt-get upgrade mache, kriege ich dann wieder autom. Kernel-Upgrades oder muss ich ab dann _immer_ den Kernel selber bauen?

Momentan hab ich nur die Befurchtung, dass bei der Kernel-Config was steht, das ich nicht kenne oder verstehe. Aber so wie ich das sehe, kann ich die alte Config ja übernehmen lassen. Was meint ihr, läuft das dann nachher?

Sind bestimmt alles doofe Fragen, aber irgendwann muss man ja anfangen. Kompilieren kann ich doch erstmal, bis dpkg -i passiert ja nichts am System, right?

cya Bernd

PS.: Wie lange dauert das Bauen eigentlich ca ? Laptop ist ein alter 1,4 GHz mit einem Kern. Also so größenordnungsmäßig Minuten oder 1 Stunde oder 3 Stunden oder so? Sorry, I don't habe a clue... ☺

prometheus0815

Anmeldungsdatum:
12. Juni 2006

Beiträge: 7478

Actron schrieb:

Soweit ich das verstehe wird am System nichts geändert bis ich dpkg -i zur Installieren des Kernels aufrufe, stimmt dads?

Ja. Das Kompilat bleibt erstmal in /urs/src/linux liegen bzw. wird danach noch in eine deb-Datei geschnürt, aber installiert wird es erst während der Installation 😉

Kann ich danach noch zum alten Standardkernel wechseln wenn mein Selbstbau irgendwie nicht läuft (zusätzlicher Eintrag in Grubs menu.lst oder so)?

Du kannst beim Kernel-Setup einen Extrastring "localversion" definieren, der an die Kernelversion angehängt wird, so wie bei den originalen -generic oder -server. Auch wenn Du zu Anfang die originale Config übernehmen willst (kluger Plan!), solltest Du also ins Setup und diesen String anpassen. Dann wird bei der Installation Dein alter Originalkernel nicht überschrieben und auch ein Extraeintrag in der menu.lst angelegt. Die initrd wird automatisch genauso benannt.

Momentan hab ich nur die Befurchtung, dass bei der Kernel-Config was steht, das ich nicht kenne oder verstehe. Aber so wie ich das sehe, kann ich die alte Config ja übernehmen lassen. Was meint ihr, läuft das dann nachher?

Sollte wohl ☺ Die Original-Config liegt in /boot, die kopierst Du einfach als .config (Punkt beachten!) in Dein Kernel-Sourceverzeichnis. Dann make xconfig (oder so) und erwähnten localversion-String anpassen. Weiter wie in den Anleitungen.

Sind bestimmt alles doofe Fragen, aber irgendwann muss man ja anfangen

Keine doofen Fragen, sondern sehr umsichtig. Besser als zu warten, bis es Tränen gibt 😉 Ich wünsche Dir viel Erfolg!

PS.: Wie lange dauert das Bauen eigentlich ca ? Laptop ist ein alter 1,4 GHz mit einem Kern.

Wenn Du alles bauen musst (beim ersten Mal oder nach einem make clean) würde ich mit 30-60 Minuten rechnen, vielleicht mehr. Wenn Du danach noch eine Kleinigkeit veränderst (z.B. ein Modul dazu), muss nur das neu gebaut werden. Und wenn Du was wegnimmst (z.B. Modul ganz abschalten), gibt es (fast) gar nix neu zu kompilieren.

Gruß

Prometheus

Actron

(Themenstarter)

Anmeldungsdatum:
31. Oktober 2007

Beiträge: 180

Hallo!

Tnx hat scheinbar alles geklappt. Laptop läuft noch und lt. uname -r auch mit einem 2.6.24.3custom. Kann man die Sourcen aus /usr/src dann löschen sobald der Kernel in /boot liegt oder brauchr man die noch? Weil da lagen vorher schon xxx-header usw. (offenbar vom Standardkernel).

Das mit dem localversion hat erst im 2. Anlauf geklappt weil im wiki noch stand, dass man auch im Makefile die EXTRAVERSIOn anpassen soll. Hatte dann zeitweise ein 2.6.24.3customcustom. 😕 Also doch nur eins vom beiden anpassen. Bauen hat laut time übrigens 75 Minuten gedauert und custom-Kernel ist jetzt 0,3 MB kleiner als der generic.

Eine Prob. ist mir aber aufgefallen, bei shutdown -k +3 "Bla" o. ä. piept nun der Speaker. Mit lsmod | grep pcspkr war der Schuldige schnell gefunden und in .config steht da M. Was genau macht da ein Y und ein M aus? Module kann man zur Laufzeit entfernen, geht das bei Y dann nicht? Oder werden Module nur bei Bedarf geladen?

Angenommen ich möchte pcspkr mit N nicht im Kernel haben, wie baue ich dass dann neu? Wäre doch eine gute Übung. ☺ Einfach wieder make-kdpk aufrufen? Ohne vorheriges clean sollte make dann doch nicht viel zu tun haben.

Wozu legt man eigentlich vor dem Bauen den Symlink linux an? Aus Faulheit um sich bei cd linux die Version zu sparen oder hat das einen tieferen Grund?

Fragen über Fragen! Tnx für die Antworten bis hier.

cu Bernd

prometheus0815

Anmeldungsdatum:
12. Juni 2006

Beiträge: 7478

Actron schrieb:

Tnx hat scheinbar alles geklappt. Laptop läuft noch und lt. uname -r auch mit einem 2.6.24.3custom.

Super! Glückwunsch!

Kann man die Sourcen aus /usr/src dann löschen sobald der Kernel in /boot liegt oder brauchr man die noch?

Sind bloß ein paar Megabyte. Ich würde sie liegen lassen, falls Du noch mal was ändern willst und custom2 bauen willst. WENN Du löschst, deinstalliere VORHER das entsprechende Paket, sonst werden die Quellen, wenn es eine neue Version gibt, wieder da hin entpackt.

in .config steht da M. Was genau macht da ein Y und ein M aus? Module kann man zur Laufzeit entfernen, geht das bei Y dann nicht

Wenn da Y steht, wird das jeweilige Feature eben nicht als Modul gebaut, sondern fest in den Kernel einkompiliert. Das kann man dann natürlich nicht zur Laufzeit entfernen. Daher setzen moderne Distributionen (wie Ubuntu) in so großem Ausmaß auf Module, damit immer nur das geladen ist, was Du brauchst. In Deinen eigenen Kernel kannst Du im Prinzip alles einkompilieren, was Du brauchst, und den Rest mit "N" ganz weglassen. Bloß dann kaufst Du ein Stück neue Hardware und ... ARBEIT! 😉 Mittelweg: Alles Benötigte fest rein, den Rest als Module.

Angenommen ich möchte pcspkr mit N nicht im Kernel haben, wie baue ich dass dann neu? Wäre doch eine gute Übung. ☺ Einfach wieder make-kdpk aufrufen? Ohne vorheriges clean sollte make dann doch nicht viel zu tun haben.

Das klingt, als hättest du die .config per Hand im Editor angepasst!?! Dafür gibt es doch make {menu|x|k|g}config. Aber im Prinzip hast Du recht. Andererseits: Wozu neukompilieren? Du kannst auch einfach das PC-Speaker-Modul in /etc/modprobe.d/blacklist eintragen, dann wird's nie geladen.

Wozu legt man eigentlich vor dem Bauen den Symlink linux an? Aus Faulheit um sich bei cd linux die Version zu sparen oder hat das einen tieferen Grund?

Einerseits Faulheit, andererseits weiß man so immer, in welchem Source-Tree man zuletzt zugange war, z.B. bei mehreren Kernel-Sourcen mit gleicher Version, aber unterschiedlichen Patchsets. Etwa so: Wenn Du nicht weißt, was Du nehmen musst, nimm /usr/src/linux.

Fragen über Fragen! Tnx für die Antworten bis hier.

Klar, gerne! Viele Grüße

Prometheus

Actron

(Themenstarter)

Anmeldungsdatum:
31. Oktober 2007

Beiträge: 180

Stimmt, die Sourcen hat man ja mit apt-get gezogen. Dann werde ich damit mal das remove probiern.

Gut, das mit den Modulen ist dann so wie ich es schon gedacht hatte. Neue HW im Laptop ist eher unwahrscheinlich, aber da ich nicht weiss was für Module ich überhaupt brauche, muss da bei den meisten Treibern erst mal das M stehen bleiben. Die .config hab ich mit gconfig angepasst, aber beim Suchen ist das zieml. unkonfortabel. Mit vi sind die paar Zeilen schneller gefunden.

Klar geht auch blacklist aber so hatte ich einen Grund, den Kernel noch mal neu zu bauen. Will doch lernen wie das so alles läuft. ☺ Hat auch geklappt aber 34 Minuten gedauert. Bei einem geänderten Modul hätte ich erwartet, dass das schneller geht. 🐸 Und Update wie z. B. bei Opera ging bei dpkg auch nicht. Hab dann erst -purge gemacht und dann den neu-neuen Kernel installiert.

Und jetzt mal nen Vanilla von kernel.org? 😀 Gibts eigentlich ne Seite, wo man mehr zum Unterschied Ubuntu Kernel ←> Vanilla nachlesen kann? Auch zu den Patches ist im wiki nicht so viel geschrieben. Braucht man die oder läuft so ein Kernel auch ohne mit Ubuntu? Fixt man damit Fehler oder sind das Distri-abhängige Erweiterungen? usw....

cu Bernd

[edit]Mit apt-get lassen sich die Sourcen nicht entfernen, dann will er auch den Kernel deinstallieren und die menu.lst bearrbeiten. :-/[/edit]

Antworten |