Linux en iPAQ h1930
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/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.
Sábado, Enero 20th 2007 at 9:02 pm
Esta explicación no funciona correctamente, yo modifiqué console=ttySAC2 por console=TTY0 pues me quedaba tux con el cursor parpadeante debajo.
Ahora, puedo ver que queda dando como último mensaje
Waiting 5sec before mounting root device…
mmc0 : host does not support reading read-only switch. assuming write-enable
mmcblk0: mmc0:b368 SMI 999936KiB
mmcblk0: P1 P2
Y no he sabido solucionarlo. La partición ext2 de mi SD no es read-only y la tarj. no está protegida, supongo que la técnica haya cambiado y no han actualizado, pues el ttySAC2 en las ultimas versiones de opie y GPE aparece desactivado.
Sábado, Enero 20th 2007 at 11:43 pm
Todo lo que pone es normal, no hay ningun error ahi. Lo que dice en ingles es que el host no soporta el interruptor que detecta si está protegida la escritura, así que asume que es escribible. La última linea que has pegado, la ultima que dices que te sale en el log, son las particiones de la tarjeta sd (mmcblk0 es la tarjeta sd) así que no veo ningun error :S
Respecto a lo del ttySAC2, es el puerto serie a donde envia el output, donde puedes conectar un ordenador para poder verlo. Al cambiarlo a tty0 lo que haces es que te saque el output por la pantalla principal nada mas.
Segun he leido en la pagina de handhelds, algunas tarjetas SD dan problemas con el módulo de linux que maneja las tarjetas resultando en un malfuncionamiento. Yo mismo he probado con dos tarjetas diferentes, una de 64Mb y una de 128Mb y solo me ha funcionado en la de 64 :(
Domingo, Enero 28th 2007 at 11:01 pm
Hi,
I found your blog via google by accident and have to admit that youve a really interesting blog :-)
Just saved your feed in my reader, have a nice day :)