Self hosted Ångström build

During weekend I was working on getting self hosted build of OpenEmbedded.

I built Ångström-2007.1 for progear and chrooted into resulting image. Then installed some packages, copied OE metadata, archives for SRC_URI and did bitbake nano build.

Some packages was needed to be installed — I added them into new task named task-self-hosting which should contain everything needed to get self hosted build running.

But there were some problems:

  1. rpcgen from glibc-utils require cpp

    This can be solved by adding RDEPENDS_glibc-utils = "cpp" into glibc.bb recipe. But this is theory because we need glibc to build gcc so dependency chain is result.

  2. glibc-dev ‘conflict’ libc-linux-headers-dev

    Few headers exists in both packages — I do not know which one are more important. In my build I forced glibc-dev ones.

  3. binutils-symlinks ‘conflict’ busybox (and elfutils)

    This is reported already in OpenEmbedded bugtracker.

  4. subversion has problems with building — I need to check do I have some not-yet-committed patches for apr(-util) and subversion.

  5. Perl is too granulated — I installed all 861 perl packages to get quilt-native happy instead of checking which are needed.

But the best thing is that whole process can be done. This shows that OpenEmbedded based distributions are able to build them self using software from feeds.

Flashing Progear BIOS

Today I checked how to flash BIOS on Progear HX1050 webpad. Basically there are two ways:

  • using psplash.exe under DOS
  • using fpFlashBIOS under GNU/Linux

I do not know does they were provided with default installations.

Flashing under GNU/Linux (Debian ‘testing’ in my case) is simple:

sync
./fpFlashBIOS -w:pb_10404.rom

Application will write some flash block (and verify). Then reboot to check does everything is OK — due to fact, that flashing clear BIOS settings external USB keyboard is recommended. Pressing F2 during bootup (when white screen is shown) will enter Setup.

Beware: unbricking can be hard — flash chips are soldered…

Job change

Yesterday I got job offer from one company. They want me to work for them in full time during next months. The best thing is that this job is OpenEmbedded related so I will do what I like to do and will be paid for it.

I accepted offer (who will not 🙂 and today discussed with my current boss about leaving. So from February 2007 I will be free man — only own company work. In other words — starting from Feb 2007 I will get busy on OE rather then on making websites (my current job).

How to use task-base

In OpenEmbedded we had long discussions how to get minimal images few times, there were developers which worked on getting smallest possible working ones — one of them was Matthias Hentges which essential-to-boot image was 3.5M jffs2 and had everything needed to use WiFi on Sharp Zaurus SL-C1000 (akita).

Finally Richard Purdie added task-base into OpenEmbedded repository as new idea to generate rootfs images. First version was far from perfect but show a way. We improved it a lot since then so now it support:

  • Linux 2.4/2.6
  • power management systems: APM, ACPI
  • wireless connectivity: Bluetooth, Wifi, Irda
  • USB host and gadget (gadget only under 2.6 because 2.4 lack any)
  • keyboards
  • touchscreens
  • screen in machines which have them
  • PCI, PCMCIA/CF bus
  • internal storage for models with microdrives or hard disks (‘ext2’ feature)
  • NFS for nfsroot installations
  • IPSec

Any new features are easy to add.

Why switch from task-bootstrap to task-base is required now for all target devices and distributions? Reason is simple — this allow much better integration of them and leverage possibility of forgetting something. For example in past one of our distributions supported WPA ‘out of box’ but there were problems with some methods of encryption — it was fixed by update with few extra kernel modules added. Now imagine that you have to change this thing for all distributions and have to check which of them support wireless with WPA capable drivers — nightmare… Instead of it you change task-base recipe and every distro will get this update for free.

Another bonus which distro/machine maintainers get with task-base is simplify of configurations. There is no need to specify all tools again and again, thinking which parts of rootfs should be specified in machine config and which in distribution one. Instead of it only features of target and distro has to be defined and task-base will handle rest of it.

Example

Few months ago I was working on creating new distribution called celinux-test for CELF. Main target of it was omap5912osk developer board. I decided to use task-base from beginning.

Cleaning machine and distro config

omap5912osk.conf was long because this board has modular kernel so lot of modules need to be present in rootfs. I started from definition of MACHINE_FEATURES and switch to task-base:

MACHINE_FEATURES = "kernel26 pcmcia usbhost"
MACHINE_TASK_PROVIDER = "task-base"

Then I build bootstrap-image and compared amount of packages installed with a list from older rootfs. Some tools were lacking so I checked them and added proper features to celinux-test distribution config:

DISTRO_FEATURES = "nfs pcmcia usbhost"

Rebuild of task-base and bootstrap-image gave me rootfs which contained nearly same set of packages as old image. New one got some additional pcmcia modules, usbutils but every needed utils present in older images were present.

Extra stuff

Cleaning of configs allow to remove all BOOTSTRAP_* variables. But how to add some packages into rootfs without them? There is solution — MACHINE_EXTRA_RDEPENDS/MACHINE_EXTRA_RRECOMMENDS and same for distros: DISTRO_EXTRA_RDEPENDS/DISTRO_EXTRA_RRECOMMENDS. Everything from them will get added into task-base dependencies.

Snow – where are you?

Today is 7th day of December so in theory we have winter now.Which should mean snow, below 0°C temperatures etc. But instead of nice winter weather we have rain, 11°C during day and no sign of snow even during night, event in place where my parents live (coldest part of Poland). It is time to end this autumn and start REAL winter.

I miss winter with snow, low temperatures…

Casino Royale

Half an hour ago I came back from cinema where I was watching newest Bond movie: “Casino Royale”. There was many posts about this movie so I will not write what it is about but rather what I liked or not.

One of good things was lowering amount of gadgets — previous movies had too many of them, and without Q it is not the same. There was of course car with gadgets but it appeared in few scenes only. I liked how they made Sony Ericsson cellphones — they were similar to normal ones but bumped graphics resolution and functionality. Sony paid a lot for their product placement — Sony Vaio laptop was used in most of scenes where laptops were shown.

Real action scenes existed and were nice made (maybe that sinking house in Venice was a bit not in place). Funny one the one when Bond order vodka with martini and after question ‘shaked or mixed’ he told that he does not care. Famous ‘I am Bond, James Bond’ is only once — at the end of movie, which is something new 😉

What I did not like was romantic part — there was too much romantic — more then in other Bond movies. All those ‘I will quit this job for you’ talks were not in his style. Other thing was mixing past with now — it was first (chronologically) Bond movie but the action was placed after 2001 (many times with reminding 9/11).

Overall: yet another good action movie. It was worth going to cinema to see it.