Septiembre
2009
Estamos de mudanza: mariodebian.com
A partir de ahora este blog se mueve a su propiop dominio:
Actualiza tu lector de RSS con el nuevo dominio (el viejo empezará a apuntar al nuevo)
A partir de ahora este blog se mueve a su propiop dominio:
Actualiza tu lector de RSS con el nuevo dominio (el viejo empezará a apuntar al nuevo)
NUEVA URL==> Compilando rsync en Android (en mariodebian.com)Hace muy pocos días que he aterrizado en el mundo de android pero creo que voy avanzando poco a poco. Voy a publicar una minireceta de como compilar utilidades linux (sencillas) nativamente en Android. Antes de empezar sería bueno recordar que los binarios de Android se compilan para arquitectura ARM por lo que o usamos un emulador (tipo qemu) o un toolchain. Yo he usado el toolchain para compilar nativamente, con el emulador deberíamos compilar en estático y el binario ocupará bastante más. Vamos por pasos:
1.- Descargar el git de android, viene muy bien explicado aquí. Yo lo he descargado en mi $HOME/toolchain.
mkdir ~/toolchain cd toolchain wget http://android.git.kernel.org/repo chmod +x repo ./repo init -u git://android.git.kernel.org/platform/manifest.git ./repo sync
2.- Hora de tomarse algo, descarga la friolera de 2.1 GiB, seguimos, hay que compilar la parte base (librerías)
make BUILD_TINY_ANDROID=true
3.- Tarda otro buen ratillo, ahora compilamos la parte oprofile (lo he compilado aquí porque así tenía a mano los includes de popt.h que son los únicos que he necesitado), cargamos el entorno de ayuda y compilamos el directorio actual y subdirectorios con "mm":
cd external/oprofile . ../../build/envsetup.sh mm
4.- Ahora descargamos las fuentes de rsync (pueden valer las de Debian)
dget -u http://ftp.uk.debian.org/debian/pool/main/r/rsync/rsync_3.0.6-1.dsc cd rsync-3.0.6
5.- La parte que más me ha costado ha sido entender los Makefile de Android que se llaman Android.mk. Este es mi Android.mk para rsync:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ flist.c\ rsync.c\ generator.c\ receiver.c\ cleanup.c\ sender.c\ exclude.c\ util.c\ main.c\ checksum.c\ match.c\ syscall.c\ log.c\ backup.c\ options.c\ io.c\ compat.c\ hlink.c\ token.c\ uidlist.c\ socket.c\ hashtable.c\ fileio.c\ batch.c\ clientname.c\ chmod.c\ acls.c\ xattrs.c\ progress.c\ pipe.c\ params.c\ loadparm.c\ clientserver.c\ access.c\ connection.c\ authenticate.c\ lib/wildmatch.c\ lib/compat.c\ lib/snprintf.c\ lib/mdfour.c\ lib/md5.c\ lib/permstring.c\ lib/pool_alloc.c\ lib/sysacls.c\ lib/sysxattrs.c\ zlib/deflate.c\ zlib/inffast.c\ zlib/inflate.c\ zlib/inftrees.c\ zlib/trees.c\ zlib/zutil.c\ zlib/adler32.c\ zlib/compress.c\ zlib/crc32.c LOCAL_SRC_FILES += netbsd_getpass.c LOCAL_STATIC_LIBRARIES := \ libpopt LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/.. \ $(LOCAL_PATH)/../libdb \ $(LOCAL_PATH)/../libutil \ $(LOCAL_PATH)/../libop \ $(LOCAL_PATH)/../libabi LOCAL_MODULE := rsync include $(BUILD_EXECUTABLE)
El archivo netbsd_getpass.c lo he tomado de ~/toolchain/external/dropbear/netbsd_getpass.c ya que Android no debe tener la rutina getpass(), sólo se usa si la rutina getpassf() de rsync nativa falla.
6.- A compilar toca, sólo hay que ejecutar "mm" dentro del directorio rsync-3.0.6 y si todo va bien veremos al final:
target Executable: rsync (out/target/product/generic/obj/EXECUTABLES/rsync_intermediates/LINKED/rsync) target Non-prelinked: rsync (out/target/product/generic/symbols/system/bin/rsync) target Strip: rsync (out/target/product/generic/obj/EXECUTABLES/rsync_intermediates/rsync) Install: out/target/product/generic/system/bin/rsync make: se sale del directorio `/home/mario/toolchain'
7.- Para copiarlo al móvil (conectar el cable USB y activar el modo depuración USB en las preferencias)Necesitamos el SDK de Android.
cd ~/sdk/tools sudo ./adb kill-server sudo ./adb remount sudo ./adb push ~/toolchain/out/target/product/generic/system/bin/rsync /system/bin sudo ./adb shell chmod 755 /system/bin
Ya podemos abrir el terminal desde android (o desde adb shell) y ejecutar rsync para ver si se copio bien.
Se me ocurren miles de cosas sencillas (GScript + rsync) para tener las fotos publicadas en un blog, hacer copias de seguridad remotas (incrementales) o incluso usarlo para descargar contenido pudiendo perder la conexión temporalmente.
Rizando el rizo, estaría guapo hacer un pequeño frontend con las opciones más usadas y llamarlo desde una aplicación APK.
Como próximo objectivo compilar alguna otra cosa que hecho en falta (¿git? etc...)
NUEVA URL==> En un colegio cualquiera... (en mariodebian.com)... el profesor pide a los niños atención.
«Niños pulsando en el menú Aplicaciones -> Educación -> Marble, vamos a ver los paises de la Comunidad Económica Europea o como lo llamamos todos: EUROPE»
«Ahora pulsais en el texto rojo donde pone: Europe»
(sigue después del salto)
NUEVA URL==> Cosas raras en mi universidad (en mariodebian.com)Mira que he visto, y me han contado, cosas muy raras en mi universidad, la Escuela Universitaria Politécnica de Valladolid, pero lo de hoy ha sido la gotita que colmaba el vaso...
He visto una ráfaga mientras hacía zapping en la repetición del telediario de rtvcyl8, (no me lo he creido) pero verlo en el periódico [el norte de castilla], lo certifica:
El año que viene tenemos nuevo alumno: Franco Bahamonde, Francisco, con DNI num 00.000.0001, con sus 117 años y con la LOGSE recién aprobada (y con buena nota, la mejor de Químicas: 9,8)
He tenido la tentativa de editar la wikipedia, no os digo más
Hay mucho bromista suelto se les ha colado también un Marcello Mastroianni.
Ando encaprichado de un HTC Magic y he empezado buscando en segundamano.es. Ya había comprado alguna cosilla y nunca había tenido problemas.
Total que encuentro esta oferta: Htc magic a estrenar, [captura de pantalla por si lo borran]
¿Cómo me dí cuenta?
Received: from [93.112.215.238] by web111909.mail.gq1.yahoo.com via HTTP;
whois: inetnum: 93.112.0.0 - 93.112.255.255 netname: TELEMOBIL-SA descr: Telemobil S.A. descr: Calea Bucuresti, nr. 2B bis, descr: Balotesti, Jud Ilfov, Romania country: ro
Me ha faltado muy poco para picar, pero una búsqueda de la confianza en western union y las ventas en segunda mano me han dado 2 buenas pistas: [1] y [2].
Pues blanco y en botella como se suele decir. Ya lo he denunciado en segundamano.es. A todo esto sigo interesado en comprar un HTC Magic (o Hero).
Los sistemas de control de versiones no son ninguna novedad (CVS, SVN, GIT, Mercurial...) lo que si es novedad es empezar a usarlos en sitios que hace unos años ni siquiera se hubieran contemplado.
Tenía ganas de hablar sobre este tema pero me acaba de convencer un bug que acabo de recibir: #537237 .
Desde hace ya varios meses en todos los servidores que administro y en mi portátil personal tengo montado el directorio /etc bajo control de versiones con GIT. Hacerlo es de lo más sencillo que hay:
cd /etc git init git add . git commit -m "importado /etc"
¿Qué ventajas tiene esto?
Pues más que en un equipo de escritorio (que puede ayudarnos a arreglar cosas si andamos con Debian unstable) en los servidores es super útil.
¿Hay que crear un VirtualHost en Apache o editar cierta configuración?
Nuevo "commit" con su respectivo comentario y eso queda para la historia si alguna vez nos da problemas y no sabemos por donde arreglarlo tenemos el log y los diff.
Existen paquetes como etckeeper que se encargan de la parte más complicada por nosotros, pero a mi me sirve con usar git a pelo. Una de las cosas que he añadido es un disparador para apt que se encargue de hacer un commit cada vez que instalamos o desinstalamos algo. (lo tomé prestado de algún sitio y ahora no recuerdo donde)
#!/bin/bash
set -e
caller=$(ps axww | mawk '/aptitude|apt-get/ {for (i=5; i<=NF ; i++) printf ("%s ",$i); printf ("\n") }' | head -1)
STATUS="$(git status)" || true if echo $STATUS | grep '\(modified\|new\|remove\)' > /dev/null 2>&1 ; then echo "git-snapshot-script: found changed files" echo $STATUS git commit -a -m "snapshot after: $caller" else echo " **GIT** git-snapshot-script: no changes" fi echo " **GIT** git-snapshot-script: done"
Basicamente se lee el nombre de proceso que llama a este script (por ejemplo: apt-get install postfix) se mira si el directorio /etc ha cambiado y se hace el commit quedando en el log el programa que provoco esos cambios.
Para que el invento funcione debemos decirle a apt que llame al script:
cat /etc/apt/apt.conf
DPkg {
Post-Invoke {"cd /etc ; ./apt/git-snapshot-script";};
}
IMPORTANTE: Procura que el directorio /etc/.git solo pueda leerlo y escribirlo root (chmod 700 /etc/.git; chown root:root /etc/.git), con ese directorio se puede sacar el /etc/shadow por ejemplo y probar programas de fuerza bruta para sacar las contraseñas.
Mi vicio por git no termina aquí. Últimamente ando modificando unos cuantos CMS para uso personal o para clientes y un día puse esas web bajo control de versiones, ¡qué gozada! hacer mini-cambios y poder revertirlos, jugar con varias ramas, etiquetar... y para ejemplo un botón, Galopín es nuestro sistema de facturación interno y he ido tocando cosas que no acababan de convencerme, aquí está el git publicado. El primer import tiene parches ya de varios años de uso ;)
NUEVA URL==> Sobre Xorg, HAL y TCOS (en mariodebian.com)En las nuevas versiones de Xorg se usa (por defecto, pero menos mal que optativamente) HAL como descubridor de hardware y encargado de configurar teclados, ratones y demas dispositivos... de hecho no es necesario ni tener archivo xorg.conf como ya se contó por aquí.
TCOS nació ligero y quiere seguir siéndolo y es por eso que no se va a incluir HAL en las imágenes de arranque por lo que lo he desactivado ya hace unos días.
Pero lo cosa no es tan sencilla como añadir esa línea, estamos montando un aula (para un cole de primaria) con 18 terminales ligeros (equipos reciclados) y más bien por probar y dejar algo un poco chulo, decidí instalar el servidor con la última versión estable de Ubuntu (Jaunty 9.04) ¡¡¡ CRASO ERROR !!!
En Ubuntu 9.04 han querido adelantarse al futuro y han metido el nuevo driver de Intel (DRI2) pero más bien con la intención de que todos lo que usan Ubuntu sean su gran grupo de beta-testers de algo que da problemas [1], [2] y [3] (317 bugs abiertos para un driver no es moco de pavo), y para colmo de todos los males el driver VESA no funciona con tarjetas INTEL.
Es casi imposible hacer un archivo xorg.conf con el mapa de teclado y el servidor de fuentes (para TCOS) y que autodetecte todo lo demás, así que hemos reculado y puesto una Debian Lenny (como ya tienen en el mismo colegio en otro aula)
El rendimiento y la estabilidad de los terminales en Lenny es millones de veces superior, incluso permite jugar a juegos educativos (tipo tuxmath, childsplay, gcompris....), glxgears (esa herramienta que __NO__ sirve para calcular el rendimiento gráfico) da casi 500 FPS y eso que las X van por red.
RESUMIENDO: Si quieres un aula de terminales ligeros con TCOS usa una versión anterior de Ubuntu (Hardy/8.04 parece que va bien) o pásate a Debian.
Bug con parche sobre dnsmasq [532201] (realmente muy sencillo) y un día después nuevo upstream con el parche aplicado.
Acaba de llegarme el correo con el parche cerrado.
Así da gusto no como otros (aunque ponga Fix Released no lo han arreglado).
NUEVA URL==> Posicionamiento web de TCOS (en mariodebian.com)Revisando estadísticas de la web de TCOS, me he llevado una grata sorpresa:
debian thin client [en google]
Esto me anima aún mas para seguir con el trabajo de subirlo a Debian... ya he solucionado muchos problemas y espero que en breve pueda estar listo.Tengo varios contactos con DD así que no creo que esta vez tenga problemas para que alguien esponsorice el paquete.
Y a las pruebas me remito. (aviso: vídeo en formato malo maloso)
Me averguenzo (mucho) de mi gobierno.
Con políticos como estos (los otros no son mejores ni mucho menos) ES MEJOR QUE NO VOTES.