martes, 21 de junio de 2016

Compartir ficheros en red con NFS



Hoy os quiero enseñar el método nativo de compartición de archivos de los sistemas Linux.

NFS siglas de "Network File System" (Sistema de ficheros en red) es un sistema  de compartición de archivos que podemos instalar y configurar en Linux de una forma muy sencilla.

En PC-Citos nos gusta hacer las cosas bien, así que voy a explicar lo que hay que hacer y el motivo.







  1. Estableceremos ip fija para cada aparato al que queramos acceder
  2. Instalaremos el servidor NFS en cada equipo que queramos que comparta archivos y tambien instalaremos el cliente NFS en cada equipo que queramos pueda acceder a los servidores NFS
  3. Configuraremos la compartición de una carpeta en el servidor.
  4. Añadiremos unas líneas al archivo hosts para que nos facilite la vida
  5. Añadiremos las reglas de montaje para los servicios NFS en /etc/fstab

Estableciendo IP fija:

Hay varios métodos para establecer ip fija a un pc o equipo, por regla general se puede hacer desde el mismo pc, o desde el router reservando una dirección específica para el equipo.

La manera mas correcta creo yo que es reservando direcciones dentro del router.

Como cada router es distinto os diré solo pasos generales.

Accedéis al router mediante la dirección de este, (normalmente 192.168.1.1 o 192.168.0.1) una vez allí os identificáis (si no sabes el nombre de usuario y contraseña normalmente viene detrás del router).

Buscáis el apartado DHCP y averiguáis que rango de ips se están entregando.

Dentro de ese rango tenéis que reservar las ips para los equipos que queráis.

En mi caso tengo 2 en el taller que tengo en casa.
Sus nombre de equipo son debian-taller y debian-taller2

Y para poder reservar las ips necesitáis adjudicarlas a una determinada MAC, que es un identificador único que llevan todos los módulos wifi, red y bluetooth, con lo que desde la máquina accedéis a la consola y escribid:

sudo ifconfig -a

Y os saldrá algo como esto:

miguel@debian-taller:~$ sudo ifconfig -a
[sudo] password for miguel:  enp12s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
       ether 40:3a:b5:70:72:ea  txqueuelen 1000  (Ethernet)
       RX packets 0  bytes 0 (0.0 B)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 0  bytes 0 (0.0 B)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1  (Local Loopback)
       RX packets 44639  bytes 103170878 (98.3 MiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 44639  bytes 103170878 (98.3 MiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.1.102  netmask 255.255.255.0  broadcast 192.168.1.255
       inet6 fe80::c646:19ff:fe33:73c3  prefixlen 64  scopeid 0x20<link>
       ether c4:46:a9:93:73:73  txqueuelen 1000  (Ethernet)
       RX packets 1357812  bytes 1526504372 (1.4 GiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 1037662  bytes 347094915 (331.0 MiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Subrayado os pongo lo que nos interesa, la primera tarjeta que aparece es la de ethernet, que en mi caso se llama enp12s0.

Y la segunda (wlp7s0) es la de wifi (aunque también aparece como Ethernet).

Su mac es la que aparece después de "ether" con lo que nos queda claro de que su mac es la c4:46:a9:93:73:73

Ahora ya, conociendo la MAC podemos reservarla en el router y asignarle la IP que queramos. (el pc claro debe tener activado DHCP, es decir, esperará a que el router le asigne una ip)

Por ejemplo, mis reservas quedan así:
debian-taller tendrá asignada la dirección IP: 192.168.1.100
debian-taller2 tendrá asignada la dirección IP: 192.168.1.101



Instalando NFS (servidor y cliente) en Debian y derivados:


Para empezar, necesitamos instalar nfs-kernel-server en todos los equipos en los que queramos compartir ficheros.

Y también tendremos que instalar nfs-common en los que queramos que puedan acceder a dichos sistemas.


Así que lo lógico es instalar en todas las computadoras ambos paquetes por regla general, ya que lo que se suele buscar es que las máquinas accedan entre si.


sudo apt-get install nfs-common nfs-kernel-server

Configurando la compartición de archivos o carpetas:

Una vez instalado los paquetes NFS tenemos que especificar que queremos compartir, esto se hace en el fichero /etc/exports

Así que lo editamos, ya sea con "nano", "vi" o el programa que queráis.

Con nano sería así:
sudo nano /etc/exports


Y veréis algo como :


# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)

Pues para añadir un directorio para compartición tenemos que hacerlo de la siguiente forma.


  1. Ruta exacta en el arbol de directorios
  2. Dirección ip que tiene permiso para acceder al archivo o directorio
  3. Por último los permisos que posee el usuario que accede

Por ejemplo, yo voy a compartir mi carpeta personal completa. (/home/miguel/)

Lo quiero compartir con toda la red (192.168.1.0/24)

Y lo quiero compartir con acceso a lectura y escritura (rw)

Así que añado esto al fichero:


#
#Compartir la carpeta /home/miguel con toda la red
#en modo lectura y escritura y accesible desde la red 192.168.1.0/24
/home/miguel 192.168.1.1/24(rw)
Guardamos el fichero y lo cerramos.

Con eso ya estamos casi listos, solo hay que reiniciar el servidor NFS en el pc en el que estamos compartiendo para que reconozca los cambios.

sudo service nfs-kernel-server restart


Añadiremos unas líneas al archivo hosts para que nos facilite la vida:

Como somos muy comodones :D, vamos a facilitarnos la vida un poco y vamos a decirle al sistema que sustituya las direcciones IP de cada equipo por una nombre de equipo y así no tendremos que recordarlas nosotros.
Nota: En realidad tengo mas equipos en casa, contando con los móviles aún mas todavía, así que imaginad en una red de equipos de una oficina lo ventajoso que puede ser esto.

Por ejemplo, como dije antes, en el taller tengo 2 equipos uno se llama debian-taller y el otro se llama debian-taller2

Pues bien, queremos que que al hacer referencias a debian-taller desde debian-taller2 y viseversa se acceda a la ip correspondiente.

Para ello, editamos el fichero hosts que se encuentra en /etc/hosts

Dentro veremos esto (En este caso estamos en la máquina debian-taller):

127.0.0.1       localhost
127.0.1.1       debian-taller
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


Como queremos que referencie la dirección de debian-taller2 ponemos lo siguiente:




127.0.0.1 localhost
127.0.1.1 debian-taller
192.168.1.101 debian-taller2
# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters

Y el el archivo host de debian-taller2 tendremos que ponerlo así:



127.0.0.1 localhost
127.0.1.1 debian-taller2
192.168.1.100 debian-taller
# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters

Añadiendo las reglas de montaje para los servicios NFS en /etc/fstab:
Aquí lo que pretendemos es facilitar el acceso con un simple click a los recursos compartidos de la red.

Primero tendremos que crear los archivos donde se montarán las unidades de red.

En mi caso he creado las siguientes careptas:


/media/miguel/debian-taller
y
/media/miguel/debian-talle2

Para crearlas tendrás que hacerlo como adminsitrador:
sudo mkdir /media/miguel/debian-taller

En vuestro caso sustituid el nombre de la carpeta y el usuario por los vuestros.

Una vez creadas las carpetas donde se montarán los sistemas de ficheros en red editaremos el archivo etc/fstab:


sudo nano /etc/fstab

Y veremos algo como:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=de132def-24ba-41d0-bd46-06993a28c7f7 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda4 during installation
UUID=3832696f-2485-4ed4-921d-3a745fd39a79 /home ext4 defaults 0 2
# swap was on /dev/sda3 during installation
UUID=2fbbf53d-b4b4-4098-8d24-289d123db5dd none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0



Tan solo tendremos que añadir las siguientes líneas al final del archivo:

# Para montar las unidades compartidas por NFS
debian-taller:/ /media/miguel/debian-taller nfs user,noauto 0 0
debian-taller2:/ /media/miguel/debian-taller2 nfs user,noauto 0 0

Con eso le decimos que monte la dirección asociada a cada nombre de host en su correspondiente carpeta, que use el sistema NFS y que no lo haga de forma automática. (solo cuando pinchemos en la carpeta)

Ahora, si abrís el explorador de archivos veréis algo como esto:



Como veis, en la parte inferior izquierda aparecen los nombres de equipos y si pinchamos en ellos (y, obviamente dichos equipos están encendidos) podremos acceder al contenido compartido de estos.

Un saludo y cualquier problema no dudéis en comentar.

sábado, 11 de junio de 2016

Aprende a programar Arduino y sus sensores

Tutoriales Arduino

Hola a todos, hoy quería tan solo informar a mis lectores de una página web con ingente información sobre arduino desarrollada y explicada por su creador que admiro, es esta: http://www.prometec.net/

En la parte de superior derecha tenéis las secciones disponibles y una de ellas es (Además del foro y  la tienda, donde podéis comprar todo lo necesario ya de paso a buen precio) la sección de Arduino, donde hay catalogado y explicado todo sobre los módulos de arduino, su programación, sus sensores, ejemplos y enlaces necesarios para descargar todo lo que hace falta.

La web mejor documentada que he visitado.

De hecho, por regla general cuando quiero saber algo de arduino pongo en google lo que quiero seguido por la palabra "prometec" y no decepciona nunca... :D

Un saludo a todos y no dudéis en visitar la web de prometec que os va a gustar mucho.

domingo, 29 de mayo de 2016

Sincroniza tu Smartphone Android con Plasma 5 y kdeconnect

kdeconnect
Hola a tod@s.
Si, antes de nada os doy la razón, hace mucho que no escribo pero no es porque no quiera, es porque no le puedo dedicar el tiempo que se merece, y para hacer guarrerías mejor no publicar nada.

Bueno, lo que voy a poneros no es nada nuevo, es ya antiguo, pero a mi me ha sorprendido hoy al igual que la simplicidad de esta aplicación para conectar el teléfono al PC.
Se trata de la aplicación "kdeconnect", que se puede instalar junto al escritorio KDE (ahora plasma 5) y que nos brinda la posibilidad de sincronizar el tlf con nuestro pc, pudiendo hacer algunas de estas cosas:
  • Ver notificaciones de batería del teléfono en las notificaciones de KDE
  • Ver estado de batería del teléfono periódicamente en KDE
  • Manejar el cursor del ratón (pudiendo tomar el control total, click derecho, arrastrar etc....) desde la pantalla del teléfono.
  • Control multimedia de los reproductores.... stop, avanzar, retroceder, volumen, etc, etc..
Bueno, manos a la obra:
Un requisito es tener un dispositivo para conexión mediante bluetooth entre el pc y el teléfono,(no es necesario, se conecta mediante tcp-ip estando los dos aparatos en la misma red o usando una dirección de red específica manualmente....)  el otro es instalar los programas en las distintas plataformas.
Instalación el el teléfono mediante este link: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp&hl=es
Instalación en KDE mediante estos comandos:
sudo apt-get update
sudo apt-get install kdeconnect
Tras eso solo tenéis que abrir el programa en el teléfono, escanear dispositivos compatibles y os deberá aparecer el PC, os conectáis y ya podéis trastear y probarlo.
Un saludo a todos!

Cocinando para el GT-S5570i

Hola a todos, en este tutorial voy a intentar explicar de forma clara y 'rápida' como he ido construyendo la Rom GingerCerecilla.
Solo os pediré que comprendáis una cosa, no me voy  a volver loco contestando comentarios sobre Windows, ¿por qué? Principalmente porque no lo uso, no me gusta, no lo apoyo y no lo conozco bien ni se que herramientas se usan en Windows, y además porque ya me lloverán preguntas suficientes para tenerme ocupado :D
Prólogo:
  • 1 - Requisitos mínimos
  • 2 - Herramientas que necesitaremos
  • 3 - Organización del espacio de trabajo
  • 4 - Preparación del entorno de trabajo
  • 5 - Flasheando una RomStock
  • 6 - Recuperando información importante
  • 7 - Comenzando a cocinar
  • 8 - Usando ADB
  • 9 - Flasheando tu propia CustomRom
  • 10 - Flasheando tu propia CustomRom
  • 11 - Usando apktool para modificar aplicacioens APK's
  • 12 - Firmando aplicaciones, alineando
  • 13 - Modificando el menú de ajustes para añadir nuevas opciones

Requisitos mínimos para empezar

Para empezar, como en toda buena receta necesitamos los ingredientes:
  • - Un terminal GT-S5570i
  • - RomStock para modificar (No uséis una modificada porque nunca se sabe lo que puede tener o no tener....)
  • - Código fuente de la última versión del Kernel para nuestro terminal.
  • - Un pc con Linux instalado o una máquina virtual.

 

Herramientas y útiles que usaremos

Android Kitchen de XDA (Para cocinar la rom, deoxead, firmar, alinear.... vamos, una maravilla de herramienta)

apktool (sin scripts ni historias... Descompila y compila APKs para modificación)
md5sum: bb877d467ae906facdaca67568a941b5

Odin + pit tassve (Este enlace ya lleva un pit modificado, sirve para flahear el teléfono con la versión Stock base)
md5sum: 516794fbff8bc7e8769b5406f72abbc3

Binarios de adb y fastboot (opcional pero muy recomendable, para tener un gran control de tu android desde terminal de Linux)
md5sum: 1e501a150be55dcb26755970cc268292
O en su defecto podéis intentar instalarlos desde los repositorios oficiales, pero esto será según disponibilidad en cada distribución Linux.... en las basadas en Debian podemos usar este comando para instalarlos:
sudo apt-get install android-tools-adb android-tools-fastboot
Os pedirá la contraseña, la introducís (no veréis nada en pantalla) y pulsáis la tecla "ENTER" para confirmar.
update-binary (Para introducir junto al updater-script)
PIT Magic v1.3.10 (Herramienta de Samsung para modificar el archivo PIT)
md5sum: 7799b92dea7125b03b2ac23cf1506def

- Binario bmlunlock usado durente la instalación de la rom para desbloquear la partición de arranque de nuestro gt-s5570i

pop_plus_CWM-Scorpyo82.zip es el CWM modificado por mí porque el original tenía algunos scripts mal.

Organización ante todo

Para empezar recomiendo encarecidamente organización, así que debéis de crear una carpeta donde tengáis estas otras carpetas: (solo como recomendación...)
Si lo usáis como yo os recomiendo, no tendréis problemas a la hora de usar los comandos de la terminal descritos en esta guía puesto que yo me guiaré por la estructura que he recomendado.
Recomendación: Usar en la medida de lo posible letras minúsculas, además de usar guiones bajos en lugar de espacios, os ayudará muchas veces a no cometer errores bajo línea de comandos. Jamás uséis tildes para los nombres de carpetas/archivos en Linux si creéis que hay posibilidad de pasar esos archivos a Windows, porque Linux soporta utf-8 con tildes... pero Windows no lo soporta y puedes tener problemas.

En vuestra carpeta personal, cread una carpeta que se llame gt-s5570i
Dentro crear estas otras carpetas:
roms_originales (Dentro ponéis las roms originales que habéis descargado para usarlas como base)
custom_roms (Dentro ponéis las custom roms que tengáis y que hayáis creado, organizadas por carpetas.... y por versiones, nada de 'cacao maravilláo' que luego pasa lo que pasa)
herramientas (aquí colocáis las herramientas que habéis descargado para tener siempre las originales en caso de que tengáis que reinstalar o compartirlas)
utiles (ponéis cosas que no consideréis herramientas... como chuletas o scripts)
tutoriales (pues eso, si descargáis un tutorial completo como este pues se guarda aquí, o chuletas y apuntes que os valgan para consultas)
cocina (muy importante, en esta carpeta se cocinará la rom, no meter nada dentro hasta que no llegue la hora de cenar.... :D)

Preparación del entorno de trabajo

1.- Para empezar tendremos que descomprimir el zip de la cocina de Android (Android Kitchen de XDA) para poder usarla.
Así que solo tenéis que abrir el zip y extraerlo todo a la carpeta "cocina" que habéis creado anteriormente.
Obtendréis una estructura básica para trabajar y un Script llamado "menu"
Asegúrate de que el script "menu" tiene permiso de ejecución (botón derecho > permisos > "Permitir ejecutar como una aplicación")
2.- Ahora, dentro de la carpeta cocina crearemos una carpeta que llamaremos "apktool" y dentro extraeremos el programa apktool y su script (va todo junto)
A su vez, dentro de la carpeta apktool crearemos una última carpeta que se llamará "apks", que será donde posteriormente pongamos nuestras aplicaciones originales para su modificación.
3.- Extraemos el binario de adb, y lo colocamos en /usr/bin/
Nota: Si conseguiste instalar los binarios desde los repositorios sáltate este paso y ve directo al número 4
Para hacerlo, lo ponemos en el escritorio mismo.. y ejecutamos el siguiente comando en una terminal que lo moverá y le dará los permisos:
sudo mv ~/Escritorio/adb /usr/bin/adb && chmod 755 /usr/bin/adb
4.- La cocina necesita tener instalado la aplicación zip, así que la instalamos desde una terminal con el siguiente comando:
sudo apt-get install zip
Listo.

Flasheando una RomStock

Siempre que esteis creando una Custom Rom es muy aconsejable instalar la rom stock sin moficar en el tlf.
Esto más que nada es por si no habéis modificado algunas partes del sistema (particiónes boot, data, CSC....), pues así mantendréis las originales de la rom stock... y solo reescribiréis los cambios.
Aún así, en este caso prácticamente lo que hemos creado es una rom completa

Recupenrando información importante

Llegados a este punto y comprobando que tenemos una rom más o menos viable para trabajar con ella procedemos a hacer una copia de seguridad que mas tarde usaremos para recuperar datos importantes que no están tan fácilmente accesibles desde
Debemos de compiar en la tarjeta SD el archivo pop_plus_CWM.zip.
Una vez dentro de la SD, apagamos el teléfono para iniciarlo en modo recovery.
Para hacerlo presionamos y mantenemos presionados los botones (power + Subir Volumen + Home) os aparecerá el logo de Samsung, cuando este desaparezca ya podemos soltar los botones.... volverá a aparecer el logo de Samsung y dará paso al recovery.
Este es el recovery de Samsung, muy pobre en opciones, elegimos "Install update zip" y de la lista que sale elegimos el archivo pop_plus_CWM.zip.
Se nos abrirá el nuevo recovery (no se queda instalado) y ya podréis usarlo.
Tendréis que hacer un backup seleccionando "Backup and Restore" y luego eligiendo "Backup"
Comenzará un proceso que tardará un rato.
Cuando termine le dais a cancelar hasta llegar a la primera pantalla y ya podremos presionar en "Reboot System now" para reiniciar.
Una vez reiniciado accedemos al teléfono con el cable usb y compartimos la tarjeta SD.
Veremos que hay una carpeta en la SD llamada clockworkmod, esta carpeta contiene los backups que vallamos haciendo, el nombre de cada carpeta es el resultado de la fecha y hora a la que hicimos la copia.
Nos interesa obtener la carpeta System que se encuentra en el archivo System oviamente.
Pasad ese archivo al pc para tenerlo a mano.

Comenzando a cocinar

Si! Llegó la hora y no hemos tardado nada ¿verdad?
Vamos allá.
Pero antes os doy una nueva ayudita....
Os facilitaré la vida un poco, resulta que el updater-script que se creará con la cocina de xda no contempla nuestro modelo porque es desconocido, para eso he creado un archivo que se ha de meter en "gt-s5570i/cocina/tools/edify_defs/"
El archivo contiene las líneas para el correcto montaje de las particiones de nuestro modelo, aquí lo tenéis (no le cambien el nombre):
md5sum: 1ecb74803a3557a3cb615ff72beebbe4
Ahora si que si!
Abrimos la carpeta gt-s5570i/ (Recomiendo partir la ventana en dos o usar múltiples ventanas para no estar yendo de atrás a adelante o viceversa, en Linux se suele usar F3 para partir las ventanas de navegación en 2 verticalmente)
Ahora necesitamos copiar la imagen de sistema a la carpeta "gt-s5570i/cocina/original_update"
Para eso abrimos el zip de la RomStock, dentro podremos ver varios archivos, nos interesa el que tenga parte de su nombre compuesto por "PDA", terminará en md5, pero no es más que un archivo comprimido en formato tar, así que lo copiamos a la carpeta "gt-s5570i/cocina/original_update" y modificamos el nombre a nuestro gusto asegurándonos de eliminar la coletilla .md5 para que quede algo como "mirom.tar"
Ejecutamos el Script "menu", si nos pregunta como abrirlo le decimos que en una terminal y obtendremos un menú como este:
============================================================
 Android Kitchen 0.224 - by dsixda (xda-developers.com)
============================================================
> MAIN MENU
  1 - Set up working folder from ROM
  2 - Add root permissions
  3 - Add BusyBox
  4 - Disable boot screen sounds
  5 - Zipalign all *.apk files to optimize RAM usage
  6 - Change wipe status of ROM
  7 - Change name of ROM
  8 - Show working folder information
  0 - ADVANCED OPTIONS
 00 - LEGACY OPTIONS (old and rarely used)
 99 - Build ROM from working folder
  u - Kitchen Info/Update/Donate
  x - Exit
Enter option:
Recomiendo que os familiaricéis con el menú y no sigáis el tutorial al pie de la letra porque puede estar desactualizado....
Lo primero es cargar una nueva rom original, así que elegiremos del menú la opción 1 (Set up working folder from ROM) presionando la tecla 1 y luego enter para cargar una rom, después, para mostrar una lista de nuestras RomStock nuevamente la tecla enter, elegimos el número correspondiente a nuestra rom en la lista y teóricamente podríamos contestar todo lo que siga preguntando por omisión, (presionando simplemente la tecla enter) hasta que muestre una pantalla en la que nos informa de las características de la rom y volverá al menú principal.
Nota: Durante el proceso tal vez pida la contraseña para usar sudo y montar la imagen.
En este punto ya hemos creado una carpeta de trabajo en la raiz de la cocina llamada WORKIMG_XXXXXXX (donde las x son la fecha y hora de la creación) y dentro estará la carpeta system descomprimida y el boot.img para flashear sin modificaciones aún.
Añadiendo archivos importantes:
Ahora llega el punto de usar la imagen System que hicimos en la copia de seguridad.
Tenemos que abrir el zip (porque es un zip)
Tambien abrimos la carpeta de trabajo que está en "gt-s5570i/cocina/WORKING_XXXXXXXXXXXX" (Las X las pongo como ejemplo)
Ya solo nos queda arrastrar cualquier carpeta del directorio raiz de la copia al la carpeta de trabajo... ejemplo:
  • CSC
  • T9DB
Ya no necesiaremos más la copia, así que podemos cerrar esa ventana para que no os moleste.

Modificando el nombre de la ROM:
Bueno, de vuelta a la ventana de android Kitchen.
Antes de nada vamos a modificar el nombre de la rom:
Presionamos la tecla 7, nos preguntará si queremos cambiar el nombre por defecto, contestamos que si e introducimos el nuevo nombre de la rom, presionamos enter para confirmar.

Deoxeando la ROM:
Ahora vamos a hacer algo muy básico que toda rom agradece, deoxead.
Básicamente lo que se hace es colocar el archivo .odex que acompaña a cada .apk dentro del mismo .apk, de manera que se eliminan problemas a la hora de modificar aplicaciones.
Presionamos la tecla 0 para ir al menú avanzado, luego elegimos la opción 11 "De-odex files in your ROM".
Aquí tendrémos que tener algo en cuenta, el nivel de API que usa la versión que intentamos deoxear, si no lo tenemos claro veremos que nos da la posibilidad de mostrar una tabla con los valores adecuados:
v  = Set Android OS version (Current API level = 17)
Así que para ver las correspondientes API presionamos "v" y confirmamos con el botón enter.
Se nos mostrará algo como esto:
Each API level corresponds to at least one Android OS version.
e.g.
Android 4.2-4.2.2   = API Level 17
Android 4.1-4.1.1   = API Level 16
Android 4.0.3-4.0.4 = API Level 15
Android 4.0-4.0.2   = API Level 14
Android 3.2         = API Level 13
Android 3.1.x       = API Level 12
Android 3.0.x       = API Level 11
Android 2.3.3+      = API Level 10
Como la versión que tenemos en este tutorial es la de android 2.3.6 tendríamos que seleccionar el nivel de el Nivel de API 10
Así que ponemos 10 y damos enter.
Volveremos a la pantalla anterior y ya podremos seleccionar la opción "b" que es la de deoxear las carpetas /system/app y /system/framwork (b  = Deodex both folders (recommended))
Tardará un buen rato.
Cuando termine, si no obtenéis ningún error os mostrará un resumen como este y tendréis la rom deoxeada.
A summary of the deodexing has been logged in deodex_010114_002826.log
0 *.odex files remain in system/app
0 *.odex files remain in system/framework
Press Enter to continue
No alinearemos los zip aún, porque eso ya lo haremos cuando empecemos a crear el zip, ya que nos preguntará antes de crear el zip.

Soporte para init.d:
Elegimos la opción 0 (avanzado) y luego la 14
14 - Add /etc/init.d scripts support (busybox run-parts)
Confirmamos y con eso habremos modificado el arranque del sistema (boot.img) para que atienda a los script que halla en /system/init.d/

Haciendo root:
Para poder hacer root elegimos la opción 2 del menú principal
2 - Add root permissions

Añadiendo Busybox:
Para añadir Busybox elegiremos la opción 3
3 - Add BusyBox

Comprobando estado actual:
Cuando queráis saber el estado en el que se encuentra la rom (las cosas que se le ha hecho o que le faltan por hacer) elegimos la opción 8 del menú principal...
  8 - Show working folder information
Que en mi caso mostraía algo como esto:
Working folder information (v0.224)
Android OS version             : 2.3.6
Device                         : GT-S5570I
Model                          : GT-S5570I
ROM Name                       : GingerCerecilla_v0.8 By Scorpyo82
CSC version                    : S5570IOXXLK3
Rooted (Superuser app + su)    : YES
Rooted (unsecured boot.img)    : YES
BusyBox installed              : YES
BusyBox run-parts support      : YES
Apps2SD (Apps to EXT) enabled  : NO
/data/app enabled              : NO
Custom boot animation allowed  : NO
Nano text editor installed     : YES
Bash shell support             : YES
/system/framework is deodexed  : YES
/system/app is deodexed        : YES
radio.img found                : NO
ROM will wipe all data         : NO
Press Enter to continue
Añadiendo más scripts/binarios al futuro zip:
Hemos añadido busybox, acceso root y otras cosas.
Algunas de las cosas que añadimos están dentro del boot.img
El problema es que el boot.img no se puede copiar de manera normal en nuestro terminal porque tiene esa partición bloqueada. Para solucionarlo, meteremos el binario bmlunlock dentro de la carpeta de trabajo y luego añadiremos las líneas oportunas al script para poder usarlo.

Creando el Zip para distribuirlo:
Ahora ya podríamos crear nuestro primer zip flasheable con las líneas adecuadas para su montaje.
Elegimos la opción 99
Cuando nos pregunte que modo queremos usar le decimos que el interactivo (por defecto) y a todo contestamos que si (porque todo lo que pregunta es para mejorar el zip)
Pararos con atención cuando nos pregunta si firmar el zip o no....
It is recommended that you sign your ROM.
Sign it (y/n)? (default: y):
lo dejaremos así un momento y observaremos que en la carpeta de trabajo ya se ha creado el zip pero no está firmado, así que aprovecharemos y abriremos el zip para ver el contenido (no descomprimirlo, solo abrirlo y modificar directamente sin descomprimir)....
Confirmamos que justo en la raiz del zip se encuentre el archivo bmlunlock y los scripts que podamos necesitar ejecutar durante el la instalación.
Iremos a la siguiente ruta "/META-INF/com/google/android/"
Dentro podremos ver que hay dos archivos, "update-binary" que es el binario usado para ejecutar la instalación y el "updater-script" que contendrá las ordenes de instalación
Necesitamos modificar el update-binary por el que a mi me está funcionando, que es el que he puesto en el enlace de arriba.
Luego necesitamos abrir el updater-script y comprobar los valores de nuestro terminal para corregir algunas cosas.
Aunque todo debería estar bien, porque ya hemos añadido el correspondiente archivo de configuración para nuestro tlf en la cocina de xda, lo mejor es comprobarlo.
Los valores correctos para el montaje de las particiones en nuestro terminal son estos:
/system       rfs        /dev/block/stl9
/cache        rfs        /dev/block/stl10
/sdcard      vfat       /dev/block/mmcblk0p1
/data          rfs        /dev/block/stl11
Con esto, podemos observar que la partición de montaje para /system , por ejemplo /dev/block/stl9
Si vemos una línea como esta:
format("rfs", "EMMC", "/dev/block/stl9");
Debemos eliminarla, porque nuestro binario no soporta el formateo, pero si podemos borrar recursivamente, así que borramos esa línea y buscamos esta otra:
mount("rfs", "EMMC", "/dev/block/stl9", "/system");
Y justo debajo colocamos esta otra línea para borrar recursivamente la partición system:
delete_recursive("/system");
Lo hacemos así porque primero necesitamos que la partición esté accesible, que es lo que hace el comando mount... y luego ya podemos borrar el contenido....
Ahora diréis... ¿listo? pues no, si os fijáis dentro del zip en la raiz tendréis el boot.img pero no hay datos dentro del updater-script para flashear correctamente ese archivo en el teléfono, así que modificamos esto:
assert(package_extract_file("boot.img", "/tmp/boot.img"),
run_program("/sbin/busybox", "dd", "if=/tmp/boot.img", "of=/dev/block/bml7"),
delete("/tmp/boot.img"));
Por esto otro que a mi siempre me funciona:
package_extract_file("bmlunlock", "bmlunlock");
package_extract_file("boot.img", "boot.img");
set_perm(0, 0, 0755, "bmlunlock");
#
# Primero se desbloquea el bml7 y luego se flashea...
#
run_program("bmlunlock");
assert(run_program("/system/bin/dd", "if=boot.img", "of=/dev/block/bml7", "bs=4096"));
Y una vez modificado, guardado todo y cerrado el zip, ya podéis volver al menú del script y darle a continuar contestando que si (y) para firmar el zip.
Cuando termine os preguntará si queréis cambiar el nombre del zip.... ya como queráis.
Y en este punto ya tenéis vuestro primer zip flasheable en la carpeta gt-s5570i/cocina/OUTPUT_ZIP


Usando ADB

Para empezar abriremos una terminal o consola, como queráis llamarlo.
Antes de nada, para los que no tengáis nociones de comandos Linux, os recomendaré que siempre uséis el comando man para obtener el manual de un comando.... por ejemplo en este caso poniendo "man adb" obtendríamos el manual de adb, o en su defecto, si queremos algo más simple podemos usar "adb --help" y obtendremos una lista con los posibles parámetros que se le pueden pasar a adb.
Bueno, para pasar rápidamente y sin complicaciones el nuevo zip (o cualquier cosa que queramos) a nuestro teléfono colocaremos el tlf en modo depuración yendo a "Ajustes > Aplicaciones > Desarrollo > Depuración de USB", lo conectaremos mediante el cable usb y usaremos este comando dentro de la terminal que antes abrimos:
adb push ~/gt-s5570i/cocina/OUTPUT_ZIP/rom.zip /sdcard/
Siendo rom.zip el nombre que le dísteis al archivo zip que habéis creado.
Tardará un rato y cuando termine veréis un resumen del tiempo y velocidad de trasferencias alcanzado.
Ahora podéis pasar igualmente el zip con el recovery CWM, si habéis seguido mis consejos lo tendréis guardado en la carpeta herramientas, así que con un:
adb push ~/gt-s5570i/herramientas/pop_plus_CWM-Scorpyo82.zip /sdcard/
Lo tendréis metido en el móvil en un segundín.
En este punto hay que reiniciar el móvil en modo recovery, que es un coñazo usando los botones del movil, pues hay que apagarlo, y luego encenderlo presionando (y manteniendo presionados) los botones de encender+subir volumen+botón central "home", luego, cuando desaparezca el logo de samsung soltáis los botones y aparecerá nuevamente el logo de Samsung para posteriormente dar paso al recovery de samsung...
Peeeero, si queréis hacerlo muuuucho más rápido y dado que ya lo tenéis conectado al ordenador por cable :D...... solo tenéis que poner esto en la consola:
adb reboot recovery
Y el teléfono entrará en modo recovery de forma automática.

Flasheando tu propia CustomRom


Lo que viene ahora es sencillo:
Instalación en el teléfono:
1 - Encender el tlf en modo recovery, (botón power + home + Subir Volumen) usar la opción “Apply update from sdcar
2 - Elegir el archivo “pop_plus_CWM
3 - En el nuevo recovery hacer Wipe Data, Wipe cache, y Wipe Davilk Cache (en el menú Avanced)
4 - Volver al menú principal y elegir “Install zip from sd
5 - Elegir la opción “choose zip from sdcard” y elegir el arhivo de la rom que habéis creado.... y con suerte todo vaya bien.
Listo!
El primer encendido tardará algo, pero es normal porque se está generando la caché para acelerar el arranque la próxima vez que inicie el tlf, solo lo hará la primara vez.

Continuará.......

Recuperar clave desbloqueo android

get-gesturekey
En esta entrada os traigo algo que a muchos os gustará.
Se trata de una herramienta que he creado para poder obtener el código del patrón por desbloqueo de android sin borrar el original.
Es una herramienta no invasiva que no deja rastro en el tlf (excepto los correspondientes logs del sistema)
Con esto no pretendo incitar a obtener códigos de teléfonos ajenos, solo lo publico para que podáis experimentar con las vulnerabilidades del bloqueo por gestos y para algún que otro despistado :D
Está creada para usarse en Linux.
Podéis usarlo usando el cable conectado al tlf o bien copiando el archivo gesture.key a mano desde el tlf... pero claro está, se supone que no tenéis acceso al tlf.
Así que simplemente lo conectáis al pc por cable y ejecutáis el script.
Un saludo y espero que os sirva
PD: Para obtener archivo gesture.key el tlf debe estar roteado, y el binario de adb que hay dentro del zip es de mi pc 64bits, no se si valdrá para 32bits
Actualización: He añadido más funciones al script y además la posibilidad de no depender de ser root para obtener el código.
Archivo: get-gesturekey.zip actualizado 29/12/13
md5: cd8ec710004d043e643bbcaf5b5f7861