Posts Tagged sheeva plug

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é :)

,

10 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