lunes, 28 de junio de 2010

WEBOS o esa maravilla de so.haciendo experimentos con ello

Recientemente tuve que cambiar de pda pues la mia murio.Afortunadamente encontre por ebay el mismo modelo muy barato en usa (y el modelo superior a un precio de ganga.Ya lo comentare en un post que quiero escribir dedicado a estas palm) .Y al volver a investigar sobre programas ,buscaba alguna manera de añadirle la opcion castellano pues la version europea traia muchos idiomas pero la usa no,encontre uno que era una maravilla:tealos.
Desgraciadamente palm les mando una carta para evitar que siguieran vendiendolo,pues es una copia descarada de su nuevo so.Yo lo probe en mis nuevas pda y quede gratamente sorprendido y me pico la curiosidad...

Y decidi investigar ya que me ha parecido la mejor interfaz para un sistema tipo pda multitarea,las cards, que he visto en mucho tiempo.Al final me baje el sdk para programar webos y viene una imagen virtual con el webos cargando en un sistema x86,los pc de toda la vida.
El sistema en si es un linux,pero con una interfaz grafica encima del framebuffer que es una maravilla basado en html/javascript/css webkit.

tengo dos ideas/proyectos en mente:

a)Usar webos como so normal el pc

Ahora ando investigando como escalar la interfaz,las aplicaciones...para mejorar la version del sdk y poder usarlo en un pc normal (este sistema operativo es independiente de la resolucion).Por ahora me dedico a jugar con el emulador y acceder al sistema via ssh o con novacom




NOVACOM

--Para poder usar novacom,hay que seguir estos pasos:
1)bajar y usar webos quick install
Unofficial os \install \ java -jar Webosquickinstall.jar

2)Decirle que me reinstale novacom



COMPILAR COSAS WEBOS


crear un paquete:

palm-package HelloWorld

Instalar app

palm-install com.mystuff.hello_1.0.0_all.ipk


lanzarlo desde consola,una app

palm-launch com.mystuff.hello

borrar app
palm-install -r com.mystuff.hello

teclas (como el portatil no las tiene home .. :( )


Entrar sistema

SSh

usar puerto 5522.user :root ;passwd:root


NOVACOM: (me ha encantado este programa,para acceder al pre sin necesitar instalar nada,deja tambien copiar entre palm pre y pc,la salida va al pc..

ej consola:
c:\Users\dani\novacom -t open tty://

reiniciar maquina:

novacom -w run file://sbin/tellbootie recover || true


redireccionar salida de un comando de la shell de webos al pc (tanto emulador como la del palm pre)

novacom -w run file://bin/mount > Unidades-montadas.txt

mandar archivo al emu/palm pre

novacom put file:///tmp/debian.tar.gz


Modo host :TUNEL
-----------

hacer un tunel ( y acceder via navegador)
ssh -p 5522 -L 5581:localhost:8080 root@localhost

Host Mode

Open your web browser, and enter one of the following addresses:

* http://localhost:5581/PalmApps for Palm internal applications.
* http://localhost:5581/Apps for 3rd party applications.




CAMBIAR RESOLUCION APP


ej usar una resolucion: 800x600


Al cargar en grub grub vga=343

OJO poner siempre alguna con 32 bits color.



/etc/palm/luna.conf

ScanCalculatesAppSizes=false


y reiniciar luna:

initctl stop LunaSysMgr && initctl start LunaSysMgr


me gusta que se le pueden abrir aplicaciones usando luna

luna-send -n 1 palm://com.palm.applicationManager/rescan {}


luna-send -n 1 palm://com.palm.telephony/programModeEnter '{"msl":"000000"}'



SACAR LA IMAGEN VIRTUAL X86

la imagen de virtual box a raw (en el x86)
$ vditool COPYDD WindowsXP.vdi WindowsXw.raw

o
si es estatica
dd skip=17 bs=512 if=test.vdi of=test-dd.raw





b)Portar webos-arm
Tambien ando haciendo pruebas de cargar una imagen de la version original ,es arm,y jugar con ella en qemu,pues existen varias maquinas con la misma arquitectura (palm pre,ipod touch 3g,iphone 3gs y una libre:beagle board) y seria increible poder cargar este sistema operativo en el ( y no digamos ios3/ios4) al estilo como se hace con los hackintosh (cargar macosx en un pc corriente)


necesitare algo como:
novacom boot mem:// < nova-installer-image-castle.uImage



Una cosa genial de este so es que los programas son independientes de la arquitectura:

The programs for the Pre, with the possible exception of some of the built-in apps, are not running code for the linux kernel and ARM processor. (I think the Pre is using ARM....)
They are written in javascript that is only interacting with WebOS.

WebApps que WebOS permite ofrecer a través de Mojo .Se trata de aplicaciones reales, totalmente capaces, y que sólo en algunos casos concretos necesitarán del apoyo de la programación directa al núcleo.
La solución de WebOS, se plantea como una alternativa real al modelo tradicional de aplicaciones compiladas y exclusivas para una plataforma concreta: presenta muchas ventajas de desarrollo y mantenimiento, y pocos inconvenientes, pero hasta ahora sólo Palm se había atrevido a adentrarse en este modelo. Hasta ahora, ya que Google va a utilizar el mismo modelo.



Lo que quiere decir que muchos programas escritos para webos-arm irian en la version webos-x86 sin tener que compilar codigo fuente.Una gozada




sacar una imagen de un palm pre (webos-arm)

mi idea inicial era usar doctor,el programa que se usa para reinstalar/reparar el palm pre cuando se casca,ya que lleva el rootfs entero,...Despues investigando encontre una utilidad llamada webOS Doctor image en donde viene un makefile interesante de ver como hace las cosas,por ejemplo las particiones las hace trenchcoat..
( git.webos-internals.org tools/meta-doctor.git)

Al final pense que seria mas comodo usar una ya hecha (cargar un sistema minimo con novacom ,al estilo de un bootcd en los pc y hacer la imagen y luego tratar de cargar el kernel y esa imagen en qemu-oemap.
basandome en ese makefile (el añadio la manera de hacer un backup del sistema,cosa que el original no te deja)
nova-cust-image-${CODENAME}-media.tar.gz" ;
nova-cust-image-${CODENAME}-rootfs.tar.gz"
nova-cust-image-${CODENAME}-varfs.tar.gz


Pero yo no las quiero de esa forma,si no una imagen raw
de /dev/mmcblk0 que es donde esta el sistema de ficheros.
(Este tiene tres particiones,pero con hacer la imagen del todo ,las partes pueden usarse luego en pc por separado en caso de necesitarlo.)

/dev/mmcblk0p1
/dev/mmcblk0p2
/dev/mmcblk0p3

para sacar el sistema de ficheros
1)poner modo developer
2)resetear el palm pre
3)conectar usb
4)En el menu puedes darle solo a cargar.

Asi que lo primero le decimos a bottie (el bootloader que se reinicie,este paso creo que podria omitirse ,pero bueno)

novacom -w run file://sbin/tellbootie recover || true

Enviamos la imagen que viene en doctor para que reinicie con ella ,(solo queremos que cargue en ramdisk,no vamos a pedirle ni que reinstale ni haga nada.Lo haremos manualmente)


novacom boot mem:// < nova-installer-image-castle.uImage

Esperar unos 5 segundos


Para probar primero podemos proceder a hacer una de la segunda particion,y ver si la hace correctamente,ya que son 42 megas y sera mas rapido

novacom -w run file://bin/dd if=/dev/mmcblk0p2 > mmcblk0p2

Tambien puedes decirle a dd que lo comprima para que ocupe menos:

"novacom -w run file://bin/dd if=/dev/mmcblk0p2 | gzip > mmcblk0p2.gz"

Para el backup de todo el disco duro:

(Nota,si se hace sin comprimir creara un archivo te ocupara 8 gigas en el disco duro!!)

novacom -w run file://bin/dd if=/dev/mmcblk0 | gzip > mmcblk0.gz

Nos creara un fichero llamado mmcblk0.gz

Otra manera seria usarndo ssh o terminal,pero mas incomoda:
sisdest # nc -lp 2222 | pv | gzip -d -c | dd of=imagen
sisorig # dd if=/dev/sda | gzip | pv | nc -q 0 sisdest 2222


y luego jugar con qemu-omap hasta que cargue,algo asi:

qemu-system-arm -M realview -cpu cortex-a8 -kernel zImag

Ojo ,qemu-omap necesita ser compilado con una determinada version gcc si no no ira.(hacer uno static mejor)

El append es algo asi

root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1
nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000
boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000


*using the nova-installer-image-castle.uImage image bootie

root=/dev/ram0 ramdisk=32768 ro fb=0x8f600000 fbcon=disable console=tty1
nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000
boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000 lastboot=recover





Cosas pendientes:
1)Ver como han escalado la ui (estoy esperado que lo posteen,parece que lo han logrado.yo por mi parte he logrado escalar las app)

en luna.conf cambiar:

ScanCalculatesAppSizes=false



2)el sonido en la version x86
http://forums.precentral.net/webos-apps-software/223899-how-copy-mp3-files-palm-pre-emulator-sdk-translate-music-player-r-french.html

4)traducir alguna app,cuando tenga mas experiencia con el sistema me gustaria dejarlo en mi idioma
http://groups.google.com/group/android-developers/web/localizing-android-apps-draft


OTRAS COSAS CURIOSAS:



OCULTAR APP

Encontre una manera de ocultar app para que no quede tan lleno la ui
APP ocultar otras

como palm hider

http://forums.precentral.net/webos-apps-software/252050-app-request-hide-specific-app-icons-launcher.html
For those comfortable with Receiving and Sending files via WebOS Quick Install you can do this manually.
Applications are located in /usr/palm/applications/
The file you need to modify within each of the application folders is appinfo.json

So, for an example, let's say you want to hide the photos app.
In WebOS Quick Install, with your Pre plugged in, Receive the file /usr/palm/applications/com.palm.app.photos/appinfo.json (save where ever you like on your PC/MAC).
Add a comma to the last entry in the list, then below the last item add the text: "visible": "false"
Include the quotes. Should end up looking like
Code:
{

"title": "Photos",
"type": "web",
"main": "real.html",
"id": "com.palm.app.photos",
"version": "1.0",
"icon": "icon.png",
"splashicon": "icon-256x256.png",
"splashBackground": "images/splash-screenshot-default.png",
"vendor": "Palm, Inc.",
"keywords": ["pictures", "photos"],
"visible": "false"

}
Save the file, then Send it back to the Pre to the same location: /usr/palm/applications/com.palm.app.photos/
Do a Luna Restart.


otras direcciones utiles:




X-win
---------

http://arstechnica.com/open-source/news/2009/02/desktops-on-cell-phones-x-windows-on-android.ars
http://hackaday.com/2009/02/22/x11-on-android/
http://www.precentral.net/x-server-coming-webos-bringing-along-openoffice


Meter una distro debian-arm usando chroot
-------------------------------------------------------------------------
http://www.webos-internals.org/wiki/Debian
mount -o loop /media/internal/debsmall.img /media/cf

mount --bind /dev /media/cf/dev
mount -t devpts none /media/cf/dev/pts
mount -t proc none /media/cf/proc
/usr/sbin/chroot /media/cf #Just that easy!
If you want to share your display (such as to run X11 apps) you'll need to also do:
mount -o bind /tmp /media/cf/tmp
Es parecido a como meten android en iphone/ipod touch.Mi idea inicial era redimensionar
O al ser lvm tendria que ser :


lvresize -L 6G /dev/mapper/store-media

lvcreate -L 2G -n Debian/Android store


pero veo esto mas comodo

http://www.webos-internals.org/wiki/Nintendo


All on freenode IRC.
  • #freesmartphone.org - main channel
  • #openmoko-cdevel - sometimes related discussion
  • #webos-internals - sometimes related discussion

No hay comentarios:

Publicar un comentario