Wie man ein ganz eigenes Linux-Image erstellt.

  • Moin moin! (Auf vielfachen Wunsch hin uebersetze ich meinen Orignalen Post jetzt mal auf Deutsch. ;) )


    Vor einiger Zeit brauchte ich mal ein besonders schlankes Raspberry Pi Image. Es gab zwar fertige Distributionen, und Builder wie Yocto und Linux from Scratch. Aber die waren noch immer nicht ganz das, was ich brauchte. Daher habe ich mich entschieden, selbst eine Sammlung von Skripten zu erstellen. In unregelmaessigen Abstaenden aktualisiere ich die immer auf http://dettus.net/detLFS/, aber hier wuerde ich jetzt mal eine Anleitung mit Euch teilen, wie ihr selbst zu einem besonders kleinen Image kommt.



    ALS ALLERERSTES solltet ihr wissen, als welches Device eine SD-Karte bei euch auftaucht. Das kriegt ihr raus, indem ihr mit


    Code
    1. % dmesg

    nachguckt, als was sie auftaucht, nachdem ihr sie eingelegt habt.


    Danach solltet ihr ein Verzeichnis anlegen, und darin das skeldir.tgz entpacken, welches ich an diesen Thread angehaengt habe.



    Code
    1. % mkdir myVeryOwnLinux
    2. % cd myVeryOwnLinux
    3. % tar xvfz WHEREEVERYOUDOWNLOADEDIT/skeldir.tgz


    Dieses Paket enthaelt alle notwendigen Startskripte und Basis-Konfigurationen. Unter anderem wird das root-password auf "root" gesetzt.



    Nachdem ihr das getan habt, BLEIBT IN DEM VERZEICHNIS "myVeryOwnLinux". Dann muesst ihr einige Source-Pakete runterladen. Das geht am einfachsten mit folgendem Skript:



    Danach koennt ihr euren ganz eigenen, ganz persoenlichen Cross-Compilier compilieren. Die meisten Menschen haben Angst davor, weil es kein trivialer Prozess ist. Aber wenn man erstmal verstanden hat, dass man dazu einen halben Linux-Kernel build, mehrmals die glibc UND gcc nacheinander compilieren muss, ist es eigentlich ganz einfach. (;


    Ich habe mir erlaubt, den Cross-Compiler noch zu testen, indem ich vorher folgende Datei angelegt habe:



    C: helloworld.c
    1. #include <stdio.h>
    2. void main()
    3. {
    4. printf("Hello \x1b[1;34mWorld!\x1b[0m\n");
    5. }


    Aber ohne geht es auch.

    Das Skript:






    Nachdem der Cross-Compiler gebaut wurde, kann er dazu verwendet werden den Linux-Kernel und Busybox zu bauen. Wenn ihr das Skript genauer anguckt, dann werdet ihr feststellen, dass darin ein "make menuconfig" verwendet wird. Das verlangt natuerlich nach Benutzerinteraktion. Ihr muesst dann Einstellungen vornehmen, die ich Euch hier leider nicht erklaeren kann, weil ich sie leider selbst nicht kenne.

    Auch werdet ihr lange warten muessen.

    EHRLICH: Es tut mir leid...
    Zum Trost habe ich aber noch ein Osterei versteckt. In den Kommentaren findet ihr einen Hinweis, wie ihr Euer eigenes, ganz persoenliches Logo beim Booten anzeigen koennt. Mal etwas anderes als immer nur die Himbeere. ;) EDIT: Bitte keine verbotenen Symbole oder AfD-Logos. Das hat der Raspberry nicht verdient.





    Danach findet sich alles, was ihr gebaut und konfiguriert habt in dem Verzeichnis "Destination" wieder. Dieses muss auf eine SD-Karte kopiert werden. Das ist ein gefaehrlicher Prozess.


    Geht auf Nummer sicher, dass ihr wisst, welches Device die SD-Karte ist. Im Skript habe ich zur Sicherheit /dev/null angegeben.


    Rauskriegen, welches Device es ist, tut mir, indem ihr nach dem Einstecken in Euren Computer


    Code
    1. % dmesg


    eingebt. Merkt euch den Device-Namen, und tragt ihn im Skript anstelle des /dev/null ein. Mit einem Editor Eurer Wahl. Ausserdem muesst ihr die Zeile


    Code
    1. echo "aborting now." ; exit ## COMMENT THIS ONE OUT ONCE YOU UNDERSTAND THE SCRIPT


    rauswerfen.

    Wenn ihr das Skript dann endlich startet, wird es fuer Euch fdisk aufrufen. Das wichtige ist, dass ihr dort zwei Partionen anlegt:
    Partition 1, typ c=msdos, 64 Mbyte gross
    Partition 2, typ 83=Linux, 1Gbyte oder mehr.

    wie gross die tatsaechlich sein sollten, verraet euch aber das Skript.


    auf jeden Fall sind die Befehle bei fdisk dafuer

    • n, new partition, Groesse ist 64M bzw. 1G.
    • t, type. (c=MSDOS, 83=Linux)
    • w, write (und das Programm verlassen)

    eine falsch angelegte partition koennt ihr mit

    • d, delete, loeschen
    • q, quit, beenden ohne speichern

    vermeiden.


    Und jetzt das boese, boese Skript:



    Viel Spass damit!

    Wie gesagt, in unregelmaessigen Abstaenden veroeffentliche ich auch immer eine neue Version auf meiner Homepage.

    http://www.dettus.net/detLFS/


    Ausserdem habe ich mir erlaubt, die aktuelle Dokumentation ebenfalls mit hochzuladen.

  • Hello! (I am writing this in english, hopefully that is okay...)

    Nein - das ist ein deutsches Forum und es gibt Mitglieder, die Englisch nur sehr schwer oder überhaupt nicht verstehen. Daher sei bitte so gut und verfasse den Post zusätzlich noch in Deutsch.


    Enjoy! You can download all the scripts, documentation and a little bit extra on my website, at http://dettus.net/detLFS/.

    Lade bitte alle benötigten Dateien als Anhang hier im Forum hoch, falls noch nicht geschehen - Bilder und andere Dateien, die nur extern verfügbar sind gehen immer nach einer Weile verloren, so zeigt das die Erfahrung.

    :wink: