Archivos en la categoría 'Linux'

Linux en iPAQ h1930

Domingo, Noviembre 19th, 2006

Hacía algún tiempo que venia buscando alguna forma de instalar linux en este Pocket PC para trastear un poco en las posibilidades de linux en dispositivos móviles, así que me puse a buscar y encontré el proyecto que por lo menos mas avanzado está.

Aun le queda un poco para acabar, pero con lo que ofrecen tendremos mas que suficiente para hacer nuestras pruebas.

Lo que haremos será construir un ‘disco duro’ con dos particiones, una para almacenar los archivos necesarios para arrancar y otra para el sistema de archivos del SO.

Las pegas que tiene actualmente el proyecto entre manos son el arranque de Linux y la gestión de energía. El primero de los problemas se solventa con un pequeño ejecutable que borra la RAM de la PDA y carga en ella el kernel de linux. Este ejecutable tiene que ejecutarse desde windows para pocket pc. El otro inconveniente no está solventado, por lo que no podemos apagar ni suspender la unidad, tan solo reiniciarla (tras lo cual restaurará windows ce en la RAM desde la ROM).

Comenzando con el particionado, si vamos a dedicar la tarjeta exclusivamente para linux, tenemos que crear la primera partición de la tarjeta SD con al menos 7 megas de espacio para los archivos de arranque y al menos 50 megas para la particion de Sistema. Este orden es obligado ya que la iPAQ solamente reconocerá y montará en windows ce la primera partición que encuentre en la tarjeta.

Para el ejemplo de particionado expodré mi caso, una tarjeta de 64 megas que me vino muy justa para hacer la instalación.

# fdisk -l /dev/mmcblk0
Disco /dev/mmcblk0: 62 MB, 62783488 bytes
1 cabezas, 16 sectores/pista, 7664 cilindros
Unidades = cilindros de 16 * 512 = 8192 bytes
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/mmcblk0p1   3  800  6384 1 FAT12
/dev/mmcblk0p2 801 7664 54912 83 Linux

Como puede verse la partición que emplearemos para arrancar ha de ser la primera y ha de ser forzosamente de tipo 1 (FAT12). La segunda, en la que he empleado el resto del disco, ha de ser de tipo Linux.

NOTA: mmcblk0 es el nombre del dispositivo tarjeta SD que mi tarjetero embenido en el portatil asigna para estas tarjetas. Si usas un lector externo, posiblemente tengas /dev/sdxz, donde x es el numero de dispositivo (a, b, c…) y z es el número de particion (ie: /dev/sda1, /dev/sda2).

Ahora que tenemos la tabla de particones adecuada tenemos que dar formato a las nuevas particiones adecuadamente:

# mkdosfs /dev/mmcblk0p1

# mke2fs /dev/mmcblk0p2

Comentar que forzosamente tienen que ser la primera de tipo dos y la segunda ext2.

Una vez hecho lo delicado, pasamos a lo facilon, la instalación de linux, que es tan sencilla como copiar los archivos necesarios en la tarjeta.

Empezamos descargando el nucleo (zImage) precompilado de la seccion de descargas de handheld y el HaRET, el programa que usaremos para arrancar linux y los copiaremos ambos en la primera particion de la tarjeta (la de arranque) descomprimiendo previamente haret.exe.

Por último hay que descargar el sistema de archivos con el entorno grafico, que pueden ser GPE o Opie. Yo prefiero GPE que se parece a Gnome. Para verlos y comparar cual os gusta mas, podeis verlos ambos aqui. Una vez descargado, descomprimirlo en la segunda partición y con esto ya habremos acabado de instalar nuestro linux experimental. Tan solo queda poner la informacion de arranque en la primera particion en un archivo llamado default.txt con el siguiente contenido:

set MTYPE 347 set KERNEL “zImage” set RAMADDR 0×30000000 set CMDLINE “root=/dev/mmcblk0p2 console=ttySAC2,115200n8 panic=30 rootdelay=5″ bootlinux

Notese de cambiar mmcblk0p2 por sdx2 o cualquiera que sea la partición en la que guardó el sistema de archivos.

Ahora ya podremos introducir la tarjeta preparada en la iPAQ y ejecutar haret.exe en la tarjeta SD y esperar que arranque el sistema.

Se puede encontrar el manual completo en ingles en la pagina original.

Sincronizacion de Hora

Domingo, Noviembre 19th, 2006

¿Alguna vez os habeis percatado de que se os va la hora en los relojes? Con el tiempo la falta de precisión hace que se nos adelante o retrase la hora. Tambien la falta de energía por agotamiento de una pila o el fin de la correa de un reloj pueden ser motivos de desincronización en un reloj.

Hace tiempo que me cansé de ello y decidí tener una hora maestra que se actualizase automaticamente a partir de la cual sincronizar el resto de relojes cada cierto tiempo.

Para ello he escogido mi servidor linux, ya que se trata de una máquina que no se apaga nunca. En cualquier caso no es necesario que sea una máquina 24 horas en pie.

Lo que básicamente necesitamos es un cliente del protocolo ntp. En debian lo podemos encontrar en el repositorio de apt:

# apt-get install ntpdate

Ahora el binario ntpdate se encuentra instalado en nuestro sistema. Para hacerlo funcionar basta con que ejecutemos

# ntpdate -u servidor.ntp

en donde servidor.ntp es un servidor que soprote el protocolo ntp. En mi caso yo utilizo ntp.upv.es.

Por último quise que se sincronizase la hora de forma automática cada domingo, para lo que añadí la siguiente entrada al archivo /etc/crontab:

#minute hour mday month wday who command

00 00 * * 1 root ntpdate -u ntp.upv.es

en donde el 1 es el día de la semana (domingo) que queremos que se ejecute la sincronización empezando por el domingo (1-7).