c't VDR 2: Kernel selber compilieren

  • Hallo :)


    Da ich mit meiner c't VDR 2 Installation wieder etwas selbstständiger und handlungsfähiger sein möchte, habe ich mir den Compiler, die Kernel Sourcen und die Kernel Header nachinstalliert. Für den Kernel sind das die aus folgenden Paketen:


    • kernel-source-2.4.24-ctvdr-2_2_all.deb
    • kernel-headers-2.4.24-ctvdr-2_2_i386.deb


    Jetzt wollte ich mir zunächst einmal den Kernel mit der original c't Konfiguration selber compilieren, um zu sehen, ob alles funktioniert:


    Code
    cd /usr/src/linux
    cp /boot/config-2.4.24-ctvdr-2 .config
    make oldconfig
    make bzImage
    make modules
    make modules_install
    cp arch/i386/boot/bzImage /boot/


    Dann in /etc/lilo.conf einen neuen Eintrag hinzugefügt:


    Code
    image = /boot/vmlinuz
    label = Linux-New
    root = /dev/hda3
    initrd = /boot/initrd.img
    append = "apm=power-off noapic acpi=off"
    read-only


    lilo ausgeführt, neu gestartet und Linux-New selektiert...


    Nach dem Neustart ist der Bildschirm voll von Meldungen, daß er /lib/modules/2.4.24/modules.dep nicht finden kann. Die Datei existiert aber; das habe ich extra überprüft. Alles darüber ist leider schon rausgescrollt. Danach hängt er sich dann mit attempting to kill init auf.


    Habt Ihr 'ne Ahnung, was da schiefgegangen ist?


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Hi


    vielleicht mal so probieren


    oder evtl nicht /lib/modules/2.4.24/modules.dep
    sondern /lib/modules/2.4.24-ctvdr.../modules.dep


    Gruss ulf

    Samsung UE43RU7479U, Antec Fusion Black, Prime A320m-k, Ryzen3 3200G, 2* DVB-T2,
    Yavdr-ansible auf Ubuntu Server 22.04

    Einmal editiert, zuletzt von Ulf ()

  • Hi Ulf,

    Zitat

    make dep
    make clean


    Bin grad' dabei...


    Zitat

    oder evtl nicht /lib/modules/2.4.24/modules.dep
    sondern /lib/modules/2.4.24-ctvdr.../modules.dep


    Naja, ich hätte für den neuen Kernel schon gerne ein eigenes modules Verzeichnis, da ich ihn im Laufe der Zeit gerne nur auf das nötigste zusammenstreichen möchte.


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Hi

    Zitat

    Naja, ich hätte für den neuen Kernel schon gerne ein eigenes modules Verzeichnis, da ich ihn im Laufe der Zeit gerne nur auf das nötigste zusammenstreichen möchte.


    klar sofort nachvollziehbar musst halt irgendwie dafür sorgen das der jeweilige Kernel auch da sucht


    Gruss ulf

    Samsung UE43RU7479U, Antec Fusion Black, Prime A320m-k, Ryzen3 3200G, 2* DVB-T2,
    Yavdr-ansible auf Ubuntu Server 22.04

  • Das scheint zu klappen. Ich habe

    • /lib/modules/2.4.24
    • /lib/modules/2.4.24-ctvdr-2


    Beide gut gefüllt mit hoffentlich allem, was da 'reingehört. Den ctvdr-2 Kernel kann ich auch sauber booten, bloß beim selbst compliliertem klappt's nicht.


    Kann es sein, daß ich die initrd auch noch anpassen/neu bauen muß? Wenn ja, wie mache ich das? (Habe leider nur lückenhaftes Halbwissen)


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5


  • kenne ich geht mir genauso
    aber ich hab den www.Kofler.cc
    initrd ist ja eine Ram Disk datei mit den Kernelmodulen für den start
    sollten ja die gleichen sein wie beim original aber vielleicht anders benannt
    deshalb kann es nicht schaden wenn du die zum neuen kernel neu erzeugst


    http://www.linuxwiki.de/InitRd?highlight=%28initrd%29


    Gruss Ulf

    Samsung UE43RU7479U, Antec Fusion Black, Prime A320m-k, Ryzen3 3200G, 2* DVB-T2,
    Yavdr-ansible auf Ubuntu Server 22.04

  • Eine initrd brauchst du eigentlich nur dann, wenn du zum booten module (z.B. scsi-Treiber, spezielle idetreiber) brauchst, die vor dem mounten von "/" noch nicht zugreifbar sind.

  • Schonmal danke an alle für die Hilfe!


    Jetzt habe ich's begriffen:


    Im root Verzeichnis habe ich zwar /lib/modules/2.4.24, aber in der initrd natürlich nicht! Die ist ja noch für den anderen Kernel und enthält /lib/modules/2.4.24-ctvdr-2.


    Am liebsten würde ich die original initrd dekomprimieren, mounten, darin /lib/modules/2.4.24-ctvdr-2 nach /lib/modules/2.4.24 umbenennen, unter anderem Namen neu komprimieren und dann in lilo eintragen.


    Bloß mit was entpacke ich die? Hab's schon mit uncompress, gzip und bzip2 versucht. Jedes mal bekomme ich eine Fehlermeldung, die Datei sei nicht im gzip bzw. bzip2 Format.


    Wenn ich mir gemäß http://www.linuxwiki.de/InitRd?highlight=%28initrd%29 eine eigene Disk anlege und mit gzip komprimiere, bekomme ich beim booten:


    RAMDISK: Compressed image found at block 0
    Freeing initrd memory: 2527k freed
    cramfs: wrong magic
    Kernel panic: VFS: Unable to mount root fs on 03:03


    Also habe ich beim selbst erstellen wohl was falsch gemacht, bloß was?


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Umbenennen der Module in der Ramdisk nützt nix, du brauchst die passend zum Kernel kompilierten aus /lib/modules/2.4.24


    Es würde reichen, wenn du einen Kernel mit Ramdisk-support hast, die Initrd mountest, die Module dort reinkopierst und dann umountest. Oder du verzcihtest komplett auf die Ramdisk und integrierst alles, was du zum Booten brauchst direkt in den Kernel. Also nicht als Modul.

  • Ok, ich sehe, das mit den zwei modules Verzeichnissen ist ein Faß ohne Boden. Da müßte ich ja ALLE Module neu übersetzen, nicht nur die, die beim Kernel dabei sind.


    Eine initrd habe ich hingekriegt mit cramfs, aber insgesamt fehlen mir für den neuen Kernel jetzt ja noch die Module von lirc, etc..


    Ich glaube, ich nehme doch die andere Lösung:


    Wie bringe ich dem neu compilierten Kernel bei, daß die Module in /lib/modules/2.4.24-ctvdr-2 liegen?

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Zitat

    Original von TomSoniq
    Ok, ich sehe, das mit den zwei modules Verzeichnissen ist ein Faß ohne Boden. Da müßte ich ja ALLE Module neu übersetzen, nicht nur die, die beim Kernel dabei sind.


    Die ct-Sourcen sind nicht vollständig? Welche Module-Sourcen sollten denn fehlen? Lirc + DVB und sonst?
    Bsorge die Quellen und mache mit

    Code
    make-kpkg modules_image

    ein Debian-Paket.


    Zitat

    Ich glaube, ich nehme doch die andere Lösung:
    Wie bringe ich dem neu compilierten Kernel bei, daß die Module in /lib/modules/2.4.24-ctvdr-2 liegen?


    Symlink.

    Code
    ln -s /lib/modules/2.4.24-ctvdr-2 /lib/modules/2.4.24


    Aber einen Kernel mit Modulen aus einem anderen Kernel zu betreiben ist heikel.

  • Ach, sorry, hatte die Frage falsch gestellt.


    Ich habe mir ja extra kernel-source-2.4.24-ctvdr-2_2_all.deb draufgezogen, damit ich haargenau den gleichen Kernel wie in der Distribution habe.


    Bloß wenn ich den jetzt compiliere, erzeugt mir ein make modules_install die Module in /lib/modules/2.4.24.


    Ich hätte den Kernel aber gerne so konfiguriert, daß die Module in /lib/modules/2.4.24-ctvdr-2 liegen. Dann habe ich am wenigsten Arbeit, muß mir keine neue initrd anlegen, etc.


    Ich muß dann nicht alles auf einmal neu compilieren, sondern kann Schritt für Schritt vorgehen:

    • erstmal nur den Kernel
    • später vielleicht eine neuere, kleinere initrd.img
    • wenn ich Lust habe, den DVB-Treiber und LIRC


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Zitat

    Original von TomSoniq
    Bloß wenn ich den jetzt compiliere, erzeugt mir ein make modules_install die Module in /lib/modules/2.4.24.


    Das ist korrekt so, da der Kernel ja so heißt.

    Zitat

    Ich hätte den Kernel aber gerne so konfiguriert, daß die Module in /lib/modules/2.4.24-ctvdr-2 liegen.


    Du willst wieder den Kernel mit fremden Kernel-Modulen betreiben.

    Zitat

    Dann habe ich am wenigsten Arbeit, muß mir keine neue initrd anlegen, etc.


    Wie du weniger Arbeit hast, habe ich gesagt. Wenn du wüsstest, wie bequem das mit den Debian-Werkzeugen ist, wärest du längst weiter.
    <vermutung>So verplemperst du auch noch den Rest deines Sonntages :) </vermutung>


    Rainer

  • Ach neiiin, ich will den Kernel ja gar nicht mit fremden Modulen betreiben.


    Ich möchte sowohl den Kernel als auch die Module neu compilieren (dann paßt ja beides zusammen), aber eben unter dem Namen 2.4.24-ctvdr-2.


    Kann doch nicht so schwierig sein :)


    An das komplette Debian Paket kann ich mich ja immer noch 'ranwagen, aber erstmal möchte ich die Basics verstehen...


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Zitat

    Original von TomSoniq
    Ich möchte sowohl den Kernel als auch die Module neu compilieren (dann paßt ja beides zusammen), aber eben unter dem Namen 2.4.24-ctvdr-2.


    Aha, ein Etikettenschwindler. Du möchtest einen Kernel namens 2.4.24-ctvdr-2 bauen, der nicht 2.4.24-ctvdr-2 ist. Kein Wunder, dass das mit Fummelei verbunden ist.
    Wenn du alles neu kompilieren willst, ist der Name doch so was von egal ...

    Zitat

    Kann doch nicht so schwierig sein :)


    Zum Glück ist es das.
    Ach ja, und wenn du den laufenden Kernel duruch einen neuen (gleichen Namens) ersetzt, solltest du ganz, ganz sicher sein, das alles auf Anhieb hinhaut.


    Rainer

  • Hi Rainer!


    Zitat

    Aha, ein Etikettenschwindler. Du möchtest einen Kernel namens 2.4.24-ctvdr-2 bauen, der nicht 2.4.24-ctvdr-2 ist.


    Äääh, moment.


    Ich habe mir extra kernel-source-2.4.24-ctvdr-2_2_all.deb installiert. Danach habe ich mir die Config aus /boot/config-2.4.24-ctvdr-2 kopiert. Wenn das daraus erzeugte Compilat dann nicht 2.4.24-ctvdr-2 ist, was dann?


    Ich frage mich bloß die ganze Zeit, warum es nicht so heißt.


    Ich will ja gar nicht pfuschen. Ich will mir einfach bloß den original ctvdr-2 Kernel nochmal übersetzen. Kann doch eigentlich nicht so schwierig sein. :rolleyes:


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Die c't hat mit den Werkzeugen, die ich genannt habe, einen Kernel gebaut, der *deshalb* 2.4.24-ctvdr-2 heißt. Wenn du dieselben Werkzeuge nimmst, hast du die Wahl der Ergänzung des Namens. Du kannst dann 'ctvdr-2' wählen, was aber Unsinn ist. 'meiner' wäre da sinnvoller, damit man die Dinge auseinanderhalten kann, die nicht dieselben sind.


    Zitat

    Original von TomSoniq
    Ich will ja gar nicht pfuschen. Ich will mir einfach bloß den original ctvdr-2 Kernel nochmal übersetzen. Kann doch eigentlich nicht so schwierig sein. :rolleyes:


    Unsinnige Dinge sind immer etwas schwieriger:
    Der Kernel 2.4.24-ctvdr-2 liegt bei Heise und bei dir vermutlich noch in /var/cache/apt/... als deb. Außerdem liegt er bei dir in /boot und manchmal auch in deinem RAM. Und jetzt willst du ihn nochmal? =:-0

  • Ok, Rainer, gleich hast Du mich soweit. 8)


    Ich versuch's also mal:


    Code
    cd /usr/src/linux
    make-kpkg kernel_image
    (rödel, rödel...)
    cd ..
    dpkg -i kernel-image-2.4.24_10.00.Custom_i386.deb


    Jetzt habe ich in /boot ein vmlinuz-2.4.24 mit symbolischem Link vmlinuz drauf. Initrd.img ist allerdings noch das alte. In /lib/modules liegt 2.4.24. So weit war ich mit "make bzImage, make modules und make modules_install" auch schon.


    Code
    cd /usr/src/linux
    make-kpkg modules_image


    liefert mir folgende Ausgabe:


    ...was ich etwas merkwürdig finde.


    Naja, immerhin habe ich zum Zeitvertreib nebehner MIIB auf ProSiebenHD :)


    Tom

    In Betrieb: Serener GD-L01 mit VIA EPIA-EN15000G (passiv / 30W Betrieb / 4W Standby), Hitachi 80GB 2.5", FF: TT-DVB-S 2.3, c't-VDR 5
    Reserve: Asus Pundit mit P4 1.6 GHz (sehr leise / 60W Betrieb), IBM 60 GB 2.5", FF: TT-DVB-S 1.6, Budget: TT-DVB-T 1.3, c't-VDR 5

  • Herzlichen Glückwunsch.
    Deiner erstes (?) eigenes Debian-Kernel-Paket, das du nach Herzenslust installieren und deinstallieren kannst. Schwere Geburt ...


    Nun kannst du in deiner Kernel-config rumrühren und schwups weitere Kernel-Pakete bauen (schau mal nach, da gibt es im debian Verzeichnis der Kernel-quellen ne Datei, wo du jeweils deine Revisionsnummern eintragen kannst. Wahlweise auch als Parameter von make-kpkg).


    'modules_image' benötigst du nur, wenn du *zusätzliche* Module für deinen Kernel bauen willst.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!