1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

[Anleitung] Wie erstellt man ein Custom ROM:

Dieses Thema im Forum "Anleitungen für Samsung Galaxy S" wurde erstellt von sunra, 08.07.2011.

  1. sunra, 08.07.2011 #1
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Wollt ihr auch mal ein eigenes ROM erstellen und seid es Leid das Ganze WWW mühsam nach Anleitungen und Tools zu durchsuchen??

    Mir ist es so ergangen und deshalb habe ich nun diesen Thread erstellt.

    Ich habe das Ganze selber erfolgreich getestet. Es gibt natürlich Stolperseteine.
    Bei Fragen einfach hier im Thread melden!

    An dieser Stelle bedanke ich mich recht herzlich bei meinem persönlichen „Mentor“ auf Android-Hilfe.de ;-)

    Danke scheichuwe!



    Ich freue mich über positive Kritik, Verbesserungsvorschläge und Hinweise auf weitere nützliche Informationen!


    Genug geschwafelt ;-)

    Übersicht:
    #1 - ROM erstellen
    #2 - Scripte, Modems, Kernel, etc.
    #3 - Individuelle Anpassungen (Themes, erweitertes Ausschaltmenü, etc.)
    #4 - Weitere Anpassungen und Voreinstellungen

    (Bevor ihr Fragen stellt überprüft die Anleitung nochmal auf Ergänzungen)

    Ihr könnt auch meine ROM verwenden um euch Sachen anzuschauen oder um darauf weiter aufzubauen.
    Die ist schon optimiert und verfügt über einen Custom-Kernel.
    Ihr erspart euch dann das deodexen und zipalignen, was sehr zeitaufwendig und unspannend ist ;-)

    http://www.android-hilfe.de/custom-roms-fuer-samsung-galaxy-s/130864-rom-my-rom-jvr-sunra.html

    Hier kann man auch nützliche Infos finden: My-Settings.zip



    So geht’s:


    1.

    - Stock-ROM auf SamFirmware.com runterladen.
    -----------------------------------------------------------------------------------------------

    2.

    - Factory.rfs aus dem CODE_....tar – Archiv entpacken.
    -----------------------------------------------------------------------------------------------

    3.

    - Factory.rfs mit z.b. MagicISO in einen Ordner „system“ entpacken.
    -----------------------------------------------------------------------------------------------

    4.

    - zuerst -> /system/framework deodexen
    - dann -> /system/app deodexen

    Reihenfolge einhalten!

    Wie? Mit diesem Tool: xUltimate
    -----------------------------------------------------------------------------------------------

    5.

    - png´s optimieren und apk´s zipalignen mit xUltimate oder Apk Manager 4.9

    -Tastaturen, ScreenCapture, phone.apk, camera.apk und die framework-Dateien sind da empfindlich, da am besten nur deodexen.
    -----------------------------------------------------------------------------------------------

    6.

    - Deodexte und optimierte Inhalte aus
    -/system/framework
    -/system/app

    wieder in euren „system“ –Ordner kopieren.
    -----------------------------------------------------------------------------------------------

    7.

    -In den Ordner „system“ welcher app, bin, cameradata usw. enthält
    -Superuser.apk nach /system/app (LINK im Anhang)
    -su und busybox nach /system/xbin (LINK im Anhang)
    kopieren.
    -----------------------------------------------------------------------------------------------

    8.

    -Das Ganze dann in eine update.zip kopieren und evtl. einen Ordner erstellen für modem.bin und zImage. Also für das Modem und den Kernel.

    Edit:
    Ich hab euch eine "Barebone".zip angehängt.
    - Es enthält einen leeren "system" Ordner
    - Es enthält einen "updates" Ordner. Dieser enthält das script zum flashen des Modems. Modem ist keines enthalten. Das ausführen des Scripts zum Modem flashen ist auch im updater-script auskommentiert.
    - Das updater-script stammt aus scheichuwes ROM. Ich hab mir das hier zur Veranschaulichung "ausgeborgt" weil es sehr übersichtlich ist und alles beinhaltet was man benötigt.

    -----------------------------------------------------------------------------------------------

    9.

    -In der .zip muß ein Ordner \META-INF\com\google\android\ mit einem updater-script und einem binary-script enthalten sein.
    -----------------------------------------------------------------------------------------------

    10.

    -Das updater-script könnt ihr euch nun mit Notepad++ anpassen.
    -----------------------------------------------------------------------------------------------

    11.

    -Außerdem müsst ihr ein Shell-Script erstellen, welches für das flashen des Modems und des Kernels zuständig ist. Dieses Script müsst ihr aus dem updater-script starten.
    Wie das geht könnt ihr euch vorerst mal in anderen ROMs abschauen.
    -----------------------------------------------------------------------------------------------

    Nun ist euer ROM grundsätzlich fertig!
    Jetzt könnt ihr euch beim modifizieren austoben. Apps ersetzen/hinzufügen, Theme einbauen, Scripte einbauen, usw.

    Viel Spaß! :biggrin:



    Weitere Informationen, Tools und Details:

    How to make an Odin ROM
    [SCRIPT] ROM Packager [UPDATE 7/2] - xda-developers
    ...
     

    Anhänge:

    Zuletzt bearbeitet: 08.08.2011
    Poyraz, obdan_van_darg, rudl1220 und 15 andere haben sich bedankt.
  2. sunra, 08.07.2011 #2
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Howto mod the stock XXJVR kernel SU/Init.d Support


    Modems:
    http://niekske.myftp.biz:81/elfinder/
    (Danke an Perka!)



    Nützliche Links:


    Linux-Kompendium: Shellprogrammierung

    BusyBox Syntax

    Scratchpad - Documenting Edify for Android Updater-Scripts
    Output to recovery UI from shell script - xda-developers


    Beispielscripte:


    updater-script:

    Hier ein ordentliches und übersichtliches updater-script aus scheichuwes ConsummateROM - JVQ [2.3.4][Odin/CWM][06.07.2011]
    (Achtung! Die Syntax im updater-script unterscheidet sich von einem Shell-Script und es gibt weniger Möglichkeiten! Eine genaue aktuelle Beschreibung hab ich auch noch nicht gefunden)

    Code:
    ui_print("");
    show_progress(0.400000, 0);
    #mount partitions
    run_program("/sbin/mount", "/system");
    run_program("/sbin/mount", "/dev/block/stl10", "/dbdata");
    run_program("/sbin/mount", "/cache");
    run_program("/sbin/mount", "/dev/block/mmcblk0p2", "/data");
    
    #wipe partitions
    ui_print(" - Wipe partitions - ");
    delete_recursive("/cache");
    delete_recursive("/data");
    delete_recursive("/data/dalvik-cache");
    delete_recursive("/dbdata");
    delete_recursive("/system");
    ui_print("");
    show_progress(0.400000, 10);
    
    #install new files
    ui_print(" - Copy new files - ");
    ui_print(" - /system - ");
    package_extract_dir("system", "/system");
    ui_print(" - /tmp - ");
    package_extract_dir("updates", "/tmp");
    ui_print("");
    
    #toolbox symlinks
    ui_print(" - Set symlinks - ");
    symlink("toolbox", "/system/bin/cat", "/system/bin/chmod", "/system/bin/chown", "/system/bin/cmp", "/system/bin/date", "/system/bin/dd",
            "/system/bin/df", "/system/bin/dmesg", "/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd", "/system/bin/id",
            "/system/bin/ifconfig", "/system/bin/iftop", "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice", "/system/bin/kill",
            "/system/bin/ln", "/system/bin/log", "/system/bin/ls", "/system/bin/lsmod", "/system/bin/mkdir", "/system/bin/mount",
            "/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat", "/system/bin/newfs_msdos", "/system/bin/notify",
            "/system/bin/printenv", "/system/bin/ps", "/system/bin/reboot", "/system/bin/renice", "/system/bin/rm", "/system/bin/rmdir",
            "/system/bin/rmmod", "/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent", "/system/bin/setconsole",
            "/system/bin/setprop", "/system/bin/sleep", "/system/bin/smd", "/system/bin/start", "/system/bin/stop", "/system/bin/sync",
            "/system/bin/top", "/system/bin/umount", "/system/bin/vmstat", "/system/bin/watchprops", "/system/bin/wipe");
    symlink("/system/xbin/su", "/system/bin/su");
    symlink("/system/bin/dumpstate", "/system/bin/dumpmesg");
    symlink("/system/bin/debuggerd", "/system/bin/csview");
    ui_print("");
    show_progress(0.200000, 0);
    
    #set permissions
    ui_print(" - Set permissions - ");
    set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    set_perm_recursive(0, 0, 0755, 0755, "/system/etc");
    set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/vendor/bin");
    set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/etc");
    set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/firmware");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    set_perm(0, 2000, 0755, "/system/vendor");
    set_perm(0, 2000, 0755, "/system/vendor/firmware");
    set_perm(0, 2000, 0755, "/system/vendor/bin/launch_gps.sh");
    set_perm(0, 2000, 0755, "/system/vendor/bin/gpsd");
    set_perm(0, 2000, 0755, "/system/etc/bluetooth");
    set_perm(0, 3003, 02755, "/system/bin/netcfg");
    set_perm(0, 3004, 02755, "/system/bin/ping");
    set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
    set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
    set_perm(0, 0, 06755, "/system/xbin/su");
    set_perm(0, 0, 06755, "/system/xbin/busybox");
    set_perm(0, 0, 755, "/tmp/redbend_ua");
    ui_print("");
    show_progress(0.200000, 20);
    
    #install busybox
    ui_print(" - Install busybox - ");
    run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
    ui_print("");
    
    #install modem
    ui_print(" - Install modem - ");
    run_program("/tmp/redbend_ua", "restore", "/tmp/modem.bin", "/dev/block/bml12");
    ui_print("");
    
    #install kernel
    #ui_print(" - Install kernel - ");
    #run_program("/tmp/redbend_ua", "restore", "/tmp/zImage", "/dev/block/bml7");
    #run_program("/tmp/redbend_ua", "restore", "/tmp/zImage", "/dev/block/bml8");
    ui_print("");
    show_progress(0.100000, 0);
    
    #end
    ui_print(" - Done - ");
    Hier wird das Modem mit Hilfe des "redbend_ua" Scripts installiert welches mit dem Befehl
    Code:
    run_program("/tmp/redbend_ua", "restore", "/tmp/modem.bin", "/dev/block/bml12");
    ... ausgeführt wird.

    Die Installation eines Kernels wurde hier mit # ausgeblendet. Wieso erfährt ihr in scheichuwes ROM-Thread ...





    shell-script:
    (BusyBox Syntax)

    Code:
    #!/sbin/sh
    
    cp -f /system/framework/framework-res.apk /tmp/framework-res.apk
    cd /tmp/framework
    /sbin/zip -r /tmp/framework-res.apk *
    cd ..
    cp -f /tmp/framework-res.apk /system/framework/framework-res.apk
    Dies ist ein kleines Beispiel einer Scriptanwendung aus meiner My-Settings.zip. Ihr könnt euch das darin genauer anschauen.

    Hier kommt z.b. dieser Befehl zum Einsatz:
    (Ich hab hier bewusst was ganz einfaches zur Veranschaulichung gewählt.)

     
    Zuletzt bearbeitet: 02.08.2011
    zacharias und sge haben sich bedankt.
  3. sunra, 08.07.2011 #3
  4. sunra, 08.07.2011 #4
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    /system/build.prop:

    Hier kann man den Namen der ROM angeben der dann unter Telefoninfo angezeigt wird.
    Den Density Wert ändern, Standardklingelton einstellten, usw.

    /data/system/accounts.db:

    Hier werden eure Account Daten gespeichert. Nur interessant wenn man ein ROM nur für sich selbst erstellt und man seine Account Daten gleich mitinstallieren will.

    /dbadata:

    Hier werden sämtliche App und Systemeinstllungen gespeichert.

    /etc/gps.conf:

    Hier kann man den seiner Region entsprechenden NTP-Server einstellen.

    /system/etc/apns-conf.xml

    Darin befindet sich die Liste der APNs. Ich hab euch oben eine .xml angehängt welche vermutlich alle Bekannten enthält.

    /system/csc

    Darin befinden sich die Ländercodes. Ich hab euch oben eine MulitCSC angehängt.


    Wer Lust hat kann gerne noch weitere interessante Pfade posten. Ich füge dass dann hier ein.
    Hab jetzt keine Lust mehr ....
     
    Zuletzt bearbeitet: 04.08.2011
    FCB-Fan und zacharias haben sich bedankt.
  5. scheichuwe, 11.07.2011 #5
    scheichuwe

    scheichuwe Android-Ikone

    Beiträge:
    5,441
    Erhaltene Danke:
    2,541
    Registriert seit:
    09.09.2009
    Phone:
    LG G4
    sunra und Donald Nice haben sich bedankt.
  6. sunra, 11.07.2011 #6
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Den edify link hab ich vergessen ... Werd ich dann einfügen.
    Das mit dem recovery output ist genial. Das kannte ich noch nicht und genau das brauch ich weil ich ja im my-settings.zip das meiste auf ein shell script auslagere.

    Wie meinst du das mit punkt 5? apk's auch mit apk manager optimieren? Also nur zipalignen mit xultimate?
     
  7. scheichuwe, 11.07.2011 #7
    scheichuwe

    scheichuwe Android-Ikone

    Beiträge:
    5,441
    Erhaltene Danke:
    2,541
    Registriert seit:
    09.09.2009
    Phone:
    LG G4
    apks mit xUltimate optimieren ist das gleiche wie Images optimieren und apks zipalignen mit Apk Manager 4.9

    Einen Schritt kann man sich also sparen.
    Ich nutze eigentlich nur xUltimate.
    Apk Manager bzw. apktool verwende ich dann um die ganzen Mods einzubauen...
     
  8. sunra, 11.07.2011 #8
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Alles klar. Werde das heute abend ändern.

    @kev: danke fürs editieren. Der monitor auf dem ich das erstellt habe verfügt über 2048 pixel in der breite ;-)

    Edit: Lesen schadet nicht:

    xUltimate Theme/MM Optimizer will opt_png and zip_align all .png's and .apk's in a MM .zip or update.zip or whatever .zip (It will also remove any .db files)
     
    Zuletzt bearbeitet: 11.07.2011
  9. scheichuwe, 16.07.2011 #9
    scheichuwe

    scheichuwe Android-Ikone

    Beiträge:
    5,441
    Erhaltene Danke:
    2,541
    Registriert seit:
    09.09.2009
    Phone:
    LG G4
    sunra bedankt sich.
  10. sunra, 21.07.2011 #10
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Na da hab ich die bastelambitionen der User hier doch etwas überschätzt :)
    Ich dachte das würde doch mehr Leute interssieren ...
     
  11. scheichuwe, 02.08.2011 #11
  12. sunra, 02.08.2011 #12
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Na das ist hier ja schon fast so was wie ein Privatchat ;-)
    Danke wiedermal. Mal schauen ob da was dabei is was ich noch nicht gelesen habe.
    Werde die Links jetzt auf jeden Fall mal einsortieren.

    Wenn du schon da bist ... Weißt du ob außer dem CF-Root noch ein anderer Kernel läuft mit JVR?

    Dachte ich frag mal bevor ich mich durch die ganzen Threads suche ...

    Hast du auch mal den Galaxian-Kernel oder wie der heisst getestet mit deiner ROM?
    Der hat ja angeblich Voodoo Color integriert. Das scheint der einzige zu sein der dass hat und Voodoo Color ist einer der Hauptgründe warum ich ungern auf CM7 verzichte ...
     
    Zuletzt bearbeitet: 02.08.2011
  13. scheichuwe, 02.08.2011 #13
    scheichuwe

    scheichuwe Android-Ikone

    Beiträge:
    5,441
    Erhaltene Danke:
    2,541
    Registriert seit:
    09.09.2009
    Phone:
    LG G4
    Talon (von existz) bzw. snail (von zacharias)

    Root ging zwar auch erst nachdem ich vorher CF-Root drauf hatte, ansonsten läuft der aber einwandfrei (auch inkl. Voodoo Color).
     
    sunra bedankt sich.
  14. sunra, 02.08.2011 #14
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Das ist ja ein gute Nachricht! Danke!

    So, also der Anleitungsthread hier ist jetzt wirklich sehr ausführlich würde ich sagen?

    Jetzt muß man wohl wirklich nur noch viel Zeit und Motivation haben :)

    Edit: Wie man su einbauen kann hab ich auch verlinkt ...
     
  15. scheichuwe, 02.08.2011 #15
    scheichuwe

    scheichuwe Android-Ikone

    Beiträge:
    5,441
    Erhaltene Danke:
    2,541
    Registriert seit:
    09.09.2009
    Phone:
    LG G4
    Du kannst auch einfach su und busybox nach /system/xbin kopieren und Superuser.apk nach /system/app.
    Dann könntest du dein ROM sogar mit dem Stock-Kernel laufen lassen (man braucht allerdings einen Custom-Kernel, um das ROM flashen zu können...).
     
  16. sunra, 02.08.2011 #16
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Ja, das hatte ich eh schon in der Anleitung. Jetzt hab ich zusätzlich die Anleitung verlinkt wie man das und das verwenden von init.d Scripten im Stock-Kernel einbauen kann. Finde ich auch interessant und entzaubert ein bisschen das Kernel modden ;-)

    Edit:
    Außer man macht ein Odin ROM oder?
     
  17. MeineFirmware, 07.08.2011 #17
    MeineFirmware

    MeineFirmware Gast

    Hallo,da ich ständig hin und her flashe und dabei ständig meine apps (sind nur paar)neu installiere habe ich mir gedacht die apss in die firmware einzukochen um bei erneutem flashen der gleichen firmware das sie schon am anfang an dabei sind.Also ,wäre meine frage wie ich nur die apps draufpacke?Alles andere bleibt dann orginal vorhanden,diese apps wären dann zb der opera browser und tunein radio und noch paar hintergrund bilder.Eventuell würde ichnoch paar apps löschen.Und meine 2.Frage wäre.....ob ich dann die kernel die es zuzeit gibt dann nutzen kann?
     
  18. sunra, 07.08.2011 #18
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Die Apps in einem Ordner /data/app in die .zip mitreinpacken und im updater-script extrahieren lassen.

    Schau dir am besten MY-ROM an. Das kannst du gerne als Vorlage nehmen.
    Den Launcher kann man auch aus /system/app löschen und durch einen anderen ersetzen.

    Für das was du da ansprichst wäre aber vielleicht überhaupt eine My-Settings.zip besser?
     
  19. MeineFirmware, 08.08.2011 #19
    MeineFirmware

    MeineFirmware Gast

    Oh man,das ist nicht so leicht wie ich es mir gedacht habe.Hab eigentlich kein plan was deodex und vor allem die script muss ichmir mal näher anschauen.
     
  20. sunra, 08.08.2011 #20
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Da kommt man schon rein. Einfach verschiedene vergleichen. Bei problemen meld dich ...
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. wie programmiert man ein custom rom

    ,
  2. eigene custom rom erstellen

    ,
  3. android custom rom selber

    ,
  4. android firmware selbst erstellen 7.0