Tag Archives: poky

10 years ago I got write access to OpenEmbedded

It was 8th May of 2004 when I did first push to OpenEmbedded repository. It was BitKeeper at that time but if someone wants to look then commit can be seen in git.

I will not write about my OE history as there are several posts about it on my blog already:

It was nice to be there through all those years to see how it grows. From a tool used by bunch of open source lovers who wanted to build stuff for own toys/devices, to a tool used by more and more companies. First ones like OpenedHand, Vernier. Then SoC vendors started to appear: Atmel, Texas Instruments and more. New architectures were added. New rewrites, updates (tons of those).

Speaking of updates… According to statistics from Ohloh.net I am still in top 5 contributors in OpenEmbedded and Yocto project ;)

There were commercial devices on a market with OpenEmbedded derived distributions running on them. I wonder how many Palm Pre users knew that they can build extra packages with OE. And that work was not lost — LG Electronics uses WebOS on their current TV sets and switched whole development team to use OpenEmbedded.

Since 2006 we got annual meetings and this year we have two of them: European as usual and North America one for first time (there was one few years ago during ELC but I do not remember was it official).

There is OpenEmbedded e.V. which is non-profit organization to take care of OE finances and infrastructure. I was one step from being one of its founders but birth of my daughter was more important ;)

And of course there is the Yocto project. Born from OpenedHand’s Poky helped to bring order into OpenEmbedded. Layers (which were discussed since 2006 at least) were created and enforced so recipes are better organized than it was before. It also helped with visibility. Note that when I write OpenEmbedded I mean OpenEmbedded and Yocto project as they are connected.

I remember days when Montavista was seen as kind of competitor (“kind of” because they were big and expensive while we were just a bunch of guys). Then they moved to OpenEmbedded and dropped own tools. Other company with such switch was Denx. 3 years ago they released ELDK 5.0 which was OE based and made several releases since then.

What future will bring? No idea but it will be bright. And I will still be somewhere nearby.

It is 10 years of Linux on ARM for me

It was somewhere between 7th and 11th February 2004 when I got package with my first Linux/ARM device. It was Sharp Zaurus SL-5500 (also named “collie”) and all started…

At that time I had Palm M105 (still own) and Sony CLIE SJ30 (both running PalmOS/m68k) but wanted hackable device. But I did not have idea what this device will do with my life.

Took me about three years to get to the point where I could abandon my daily work as PHP programmer and move to a bit risky business of embedded Linux consulting. But it was worth it. Not only from financial perspective (I paid more tax in first year then earned in previous) but also from my development. I met a lot of great hackers, people with knowledge which I did not have and I worked hard to be a part of that group.

I was a developer in multiple distributions: OpenZaurus, Poky Linux, Ångström, Debian, Maemo, Ubuntu. My patches landed also in many other embedded and “normal” ones. I patched uncountable amount of software packages to get them built and working. Sure, not all of those changes were sent upstream, some were just ugly hacks but this started to change one day.

Worked as distribution leader in OpenZaurus. My duties (still in free time only) were user support, maintaining repositories and images. I organized testing of pre-release images with over one hundred users — we had all supported devices covered. There was “updates” repository where we provided security fixes, kernel updates and other improvements. I also officially ended development of this distribution when we merged into Ångström.

I worked as one of main developers of Poky Linux which later became Yocto Linux. Learnt about build automation, QA control, build-after-commit workflow and many other things. During my work with OpenedHand I also spent some time on learning differences between British and American versions of English.

Worked with some companies based in USA. This allowed me to learn how to organize teamwork with people from quite far timezones (Vernier was based in Portland so 9 hours difference). It was useful then and still is as most of Red Hat ARM team is US based.

I remember moments when I had to explain what I am doing at work to some people (including my mom). For last 1.5 year I used to say “building software for computers which do not exist” but this is slowly changing as AArch64 hardware exists but is not on a mass market yet.

Now I got to a point when I am recognized at conferences by some random people when at FOSDEM 2007 I knew just few guys from OpenEmbedded (but connected many faces with names/nicknames there).

Played with more hardware then wanted. I still have some devices which I never booted (FRI2 for example). There are boards/devices which I would like to get rid of but most of them is so outdated that may go to electronic trash only.

But if I would have an option to move back that 10 years and think again about buying Sharp Zaurus SL-5500 I would not change it as it was one of the best things I did.

My own company started 8th year today

Seven years ago I created my one person company. And it was one of best things I did in my life.

All started in 2006 when I started doing some small paid jobs around OpenEmbedded. Small things: solving build problems, updating recipes, adding new ones. But companies prefer to get invoice for such stuff instead of just giving money…

So one day I went to city hall and created what was then called “HaeRWu Marcin Juszkiewicz”. I changed name 2 years later and got rid of that ‘impossible to pronouce’ part.

There were many different clients for my consulting work. CELF was my first one, later I dropped my daily work and started remote work for OpenedHand. When they were acquired by Intel I got quite nice offer but preferred not to move to UK so went own way. From time perspective I do not know was it right decision ;)

So I looked at market around OpenEmbedded and started working with Bug Labs and few smaller jobs for other clients (some knew me from OpenedHand times). Also had job proposal from Canonical for their newly created ARM team but nothing came from it.

Time passed. One and half-year later Canonical made another attempt and this time I though “why not?”. So I went there just to be moved outside to a team which did not have any official name (other than NewCo or New Core which you may heard somewhere). And that team became Linaro some days later.

At Linaro I did lot of cleanup in Debian/Ubuntu toolchain components, added bootstrapable cross toolchain and fixed several packages (also created some new ones). But then, just when I was supposed to move to Canonical, new things came and AArch64 took my whole time.

ARMv8 work was great time. Learnt new things about OpenEmbedded, saw how project moved during those two years when I did not follow it’s development. Och it was good time.

But good things have to end one day. And so did my time at Linaro. But at around same time I started talking with several companies around Linaro to find a new place for me.

And I found it at Red Hat. Took a bit of time to get everything set up but I think that it was worth it. But due to the fact that I am employee not contractor I will suspend and in few months shutdown my consulting company.

It served me well. I came from being person not recognizable to someone who is known by people who I see for first time. It is good feeling ;)

Nine years of embedded Linux

Nine years ago I bought Sharp Zaurus SL-5500 as my first Linux PDA. And due to this I am where I am.

I could say that it started two years earlier when I saw PalmOS devices at local geek meetings. But it took me over year before Palm m105… Then was Sony Clie SJ30 — gorgeous device. High resolution, memory card, 16bit colour. Too bad that applications did not make use of it.

So I went for Linux. There were two options: Zaurus or iPaq. Went for former one as it had keyboard. It was good choice.

Quickly started development of packages and joined OpenEmbedded team. Then became one of OpenZaurus developers. After year or something took over release maintenance and released few last versions. 3.5.4(.1) were the best tested releases of OZ ever — I had over hundred testers for each RC image and they provided installation reports, bug reports and fixes. And it had unified installer for whole range of devices (took me several months to get it polished and few guys added own tweaks). When Ångström distribution started I was the one who officially ended OpenZaurus development.

And all that was in free time. But in mean time I created my consulting company. CELF was my first customer ;)

One nice evening I got question on irc and due to that I left dark side of IT and went from PHP programming to embedded Linux full-time. OpenedHand had interesting projects and clients with many devices. Imagine operating system + kernel + Python + GStreamer in 16 megabytes of flash… And I managed to get it done. While working for them I used proper developer boards (not only customer devices) and there were funny moments…

When we worked with ST Microelectronics on NDK-15 (later replaced by NHK-15 from ST Ericsson) I had to merge two kernel trees from two separate teams. Took me 2 days of mangling 20-30MB diffs but got it done. There are people at ST-E which reminded me this during one of Linaro Connects ;D

Also on GUADEC 2007 when we presented new interface for Openmoko phones NDK-15 had to wait for me as no one at stand was able to get it running (U-Boot config needed changes).

But then Intel acquired OpenedHand… The craziest trip of my life was return from London to my parents place. For three months I even had @linux.intel.com email but never used it due to problems with Intel corporate network and Linux (do not ask).

Next was Bug Labs and their BUG device. I cleaned their Poky trees, migrated to latest version and later to use OpenEmbedded directly. Less challenges but I also had few other customers at that time to keep me busy. Some of them were OH customers before and went to me for help.

Time passed, 2010 came. One day Canonical made another attempt to seduce me and this time I decided that it looks like good opportunity so I accepted. Sent BUG 2.0 prototype back to NYC and few weeks later I made crazy train trip to small nowhere near Brussels to meet my new coworkers from NewCore. 1-2 weeks later we got our current name: Linaro.

Total change… From embedded devices to ‘Yes, it is ARM. So what?’ kind as we support(ed) devices powerful enough to run normal desktop software. Many changes for me — from OpenEmbedded where you can (cross) build everything in few hours to Ubuntu packaging where sending package for inclusion into archive meant few hours of buildd queue and then few of build. But I learnt a lot here and met another set of hackers including grey beards ones ;)

And all that because I bought Sharp Zaurus SL-5500 nine years ago…

UDS-M continues

Today is a last day of Ubuntu Developers Summit. I plan to attend few sessions, on evening maybe go to Brussels for some shopping (UDS is in a middle of nowhere) and tomorrow I hope to fly home.

So far I attended several sessions, some were too Ubuntu specific for me to get idea what it is about (PPA or other Launchpad related services for example) but in general time is not wasted.

Monday

Missed keynote ;( I blame Belgium train company for it. But I fetched it from YouTube so will watch it during return travel. Then Ubuntu on ARM project had private meeting where we had a chance to connect faces to names and got some short introduction. That was all for me — after lunch^Wbreakfast I got to sleep. During dinner time I met some fellows from old time: Rob Taylor, Neil Patel, Peter Goodall and spoke with several other guys.

Tuesday

ARM talk about toolchain was great. GCC 4.5 is what we want for our project I think. There was also warning that switching to 4.6 version will probably require transition process. Then I was on AEL/ALIP talk — should attend SoC:Dove talk instead. Session about building root filesystem images was started by me and then lead by Luïc. There was some good ideas told, many tools were mentioned so I will have something to do in near time. Another talk about toolchain and then Device Tree overview — what it is and why we want it.

Wednesday

Another sessions related to development tools for attending, one about U-Boot features and performance and three about building ARM archives. Kiko’s introduction to ARM was interesting presentation.

Day finished in Waterloo where we had a dinner with ARM Ltd. people. Nice chats with good food and wine.

Thursday

Attended memory footprint talk, next was kernel version alignment where people from ARM vendors gave us informations about their work on getting support for products in mainline kernel. Looks like 2.6.35 will be used in Maverick release.

Later was marketing talk about Freescale i.mx51/53/508 cpu family plus mentioning of Cortex-A9 based i.mx61/63 chips which will be released next year. Rob Herring mentioned that there may be BeagleBoard like device with i.mx53 processor available.

Zack from Debian told about cooperation between Debian and Ubuntu developers from Debian perspective. It was nice talk. Next was about plumbering and explained how HAL got removed, how other components changed in base of base system. Looks like upstart developers know what they do and where they are going.

As a way to get something different I went to QA session about tracking performance on different architectures. Mostly it was about Phoronix test suite and how it can be adapted for ARM. Then went to cross compiler packages which was nice session.

Last session was SoC: OMAP3/4 talk made by Texas Instruments people. They had Blaze with them, shown Ubuntu Lucid on it and then booted to Poky Linux to show OpenGL/ES and video decoding capabilities. Playing 6 video streams on rotating cube was nice. Playing 1080p videos without any visible frame drops was another nice stuff. And there will be OMAP4 based PandaBoard developer board similar to BeagleBoard line. When it arrive was not announced.

After that I went to Brussels with TI people for some food and beer. Discussed on many things, I shared my suggestion on how to make PandaBoard really nice, we did few beers. It was good spent time.

Friday

First got to rootless building of root filesystem images, then was ‘mukluk’ soft bootloader which is yet-another-kexec-based-bootloader. A bit of NIH syndrome but can grow into something interesting and kexecboot got mentioned few times.

Some OpenEmbedded/Poky tricks

During use of OpenEmbedded and Poky build systems I learnt few tricks which I want to start sharing.

Installing l10n packages for all software in resulting rootfs

This one is rarely used — I know one company which makes use of it. How does it works? It is called after root filesystem is populated with packages and goes one by one and install “-locale-LANG” for each required language. As you may expect it makes whole process much, much longer. Activation is easy:

ROOTFS_POSTINSTALL_COMMAND += "install_all_locales; "

Code is available only for building from IPKG packages and is stored in rootfs_ipk.bbclass file. So far that code is present only in Poky Linux.

Building AUTOREV packages over slow link

How many times you had a situation when you did a build and many components used SRCREV="${AUTOREV}" setting? Parsing can take eons then…

But there is a solution. It will cache values of all SRCREV variables so just one parse will be long — next one use cached values. Of course you lose automatic revisions but instead you have fast parsing time which is blessing when most of your work is fixing build problems. Activation is easy:

BB_SRCREV_POLICY = "cache"

Save disc space by not generating GIT tarballs in DL_DIR

How many of you readers share your DL_DIR (directory where OE stores all fetched sources) with others? For those who answered “not me” there is a way to gain some space by not generating tarballs with GIT repositories.

By default BitBake clones GIT tree and checkouts it. Then 2 archives are generated: one with just “.git” directory and second with sources — the one which is used in do_unpack task. So why waste space for storing first one? We have it somewhere in DL_DIR/git/ for next time… Activation is easy:

BB_GENERATE_MIRROR_TARBALLS = "0"

More tricks in next posts.

Poky Linux 3.1.2 released

Yesterday Richard Purdie released maintenance version of Poky ‘pinky’ branch. It contains mostly fixes to get it into buildable state in all distributions released since 3.1.1 was done.

It got over 50 changes during 1.5 year of development. Most of them were done by me as part of my work for Bug Labs company and their BUG Linux distribution. As policy of handling fixes requires to make them also in development branch it was more then just make a fix for ‘pinky’ — I also had to take care of ‘elroy’ (which had to be next stable version) and ‘master’. Some time ago support for ‘elroy’ was dropped anyway.

If you look at ‘git log’ output you will notice few authors other then just me. Thats because if fix was present in other sources such like Poky ‘master’ or OpenEmbedded I cherrypicked it and adapted to make it apply with keeping original author credits.

Did I add something new into it? Yes, few things were added:

  • SPLASH support in task-poky so you can use own bootsplash tool instead of psplash
  • warning for ‘/proc/sys/vm/mmap_min_addr’ not being set to 0 (which would break qemu)
  • Python 2.6 compatibility
  • BP/BPN variables which were used in Jalimo repository which we use as one of overlays
  • automatic resizing of ext2/3 images if rootfs do not fit in default size

What will future bring? I hope that new stable branch for Poky will be created in next few months so developers will be able to switch. I know that some companies did a move from ‘pinky’ to ‘master’ (or snapshot of it + own changes). We at Bug Labs are moving into OpenEmbedded ‘stable/2009′ as we need newer software and want some functionality which is not present in ‘pinky’.