[HOW-TO] init.d @ Kernel

  • 15 Antworten
  • Letztes Antwortdatum
moddingg33k

moddingg33k

Ambitioniertes Mitglied
40
init.d Support auf Kernelebene

( FÜR FORTGESCHRITTENE! )



Alternative Variante: [MOD][APK+SCRIPT+ZIP] Enable Init.d for Any Phones w/o Need of Custom Kernels!!! - xda-developers
(Natürlich gibt es mehrere Wege seinem System init.d Support hinzuzufügen. Ich persönlich empfinde die Implementierung in den Kernel als die "eleganteste" Lösung.)



Vorausgesetzt wird, dass BUSYBOX auf dem Smartphone im Verzeichnis "/system/xbin" installiert ist. (für das Y300-100: http://www.busybox.net/downloads/binaries/latest/busybox-armv7)



  • Benötigte Tools:


  • Unix-Texteditor (z. B. Notepad 2 oder Notepad ++) [Beim Editieren der Dateien bitte darauf achten, dass die Kodierung des Editors auf "UTF-8" und nicht auf "ANSI" eingestellt ist.]


  • SCHRITT 1
Kernel Image (boot.img) entpacken [entweder vom TWRP-Recovery die Datei boot.emmc.win einfach in --> boot.img umbennen, oder siehe hier z. B.]

  • SCHRITT 2
Die Datei init.rc im Unterordner /ramdisk des entpackten Kernel-Images mit einem Unix-Texteditor (Kodierung: UTF-8) öffnen und unterhalb von "service flash_recovery /system/etc/install-recovery.sh" folgende Zeilen ergänzen:
Code:
service initd /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d
    class main
    oneshot
...so dass es dann am Ende so aussieht...:
Code:
service flash_recovery /system/etc/install-recovery.sh
    class main
    oneshot[B]
    
service initd /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d
    class main
    oneshot [/B]
  • SCHRITT 3
Kernel-Image mit dem "Android Image Kitchen" wieder packen [Ausgabedatei lautet dann: "image-new.img"]
  • SCHRITT 4

  1. Verzeichnis /system/etc/init.d anlegen
  2. Rechte zuweisen: chmod 777 /system/etc/init.d
  3. Usergruppe zuweisen:
    chown 0:2000 /system/etc/init.d
  4. Sicherstellen, dass die "/system/xbin/busybox" binary die nötigen Rechte (755) und die korrekte Usergruppe (root:shell bzw. 0:2000) besitzt!
  • SCHRITT 5
Neuen Kernel flashen ;-)
Neuen Kernel via adb flashen (- ROOT benötigt! - ):

  • adb push image-new.img /data/local/tmp/image-new.img
  • adb shell su -c "dd if=/data/local/tmp/image-new.img of=/dev/block/mmcblk0p12"
  • adb shell rm /data/local/tmp/image-new.img
  • adb reboot
  • adb kill-server


Hinweis: "/system/bin/logwrapper" leitet die Ausgabe nach logcat um. Anderenfalls würde jegliche Ausgabe des Services "init.d" in "dev/nul" verschluckt.

Dokumentation zum Thema "Android init Language"


Quellen: xda-Forum (Hinweis: CODE von mir leicht angepasst für's Huawei Y300. Die entsprechende Stelle ist rot markiert)
 

Anhänge

  • sysinit.zip
    250 Bytes · Aufrufe: 312
  • install_initd_TWRP.zip
    154,7 KB · Aufrufe: 273
Zuletzt bearbeitet:
  • Danke
Reaktionen: Obi8 und andyw890i
Hi.
Kannst du kurz erklären, was das bringt?
 
In dem init.d Ordner kann man beliebige Skripte speichern, die beim Hochfahren deines Systems nacheinander abgearbeitet werden. Diese (Shell)Skripte wiederum können beliebige Änderungen an deinen Systemeinstellungen vornehmen, z. b. Setzen der mininmalen und maximalen CPU-Taktfrequenz, Auswahl und Feineinstellungen des Kernel-Governors, Änderungen an Systemeinstellungen, etc....

--> Google ;-)
 
  • Danke
Reaktionen: greg121 und Timmih
Stehe momentan auf dem Schlauch.

Habe mir aus der [ROM]FreeYourMind v1.3 das boot.img mit Android Image Kitchen nach deiner Beschreibung "gebacken". Wie bekomme ich dieses neue boot.img. bei mir auf meine Version 1.3 geflasht? :confused:
 
- Lade dir meine Datei aus dem Startpost runter

- Ersetze das im Ordner "files" vorhandene "image-new.img" Image mit deinem neu "gebackenen"

- Verbinde dein Handy per USB mit deinem PC (USB-Debugging muss im Smartphone aktiv sein!)

- Und führe die Datei "install-windows.bat" aus
 
  • Danke
Reaktionen: börge
Ich muss da mal was zu fragen: Ist das Init.d auf Kernelebene auch notwendig für Tweaks (z.B. Andrenaline Engine oder Awesome Beats)?

Ich bin mir nämlich nicht ganz sicher ob ich das mit dem Init.d mal probieren soll, aber wenn ich ja ein BackUp mache sollte ja nichts schief gehen können, oder?

Edit: Bin noch auf der Stock ROM B171 vom Y300 O²-Version. Phone ist bisher nur gerootet.

Edit 2: So, hab mich jetzt mal dran getraut. Hänge aber jetzt an Schritt 3. Anstatt einer Datei spuckt mir die Android-Kitchen 2 aus (image-new.img und ramdisk-new.cpio.gz). Ist das so richtig?
 
Zuletzt bearbeitet:
Hat einer schon mal "Pimp my Rom" von den xda Jungs (im app store) ausprobiert?
Da gab es die Option init.d zu ermöglichen,-werde versuchen das heute Abend mal anzutesten...
PS:Unter dem Tab "tool" dann "universal init.d"
 
Zuletzt bearbeitet:
habs gerade mal installiert :smile:
 
und? und? Klappt?
(Bin selber noch nich dazu gekommen...)
Interessantes Tool, gell?!
 
Mal sehen, hatte auch noch keine Zeit.
 
Hallo Schlabboo, die benutzen da die gleiche "xda" Methode wie im "Pimp my Rom" App, werde mal ein Speicherswap probieren...

PS: als Rom habe ich FYM


PS2: Speicherswap (SDcard) geht auch, init.d funktioniert
Kleines Script für Interessierte:


#!/system/bin/sh
sleep 2
mount -o remount,rw /
mount -t vfat -o umask=0000 /dev/block/vold/179:33 /storage/sdcard0
mount -t vfat -o umask=0000 /dev/block/vold/179:19 /storage/sdcard1


Für den Fall, dass ein Rom auftaucht, ohne schon integrierten Swap, macht bei FYM nicht wirklich Sinn.
 
Zuletzt bearbeitet:
Update: Anleitung überarbeitet und aktuellen modifizierten Kernel B197 hochgeladen
 
Vielen Dank. Endlich mal ein "add init.d to kernel" how to das funktioniert.
Perfekt.
 
moddingg33k schrieb:
...Diese (Shell)Skripte wiederum können beliebige Änderungen an deinen Systemeinstellungen vornehmen, z. b. Setzen der mininmalen und maximalen CPU-Taktfrequenz, ...
Jetzt muss ich doch mal fragen, da ich keine Antwort finde oder weiß wo das Problem liegt.

Habe ja RomToolbox und kann die Taktfrequenz einstellen.
Aber das Gerät schaltet immer auf auf 1008MHz hoch, wenns hoch geht.

Beim meinem Y200 konnte ich das noch unterbinden. Beim Y300 keine Wirkung, auch nicht nach Reboot. Auch beim Custom_Rom FusionX (mit init.d Support) bleibt die max. Frequenz bei 1008MHz - auch wenn ich was anderes einstelle :(

Nun meine Frage:
kann ich mit dieser (deiner) Methode
dem Gerät endlich beibringen nich
mehr volle Power zu fahren?
 
Die Frage ist leider schon etwas älter, ich möchte sie jedoch trotzdem gerne beantworten:

Der Wert für die maximale CPU-Frequenz wird in der Datei "scaling_max_freq" gespeichert, die sich im Ordner "/sys/devices/system/cpu/cpu0/cpufreq" befindet.

Um die maximale Taktfrequenz ändern zu können, muss diese Datei Schreibrechte besitzen, welche du mittels "chmod 644 sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq" einräumen kannst.

Die Umsetzung kann dabei u. a. per init.d-Skript, oder auf andere Weise erfolgen. Manche APPs, wie z. B. NoFrills CPU Control, bieten in den Einstellungen für JellyBean einen WorkAround an, welcher im Grunde nichts anderes macht, wie von mir beschrieben.
 

Ähnliche Themen

P
Antworten
4
Aufrufe
2.051
email.filtering
E
A
Antworten
8
Aufrufe
3.777
tofuwurst
T
moddingg33k
  • moddingg33k
Antworten
14
Aufrufe
3.948
Shadowghost
Shadowghost
Zurück
Oben Unten