Unter Debian einen eigenen Kernel kompilieren

  • Hi,


    wie versprochen hier die HowTo. Herzlichen Dank an dieser Stelle an Highend.


    Befehle sind Fett hervorgehoben:


    1. Was brauchen wir


    Debian ISO:
    ftp://ftp.de.debian.org/debian…1-i386-binary-1_NONUS.iso
    Diese eine CD reicht, den Rest holen wir übers Netz.


    Image z.B. mit Nero brennen, Wizard schließen, ->Datei->CD-Image-Brennen, Image auswählen und los.


    Kernel Source:
    http://www.kernel.org/pub/linu…v2.4/linux-2.4.22.tar.bz2


    Zum Lesen
    http://www.openoffice.de/linux/buch/


    Config Datei, siehe Anhang



    Nützliches:


    Putty (vom Windows Rechner mit Terminal Fenster per SSH auf den Linux Rechner zugreifen
    d.h. Ihr könnt die Befehle von hier per Drag&Drop in Putty ziehen und ausführen; minimiert Schreibfehler)

    http://www.chiark.greenend.org…atham/putty/download.html



    WinSCP (SSH Client; damit könnt ihr prima ala Norton Commander Dateien von
    Eurem Windows Rechner auf den Linux Rechner kopieren)


    http://winscp.sourceforge.net/eng/




    2. Debian Installation


    Wichtig!!!!
    Beim Boot Promt nicht mit Return weitermachen sondern bf24 eingeben
    dann bootet die CD mit einem 2.4 kernel und richtet den auch bei der Installation ein.



    Nach der Debianinstallation müssen wir mit apt-get install Paketname noch ein paar notwendige Programme installieren:


    SSH - s.o. falls nicht schon bei der Debian Installation passiert
    Starten mit: /etc/init.d/ssh start


    - bzip2
    - screen
    - binutils - der GNU Assembler, Linker und einige Zusatzprogramme.
    - libc6-dev - GNU C-Bibliothek, Entwicklerpaket
    - gcc - Der eigentliche GNU (EGCS) C-Compiler
    - make - GNU-Version von "make"
    - bin86 - 16-bit Assembler
    - unzip
    - automake
    - autoconf
    - gcc
    - gpp
    - libncurses5-dev
    - libjpeg62-dev (ist zwar nicht für den Kernel nötig, wird aber für VDR gebraucht)
    - libvorbis-dev (für den Mplayer)
    - dialog (für LIRC)
    - zlib1g-dev (für MP3 Plugin)
    - automake1.7 (für libdvdnav)
    - libcompress-zlib-perl (VdrAdmin 0.95)


    Man muss nicht jedes einzelne Paket mit apt-get install NAME aufrufen sondern kann auch mehrere Paket angeben, durch Leerzeichen getrennt.



    3. Kernel Installation [komplette Vorgehensweise]


    Nach /usr/src wechseln:


    cd /usr/src


    Kernel herunterladen (oder an diese Stelle kopieren), z.B. per:


    wget http://www.kernel.org/pub/linu…v2.4/linux-2.4.22.tar.bz2


    Dann das Archiv entpacken:


    tar -xjvf linux-2.4.22.tar.bz2


    Symbolischen Link anlegen:


    ln -s linux-2.4.22 linux


    Kontrolle:


    ls -la ./


    sollte dann so aussehen:


    drwxrwsr-x 3 root src 4096 Oct 9 23:39 .
    drwxr-xr-x 12 root root 4096 Oct 9 22:57 ..
    lrwxrwxrwx 1 root root 12 Oct 9 23:39 linux -> linux-2.4.22
    drwxr-xr-x 15 root root 4096 Aug 25 13:44 linux-2.4.22
    -rwxrwxrwx 1 root root 29528612 Oct 8 13:56 linux-2.4.22.tar.bz2



    Config Datei (s.Anhang) kopieren nach /usr/src/linux:


    auspacken


    (Auf jeden Fall den Prozessortyp in der .config anpassen!!!)


    tar xzf 2.4.22-config.tar.gz -C ./


    Kontrolle:
    -rw-r--r-- 1 root root 31485 Oct 9 22:56 .config
    -rw-r--r-- 1 root root 40960 Oct 9 22:58 2.4.22-config.tar.gz



    So, nachdem die Voraussetzungen geschaffen sind, gehen wir an den Kernel:


    aus dem /usr/src/linux Verzeichnis heraus:


    cd /usr/src/linux


    make menuconfig


    dort gleich wieder auf -Exit- gehen und wenn er fragt -Kernel speichern- dann mit ja antworten


    make dep


    mit dem Befehl make dep werden die Abhängigkeiten geprüft


    make clean


    make clean räumt noch übrig gebliebene Dateien von der Platte


    make bzImage


    bzImage erzeugt dann den kernel



    danach sollte das dann am Ende z.B. so aussehen:


    System is XXXX kB
    warning: kernel is too big for standalone boot from floppy
    make[1]: Leaving directory `/usr/src/linux-2.4.22/arch/i386/boot'


    System.map und neuen Kernel nach /boot kopieren


    cp System.map /boot/System.map-2.4.22

    cp arch/i386/boot/bzImage /boot/vmlinux-2.4.22



    Kontrolle:


    ls -la /boot | grep 2.4.22


    sollte dann so aussehen:


    -rw-r--r-- 1 root root 658853 Oct 10 01:11 System.map-2.4.22
    -rw-r--r-- 1 root root 1243003 Oct 10 01:12 vmlinux-2.4.22


    make modules


    hier werden die Treiber übersetzt


    die letzten 3 Zeilen sollten dann so aussehen:


    make[1]: Entering directory `/usr/src/linux-2.4.22/arch/i386/lib'
    make[1]: Nothing to be done for `modules'.
    make[1]: Leaving directory `/usr/src/linux-2.4.22/arch/i386/lib'



    make modules_install


    mit make modules_install werden die Treiber an den richtigen Ort kopiert


    depmod -ae


    cd /


    rm -f vmlinuz*


    ln -s /boot/vmlinuz-2.4.18-bf2.4 vmlinuz.old


    ln -s /boot/vmlinuz-2.4.22 vmlinuz


    Kontrolle


    ls -la | grep vmlinuz


    lrwxrwxrwx 1 root root 20 Oct 10 01:18 vmlinuz -> /boot/vmlinuz-2.4.22
    lrwxrwxrwx 1 root root 26 Oct 10 01:18 vmlinuz-old -> /boot/vmlinuz-xxx



    lilo


    folgende Ausgabe sollte kommen


    Added Linux *
    Added LinuxOLD



    Fertig jetzt können wir per reboot neu starten.


    Nach dem Login kontrollieren wir ob auch wirklich der neue Kernel da ist:


    uname -a


    Ausgabe:


    Linux debian 2.4.22 # ....


    Hat also geklappt


    Das war es dann.



    Gruss


    Thosi




    P.S. Anregungen, Berichtigungen sind herzlich willkommen

  • Dumme frage:
    warum machst du es nicht mit debian-tools?
    Das hat den Vorteil, das es


    a) viel einfacher geht
    b) du den Kernel als deb bekommst und daher jederzeit sauber zurrückgehen kannst auf alte Versionen


    Ich sehe das als riesen vorteil von Debian an.

  • hallo,
    also du kannst nachdem du menuconfig bzw. xconfig einfach ein "make-kpkg kernel_image --revision=xyz.1" ein deb-paket erstellen und wie torsten schon sagt einfach per dpkg -i in den versionen "herumspringen". dadurch kannst du dir den ganzen make dep, make clean, etc. sparen!!

  • selbiges gibts auch noch für die Module:
    make-kpkg modules_image --revision=xyz.1


    Thosi, das war nicht böse gemeint, die Anleitung hilft sicher vielen, nur grade bei debian gehts etliche Stufen einfacher. Hätte ja auch sein können, dass du da Nachteile kennst die mir unbekannt waren. Daher die Nachfrage.
    Ich machs seit 2 Jahren mit make-kpkg und habe da sehr gute Erfahrungen mit.

  • moechte mir Thosi anschliessen. Hab nur einem rat, nachdem man mit apt-get upgrade die letzte packages runtergeladen hat, spart man sich viel zeit diese installation als image auf einem CD zu brennen ;) .


    Ehrlich gesagt hab ich die debian tools nicht wirklich verstanden und die paar minuten fur einem neuem kernel stoeren mir nicht :D


    Ycat

  • Huhu, sehr gute Anleitung ;)


    Aber ich glaube, da hat sich ein kleiner Fehler eingeschlichen:


    Quote

    cp arch/i386/boot/bzImage /boot/vmlinux-2.4.22


    Ok, das geht ;)


    Dann bei der Kontrolle:


    Quote

    -rw-r--r-- 1 root root 1243003 Oct 10 01:12 vmlinux-2.4.22


    Nungut...
    Dann aber:


    Quote

    ln -s /boot/vmlinuz-2.4.22 vmlinuz


    Hm, da stimmt was nicht


    /boot/vmlinux-2.4.22
    /boot/vmlinuz-2.4.22


    Ich hoffe, ich habe das nicht etwas falsch verstanden....
    Aber meiner Meinung nach hätte man es direkt "vmlinuz-2.4.22" nennen sollen, also:

    Quote

    cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22


    mfg sphere

    silence: Ubuntu 9.10 | Asus M3N78-VM | AMD 4450e | TT-budget S2-1600 DVB-S2 | 5 X 1TB Raid5 | vdr (1.7.10) | xbmc opdenkamp master | Optoma HD65 Beamer | Samsung LE37B530 LCD | Onkyo 605 AVR | Heco Victa 700/300/100/25A

  • Hi,


    torsten ,


    habe ich nicht böse aufgefaßt. Wenn es einfacher geht ist das sehr gut. Bei der obigen Methode lernt man aber auch gleich noch ein paar Befehle kennen und lernt ein wenig was über die -Innereien- von Linux.
    Highend hat das ja mit mir zusammen im ICQ gemacht und ich denke sein Ziel war es, das ganze Schritt für Schritt auch für Newcomer verständlich zu machen, so wie ich es z.B. bin. Und glaubt mir, er hat schon ein paar Nerven bei den beiden ICQ Sitzungen gelassen.


    sphere ,


    sicher geht es auch Direkt, für diesen Fall sollte aber alles Schritt für Schritt leicht nachvollziehbar sein.


    Gruß


    Thosi

  • Hi,


    vielleicht noch was wenn die Netzwerkkarte Probleme macht (was habe ich da überhaupt für eine Karte; Treiber liegt nur in Source vor).


    Wenn ihr nicht wißt was ihr überhaupt für eine Karte habt, dann einfach mal eine Knoppix Boot-CD starten und dann in einem Terminalfenster "lsmod" eingeben. Mit ein bischen Glück ist der Treiber dann auch auf der o.g. Debian mit bei.
    Wenn der Treiber nur in Source vorliegt, mit einer unterstützen NW Karte installieren, dann der Treiber compilieren und in das entsprechende Kernel Verzeichnis kopieren und über "modconf" einbinden. Fertig.


    Bervor jetzt jemand über mich "herfällt" ;) , es gibt bestimmt eine bessere Methode, aber für mich als Linuxneuling die einzige auf die ich gekommen bin. Also wenn es einen besseren Weg gibt, dann hier rein damit.


    Gruß


    Thosi