Linuxkernel backen (2.6.38.2)

    • Offizieller Beitrag

    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
    apt-get install kernel-package 
    apt-get install libncurses5-dev 
    apt-get install build-essential
    apt-get install ssh
    apt-get install xorg-dev
    
    
    [I](optional) natürlich geht auch alles in einem Befehl[/I]
    [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
    cd /usr/src
    wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
    tar xvfj linux-2.6.38.tar.bz2
    ln -s linux-2.6.38 linux
    cd linux
    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
    make menuconfig


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


    Code
    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
    cd /usr/src
    dpkg -i kernel-image-2.6.38_NAME_i386.deb


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