Linux en iPAQ h1930
Domingo, Noviembre 19th, 2006Hací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/mmcblk0Disco /dev/mmcblk0: 62 MB, 62783488 bytes1 cabezas, 16 sectores/pista, 7664 cilindrosUnidades = cilindros de 16 * 512 = 8192 bytesDisposit. 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.