Linuxkernel backen (2.6.38.2)

  • Aus gegebenem Anlass der neuen Sandy-Bridge-Systeme schreibe ich hier die nötigen Schritte eines Kernelupdates auf. Ohne das man sein System auf unstable/SID umstellen muss. Also heißt es: selbst ist der Mann :)


    Wir updaten ein Squeeze Debian 6 von Kernel 2.6.32-5-686 zu 2.6.38.2.
    Es ist aber übertragbar auf andere Kernelversion und Distributionen bei denen aber ggf. noch ein paar zusätzliche/andere Pakete benötigt werden.


    Als erstes laden wir uns folgende Pakete mit synaptic oder vorzugsweise apt. Bei Ubuntu muss noch ein sudo vor die Befehle geschrieben werden. Es sind ein paar mehr Pakete als wirklich benötigt, denn so können gleich im Anschluss die Grafiktreiber compiliert werden.


    Code
    1. apt-get install kernel-package
    2. apt-get install libncurses5-dev
    3. apt-get install build-essential
    4. apt-get install ssh
    5. apt-get install xorg-dev
    6. [I](optional) natürlich geht auch alles in einem Befehl[/I]
    7. [I]apt-get install kernel-package libncurses5-dev build-essential ssh xorg-dev[/I]


    Nun bereiten wir alles vor und laden den Sourcecode (wir gehen davon aus das noch kein Kernel gebacken wurde). Legen das Verzeichnis an und laden uns den "neusten" stable Kernel. Dieser ist beim erscheinen dieses Howtos aber bestimmt schon wieder alt. Muss also ersetzt werden, wenn ein anderer neuer Kernel gebacken werden soll. Mit oldconfig übernehmen wir die Einstellungen des gerade aktiven Kernels. Neuerungen des zu backenden Kernels müssen jetzt bestätigt werden. Es empfiehlt sich immer Enter zu drücken wenn man nicht weiß worum es gerade geht.


    Code
    1. cd /usr/src
    2. wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
    3. tar xvfj linux-2.6.38.tar.bz2
    4. ln -s linux-2.6.38 linux
    5. cd linux
    6. make oldconfig


    Falls ihr wisst was ihr tut könnt ihr auch nachträglich noch Konfigurationen vornehmen. (oder wenn ein bestimmter Treiber aktiviert werden soll der sonst nicht im Kernel enthalten ist).

    Code
    1. make menuconfig


    Ist all dies abgeschlossen kommen wir zum backen des Kernels. Dies passiert mit dem Aufruf:


    Code
    1. CONCURRENCY_LEVEL=8 make-kpkg --initrd kernel_image --revision NAME


    Wobei die Zahl beim CONCURRENCY_LEVEL je nach Prozessormodell gewählt werden sollte um die best mögliche Compilationszeit zu erreichen. Angeben sollte man die Kernanzahl ggf. inkl logischer Kerne. Bei einem 2600K sind es also 8.


    Nachdem der Kernel,hoffentlich ohne Fehler, den Vorgang abgeschlossen hat, muss nur noch in das passende Verzeichnis gewechselt werden damit dpkg seine arbeit verrichten kann.


    Code
    1. cd /usr/src
    2. dpkg -i kernel-image-2.6.38_NAME_i386.deb


    PS: NAME kann natürlich beim make-kpkg Aufruf angepasst werden.