Surnia (LTE) Fehlendes init.d für Start-Scripte einrichten (über su.d - SuperSU Daemon) [E 2015][Stock-ROM][MOD]

O

ooo

Enthusiast
3.449
[E 2015][Stock-ROM][MOD] Fehlendes init.d für Start-Scripte einrichten (über su.d - SuperSU Daemon)

Root erforderlich.

Hier wird (exemplarisch für ein Moto E 2015) beschrieben, wie man trotzdem an funktionierende init.d-Start-Scripte kommen kann, wenn andere einschlägige Möglichkeiten versagt haben.

Das Problem

Besonders Lollipop-Stock-ROMs weigern sich gerne beharrlich, sich ein funktionierendes init.d abringen zu lassen (Security-Enhanced Linux - SELinux Enforcing - strict mode).


Die Lösung

Die angehängte Datei mit TWRP Recovery installieren und neu starten stellt init.d zur Verfügung.


Vorbemerkungen
  • Bitte immer ein Backup machen, bevor man etwas tut
  • Die Benutzung der verlinkten Informationen und Software erfolgt auf eigenes Risiko
  • Dieses How-to ist nicht für Leute mit einer Custom ROM, die bereits init.d integriert hat. - Also z. B. bei einer CyanogenMod ROM bitte nicht benutzen
  • Dieses How-to ist für Leute mit einer SuperSU-gerooteten Stock-ROM ohne init.d-Unterstützung

Voraussetzungen
  • Moto E 2015 4g/LTE (2. Generation), es sollte aber mit allen aktuellen, mit SuperSU gerooteten Lollipop-Motos funktionieren (Moto E, E2, G, G LTE, G2, G2 LTE, G3, X, X2, X Play etc.); und evtl. auch mit Geräten anderer Hersteller (noch nicht getestet)
  • (Motorola) Stock-ROM (Android 5.x.x Lollipop) == kein Custom ROM, welches bereits init.d-Unterstützung besitzt
  • Optional: Installierte USB-Treiber (Windows)
  • Optional: Funktionierendes ADB/Fastboot (Linux/Windows), für fastboot boot <twrp-recovery.img> bzw. adb sideload <flashable.zip>
  • Optional: Root-fähiger Datei-Manager (z. B. fx File Explorer mit fx File Explorer (root add.on), Amaze)
  • Erforderlich: Bootloader bereits entsperrt (zum Starten eines TWRP Recovery/Rooten, Schreiben auf die system-Partition)
  • Erforderlich: TWRP Recovery (entweder zum Booten vom Rechner via fastboot aus oder bereits geflasht)
  • Erforderlich: Stock-ROM korrekt gerootet mit UPDATE-SuperSU-v2.46.zip (su binaries und App SuperSU installiert)

Checkliste
  1. Die Datei ooo-initd-v1-for-moto-e2-rooted-stock-rom.flashable.zip auf die SD Card herunterladen
  2. In das TWRP Recovery booten
  3. Dort [ Install ] > /sdcard/ooo-initd-v1-for-moto-e2-rooted-stock-rom.flashable.zip ausführen
  4. Abschließend mit [ Reboot System ] neu starten

Was bringt das jetzt?

Ab diesem Zeitpunkt kann man im Verzeichnis /system/etc/init.d/ beliebige (eigene) Start-Scripte anlegen, die bestimmte Dinge erledigen (Tweaks, Mods, Performance-/Kernel-Parameter-Tuning, Starten von Servern - z. B. SSH etc.), die vor dem Start von Android erledigt werden sollen. - Oder für die Windows-Nutzer einfach ausgedrückt: Man hat so etwas, wie eine funktionierende C:\autoexec.bat.

Manche installierbaren (Root-)Apps benötigen/benutzen auch selbst init.d-Scripte, um korrekt Laufen zu können.

Ein wichtiges Beispiel ist das Sperr-Script der AFWall+ Firewall (Datei /system/etc/init.d/afwallstart).
Diese Datei wird mit der Option "Start-Datenleck Fix" in den Einstellungen der Firewall aktiviert bzw. angelegt.
Mit dieser Einstellung wird verhindert, dass Daten von anderen Apps in das Internet gesendet werden, bevor die Firewall selbst startet.
Ohne das erzeugte init.d-Script (afwallstart) kann man das nicht verhindern, wenn man das W-LAN und/oder die Mobilen Daten beim Start bereits aktiviert hat.
Ohne die in der Stock-ROM fehlende init.d-Unterstützung hat man bereits "verloren".


Was macht die angehängte Flashable-zip-Datei jetzt?

Die Datei legt in der system-Partition die Verzeichnisse

/system/su.d/
/system/etc/init.d/

mit den benötigten Berechtigungen an.

Zusätzlich wird die benötigte busybox binary im Verzeichnis /system/xbin/ angelegt.

Diese Datei ist aus einer CM12.1 ROM entnommen (cm-12.1-20150908-UNOFFICIAL-surnia-44.zip von scritch007 @ xda) und sollte (nebenbei gesagt) in keiner gerooteten ROM fehlen.

Im Verzeichnis /system/su.d/ befindet sich danach die ausführbare Script-Datei runpartsinitd, die bei jedem Start vom SuperSU-Daemon aufgerufen wird.
(Deswegen müssen auch als Voraussetzung die App SuperSU bzw. die su binaries installiert sein.)

Die Script-Datei runpartsinitd ruft dann ihrerseits alle im Verzeichnis /system/etc/init.d/ liegenden init.d-Scripte (in deren alphabetischen Reihenfolge) auf.
(Was eigentlich ab hier das Standard-Verhalten ist, wenn ein Kernel/Boot-Image init.d-fähig ist.- Nicht jedoch in einer beschnittenen Stock-ROM.)

Im Verzeichnis /system/etc/init.d/ liegen nach der Installation zunächst die beiden (Text-)Dateien (= init.d-Scripte)

afwallstart
99userinit

Die Datei afwallstart wird eigentlich von der Firewall-App AFWall+ verwaltet (s. o. Einstellungen in AFWall+) und sollte auch gelöscht werden, wenn AFWall+ nicht installiert ist.
(Tipp: Bitte dringend AFWall+ installieren und korrekt einrichten, falls noch immer nicht geschehen. - Die NSA ist absolut harmlos im Vergleich mit der Gesamt-Situation ...)

Die (Text-)Datei 99userinit sieht nach, ob im Verzeichnis /data/local/ die ausführbare Datei userinit.sh liegt.

Ist dies der Fall, wird die Datei automatisch ausgeführt (das ist die identische Mimik, wie bei einer CyanogenMod Custom ROM, die init.d bereits integriert mitbringt).

Man kann jetzt entweder in /system/etc/init.d/ eigene Scripts hineinpacken (Nachteil: bei system-Wipes ist dort alles weg) oder die Datei /data/local/userinit.sh als "hook" benutzen, um dort die eigenen Start-Tweaks zu integrieren.

Die Datei /data/local/userinit.sh wird zwar aufgerufen, macht aber inhaltlich noch nichts. - Sie ist eine änderbare Dummy-Datei, in der man eigene Ideen umsetzen kann.

Tipp:
Um herauszufinden, ob ein init.d-Start-Script funktioniert, kann man sich Datum/Uhrzeit und den Datei-Pfad des Scripts in eine Log-Datei schreiben lassen.
Wenn das Script korrekt ausgeführt wird, enthält die Log-Datei einen neuen Eintrag, anderenfalls fehlt dieser.
In der Datei /system/etc/init.d/99userinit ist diese Zeile vorbereitet und auskommentiert (ein "#" am Anfang der Zeile) = Logging ausgeschaltet.
Wird dieses "#" entfernt und die Datei abgespeichert, so wird die Log-Datei (im Beispiel /data/local/sud.ooo; man kann das auch für eigene Zwecke abändern) bei jedem Start beschrieben, wenn das Start-Script korrekt läuft.
Zum Deaktivieren kommentiert man die Zeile wieder mit "#" am Anfang aus. - Die Log-Datei /data/local/sud.ooo kann man jederzeit löschen.


Wie bekommt man das alles wieder weg?

Einfach die Verzeichnisse

/system/su.d/
/system/etc/init.d/

komplett und die Datei

/data/local/userinit.sh

mit einem Root-fähigen Datei-Manager löschen (z. B. fx File Explorer + fx Root Add-on oder Amaze).

Viel Erfolg beim Ausprobieren!

_
 

Anhänge

  • ooo-initd-v1-for-moto-e2-rooted-stock-rom.flashable.zip
    587,9 KB · Aufrufe: 468
  • Screenshot_2015-02-07-20-55-12.png
    Screenshot_2015-02-07-20-55-12.png
    10,5 KB · Aufrufe: 417
  • Screenshot_2015-02-07-20-55-22.png
    Screenshot_2015-02-07-20-55-22.png
    8,8 KB · Aufrufe: 406
  • Screenshot_2015-02-07-20-55-42.png
    Screenshot_2015-02-07-20-55-42.png
    11,8 KB · Aufrufe: 403
  • Screenshot_2015-02-07-20-55-50.png
    Screenshot_2015-02-07-20-55-50.png
    7,1 KB · Aufrufe: 404
  • Screenshot_2015-02-07-20-56-02.png
    Screenshot_2015-02-07-20-56-02.png
    9,5 KB · Aufrufe: 427
  • Screenshot_2015-02-07-20-56-22.png
    Screenshot_2015-02-07-20-56-22.png
    9,2 KB · Aufrufe: 432
  • Screenshot_2015-02-07-20-58-03.png
    Screenshot_2015-02-07-20-58-03.png
    15,7 KB · Aufrufe: 412
  • Screenshot_2015-02-07-20-58-25.png
    Screenshot_2015-02-07-20-58-25.png
    8,6 KB · Aufrufe: 430
  • Screenshot_2015-02-07-21-06-20.png
    Screenshot_2015-02-07-21-06-20.png
    13,9 KB · Aufrufe: 445
Zuletzt bearbeitet:
  • Danke
Reaktionen: Kyle Katarn, NNW, Berlino und 4 andere
Danke !!
Und zur Info: funktioniert auch beim OnePlus 2 :thumbup:!!!
 
  • Danke
Reaktionen: ooo
Sehr gute Anleitung, danke! :thumbup:

Funktioniert ebenfalls auf dem Nexus 5x mit modifiziertem Stock-MM-Rom. ;)
 
  • Danke
Reaktionen: ooo
Wer systemless root hat und den system Ordner nicht anrühren möchte, der kann statt system/etc/init.d das Verzeichnis su/su.d nutzen und dort sein Startskript ablegen.
 
  • Danke
Reaktionen: ooo

Ähnliche Themen

Kyle Katarn
Antworten
1
Aufrufe
1.300
Kyle Katarn
Kyle Katarn
V
Antworten
4
Aufrufe
2.292
guenter1
guenter1
Sunny
  • Sunny
Antworten
1
Aufrufe
1.572
Cua
Cua
Zurück
Oben Unten