{"id":1354,"date":"2011-02-17T14:53:40","date_gmt":"2011-02-17T13:53:40","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=1354"},"modified":"2011-02-17T14:53:40","modified_gmt":"2011-02-17T13:53:40","slug":"den-eigenen-debian-kernel-bauen","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2011\/02\/17\/den-eigenen-debian-kernel-bauen\/","title":{"rendered":"Den eigenen Debian-Kernel bauen"},"content":{"rendered":"<p>Es kommt nicht oft vor, dass ich den Linuxkernel selbst \u00fcbersetzen muss. In der Regel bietet der generische Debian- oder Ubuntukernel alle Treiber, die man braucht und da die Module nur dann geladen werden, wenn sie tats\u00e4chlich ben\u00f6tigt werden, ist der Performancegewinn eines eigenen Kernel f\u00fcr mich auf neuer Hardware kaum sp\u00fcrbar.<br \/>\nNat\u00fcrlich gibt es aber auch gute Gr\u00fcnde, warum ein eigener Kernel sinnvoll sein kann. Sei es nur um das letzte bisschen Leistung herauszukitzeln, ein neues Kernelfeature zu aktivieren oder unn\u00f6tige zu deaktivieren.<br \/>\nDer Standardkernel 2.6.32 von Squeeze und auch der 2.6.26 von Lenny funktionieren beide nicht auf meinem Toshiba Satellite 220cs Laptop. Bei nur 16 MB RAM regt sich nach GRUB f\u00fcr gew\u00f6hnlich nichts mehr. Meine Versuche mit Slitaz hingegen waren sehr erfolgreich. Sowohl das Betriebssystem als auch der Kernel sind so angepasst, dass selbst 16 Jahre alte Hardware mit aktueller Software funktioniert.<br \/>\nAls Debian-Fan wollte ich unbedingt den Kernel anpassen, um auszuprobieren wie sich Debian auf dem alten Laptop schl\u00e4gt. Nat\u00fcrlich stand ich wieder mal vor dem Problem, wie ging das eigentlich bei Debian mit dem Kernelkompilieren.<br \/>\n<a href=\"http:\/\/kernel-handbook.alioth.debian.org\/ch-common-tasks.html#s-common-building\">Debians Kernel Handbook<\/a> zeigt schon die wichtigsten Schritte auf, doch am einfachsten und nachvollziehbarsten werden sie auf www.adminlife.net beschrieben.<br \/>\nDebian bringt n\u00e4mlich schon ein Werkzeug mit, welches alle wichtigen Schritte der Kernelkompilierung \u00fcbernimmt und den angepassten Kernel auch gleich in ein .deb Paket umwandelt, welches sich \u00fcber Debians Apt dann problemlos verwalten l\u00e4sst.<br \/>\nDie wichtigsten Schritte sind:<\/p>\n<ul>\n<li><strong>Notwendige Programme zum Kompilieren installieren<\/strong><br \/>\n<code>aptitude install kernel-package build-essential<\/code><\/li>\n<li><strong>Gew\u00fcnschte Kernel Quellen installieren<\/strong>. Entweder die Debian Kernel Sourcen nehmen oder direkt von <a href=\"http:\/\/www.kernel.org\">www.kernel.org<\/a> herunterladen und in \/usr\/src entpacken. Z.B.<br \/>\n<code>aptitude install linux-source-2.6.30<\/code><\/li>\n<li><strong>Symlink anlegen<\/strong><br \/>\n<code>ln -s \/usr\/src\/linux-2.6.30 \/usr\/src\/linux<\/code><\/li>\n<li><strong>Kernelconfig kopieren<\/strong>. F\u00fcr den Anfang gen\u00fcgt es die aktuelle config aus \/boot zu nehmen. Allgemein geht auch <em>zcat \/proc\/config.gz > kernel.cfg<\/em><br \/>\n<code>cp \/boot\/config-`uname -r` \/usr\/src\/linux\/.config<\/code><\/li>\n<li><strong>Kernel an die eigenen Bed\u00fcrfnisse anpassen<\/strong>\n<pre>\ncd \/usr\/src\/linux\nmake oldconfig\nmake menuconfig\n<\/pre>\n<\/li>\n<li>\n<strong>Den Kernel kompilieren und ein .deb Paket erstellen<\/strong><br \/>\n<code>make-kpkg kernel_image --revision 20110217 --initrd<\/code><\/li>\n<\/ul>\n<p>Ich musste auf meinem im letzten Post vorgestellten Debian-Minimalsystem mit debootstrap noch das Paket <em>lzma<\/em> installieren, damit das Kompilieren erfolgreich war.<br \/>\nAls Kernelconfig hatte ich die Slitaz 2.6.30-loram config ausgew\u00e4hlt. Beim \u00dcbersetzen wurde zuerst ein Fehler mit dem Kernelmodul <em>lguest<\/em> gemeldet, dass ich danach aus der config gestrichen habe.<br \/>\nErfreulicherweise lief danach die Kernelkompilierung erfolgreich durch. Das entstandene .deb Paket l\u00e4sst sich bequem mit <em>dpkg -i<\/em> installieren.<br \/>\nMit diesem Kernel lie\u00df sich wie erhofft problemlos sowohl ein Squeeze als auch ein Lenny in Qemu booten. M\u00f6glichkeiten zum Optimieren gibt es noch einige. Z.B. ben\u00f6tige ich nicht wirklich das ReiserFS-Dateisystem und gef\u00fchlte 100 weitere Module auch nicht.<br \/>\nVielleicht werde ich deswegen auch in Zukunft die Kernelconfig soweit anpassen, dass tats\u00e4chlich nur noch die absolut notwendigen Pakete \u00fcbrig bleiben. F\u00fcr den Anfang ist \"the Debian way &trade;\" und ein Minidebian in Ubuntu eine bequeme M\u00f6glichkeit um weiter herum zu experimentieren.<br \/>\nWie sich der neue Kernel auf dem Toshiba 220cs geschlagen hat, dazu demn\u00e4chst mehr.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es kommt nicht oft vor, dass ich den Linuxkernel selbst \u00fcbersetzen muss. In der Regel bietet der generische Debian- oder Ubuntukernel alle Treiber, die man braucht und da die Module nur dann geladen werden, wenn sie tats\u00e4chlich ben\u00f6tigt werden, ist der Performancegewinn eines eigenen Kernel f\u00fcr mich auf neuer Hardware kaum sp\u00fcrbar. Nat\u00fcrlich gibt es &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2011\/02\/17\/den-eigenen-debian-kernel-bauen\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eDen eigenen Debian-Kernel bauen\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[53,69,102,179,202],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/1354"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=1354"}],"version-history":[{"count":0,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/1354\/revisions"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=1354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=1354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=1354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}