Administrando sistemas, Firefox mobile y otras cuestiones

El fin de semana tuvimos nuestras primeras clases de Administración e Integración de Sistemas. Comenzamos con una introducción a los runlevels, a la manera en la que se organizan los servicios en sistemas tipo Debian, a ver en qué orden se ejecutan, o qué deberíamos hacer para añadir nuestros propios demonios. Algunas cosas ya las sabía por haber trasteado en su día, otras me sonaban y de algunas no tenía ni idea, pero desde luego, una de las cosas que definitivamente agradecí fue la visión “didáctica”, en vez de los clásicos tutoriales “a lo bestia” que se suelen encontrar por Internet. Si a eso le añadimos que nos pusieron deberes para entregar en 15 días (la semana que viene es el FOSDEM), ya tenemos una buena combinación que debería permitirme defenderme mejor con el bash scripting :)

Además de los ejercicios que nos ponen, tengo un par de “picores” que me apetecía solucionar: en mi Sheeva, si conecto un disco duro por USB, tras un período de inactividad, éste se desmonta. Hasta ahí todo normal, se supone que es un mecanismo de ahorro de energía. Sin embargo, el problema viene cuando tras esos períodos de actividad se intenta volver a acceder al disco: se produce un error de entrada/salida. Entonces, el sistema vuelve a montar el disco en el siguiente punto de montaje (de sda1 pasamos a 2, 3 y así sucesivamente) y se hace una comprobación del sistema de ficheros: se suelen encontrar incoherencias, se corrigen, y listo. La solución que tengo, que simplemente inhibe mediante una actividad periódica la entrada en reposo del disco, es totalmente “quick & dirty”. Con lo que nos enseñaron, debería poder hacer un demonio que realizase las debidas comprobaciones, se ejecutase al inicio, e incluso estuviera atento a eventos de conexión y desconexión del disco (esto todavía no sé cómo, pero calculo que nos lo dirán :P )

En otro orden de cosas (siempre he querido decir esto), el sábado nos entregaron en préstamo unas Nokia N810. Son el penúltimo modelo de tablet de Nokia, corren Maemo4 – Diablo, y tienen teclado integrado y GPS. Aunque el módulo de desarrollo para escritorio y dispositivos móviles empieza todavía en unas semanas (podéis informaros aquí, además la matrícula está todavía abierta), imagino que lo adelantaron para que pudiésemos llevarlo al FOSDEM (tenemos que confirmar esto) y usarlo como callejero inteligente (con los mapas del Benelux) y miniordenador portátil, evitando cargar con cosas más pesadas e innecesarias.

Un detalle de las tablet que no sé si comenté es el soporte de la fundación Mozilla. Ahora, en mozilla.com/m, se puede descargar la versión para Maemo de Firefox, compatible tanto con Maemo 4, como con Maemo 5, en las nokia N900. ¿Ventajas sobre el navegador incluido por defecto? La sincronización :) . Un estupendo plugin, Mozilla weave, que permite sincronizar los marcadores, preferencias, pestañas, configuración… entre tu Firefox del escritorio y el Firefox del tablet. Si no lo conocéis y tenéis la posibilidad, ¡probadlo!

3 Comments

FOSDEM 2010: there we go!

This deserves a much longer post, I know. But until I get the time to write it, you’ve got this: we are going to FOSDEM! Igalia is sending us to Brussels so we meet with more OSS hackers, attend to a congress and… why not? enjoy :)

FOSDEM, the Free and Open Source Software Developers' European Meeting

PD: Check this for a schedule application for your smart-phone :)

1 Comment

Máster en Software Libre

En esta ocasión quiero hablar del máster en Software Libre que estoy cursando actualmente. Después de haber finalizado los dos años de cursos y trabajos que sirven de punto de entrada al doctorado, no tenía ganas de continuar directamente con la tesis: me faltaba una temática que me llenase de verdad. (Pista: el Software Libre, por ejemplo)

Es un máster de carácter muy práctico, organizado por Igalia y el grupo Libresoft de la Universidad Rey Juan Carlos, y está ya por su tercer año. En mi caso, el primer año me pareció muy caro y no lo llegué a tener suficientemente claro. El año pasado, al celebrarse en Vigo y encontrarme centrado (en teoría) en los trabajos del DEA, tampoco lo consideré, pero en julio de este año… Me di cuenta de que, salvo cambios verdaderamente inesperados, tendría tiempo y dinero para dedicarle.

La realidad resultó todavía mejor: la política de descuentos de este año lo ha vuelto muy competitivo en el plano económico, y el hecho de que se realice en Coruña de nuevo, y en horario de viernes tarde y sábado noche, me permite compatibilizarlo con el trabajo. (Aunque el período de matrícula ya haya finalizado, este año existe la posibilidad adicional de cursar módulos por separado. Echadles un vistazo, son realmente interesantes)

La idea, con este post de introducción/presentación, es dar la bienvenida a una nueva categoría en el blog, MSWL, donde iré contando con más o menos periodicidad las cosas que vayamos cursando durante este año. Idealmente, escribir una breve reseña semanal del trabajo realizado no debería ser tan difícil, y me serviría tanto a mí para fijar lo aprendido, como a quienes estuvieran buscando información de cara a cursarlo el año que viene o apuntarse a los módulos.

Lo dicho: permaneced atentos a vuestros agregadores de feeds, y si os interesa la temática no dudéis en acercaros al planet, donde alumnos de este y anteriores años cuentan sus experiencias.

No Comments

SheevaPlug: Instalando Redmine

Más vale tarde que nunca, espero, así que voy a comentar un par de detalles sobre la instalación de Redmine en el SheevaPlug. Redmine es una estupenda herramienta de gestión y seguimiento de proyectos, y en mi caso pretendo usarlo tanto para prácticas realizadas durante la carrera como para pequeños proyectos en fase de “incubación”.

Para la instalación de Redmine he seguido varios documentos de referencia: este tutorial en PDF de instalación de Redmine en Debian, obtenido del foro de Redmine; la propia documentación oficial de instalación de Redmine y el apéndice de creación automática de repositorios SVN. Más reciente (noviembre de 2009) es este artículo de la documentación de Redmine, que cubre la instalación de Redmine en Ubuntu.

Pasos previos

Redmine está desarrollado con Ruby On Rails. Soporta diferentes configuraciones de bases de datos, e incorpora un servidor web propio. En mi caso, decidí emplear Apache y MySQL. En teoría es posible utilizar lighttpd como servidor web (ver, por ejemplo, estos tres enlaces), y cualquier otra base de datos (SQLite incluida) para almacenamiento.

Al crear las tablas que usaría Redmine encontré un problema: se me denegaba el acceso como usuario root. Al parecer es un bug común entre los usuarios del SheevaPlug, y estos dos enlaces me permitieron solucionar el problema: How to install mysql on a SheevaPlug y MySql: Access denied for user ‘root’@'localhost’. Este debería ser el único problema en este proceso.

Instalación de Redmine

A continuación, se pueden seguir los tutoriales que comentaba antes (instalación de Redmine en Debian e instalación de Redmine en Ubuntu), limitándonos a copiar y pegar los comandos indicados. Es importante escoger bien entre entender los comandos e introducirlos manualmente o copiarlos directamente sin pensar. Ambas son opciones válidas, el problema es (ay, como en todo) mezclar. Las dos líneas que siguen me dieron muchísimos problemas: pensé que eran iguales, y las puse a mano. Y claro, una cosa es el acceso y otra la autenticación.

PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler

Instalación y configuración de subversion

Para integrar nuestra instalación de subversion con Redmine, volvemos a los tutoriales que comentaba antes: automatización de la creación de repositorios y gestión de acceso a los repositorios mediante apache. De ese modo, al crear un proyecto, se creará su repositorio automáticamente (pasado el tiempo que indiquéis en el crontab). Los accesos que hagáis al repositorio a través de Apache comprobarán si estáis autorizados para verlo.

Importando contenido de un repositorio ya existente

En caso de que tuvierais algún repositorio funcionando previamente y estéis migrando la instalación a Redmine, quedaría por importar el antiguo contenido. Para eso nos guiaremos por Moving a Subversion Repository to Another Server. Básicamente, para cada repositorio que queramos preservar, haremos:

svnadmin dump /path/to/repository > repo_name.svn_dump

A continuación, si no hemos creado el repositorio automáticamente con el mecanismo automático, lo haremos mediante

svnadmin create /path/to/repository

Y realizaremos la importación tecleando

svnadmin load /path/to/repository < repo_name.svn_dump

, ,

2 Comments

SheevaPlug: Actualizando el Kernel

Actualizando el kernel

Para actualizar el kernel, los pasos a seguir también están perfectamente detallados en el wiki: Install Prebuilt Kernels From sheeva.with-linux.com. En primer lugar, deberemos conectarnos al SheevaPlug mediante puerto serie. En esta página se indican diferentes posibilidades Serial terminal program. Por mi parte utilicé screen del siguiente modo (el primer parámetro es el dispositivo reconocido como puerto serie, y el segundo, la velocidad de la conexión):

tu_usuario@tu_maquina:~$screen  /dev/ttyUSB0 115200

Al pulsar una tecla, debería aparecer un prompt

login:

Introducimos ahí el usuario root y su contraseña, y entramos. Instalamos wget si no lo habíamos hecho ya:

#apt-get install wget

Guardamos el archivo README desde sheeva.with-linux.com. (Posiblemente haya kernels más recientes cuando leas este post).

#wget http://sheeva.with-linux.com/sheeva/README-2.6.31

Según la entrada en el wiki, se debe modificar el archivo /etc/sysctl.d/10-process-security.conf, y vm.mmap_min_addr debe valer 32768. Según la página, no realizar ese cambio inhabilitaría cualquier acceso distinto del puerto serie.

#vi /etc/sysctl.d/10-process-security.conf

Añade la siguiente línea

vm.mmap_min_addr = 32768

Dale permisos de ejecución al archivo descargado:

#chmod +x README-2.6.30.6

Ejecútalo para descargar y escribir los módulos e imagen del kernel.

# ./README-2.6.31
Use --nandkernel to write kernel to NAND
Or  --rootkernel to write kernel to /boot

En este punto, los nuevos scripts README no permiten la ejecución sin argumentos: debe especificarse –nandkernel para escribir en la NAND, o –rootkernel para escribir en la partición /boot. Si escoges la primera opción, se sobreescribirá el kernel que trae el Sheeva por defecto. Si escoges la segunda, deberás referenciar la ubicación del nuevo kernel en los parámetros de arranque. Yo empleé la primera opción, así que desconozco como indicar la ruta requerida por la segunda: si vas a seguir ese camino, consulta en el foro oficial

#./README-2.6.31 --nandkernel

Reinicia

#shutdown -r now

Ahora, cuando el SheevaPlug comience a cargar, debes pulsar alguna tecla para interrumpir el proceso. Entrarás en un prompt interactivo (la consola de uBoot), donde podrás modificar los parámetros de la carga.

Lo primero:

set mainlineLinux yes

A continuación

set arcNumber 2097

Ahora debes obtener los parámetros de arranque actuales y anotarlos, para su posterior modificación

printenv bootargs

A la ristra de información que te devolverá, deberás añadirle rootfstype=jffs2. También deberás sustituir nand_mtd por orion_nand. El resto debe permanecer igual. Es decir, si tenías

parametro1=valor1,valor2 parametro2=valor1,valor2 parametro3=nand_mtd

Tu nuevo bootargs deberá ser

rootfstype=jffs2 parametro1=valor1,valor2 parametro2=valor1,valor2 parametro3=orion_nand

(Y deberás establecerlo mediante)

set bootargs la ristra de parámetros modificada

Una vez hayas acabado de modificar los valores, teclea

saveenv

Y reinicia:

resest

En el siguiente arranque, el nuevo Kernel debería utilizarse.

¿Qué hacer si algo falla?

Lo primero, mantener la calma. Si utilizas –rootkernel por error, modificas los parámetros en uBoot pero no configuras la dirección de tu imagen en la variable boot_cmd, el mecanismo de arranque no será capaz de arrancar la imagen antigua con la nueva configuración.

Lo más sencillo es restaurar estas variables a sus valores anteriores, reiniciar usando la imagen antigua, e instalar el kernel en la NAND.

En Factory Default u-Boot Environment se indica el valor de las variables de uBoot en un sistema original, de fábrica: si solo habéis modificado esas dos variables, id a la segunda sección. Si habéis metido mano de un modo más general, en la primera sección se explica cómo resetear por completo la configuración.

,

No Comments

SheevaPlug: Primeros pasos

En esta entrada comentaré los primeros pasos que se aconsejan dar con el SheevaPlug. Están tomados del wiki oficial, concretamente de New Plugger How To y QuickStart (principalmente la primera fuente), y traducidos. Aunque me referiré inicialmente a la conexión por ssh, en principio no debería haber ningún problema en ejecutar todos estos pasos desde el puerto serie.

ATENCIÓN: si copiáis y pegáis algo de lo que comento que vaya entre comillas, aseguraos de que son las adecuadas. Es muy habitual que los blogs sustituyan las comillas dobles por comillas literarias

  1. Conectándonos al sheeva
  2. Arreglando la instalación
  3. Actualizando la instalación

Conectándonos al Sheeva

El SheevaPlug trae inicialmente un sistema Ubuntu instalado: Ubuntu 9.04 “Jaunty Jackalope”. Para comenzar a utilizarlo nos conectaremos al sistema por ssh, de modo que habrá que enchufar el Sheeva a nuestra red. Los routers más habituales traen configurado por defecto un servidor dhcp, con lo que al conectar el sheeva a la red, ya obtendrá una ip.

Para consultar la ip asignada, podemos ir al menú de “Lista de clientes” de nuestro router, o, con una herramienta como nmap, consultar todas las ips de nuestra subred.

tu_usuario@tu_ordenador:~$ssh root@ip_asignada

El usuario a utilizar es root, y la contraseña, nosoup4u. Una vez dentro, es interesante cambiar este valor y poner el que más nos interese, mediante el comando passwd.

Arreglando la instalación

Lo primero que arreglaremos es la resolución de DNS. El cliente DHCP está configurado para ignorar los servidores que indica el servidor, y pretende resolver nombres localmente.
Edita el archivo /etc/dhcp3/dhclient.conf y comenta o borra la línea “supersede domain-name-servers 127.0.0.1;”

Actualiza las DNS:

#dhclient eth0

Comprueba que funcione

#ping kernel.org

El directorio /var/cache/apt/archives/partial, usado por el sistema de gestión de paquetes APT, está montado en la RAM, de modo que se limpia en cada arranque. Sin embargo, aunque el fabricante incluye un script para crear este directorio al inicio, el script no funciona correctamente.

Edita /etc/rc.local. Los dos comandos insmod fallan, y puesto que la shell se invoca con el flag -e, el fallo en un comando provoca que el script aborte su ejecución. Borra o comenta todas las líneas salvo ”mkdir -p /var/cache/apt/archives/partial”. Tras esa línea puedes añadir la línea “/usr/sbin/ntpdate-debian” para sincronizar tu reloj a través de internet. Tras finalizar la edición, ejecuta el script.

#/etc/rc.local

La zona horaria no está establecida: ejecuta el siguiente comando, y selecciona la más apropiada:

#dpkg-reconfigure tzdata

Actualizando la instalación

Al llegar a este punto, en el wiki se recomendaba precaución. Suponemos en todo momento que tenéis una conexión activa por ssh a vuestro Sheeva. Pues bien, al finalizar la actualización del sistema, se recomienda intentar establecer una nueva conexión sin cerrar la anterior: si algo falla, es más sencillo solucionarlo. Cierto problema al modificar el nombre de la máquina (hostname), combinado con la actualización del sistema, podría impedir que os conectaseis. En este enlace se explica el problema con más detalle, y en este otro se comenta como solucionarlo. De todos modos, yo no tuve ninguna complicación en los siguientes pasos.

Primero: actualizar la lista de paquetes:

#apt-get update

A continuación: actualizar la distribución

#apt-get dist-upgrade

Por último, eliminar aquellos paquetes que no sean necesarios

#apt-get autoremove

Al llegar a este punto, y antes de reiniciar, es cuando conviene comprobar que podemos establecer una nueva conexión por ssh. Si todo va bien, reiniciar.

#reboot -h now

A partir de aquí, ya podemos instalar paquetes (wget, por ejemplo) como en cualquier distribución basada en debian:

#apt-get install wget

Teniendo presente en todo momento las limitaciones de espacio que nos encontraremos.

En la siguiente entrada hablaré de cómo se actualiza el kernel. No es una tarea especialmente difícil, y tiene también su entrada en el wiki oficial: Install Prebuilt Kernels. Sin embargo, hay alguna diferencia entre el proceso actual y el descrito allí, y puedo aportar la solución a ciertos problemas por los que ya pasé :)

,

3 Comments

Sheeva wins: introducción al plug computing

El día 7 de septiembre encargamos un compañero de trabajo y yo un Sheeva Plug. Se trata de un dispositivo embebido de bajo consumo con las siguientes características:

  • CPU ARM a 1.2 GHz
  • 512MB DDR2 de Ram
  • 512MB de memoria Flash interna
  • Lector de tarjetas SD
  • Puerto USB 2.0
  • Puerto Ethernet GigaBit

Ukki, un conocido de la comunidad de Maemo, me había hablado maravillas del suyo. El suyo había tardado unas seis semanas en llegarle, pero nosotros fuimos más afortunados: el 21 de septiembre lo teníamos aquí. En esta galería de picasa tengo la sesión de desempaquetado completa, pero añado 3 imágenes al post.

SheevaPlug - contenido del paquete

SheevaPlug - Contenido del paquete

SheevaPlug vs Fuente de alimentación del MacBook

SheevaPlug vs Fuente de alimentación del MacBook

SheevaPlug - Puertos Ethernet y USB

SheevaPlug - Puertos Ethernet y USB

Mis objetivos iniciales eran montar Redmine para mis proyectos personales, mt-daapd para compartir música de manera compatible con iTunes, y organizar un sistema de backup con rsnapshot. Ah, y tener más o menos permanentemente un cliente de IRC conectado mediante screen (irssiscreen). En las siguientes entradas iré comentado qué tal se me han dado estas tareas: la idea también es dar un poquito de soporte en español, puesto que en inglés ya existe muy buena documentación en la comunidad OpenPlug.

PD: Resulta que Sheeva es un personaje de la saga de Mortal Kombat :)

,

No Comments

Madre mía

Cuando se estrenó ¡Mamma Mia! en el cine me faltó el canto de un duro para ir a verla. Los musicales no son mi género favorito, pero en este caso, conociendo (a nivel de tarareo) todas las canciones, y viendo los trailers, parecía una película muy divertida.

Domingo por la tarde. La tele puesta, mientras avanzo con la presentación del DEA, y nadie en casa (salvo mi perro, descansando al lado). Y de repente se empieza a oir Abba: ¿qué es eso? Anda, pero si es la película aquella… I’ll take a chance :)

Y se confirmó: me lo habría pasado bien en el cine. No es una película que vaya a perdurar en la historia, pero desde luego que cumple perfectamente su objetivo: divertir. (También había buenos ingredientes: una boda griega, Pierce Brosnan en un papel cómico, actores totalmente desinhibidos…)

Nada, ya me queda tarareo para toda la tarde :D

No Comments

Muere una estrella, se rompe la luna…

Como sabréis ya a estas alturas, Michael Jackson ha muerto. Yo me enteré a las 00:45, en el peaje de la autopista al llegar a Fene. ¿Pero qué hacía allí, a esa hora? El segundo punto del título nos da una pista: y es que no hay dos sin tres, y me han vuelto a entrar en el coche :D . Han roto una de las ventanillas tipo “aleta” del asiento del pasajero de la izquierda (no la parte móvil: la otra, la pequeña).

Los daños esta vez han sido mínimos: la ventana, una navaja de la feria de Monterroso, y la linterna de las averías. La navaja difícilmente habría costado más de 10€ (y probablemente valiera menos), y la linterna… Tendría como mínimo sus 16-20-25 años, en función de si era “la linterna del Kadett” o si era “la linterna del R12 que luego acabó en el Kadett”. Revolvieron, pero hasta se podría decir que delicadamente, y no rompieron nada “innecesariamente”. Por supuesto, el coche no llevaba ni 24h aparcado en el mismo sitio: tampoco estaba especialmente guarro, y tenía puesto tanto el gancho volante-embrague como el cortacorrientes.

La primera vez: fallo mío por dejarlo sin medidas de seguridad. La segunda vez, putada que me lo abrieran aun con esas medidas puestas (ahí habían separado la puerta del pasajero del coche doblando el marco). Ahora… fallo mío de nuevo por no haber buscado garaje. Pero todo tendrá arreglo, y mientras los disgustos sean así… (me refiero: lo de la luna. Lo de la estrella es más triste :( )

Como punto final, el punto “de película”. Un control de la Guardia Civil de tres pares de cojones, en el peaje. Uno con subfusil antes de las cabinas de cobro, otro con subfusil después, tres coches de la Guardia Civil bloqueando todas las salidas excepto la controlada, y luego toda la movilización de los registros. Y yo, con mi ventanilla rota, los cristales sobre el asiento del pasajero, los asientos de los pasajeros medio sueltos (porque se accede al maletero desde ahí y se ve que también lo registraron)… Temblando iba, según pasaba a su ladito.

, ,

1 Comment

Hacienda somos todos

Ayer tuve la cita previa para hacer la declaración de Hacienda: no me daba llegado el borrador a casa, y como sería mi primera vez y no tenía ni idea de lo complejo que resulta, preferí ir en persona a que me dieran el papeleo hecho. Como ya me habían avisado, es un proceso muy poco interactivo: en Hacienda tienen toda tu información, y realmente lo único que se hace es confirmar que todo está bien. Como punto a destacar, presenté con éxito el recibo del Colegio de Informática: resulta que desgrava. Y nada: a ver si me salía a pagar o a devolver…

Me salió a devolver: fabuloso. Pero con lo que no contaba es con las ayudas que el gobierno está ofreciendo para estimular el consumo: el dinero de la devolución me lo dieron en forma de “vale de compra de Bershka”. Hay que joderse. Aun si hubiera sido para El Centro Mail

No Comments