[maemo-developers] How VNCVIEWER can bring non maemo applications onto the N800

From: Neil Jerram neil at ossau.uklinux.net
Date: Tue Feb 20 23:44:04 EET 2007
Detlef Schmicker <d.schmicker at physik.de> writes:

> Hello,
> the last weeks I played around a little with setups, which allow to run
> applications on N800, which are not ported to maemo. The main problem
> using this kind of applications is the missing keyboard, if they are
> cross compiled. 

In penguinbait's experiments, I believe he uses xkbd to solve this.
Presumably that would work with your approach too?

> vncviewer (http://vncviewer.garage.maemo.org/ ) can handle this, as
> easily is tested connecting to a debian linux machine and trying all the
> applications availible.

Oh I see, that is clever!  (I guess xkbd is still possible, but the
vncviewer keyboard is much more convenient.)

> Have a look at the screen shot at http://physik.de/770/ with debian /
> testing runnin on a N800 within chroot and vncviewer.

Very nice!  To check that I've understood correctly:

- Are you saying that everything from the debian/testing arm port will
  run without needing recompilation?

- Am I right in thinking that the chroot is only needed so as not to
  mix up the debian/testing distribution with the maemo?  (In other
  words, it's not required by something about how Xvnc and vncviewer

> I tried three different setups (all are working, but none is enduser
> ready:-)
> 1.) I compiled Xvnc using the source from debian/testing within bora.
> This was running on N800. Than I started Xvnc for display :8 (from
> xterm) set the display variable and started the crosscompiled but
> unported version of e.g. rdesktop. Than vncviewer was started to view
> this localaly.

How does a bora-compiled Xvnc differ from Xvnc in debian/testing?  Is
it just which libraries (libc etc.) it links to?

> This way one can use cross compiled version of linux software.
> 2.) I installed the debian armel port within a chroot environment,
> installed the vncserver package within this port and did basicaly the
> same as in 1.)
> what to be done for setup this:
> I have debian / armel port running on N800 on a 512 internal flash.
> I had to format it with ext3 filesystem (I think ext2 would have been
> OK)
> I had to insmod mbcache and ext2 module
> I mounted it
> I unpacked the rootfs from
> http://lists.debian.org/debian-arm/2007/01/msg00034.html
> I installed chroot and chrooted to the directory
> (I installed a new version of tar (compiled from sources), as the
> busybox does not support bz2 files)
> Now I do a gpt-get update within chroot ...
> This way all packages within this debian armel port seem to be usable on
> the N800

Cool.  So, comparing (1) and (2), one basically has a choice between
cross-compiling and chrooting - right?

> 3.)
> I did basically the same but with debian / testing for the arm platform.
> I compiled debootstrap for maemo, used it to install debian / sarge into
> a chroot environment. Than I configured /etc/apt/sources.list to use
> debian testing within the chroot. Did a apt-get update and apt-get
> dist-upgrade (if I remember correctly I had to remove apt-get first and
> install the version from debian / stable download dpkg -i), installed
> vncserver and icewm (window manager) and two init scripts:
> /root/init.sh with on N800 to start the chroot environment
> #!/bin/sh
> insmod /mnt/initfs/lib/modules/2.6.18-omap1/mbcache.ko
> insmod /mnt/initfs/lib/modules/2.6.18-omap1/ext2.ko
> mount /dev/mmcblk0p1 /media/mmc2
> chroot /media/mmc2/sid-arm /root/init.sh

As you say, this seems effectively identical to (2).

> and within the chroot environment there was

So this is /root/init.sh, is it?

> #!/bin/sh
> Xvnc -depth 16 -geometry 800x600 :8&
> export DISPLAY=:8
> icewm&
> mount proc /proc -t proc
> mount devpts /dev/pts -t devpts
> xsetroot -solid "rgb:00/00/30"
> /bin/bash
> And up was the debian testing on the N800.

Well I've already said it, but I'll say it again: very nice!

And in my view this is a nicer solution than penguinbait's, because it
means you can have maemo and non-maemo sessions (actually, any number
of them!) up simultaneously, and switch at will between them.

(Does VNC Viewer already allow multiple instances of itself?)

> Thus anybody discussing, helping ... to get (I would love the debian /
> testing) setup enduser ready? A 300 MByte root fs I do not want to
> deliver, which would be the easiest way :-)

Is 300Mb the size of the minimal debian/testing system (that includes
chroot and Xvnc)?  I would hope that a minimal system could be smaller
than that.

Once people have the minimal system installed, they can apt-get
install anything else they want, so it will be OK to trim the starting
package really down to the absolute minimum.

> Or getting the first setup developer ready, so that they may easily
> crosscompile an launch application they love. How to pack this for maemo
> (dependence an vncviewer and Xvnc server (not x11vnc as in 2006
> application list :-)

In my view this option is not so interesting, because apt-get install
is a lot more fun than cross-compilation.


More information about the maemo-developers mailing list