(http://3.bp.blogspot.com/-wLiZ566bvNY/UQmNT-76C-I/AAAAAAAAAkg/ikyDbxiIUQU/s320/adgsf.png)
Quieres portar tus aplicaciones de GNU/Linux a tu Android pues acá tienes lo necesario.
Para esto necesitaríamos una ISO de Debian para ARMEL la cual podemos descargar acá:
Debian 6.0.6 Armel - XFCE / LXDE - ISO (http://cdimage.debian.org/debian-cd/current/armel/iso-cd/debian-6.0.6-armel-xfce+lxde-CD-1.iso)
ATENCIÓN Acá está el SCRIPT
export.pl esencial para trabajar:
Código EXPORT.PL ~ Pastebin (http://pastebin.com/embed_js.php?i=H3wYYxR8)
De la iso solo extraeríamos la carpeta:
POOL (no necesitaremos mas nada) ademas de la herramienta DEB2DROID, podemos bajar archivos .deb para nuestras aplicaciones pero siempre y cuando sean para
ARMEL.
En este ejemplo exportaremos la aplicación NMAP a nuestro dispositivo, para eso la descargamos:
NMAP 5.00-3 [ARMEL] (http://ftp.fr.debian.org/debian/pool/main/n/nmap/nmap_5.00-3_armel.deb)
Lo movemos a la carpeta: pool/main/n/ y con la herramienta Deb2Droid la exportamos con sus dependencias.
kode@kode:/home/kode/debian-arm # perl export.pl
Deb2Droid v0.1 by Xianur0
Use: ./export.pl [pool dir] [deb]
kode@kode:/home/kode/debian-arm/nmap # perl export.pl ../pool/main/ n/nmap_5.00-3_armel.deb
[...]
[-] Instaladas!
[-] Paquete y dependencias extraidos correctamente!
Aquí tendremos todo extraído (carpeta donde se ejecutó el export.pl), haciendo un ls veremos:
kode@kode:/home/kode/debian-arm/nmap # ls
bin config etc export.pl lib sbin selinux shlibs symbols templates usr var
De este modo ya estaría apto para correr en nuestro dispositivo android pero el problema es que la aplicación se torna un poco (mejor dicho) muy pesada.
kode@kode:/home/kode/debian-arm/nmap # du -sh .
68M
Ahora tendremos que tomar solo lo que necesitemos para quitar la "basura" por así decirlo:
kode@kode:/home/kode/debian-arm/nmap/usr/bin # objdump -x nmap | grep NEEDED
NEEDED libpcre.so.3
NEEDED libpcap.so.0.8
NEEDED libssl.so.0.9.8
NEEDED libcrypto.so.0.9.8
NEEDED liblua5.1.so.0
NEEDED libdl.so.2
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
kode@kode:/home/kode/debian-arm/nmap/usr/bin # mkdir -p /home/kode/nmap-final/bin/
kode@kode:/home/kode/debian-arm/nmap/usr/bin # cp nmap /home/kode/nmap-final/bin/
kode@kode:/home/kode/debian-arm/nmap/usr/bin # mkdir -p /home/kode/nmap-final/lib
kode@kode:/home/kode/debian-arm/nmap/usr/bin # cp ../../lib/libpcre.so.3 /home/kode/nmap-final/lib/
kode@kode:/home/kode/debian-arm/nmap/usr/bin # cp ../lib/libpcap.so.0.8 /home/kode/nmap-final/lib/
kode@kode:/home/kode/debian-arm/nmap/usr/bin # cp ../lib/libssl.so.0.9.8 /home/kode/nmap-final/lib/
kode@kode:/home/kode/debian-arm/nmap/usr/bin # cp ../lib/libcrypto.so.0.9.8 /home/kode/nmap-final/lib/
kode@kode:/home/kode/debian-arm/nmap/usr/bin # cp ../lib/liblua5.1.so.0 /home/kode/nmap-final/lib/
kode@kode:/home/kode/debian-arm/nmap/usr/bin # cp ../../lib/libdl.so.2 /home/kode/nmap-final/lib/
Ahora tenemos nuestra aplicación con lo necesario en
/home/kode/nmap-final.
Ahora tendríamos que ver si alguna de sus dependencias depende de otra, para eso hacemos:
kode@kode:/home/kode/debian-arm/nmap/usr/bin # objdump -x * | grep -i NEEDED | sort -n | uniq
NEEDED libacl.so.1
NEEDED libattr.so.1
NEEDED libbz2.so.1.0
NEEDED libcrypto.so.0.9.8
NEEDED libcrypt.so.1
NEEDED libc.so.6
NEEDED libdl.so.2
NEEDED libgcc_s.so.1
NEEDED liblua5.1.so.0
NEEDED liblzma.so.2
NEEDED libm.so.6
NEEDED libpcap.so.0.8
NEEDED libpcreposix.so.3
NEEDED libpcre.so.3
NEEDED libperl.so.5.10
NEEDED libpthread.so.0
NEEDED librt.so.1
NEEDED libselinux.so.1
NEEDED libssl.so.0.9.8
NEEDED libstdc++.so.6
NEEDED libz.so.1
Copiamos las que nos falten:
kode@kode:/home/kode/debian-arm/nmap/usr/bin # ls -l /home/kode/nmap-final/lib/
total 6712
-rwxr-xr-x 1 root root ld-linux.so.3
-rw-r–r– 1 root root libacl.so.1
-rw-r–r– 1 root root libattr.so.1
-rw-r–r– 1 root root libbz2.so.1.0
-rw-r–r– 1 root root libcrypto.so.0.9.8
-rw-r–r– 1 root root libcrypt.so.1
-rwxr-xr-x 1 root root libc.so.6
-rw-r–r– 1 root root libdl.so.2
-rw-r–r– 1 root root libgcc_s.so.1
-rw-r–r– 1 root root liblua5.1.so.0
-rw-r–r– 1 root root liblzma.so.2
-rw-r–r– 1 root root libm.so.6
-rw-r–r– 1 root root libpcap.so.0.8
-rw-r–r– 1 root root libpcreposix.so.3
-rw-r–r– 1 root root libpcre.so.3
-rw-r–r– 1 root root libperl.so.5.10
-rwxr-xr-x 1 root root libpthread.so.0
-rw-r–r– 1 root root librt.so.1
-rw-r–r– 1 root root libselinux.so.1
-rw-r–r– 1 root root libssl.so.0.9.8
-rw-r–r– 1 root root libstdc++.so.6
-rw-r–r– 1 root root libz.so.1
Al revisar veríamos que nuestra aplicación ya no es pesada, ya que quitamos la basura que traía Debian.
kode@kode:/home/kode/debian-arm/nmap/usr/bin # du -sh /home/kode/nmap-final/
7,2M /home/kode/nmap-final/
Ahora toca preparar el entorno y subirlo al dispositivo:
kode@kode:/home/kode/debian-arm/nmap/usr/bin # mkdir -p /home/kode/nmap-final/proc
kode@kode:/home/kode/debian-arm/nmap/usr/bin # mkdir -p /home/kode/nmap-final/dev
kode@kode:/home/kode/debian-arm/nmap/usr/bin # mkdir -p /home/kode/nmap-final/sys
kode@kode:/home/kode/debian-arm/nmap/usr/bin # adb push /home/kode/nmap-final /sdcard/nmap
Probamos para ver si funciona, copiamos la carpeta a /data/local/nmap porque la SD es fat32 y no acepta permisos de ejecución.
cp -R /sdcard/nmap /data/local/nmap
cd /data/local/nmap
Montamos las particiones para que estén con el sistema:
mount -o bind /proc proc
mount -o bind /dev dev
mount -o bind /sys sys
Ejecutamos finalmente:
chroot /data/local/nmap /bin/nmap -V
Nmap version 5.00 ( http://nmap.org )
También podriamos portar GCC/Make y otras herramientas de desarrollo y directamente compilar el programa en el celular, lo cual nos ahorraría eliminar tanta basura.
Así tendríamos nuestra aplicación corriendo en Android, doy agradecimientos a
Xianur0 por todo esto ;)
se ve muy interesante, se te agradece que lo postees por estos lares.
un saludo mi buen amigo y si ves a xianur0 mandale saludos de mi parte.