CIFS Mounts on P600 CND2 (KK 4.4.2) - HowTo

  • 10 Antworten
  • Letztes Antwortdatum
G

gmo18t

Neues Mitglied
0
Hi,

ich habe folgenden Weg herausgefunden, wie man cifs mounts auf einem
gerooten P600 mit CND2 ROM (stock) durchführen kann, die dann auch
wirklich für alle APPs sichtbar (und beschreibbar) sind.

Hier erst mal auf die Schnelle eine Beschreibung mit den erforderlichen
Schritten in sehr kurzgefasster Form, d.h. ein gewisses Grundwissen ist
zum Verständnis erforderlich (einfach fragen, wenn unklar):

1. Vorraussetzungen.

- Stock ROM CND2 Kit Kat 4.4.2 gerootet mit cf-auto-root
- TWRP Recovery installiert
- busybox (in /system/xbin)

2. Kernel mit cifs Unterstützung installieren

Folgender Kernel (version 0.6) hat cifs eingebaut und läuft bei mir stabil:
[Kernel] [KK 4.4.2] [SM-P600] Xluco Kernel 0.6 - xda-developers
Er kann mit TWRP recovery installiert werden.


3. Umkonfigurieren des Startvorgangs

Möglichkeit A)
-------------
init.rc in "boot.img" (Kernel-Image Partition) anpassen, z.B. initd Funktion
ergänzen. Dies ist etwas aufwendiger, da dazu der Inhalt der Ramdisk
angepasst werden muss. Anleitungen gibt's im Inet.

Möglichkeit B) [empfohlen]
-------------
im init.rc des Stock Roms wird ein Service aufgerufen, der das Script
/system/bin/selinux-network.sh startet. Diese Script macht in der
vorliegenden Version gar nichts (ist alles auskommentiert) und eignet
sich daher sehr gut für unser Vorhaben.

Um mounts für alle APPs sichtbar zu machen(!), ist die einfachste Variante,
sie von einem Prozess, der direkt von "init" initiert wurde, zu launchen.

Dazu wird in diesem Script einfach der busybox telnetd gestartet.
Dieser ist dann später via simplem "telnet client" erreichbar und man
landet in einer "voll priviligierten" Session.
(Wer es sicherer haben will, kann sich ein sshd für P600 suchen und auf die
gleiche Art ans Laufen bringen)
Hier nun das Script (selinux-network.sh) in der abgeänderten Form:
#!/system/bin/sh

# mod start
/system/bin/setenforce Permissive
/system/xbin/telnetd -l /system/bin/sh
# mod end

IPTABLES="/system/bin/iptables"
...
Wichtig ist auch das Umschalten von se-linux auf "Permissive", damit
später der mount Befehl funktioniert (siehe Script: /system/bin/setenforce Permissive)

Wenn alles korrekt konfiguriert wurde kann neu gestartet werden.


4. Check (Telnet Session / se-linux Permissive)

Nach dem Restart kann man in den settings unter Info prüfen, ob
se-linux nun nicht mehr auf "enforced" sondern "permissive" steht.

Dann kann man mit einem geeigneten "telnet client" auf dem pad selbst
nach localhost oder remote auf die enstprechnde IP verbinden.
Es sollte direkt eine "shell-Session" verfügbar sein ohne Login
(!unsicher, aber zur Demonstration sehr gut geeignet).


5. Mount-Befehl

ich verwende dazu ein Script in der Art:
#!/system/bin/sh
if [ ! -d "/cifs" ]
then
/system/xbin/mount -o rw,remount /
/system/bin/mkdir -p /cifs/myshare
/system/bin/chmod 0777 /cifs /cifs/myshare
/system/bin/chown root.sdcard_rw /cifs /cifs/myshare
/system/xbin/mount -o ro,remount /
fi

/system/xbin/mount -o rw,user=<dein-user>,password=<dein-passwort>,sec=ntlm,noperm,forcegid,gid=1015 -t cifs //<server-ip>/myshare /cifs/myshare
Die mount targets müssen unbedingt im root-filesystem neu angelegt
werden, sonst klappt das mit der "APP" Sichtbarkeit nicht".
(Nach einem Neustart sind sie wieder weg)
Es muss busybox mount verwendet werden, sonst stimmt die Syntax nicht !
Evtl. muss je nach Samba Server die Option "sec=ntlm" variiert werden, z.B.
"sec=ntlmv2" (siehe auch manual zu cifs.mount im Inet)

Falls ich nichts vergessen habe, war's das für's Erste.

Also viel Spass !

- GMo -
 
Zuletzt bearbeitet:
Erstmal vielen Dank für diese umfangreiche Anleitung.
Ich habe bereits an meinem S2 mein netzlaufwerk gemounted. Allerdings über die App CIFS Manager mit root. Das funktioniert hervorragend.
Kürzlich habe ich mir das P600 zugelegt und merke schnell, dass ich ohne root nicht sonderlich glücklich werde. (Ich habe jetzt vermehrt gelesen, dass es hierbei nicht mehr so einfach ist die Counter nach einem Root zu resetten bzgl. Garantieanspruch usw.. oder? Deswegen wollte ich eigentlich vorerst ohne root auskommen...)

nun jetzt zu meiner eigentlichen Frage:
Ist es bei dem P600 nicht möglich Netzlaufwerke per CIFS Manager zu mounten, so dass du diesen etwas aufwendigeren Weg gehst??

Könnte jemand mit root die App auf dem P600 testen?
https://play.google.com/store/apps/details?id=com.twimager.cifsmanager&hl=de
 
Zuletzt bearbeitet:
Hi erazor1986,

mit KitKat auf P600 kommst du an Root und dem von mir beschriebenen
Weg nicht vorbei. Das Stock Image hat sowieso keine cifs Unterstützung
im Kernel eingebaut, so dass du in jedem Fall einen alternativen kernel
installieren musst.

Die Apps zum Mounten (auch die aus deinem Link) sind ja nur Hilfsmittel um
einen entsprechend gestalteten mount-Befehl abzusetzen ohne fummeliges
Tippen in einer Shell (oder per Script).

Letzendlich muss das basierende Linux-System die enstprechenden Vorraussetzungen
erfüllen (so wie ich es beschrieben habe), damit überhaupt irgendeine
dieser "Mount-Apps" funktioniert !

- GMO -
 
Okay, das ich root und einen entsprechenden Kernel mit cifs Unterstützung benötige ist mir klar. Reicht es wenn ich dann den mount-Befehl mit der app erzeuge oder muss ich noch zusätzlich etwas an der systemrom ändern, so wie du es beschrieben hast in Punkt 3, 4 und 5?

root und Kernel flashen sowie das einrichten der mount - app bekomme ich noch hin (also Punkt 1, 2 und den Rest mit dem Mount-Manager). Aber spezielle Befehle, in form von Skripten, in die systemrom integrieren wird für mich ohne detaillierte Anleitung schwierig...:unsure:

Ich kann einfach nicht verstehen warum so eine m.E. grundlegend wichtige Funktion nicht in Android integriert ist und soviel Aufwand benötigt... ich habe das Note erst eine Woche und wenn mir der Aufwand zu hoch ist, ist das für mich ein Rückgabegrund.. mal sehen.. deswegen möchte ich auch sicher sein, dass es nach dem flashen von einem custom Kernel in Verbindung mit dem Mount-Manager funktioniert. Mit Counter Erhöhung kann ich das Teil ja schlecht zurück geben...
 
Zuletzt bearbeitet:
Nicht alle "Mount"-Apps können die korrekte mount Syntax (wie ich sie in meinem Eingangspost
beschrieben habe) erzeugen, dazu gehört auch "Mount Manager".

Aber das ist sowieso nicht das Problem. Da Apps normalerweise nicht direkt vom "init"-Prozess
(= das erste Programm, das der Kernel aufruft) gestartet werden, kannst du
die gemounteten Verzeichnisse nicht in anderen Apps sehen, wenn du eine
"Mount-App" verwendest -> dies ist ein KitKat Feature :biggrin:

Der Mount muss von einem durch init direkt gestarteten Prozess erfolgen !!!

Das kann man dann zwar auch gerade biegen, aber dazu ist nochmals
einiges an Mehraufwand (Kernel-Patch) zu betreiben als ich es in meinem
Post beschieben habe, hier ein Link zu diesem Thema:
http://forum.xda-developers.com/showthread.php?t=2106480


Übrigens: Android kann von Haus aus alles, was du beim Kompilieren einschaltest,
z.B. auch cifs. Wenn das beim P600 im Standard-Kernel nicht drin ist, liegt es an SAMSUNG !

Die anderen Einschränkungen wie die Sichtbarkeit der Mount-Points liegt
allerdings an dem "Security"-Konzept von KitKat !

Zusammengefasst: globale CIFS Mounts gehen nur, wenn du mindestens
den von mir beschriebenen Aufwand betreibst - du kannst nix einsparen !

- GMo -
 
Hmm okay verstehe...
ich muss mir jetzt mal Gedanken machen, ob ich den Aufwand betreibe...
wenn Ich es mache, komme ich sicherlich nochmal mit Detailfragen auf dich zurück. Mich wundert übrigens auch die Zurückhaltung hier im board zu diesem thema.. hat sonst noch keiner etwas in der Richtung unternommen? Auch sonst im Netz findet man nicht sonderlich viel zu dem thema..

Es gibt nicht zufällig eine costumrom die all das schon integriert hat und auf kitkat basiert?
Auf meinem S2 mit cm11 funktioniert das automounten(bei wlan an/aus, Reboot usw.) mit der mount manager app echt klasse...
------------------------------------
Edit:

Wie funktioniert das ganze eigentlich im Zusammenspiel mit multiuser?
also ich habe einen Account für meine Freundin und mich angelegt.
jeder Benutzer sollte dann seinen eigenen mountpoint haben und den vom anderen nicht sehen können.

Funktioniert das so anhand deiner Beschreibung?
 
Zuletzt bearbeitet:
So, ich habe mich entschieden und bin deiner Anleitung gefolgt.
Bis Punkt 3 alles prima, cf autoroot, TWRP recovery geflashed, entsprechenden Kernel geflashed und busybox (mir bislang ein unbekanntes tool) installiert.

Anschließend habe ich die selinux-network.sh mittels es dateimanager auf die ext. Sd kopiert und an meinem Rechner mit dem Editor, entsprechend deiner Anleitung abgeändert, gespeichert und im tablet System mit dem es Dateimanager überschrieben.

den folgenden Punkt konnte ich nicht durchführen:
Wichtig ist auch das Umschalten von se-linux auf "Permissive", damit
später der mount Befehl funktioniert (siehe Script: /system/bin/setenforce Permissive) [

Das genannte Skript existiert bei mir nicht, sondern nur: "/system/bin/setenforce" und wenn ich das öffne, sehe Ich nur Hieroglyphen. Somit habe ich hier auch nichts geändert und wie beschrieben den Neustart durchgeführt.

Zu Punkt 4: nach dem dem Neustart war der status unter Geräteinfo wie beschrieben : "permissive"

Zu Punkt 5 habe ich die größten Unklarheiten:

1.womit hast du das Skript, den mount befehl, erstellt? Wie hast du es benannt und mit welcher Endung abgespeichert?
2.wo ist in dem Skript der mountpoint angegeben?
3.was genau muss ich mit busybox machen? Ich habe die App mal geöffnet, werde aber nicht wirklich schlau daraus.
4. Angenommen der mount funktioniert, was passiert wenn die Verbindung unterbrochen wird ( z.b. wlan aus)? Wird das Laufwerk dann automatisch ausgebunden?
5. Zusätzliche apps wie mount manager werden nicht benötigt, bzw. Funktionieren auch mit den Änderungen immer noch nicht?

Vielen Dank vorab!
 
Moin,
gibt es denn keine Custom ROM, bei der die CIFS Einstellungen schon gemacht wurden?
Ich würde meinen NAS auch gern über den CIFS Manager einbinden
 
Das wäre echt super.. ich habe alles erdenkliche anhand dieser Anleitung getestet und bin mir ziemlich sicher alles korrekt gemacht zu haben. Aber es funktioniert nicht.. Vllt. Habe ich die falsche rom?
ich habe die aktuellste deutsche offizielle kitkat Version aus deutschland.
Was ist im Betreff mit cnd2 gemeint?
 
Hast du auch den xluco Kernel installiert? Oder den Permissive Kernel von ihm? Denn den brauchst da die Samsing Kernel alle auf Enforcing stehen.
 
ja, zumindest den, der unter dem Link zu finden ist für das P600, gibt es da außer für das P601 noch andere?

hier ein screenshot von der geräteinfo:
http://www11.pic-upload.de/29.09.14/bd71ergwlkio.png

Den mount Befehl habe ich mit Server ip und logindaten von mir in den root Ordner gespeichert. Leider aber wird nach einem Neustart nicht mal der Ordner cifs mit dem unterordner myshare erstellt und das Script ist gelöscht, wie es beschrieben ist.

Ich habe das skript dann manuell über ein Terminal aufgerufen und erhalte dabei folgende Fehlermeldungen:
http://www11.pic-upload.de/29.09.14/pn3ylr5gd1yv.png

Jetzt werden zwar die Ordner erstellt, aber sie sind leer.
Ip, user und pw sind definitiv korrekt.
 
Zurück
Oben Unten