Hola a todos,foto de Eloy Mier Pérez

Vamos a ir cambiando un poco el tercio….

En esta ocasión vamos a ver como podemos desde un terminal Android montar unidades compartidas por otros sistemas. Como sabéis Android es un sistema operativo de Google, basado en Linux. Como también sabéis Linux monta unidades compartidas sin problema usando entre otros un sistema denominado CIFS (Common Internet File System). Hace tiempo que vengo dándole vueltas al asunto y hoy me he puesto con ello. El asunto es que partiendo de un terninal con Android (tablet o teléfono o lo que sea…) para poder montar una unidad remota usando CIFS necesitamos que el kernel instalado en el terminal soporte CIFS. Bien, ¿como podemos saber si nuestro terminal tiene ese soporte?. La cuestión es sencilla y compleja a la vez.

  1. Si nuestro terminal tiene el sistema de serie, no vas a poder montar una unidad CIFS. Los motivos son varios:
    1. De serie los kernel proporcionados con los terminales no traen soporte CIFS.
    2. De serie no podemos lanzar comandos con root. Como sabéis, aunque en este tutorial se van a emplear varias herramientas gráficas para hacer los montajes, realmente el sistema a bajo nivel estará haciendo llamadas al comando mount, que en la mayor parte de las ocasiones requiere privilegios de root.
  2. Si nuestro terminal no tiene el sistema de serie, pueden darse dos casos mas:
    1. El sistema es una Rom oficial de versión superior a la actualmente vigente para el propio terminal (la hemos descargado manualmente y hemos flaseado el terminal con Odin).
      1. El núcleo o kernel es el estándar de la rom oficial. Este caso es exactamente el  mismo que el caso 1, pero con un sistema posterior.
      2. El núcleo o kernel lo hemos modificado flaseándolo con Odin. Caso 2.2.
    2. El sistema es una Rom «cocinada». Supongo que lo sabréis, pero bueno, por si las moscas, una Rom «cocinada» no es mas que una Rom oficial modificada por alguien (cocinero). ¿Que se modifica en estas Roms?, pues se modifican las aplicaciones instaladas por defecto, se modifican los temas, se hacen ajustes de rendimiento del terminal, en fin, multitud de nuevas funciones añadidas/modificadas de la Rom de la que se parte. En muchos casos estas Roms «cocinadas» traen consigo una versión modificada del núcleo del Sistema Operativo o kernel. Este elemento es el que nos importa de cara al presente articulo. Si el lector se encuentra en este caso, puede seguir con la lectura del articulo, en otro caso (1 o 2.1.1) no es de aplicación ( !!que coño esperas a rootear el terminal ¡¡ )

Elementos necesarios

  • Alguna unidad compartida de tipo Windows a la que queramos acceder y se encuentre en la Lan a la que conecta el terminal.
  • Terminal Android. Mi terminal es un Samsung Galaxy S2 I9100.
  • Rom cocinada. Yo actualmente en mi terminal parto con un rom cocinada de Criskelo concretamente la versión 19 (hilo oficial).
  • Kernel con soporte CIFS. Actualmente la Rom que tengo instalada en el terminal viene con un kernel denominado ninphetamine en versión 2.1.3. Si buscamos en internet información sobre este kernel podremos ver que CIFS está soportado y el modulo concretamente esta ubicado en /lib/modules/cifs.ko. En el caso de que vuestro kernel no tenga soporte CIFS todavía tendríais una alternativa, no queda otra solución mas que buscar por Internet algún fichero cifs.ko válido para vuestro sistema.

Elementos recomendados

  • Servidor sshd en el terminal. En mi caso uso QuickSSHd disponible gratuitamente en el android market. Hacer uso del servidor ssh del terminal no es objeto del presente articulo, pero a grandes rasgos, simplemente lo activamos en él y desde el PC usando un cliente ssh nos conectamos al server. Esto nos facilita la introducción de comandos y la navegación por el shell.

Elementos de partida

  • Verificamos que el kernel actualmente instalado en el terminal efectivamente tiene soporte para CIFS. Puesto que tenemos un terminal rooteado, no tendremos problemas en lanzar en un terminal ssh los siguientes comandos (se puede hacer mediante ssh remoto o bien en un terminal de comandos directamente sobre el dispositivo, como se prefiera o como se pueda) :
    su
    cd /
    find . -iname cifs.ko -type f
  • En el caso de que efectivamente el kernel tenga soporte CIFS el comando anterior debiera retornar una linea del estilo ./<path completo al fichero ko>/cifs.ko. Tenéis una captura a la derecha

 

Software necesario

  •  Para montar y desmontar las unidades remotas, voy a usar una aplicación para Android llamada CifsManager. Es gratuita así que en este caso no nos tenemos que dejar ni un euro por el camino.

Software opcional

  •  Navegadores de archivos para hacer mas cómodo el acceso a los ficheros. Con uno de estos navegadores instalados en el terminal, después de montar una unidad remota, si pinchamos en ella, se abrirá directamente el navegador sobre la misma, mostrando los elementos que contiene. Se hace muy cómodo su uso, no teniendo que salir del gestor para comenzar la navegación. En resumen nos facilita la vida. En el caso de que no queramos instalar un navegador de este tipo, tendríamos que irnos con, por ejemplo, el root explorer a la carpeta destino del montaje que configuraremos a continuación, y desde ese punto proceder a la navegación por el sistema remoto. Navegadores que integran con CifsExplorer:
    • Astro
    • Estrong

 

Configuración y acceso a unidad compartida

Bueno comenzamos la configuración de CifsManager para supongamos, conectarnos a una unida compartida sita en un PC cuya IP es 192.168.2.21 y la ruta de la compartición es /drivers.

Si accediésemos a la red de área local con Windows, a la máquina que tiene la unidad compartida, esta unidad se vería así:

Ahora que hemos comprobado que la máquina destino publica correctamente la unidad a la que vamos a conectar procedamos. Entramos en CifsManager y seleccionamos (Add New Share…) añadir una nueva compartición. Se abrirá una actividad propia de la aplicación en la que debemos introducir la siguiente información:

  1. Ruta de la unidad compartida (Share Path): Este dato se refiere a nombre de PC (si tenemos resolución local) o bien IP más la ruta de la compartición. En mi caso será 192.168.2.21 como IP destino y /drivers como ruta.
  2. Punto de montaje: Como sabéis en los sistemas Linux las unidades a que montamos lo hacen a partir de una ruta local. En este caso, lo que se nos está solicitando es el punto inicial de nuestro sistema de ficheros a partir del cual colgarán los contenidos de la unidad remota. Este campo se rellena de forma automática por la aplicación, pero por si acaso no lo hace, lo normal es usar /mnt/cifs/<rutacompartida>.
  3. Nombre de usuario: Para conectar a la unidad destino necesitamos proporcionar un usuario existente en destino. Aquí se indica el nombre del mismo.
  4. Contraseña: Contraseña para el usuario indicado anteriormente en la máquina destino.
  5. Opciones adicionales: opciones adicionales CIFS que ahora mismo no vienen a cuento.
Ahora pulsamos sobre salvar y aparece la pantalla siguiente:
Pinchamos en la unidad recién creada y el sistema nos tiene que indicar que se ha montado correctamente. Aquí tenéis la captura:
Veréis que el icono de la derecha se ha puesto de color verde para indicar la conexión correcta. Ya por ultimo, simplemente pinchamos en el share drivers y debe saltal el explorador de ficheros (opcional):
Pues por hoy es todo. Espero que disfrutéis del articulo.

Enlaces de interés

https://market.android.com/
http://www.cifs.com/

You must be logged in to post a comment.