[script]Apps2SD Automatisiert für die ADBRecovery

  • 341 Antworten
  • Letztes Antwortdatum
Permissions siehst du auch mit ="ls -l"
das siehst du die drei Klassen: "Benutzer,Gruppen,Andere"
Das ganze wird in Buchstaben verpackt z.b. "rwx-rwx-rwx" entspräche 777
Welche jeweils die Wertigkeit (R)ead=4 , (W)rite=2 , (X)ecute=1 haben.
Für jede Klasse werden dann die gesetzten Berechtigungen addiert.
Das ist sozusagen die Übersetzung.
Vielleicht etwas ausführlich aber gut.... schneller gehts mit dem rootexplorer, lang auf die gewünschte datei und dann permissions :)

Ich weiss gar nicht wies bei laufendem System aussieht, sollte mit neustart evtl auch gehen
Wobei ich solche grundsätzlich in der recovery mache.
 
Zuletzt bearbeitet:
Also, so langsam glaub ich, mein Milestone mag mich nicht :p

Symlink geht (getestet indem ich nen Ordner in /data/app-private erstellt habe, der dann ja auch in /data/app2sd/app-private aufgetaucht ist. Mit Dateien reinkopieren funktioniert's genauso.

Permissions sollten auch alle in Ordnung sein - in Root Explorer sind für /data/app-private und für /data/app2sd/app-private alle Häkchen bei den Permissions gesetzt...

Habe ich einfach was vergessen?

Zusammengefasst habe ich:

1. Zeile zum Mounten von /data/app2sd/app-private aus mot_boot_usw entfernt
2. ln -s /data/app2sd/app-private /data/app-private
3. /system/bb/busybox chown -h 1000:1000 /data/app-private
4. /system/bb/busybox chown 1000:1000 /data/app2sd/app-private

-edit- Irgendwie habe ich das Gefühl, dass irgendwas Gröberes falsch ist - denn auch, wenn ich einfach den Symlink entferne und stattdessen einen Ordner /data/app-private erstelle, und dann darauf alle Permissions erlaube, funktioniert das Ganze immer noch nicht...

-edit2- So, auch nach dem Löschen des Symlinks und Erstellen eines Ordners /data/app-private kommt man immer noch auf /dev/block/mmcblk0p2.

Kann's sein, dass man, um den Mount richtig aufzuheben, noch mehr machen muss?
 
Zuletzt bearbeitet:
Also "normalerweise" hatte er glaub ich 771, aber das dürfte eigtlich keinen Unterschied machen. Was spuckt dir denn "mount" aus ?
 
Code:
# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock6 /system yaffs2 ro 0 0
/dev/block/mtdblock8 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock7 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock5 /cdrom yaffs2 rw 0 0
tmpfs /tmp tmpfs rw,size=2048k 0 0
/dev/block/mtdblock0 /pds yaffs2 rw,nosuid,nodev 0 0
/dev/block/mmcblk0p2 /data/app2sd ext2 rw,errors=continue 0 0
/dev/block/mmcblk0p2 /data/app ext2 rw,errors=continue 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=
1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,s
hortname=mixed,utf8,errors=remount-ro 0 0
#

Ein ziemliches Rätsel... von app-private steht da ja nichts...
 
So, interessant - nachdem ich /data/apps-private komplett gelöscht habe und dann nen Neustart durchgeführt habe, ist der Ordner wieder aufgetaucht - und, oh Wunder, führt wieder auf /dev/block/mmcblk0p2...

*verwirrtguck*
 
Hmm handelt es dabei um einen Symlink oder nen Ordner ?
Was gibt dir cat /system/bin/mot_boot_mode aus ?
Kann mir das Problem im Moment leider auch nicht erklären, evtl stört sich da wirklich was. Probiers einfach mal nur mit Symlinks...
 
der cat befehl bringt nix ;) da die mot_boot_mode aufgeteilt ist ;)
interessanter wäre die ausgabe von:
sh -x /system/bin/mot_boot_mode
 
cat:
Code:
# cat /system/bin/mot_boot_mode
cat /system/bin/mot_boot_mode
#!/system/bin/sh
export PATH=/system/bin:$PATH
MBM_PATH="/system/bin"
MBM_ORIGIN_NAME="mot_boot_mode"
MBM_BINARY_NAME="$MBM_ORIGIN_NAME.bin"

#original file was copied to $MBM_BINARY_NAME
[ -f "$MBM_PATH/$MBM_BINARY_NAME" ] && "$MBM_PATH/$MBM_BINARY_NAME"

for mbm_file in $(/system/bb/busybox find $MBM_PATH/ -name "$MBM_ORIGIN_NAME.*"
! -name "$MBM_BINARY_NAME"); do
        . $mbm_file
done
#

sh:

Code:
# sh -x /system/bin/mot_boot_mode
sh -x /system/bin/mot_boot_mode
+ export PATH=/system/bin:/sbin:/system/sbin:/system/bin:/system/xbin
+ MBM_PATH=/system/bin
+ MBM_ORIGIN_NAME=mot_boot_mode
+ MBM_BINARY_NAME=mot_boot_mode.bin
+ [ -f /system/bin/mot_boot_mode.bin ]
+ /system/bin/mot_boot_mode.bin
+ /system/bb/busybox find /system/bin/ -name mot_boot_mode.* ! -name mot_boot_mo
de.bin
+ . /system/bin/mot_boot_mode.51.apps2sd
+ insmod /data/ext2.ko
insmod: init_module '/data/ext2.ko' failed (File exists)
+ mount -t ext2 /dev/block/mmcblk0p2 /data/app2sd
mount: Device or resource busy
+ mount -o bind /data/app2sd/app /data/app
#


So, was sagt Ihr dazu? :p
 
also die mot_boot_mode mountet /data/app-private schonmal nicht ;)

muß woanders dran liegen ^^ bleibt doe frage wo :D
 
Code:
# ls -l
ls -l
drwxrwxrwx root     root              2010-06-07 18:45 app-private
-rw-r--r-- system   system        288 2010-06-07 18:36 local.prop
drwxrwxrwx radio    radio             2010-06-07 11:32 panic
drwxrwx--- radio    radio             2010-06-07 11:32 comm_drv
-rwxrwxrwx root     root       859979 2010-06-06 12:39 ext2.ko
drwxr-xr-x root     root              2010-06-07 18:44 app2sd
drwx------ system   system            2010-06-07 11:32 backup
drwx------ root     root              2010-06-07 11:32 property
drwxrwx--- system   system            2010-06-07 11:32 tpapi
drwxrwxrwx root     root              2010-06-07 18:45 app
drwxr-xr-x system   system            2010-06-07 13:55 tombstones
drwxrwxr-x system   system            2010-06-07 11:32 download
drwxrwx--t system   misc              2010-06-07 11:32 misc
drwxrwxrwx root     log               2010-06-06 12:40 dontpanic
drwxrwx--x mot_tcmd shell             2010-06-07 11:32 local
drwxrwxrwx root     root              2010-06-07 18:37 anr
drwxrwx--- radio    log               2010-06-07 18:36 logger
drwxrwx--- radio    radio             2010-06-07 18:36 gki
drwxrwx--- mot_accy mot_accy          2010-06-07 11:32 battd
drwxrwx--x radio    radio             2010-06-07 18:36 location
drwxrwx--- radio    shell             2010-06-07 11:32 opprof
drwxrwx--- radio    radio             2010-06-07 11:32 bp_nvm
drwxrwx--x system   system            2010-06-07 18:35 data
drwxrwx--x system   system            2010-06-07 18:35 dalvik-cache
drwxrwxr-x system   system            2010-06-07 19:06 system
drwxrwx--- root     root              2010-06-06 12:40 lost+found
#

Aber dadurch, dass /data/app-private kein Symlink ist (ist es doch nicht, oder? oben ist das ls -l von /data/), kann's wohl nur ein mount sein, oder? Wieso taucht das Ganze dann nicht unter "mount" auf?
 
So ich hab das ganze nachgestellt, und das Ergebnis war exakt das gleiche:

App-private gelöscht, wird nach neustart neu vom system erstellt und zeigt dann auf die SD-Karte
Sobald /data/app über mount -o bind gemountet wird, zeigt /data/app-private auch auf die sd-karte. Hab dann gerade mal kurz nur einzelnen Mountbefehl für /data/app deaktiviert und siehe da es funktioniert wieder ? Verstehen tue ich das ganze auch noch nciht wirklich... aber d.h. für dich das es nur mit symlinks wohl hinhauen würde. Ist mir bis heute noch nie aufgefallen aber /data/app-private ist nicht so wichtig für mich ..... :D
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: bemymonkey
Naja, bis Froyo rauskommt werde ich's auch ohne die 3 Apps überleben, aber mich nervt's halt, wenn so was nicht funktioniert ;)

Vlt. bastel' ich das Ganze einfach die Tage mal manuell, bzw. ohne Skript nach. Aber vlt. sollte man mal im Anfangspost ergänzen, dass Protected Apps mit dieser Version nicht funktionieren... :(
 
Gut, bist ja jetzt nicht mehr weit entfernt davon es manuell
gemacht zu haben. :)
Du müsstest dafür nur noch den mountbefehl für /data/app löschen aus der mot_boot_mode.irgendwas, das verzeichniss löschen und dafür den symlink setzen.
 
Heheh, eben probiert aber vergessen, erst den mountbefehl aus mot_boot_usw. zu löschen, und schon hatte ich die schöne Bootschleife. Jetzt erst mal nandroid-restore :D
 
Hi Bemymonkey.
Sorry war gestern den ganzen Nachmittag unterwegs.

Vorweg als Warnung, dahinter wird sie zu spät gelesen ;)

Ich hatte das Problem mit einer Bootschleife, das lag wohl daran das die app und app-private Ordner auf der SD-Karte schon vorher existierten. Abhilfe hatte auf jeden Fall ein neu anlegen der beiden Ordner gebracht.
Also das ganze am besten mit neu angelegten leeren app und app-private Ordnern auf der SD-Karte ausprobieren.

Und als 2. Warnung falls es keine leeren app und app-private Ordner sind: Manche (Naja ne Menge ;)) Apps müssen neu installiert werden, wohl weil sie für das System nicht mehr unter /data/app sondern unter /data/apps2sd/app liegen.

So nun aber zum kleinen Tutorial wie du das mit den Symlinks hinkriegst:

Ich gehe jetzt mal davon aus das deine SD-Karte ja bereits eine SD-Karte hat und die auch unter /data/apps2sd eingebunden wird.
Weiter gehe ich davon aus das du Busybox installiert hast.

Dann verbinde dich auf das MS, bevorzugt mit adb shell.
Nun sollte ein $ Zeichen zu sehen sein, tippe su ein damit du root wirst.

Nun einmal mount eintippen. Falls einer oder beide Einträge in der Form

Code:
/dev/block/mmcblk0p2 on /data/app type ext2 (rw,errors=continue)
/dev/block/mmcblk0p2 on /data/app-private type ext2 (rw,errors=continue)
auftauchen, musst du ein umount auf dem betreffenden Ordnern ausführen:

Code:
umount /data/app
umount /data/app-private
Wenn du nun nochmal mount eintippst sollte das einzige was auf /dev/block/mmcblk0p2 zeigt /data/apps2sd sein.

Nun müssen die Ordner /data/app und /data/app-private gelöscht werden. Ja wirklich gelöscht ;)

Code:
rm -r /data/app
rm -r /data/app-private
Nun kommt endlich das Verlinken:

Code:
ln -s /data/apps2sd/app /data/app
ln -s /data/apps2sd/app-private /data/app-private
Das setzen des richtigen Benutzers auf die Ordner und Links:

Code:
chown -h 1000:1000 /data/app
chown -h 1000:1000 /data/app-private
chown 1000:1000 /data/apps2sd/app
chown 1000:1000 /data/apps2sd/app-private
Falls es da einen Fehler gibt, zur not mal mit 1000.1000 statt 1000:1000 probieren.

Die passenden Rechte auf den Ordnern:

Code:
chmod 771 /data/apps2sd/app
chmod 771 /data/apps2sd/app-private
Schon ist der Teil der per Hand ausgeführt werden muss fertig.

Zur Kontrolle tipp jetzt nochmal ls -l /data ein
Code:
# ls -l /data
lrwxrwxrwx    1 1000 1000    15 Jun 1 18:00 app -> /data/apps2sd/app
lrwxrwxrwx    1 1000 1000    15 Jun 1 18:00 app-private -> /data/apps2sd/app-private
In deiner mot_boot_mode für den Apps2sd part, bei dir wohl die Datei mot_boot_mode.51.apps2sd sollte lediglich folgendes stehen:

Code:
#Apps2SD mod
#ext2 Modul laden
insmod /data/ext2.ko

#Apps2SD Partition mounten
mount -t ext2 /dev/block/mmcblk0p2 /data/app2sd
PS: Ich musste das jetzt aus dem Kopf runter schreiben, wär also prima wenn da nochmal wer drüber schauen würde der Ahnung hat und die ganzen Fehler korrigiert ;)
 
Zuletzt bearbeitet:
Hallo Lumer!

Vielen Dank für die schöne Anleitung, vlt. probiere ich das heute Abend nochmal.

Allerdings hatte ich das bis inkl. das Ordner löschen so gemacht, und da bin ich dann auf ein Problem gestoßen: Die Ordner lassen sich nicht löschen.

rm /data/app sagt geht nicht, ist ein Ordner
rm -d /data/app sagt der Ordner existiert nicht
rm -r /data/app genauso

Was hab ich also gemacht? Genau, ich Dödel habe das Ganze mit dem Root Explorer gelöscht => FC weil die APK ja plötzlich weg ist.

lumer schrieb:
Nun müssen die Ordner /data/app und /data/app-private gelöscht werden. Ja wirklich gelöscht ;)

Code:
rm -r /data/app
rm -r /data/app-private
Nun kommt endlich das Verlinken:

Dann also Symlinks setzen, nuja, geht nicht, wieder der Fehler, dass der Quellordner (also app und app-private) noch existieren würden... kurz ls -l, und was sehe ich da? Die Ordner haben sich wieder hergestellt.

Dachte, die lassen sich sicher nicht löschen, wenn noch Apps offen sind - alles zugemacht, geht aber immer noch nicht. Da kam ich dann mit Logik auch nicht mehr weiter, also gedacht "Nu, jetzt spiel ich halt einfach mein Nandroid-Backup rein und dann passt wieder alles."

Gesagt, getan, und nichts mehr geht. Scheinbar hat das Nandroid-Restore nur teilweise Sachen wieder hergestellt, und ich weiss nicht genau, wie man ihn dazu zwingt, wirklich das gesamte Backup zurückzuspielen, und nicht nur die Teile, die er für wichtig hält... im ADBRecovery/Nandroid How-To steht ja nur, wie man Teile des Backups weg lässt...

Interessant ist jetzt: mot_boot_mode.51.sddingens ist immer noch die Richtige (also die Ursprüngliche, die für /data/app und /data/app-private die app2sd Ordner mountet), aber alle Programme landen wieder auf dem internen Speicher... Sehr eigenartig.

Ich probier' das heute Abend mal weiter aus :p
 
Bist du sicher das ganze in der Konsole als Root auszuführen?

Du musst also eine # statt eines $ vor dem Prompt haben.

Edit: Kannst ja auch grad mal deine Ausgabe vom Befehl "mount" und "ls -l /data" hier posten, dann kann ich dir evtl schon sagen warum es wieder im internen Speicher landet.

Zu deinem Nandroid Backup: Nandroid-Backups speichern glaube ich nicht die /data partition. Das ist allerdings nicht so extrem tragisch, die wird zum beispiel bei nem Wipe auf einfach komplett leer gemacht und neu erstellt.
 
Zuletzt bearbeitet:
Ganz sicher als su... sonst meckert der ja schon bei ls -l teilweise, dass man irgendwelche Verzeichnisse nicht sehen duerfte oder so...

Mal sehen, was er heute Abend sagt ;)
 
Ja das stimmt, wollte nur sicher gehen, der Teufel steckt ja im Detail
 
Jo, das merke ich so langsam :D

Ich flashe wohl heute Abend erst mal komplett neu, roote und mach mich nochmal dran. Ist wahrscheinlich einfacher, als jetzt ewig den Fehler zu suchen :p
 

Ähnliche Themen

moviecut
Antworten
8
Aufrufe
3.349
fipsy
fipsy
-FuFu-
  • -FuFu-
Antworten
14
Aufrufe
2.782
-FuFu-
-FuFu-
Thoxx
  • Thoxx
Antworten
4
Aufrufe
4.424
Thoxx
Thoxx
Zurück
Oben Unten