ROMs y desarrollo Samsung Galaxy S II ROMs y desarrollo Samsung Galaxy S II

Respuesta
 
Herramientas
  #1  
Viejo 09/06/11, 10:31:17
Array

[xs_avatar]
jnadie jnadie no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 127
Modelo de smartphone: HTC Desire & SGS2

CIFs para SGSII y RSYNC para sincronizar

Introducción
Antes de comenzar, algunas ideas que debemos tener claras:

UNIX
Nuestros Androids son en realidad un sistema UNIX, se trata de un Sistema Operativo (S.O.) de los más antiguos, y de los más potentes. Esta "antiguedad" le confiere muchas cosas, entre ellas una potentisima "línea de comando" (en inglés "Shell"). Aunque solo sea por culturilla general, comentar que uno de los UNIX más famosos es "LINUX", y que tanto Android como los sistemas operativos de Apple también tienen un UNIX por detrás...

Linea de comando y "Shell script"
Una de las cosas más potentes que tiene cualquier LINUX es la disponibilidad de una línea de comando (en modo TEXTO) que nos permite hacer muchísimas cosas, lo más parecido en el mundo Windows es el "CMD" o "Simbolo de sistema", aunque comparar un CMD con una línea de comando UNIX es comparar una bicicleta con un transbordador espacial... sí, ambos son medios de transporte... pero ahí acaba su parecido.
Si estais familiarizados con el mundo Windows conocereis los ficheros de proceso por lotes (ficheros .BAT), pues bien, en UNIX eso también existe y se llaman "Shell script", normalmente se suele utilizar la extensión ".sh" para identificarlos (por favor, los expertos de Unix no me tengais en cuenta esta pequeña "patada al diccionario", esto lo estoy escribiendo para el público en general).
En un "shell script" podemos colocar todos los comandos que queramos ejecutar uno tras otro, y después lanzarlos todos juntos, aquí vamos a utilizar esto para crear un programa que con "un solo click" nos sincronice carpetas.

CIFs
CIFs es el protocolo que utilizan los Windows para compartir ficheros, necesitamos que nuestro SGS2 "hable este idioma" para poder acceder de modo nativo a los ficheros de un Windows.

Punto de montaje
El equivalente de las "unidades compartidas" de windows en el mundo unix son los "puntos de montaje", la idea es la misma, si en un Windows para "montar una unidad remota" le asignamos una letra [por ejemplo en U: tengo montada mi unidad de usuario de la red], en el mundo Unix lo que hacemos es "montar una unidad remota" en un directorio cualquiera (normalmente vacio), así por ejemplo, puedo crear un directorio en mi SD que se llame "/sdcard/CIFs" ("/sdcard" es como realmente se llama mi SD para el Unix) y "montar" mi unidad remota en ese directorio. Imaginaros que tengo un fichero "FOTO.JPG" en mi carpeta de red, pues bien, en Windows la vería en "U:\FOTO.JPG", y en unix la vería en "/sdcard/CIFs/FOTO.JPG" (Por cierto, fijaros que en unix las barras van alrevés).

Módulo de sistema operativo (fichero *.ko)
En unix, y en android en particular, se pueden añadir nuevas funcionalidades al sistema operativo "instalando modulos" desde la línea de comando, estos módulos con nuevas funcionalidades en Android suelen tener extensión "ko", y aquí tendremos que utilizandos para añadir nuestra funcionalidad "CIFs" al S.O.

ROOT
En un S.O. unix, al abrir un shell el usuario normalmente no es el administrador (root) de la máquina, suele ser un usuario "corriente" que puede hacer cosas "poco peligrosas" para el funcionamiento del sistema. Si queremos hacer cosas avanzadas -y peligrosas- debemos ser administradores del S.O., es decir, tenemos que ser ROOT. Para ello en la línea de comando basta con teclear el comando "su" (de Super User) e inmediatamente seremos administradores del sistema.

Dispositivo rooteado
Esto seguro que lo habeis oido todos "me he hecho root de mi Android", pues bien, "hacerse root" *solo* sirve para poder acceder en modo root (modo administrador) al S.O., y pongo *solo* entre asteríscos porque esto abre un mundo increible si lo sabemos aprovechar...


Instalar soporte CIFs en SGS2
Por fin he encontrado como añadir montajes CIFs a nuestros cacharritos, el "HOWTO" original es este: http://forum.xda-developers.com/show....php?t=1113191

Ahora os resumo y complemento...

Es necesario añadir la funcionalidad "CIFs" a nuestro sistema operativo Android, eso se hace añadiendo unos ficheros "*.ko" al sistema, estos ficheros nos los facilitan amablemente desde XDA

Descarga desde XDA: http://forum.xda-developers.com/atta...2&d=1307412988
Mirror en Megaupload (por si acaso): http://www.megaupload.com/?d=BJ8EG3WW

Bien, el proceso es el siguiente:
1.- Tenemos que ser ROOT, sino no hay nada que hacer...
2.- Descomprimimos los ficheros que contienen el zip (slow-work.ko, cifs.ko) y los subimos a la SDCARD de nuestro SGS2 (con el método que prefiráis), para esta guia voy a suponer que están en "/sdcard/" (la raíz de la sd).
3.- Montamos en R/W el /system (con el Root explorer por ejemplo)
4.- Creamos una carpeta "fs" en /system (con el Root explorer por ejemplo)
5.- Copiamos los dos ficheros anteriores desde la SDCARD a /system/fs/ (De nuevo lo podemos hacer con el Root explorer)
6.- Accedemos en modo terminal al teléfono (con adb shell o con una aplicación "console" de android, como prefirais).
7.- Ganamos "root" en el terminal, para ello tecleamos "su", el prompt pasará de ser "$" a "#", si es la primera vez que lo hacéis desde el adb tener cuidado de validar en el teléfono el permiso de "root" (si tenéis la pantalla apagada no lo vais a ver).
8.- Ejecutamos "insmod /system/fs/slow-work.ko"
9.- Ejecutamos "insmod /system/fs/cifs.ko"

Para probar si ha funcionado:

Crear una carpeta en /sdcard llamada "cifs" (o como queráis), el path a esta carpeta sería /sdcard/CIFS y ejecutar este comando:

busybox mount -t cifs -o username=**poner_vuestro_usuario**,password=**poner_vuestra_clave** /**La_IP***La compartición** /sdcard/CIFS

Un ejemplo con datos rellenados:

busybox mount -t cifs -o username=pitufo,password=cachoperro //192.168.1.10/Fotos /sdcard/CIFS

10.- Por último quitamos el R/W de /system (con el root explorer, por ejemplo)

IMPORTANTE: Los comando "insmod" son válidos hasta que reiniciamos el teléfono, si lo hacemos habrá que volverlos a ejecutar (Si alguien sabe como hacerlos "definitivos" que me lo diga y modifico esta guía).

Automatizar (con scripts) el montaje de una carpeta por CIFs
Dejando de lado el software "CifsManager" que es capaz de montar unidades CIFs en Android, os voy a contar como hacerlo a mano, lo que después nos servira para poder automatizar lo que nos venga en gana sin las limitaciones de ningún otro software.

Vamos a necesitar un software que sea capaz de ejecutar shell scripts (como ficheros BAT) desde el entorno gráfico, yo estoy usando el "GScript Lite", para ello tenemos que crear un fichero de texto (en nuestro PC, por ejemplo) con este contenido:

insmod /system/fs/slow-work.ko
insmod /system/fs/cifs.ko
busybox mount -t cifs -o username=pitufo,password=cachoperro //192.168.1.10/Fotos /mnt/sdcard/CIFS


Y lo guardamos como "MontajePitufo.sh" (sh es el equivalente a BAT en linux), lo subimos al teléfono, por ejemplo a /sdcard/MisScripts, vamos a "GScript Lite" y añadimos un script "add script", el contenido del script será una única línea:

sh /mnt/sdcard/MisScripts/MontajePitufo.sh

Nota: Prefiero no teclear el script a pelo en el GScript Lite porque no me fío de que después todo funcione correctamente al estar interactuando con cosas del sistema operativo.
Nota 2: No pasa nada por ejecutar el insmod varias veces, la primera hará su trabajo y las siguientes dirá que el módulo ya esta cargado.


Intalar RSYNC
El comando RSYNC es un viejo conocido de UNIX (para los que llevamos mucho tiempo trabajando con este sistema operativo), en un principio pensé que vendría con el busybox (como no) pero mi sorpresa fue que no era así...

Para comenzar diré que RSYNC es un comando muy completo que permite hacer copias entre equipos remotos, en particular me interesa para esta entrada que RSYNC es capaz de sincronizar 2 directorios de forma incremental (copiando solo lo estrictamente necesario) y además manteniendo todos los atributos de los ficheros (en particular la fecha/hora que es muy interesante para fotos y vídeos).

El primer handicap es conseguir el binario de este programa para android, por suerte -es lo que tiene el código abierto- hay gente que se ha dedicado a portarlo a Android, yo en particular encontré esta página:

RSync portado a Android: http://code.google.com/p/rsyncdroid
El binario ya preparado: http://www.megaupload.com/?d=H2D8NQBM

Colocarlo en el sistema
El binario ya preparado (ya sea el descargado de la página original, que tendréis que preparar, o el que yo os he subido a megaupload) tenéis que depositarlo en /system/bin, pasos:
1.- Copias el binario -una vez preparado o descomprimido- en vuestra SD por el método que prefirais.
2.- Con el "Root explorer" montáis en R/W el /system.
3.- Copiáis el "rsync" desde la SD (donde lo hayáis dejado) a /system/bin (con el root explorer)
4.- Con el "Root explorer" montáis en R/O el /system.

Y ya está, a partir de ahora tenéis disponible el rsync para lo que necesitéis.


Sincronizar carpetas con RSYNC
Una vez disponible el comando y montado el volumen CIFs podemos ejecutar un comando como este:

rsync -vrt --ignore-existing --size-only --progress --human-readable /sdcard/DCIM/ /sdcard/CIFS/FotosDeMiMovil/DCIM

Donde:

-v : Mostrar muchos detalles durante la sincronización
-r : Copia recursiva
-t : Mantener la información de fecha/hora en el archivo copiado
--ignore-existing : Ignorar si el fichero ya existe en destino
--size-only : Solo comparar tamaños para saber si los ficheros son iguales
--progress : Mostrar progreso durante la sincronización
--human-readable : Mostrar los datos en "formato humano"
/sdcard/DCIM/ : La carpeta de origen, para este ejemplo he puesto la de las fotos.
/sdcard/CIFS/FotosDeMiMovil/DCIM/ : El camino, compuesto por el punto de montaje (/sdcard/CIFS) y la ruta dentro de esa carpeta compartida (/FotosDeMiMovil/DCIM/) donde sincronizar la carpeta de origen

...más detalles más tarde... Los comentarios serán bien recibidos!!!

Script completo de sincronización
Aquí os dejo un script bastante "limpio" para que se pueda entender bien:


#***********************************
# Variables para configurar el script
#***********************************

unCaminoMod=
/system/fs # Lugar donde tenemos los ficheros *.ko para el CIFs (Tenéis que poner el vuestro si es distinto)


ActivarCIFs()

{
insmod $unCaminoMod/slow-work.ko
insmod $unCaminoMod/cifs.ko
}


MontarCIFs() # Parámetros: unPuntoDeMontaje, unaCarpetaAMontar, unUsuario, unaClave

{
unPuntoDeMontaje=$1
unaCarpetaAMontar=$2
unUsuario=$3
unaClave=$4
busybox mount -t cifs -o username=$unUsuario,password=$unaClave $unaCarpetaAMontar $unPuntoDeMontaje
}

SincronizarCIFs() # Parámetros: unaCarpetaLocalASincronizar, unaCarpetaRemotaASincronizar

{
unaCarpetaLocalASincronizar=$1
unaCarpetaRemotaASincronizar=$2
rsync -vrt --ignore-existing --size-only --progress --human-readable $unaCarpetaLocalASincronizar/ $unaCarpetaRemotaASincronizar
}


ActivarCIFs

MontarCIFs
/sdcard/CIFS //192.168.1.100/UnaCarpetaRemota unUsuariounaClave# <- Tenéis que modificar esto con vuestros valores
SincronizarCIFs
/sdcard/DCIM /sdcard/CIFS/CarpetaRemota # <- Tenéis que modificar esto con vuestros valores



Automatización One-Click para sincronizar lo que queramos
Unos pantallazos:




Fijaros que me da erróres al insertar los módulos (File exists), es porque ya están insertados, no hay problema en realidad. Como ya esta sincronizada mi carpeta tampoco veo avanzas en el RSync, solo que se ha ejecutado.


Saludos!
__________________

Última edición por jnadie Día 13/06/11 a las 10:15:20.
Responder Con Cita
Los siguientes 7 usuarios han agradecido a jnadie su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 09/06/11, 12:04:26
Array

[xs_avatar]
djvicio89 djvicio89 no está en línea
Miembro del foro
· Votos compra/venta: (9)
 
Fecha de registro: mar 2011
Localización: Málaga
Mensajes: 417
Modelo de smartphone: OnePlus 6
Tu operador: Lowi
Interesantisimo el tutorial, tengo ganas de meterle mano, a ver para cuando ese con rsync que tiene que molar eso de tener sincronizado la carpeta que escojamos con un click =)
Responder Con Cita
  #3  
Viejo 09/06/11, 13:41:40
Array

[xs_avatar]
intronauta intronauta no está en línea
Monguer.
· Votos compra/venta: (1)
 
Fecha de registro: ago 2009
Mensajes: 5,345
Tu operador: Pepephone

Con cifs manager es mucho más fácil que con scripts, no?
Responder Con Cita
  #4  
Viejo 09/06/11, 16:16:42
Array

[xs_avatar]
jnadie jnadie no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 127
Modelo de smartphone: HTC Desire & SGS2

 Cita: Originalmente Escrito por intronauta Ver Mensaje
Con cifs manager es mucho más fácil que con scripts, no?
Si funciona...

El problema es que la SGS2 no tiene soporte CIFs nativo, seguramente haciendo lo que comento funcionará el Cifs Manager...
__________________
Responder Con Cita
  #5  
Viejo 09/06/11, 18:29:48
Array

[xs_avatar]
intronauta intronauta no está en línea
Monguer.
· Votos compra/venta: (1)
 
Fecha de registro: ago 2009
Mensajes: 5,345
Tu operador: Pepephone

No, claro, instalar los módulos y que sea cifs manager quien los cargue y gestione los puntos de montaje.
Responder Con Cita
  #6  
Viejo 10/06/11, 12:32:57
Array

[xs_avatar]
jnadie jnadie no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 127
Modelo de smartphone: HTC Desire & SGS2

Actualizado el primer post
__________________
Responder Con Cita
  #7  
Viejo 10/06/11, 13:57:35
Array

[xs_avatar]
intronauta intronauta no está en línea
Monguer.
· Votos compra/venta: (1)
 
Fecha de registro: ago 2009
Mensajes: 5,345
Tu operador: Pepephone

Ánimo con ello y a tu ritmo que el foro no se va a ninguna parte
Responder Con Cita
  #8  
Viejo 13/06/11, 09:48:44
Array

[xs_avatar]
jnadie jnadie no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 127
Modelo de smartphone: HTC Desire & SGS2

Editado y completado, solo falta "el one click"
__________________
Responder Con Cita
  #9  
Viejo 13/06/11, 10:16:03
Array

[xs_avatar]
jnadie jnadie no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 127
Modelo de smartphone: HTC Desire & SGS2

Pantallazos del "one click", aún me queda pulir explicaciones, pero ya esta completado.
__________________
Responder Con Cita
  #10  
Viejo 13/06/11, 16:24:12
Array

[xs_avatar]
arxus arxus no está en línea
Miembro del foro
 
Fecha de registro: nov 2009
Mensajes: 312
Modelo de smartphone: Nexus 5, HTC Legend
Tu operador: Simyo
Muchas gracias por todo, la verdad es que siempre uso rsync entre mis linux y ahora también puedo con el móvil! en cuanto decida que rom me quedo, lo pruebo ;)
Responder Con Cita
  #11  
Viejo 08/03/14, 19:43:23
Array

[xs_avatar]
totapunk totapunk no está en línea
Usuario novato en la web
 
Fecha de registro: mar 2014
Mensajes: 3
Tu operador: Movistar

Decir que linux y android son sistemas unix... Es una burrada... Pero bueno.. Me viene muy bien el tuto grax
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Foros Samsung > Otros smartphones de Samsung antiguos > Samsung Galaxy S II > ROMs y desarrollo Samsung Galaxy S II



Hora actual: 21:07:09 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /