In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2011 day two: Sunday.
Reason for attending this talk: to understand more of the technical details behind fast boot of Linux devices, which will be an important factor in the success of mobile linux.
The subtitle of this talk was “Booting Linux Fast and Fancy”, and the speaker focussed first on how to make linux boot quickly and then provided tips for making the boot look good. There were approximately 100 people present for this early morning session.
Why worry about boot? The evolution of phones to include linux means boot user experience becomes more important. Industrial devices don’t look like computers and shouldn’t boot slowly. Automotive devices have fast-boot requirements – they must be answering CAN messages in less than 200ms after power-on.
History of the project:
- 2007 – barebox project – forked from u-boot as a technology study under ‘u-boot-v2′ name.
- 2009 – first release, renamed barebox, hosted on own infrastructure
- 2011 – 24 releases to date, timed releases 1 per month + maintenance releases on demand.
- commit history – missed it! slide went by too quick.
The project supports a range of CPU architectures – arm (at91, ep93, i.MX, netX, nomadik, omap, s3c24xx), m68k, ppc, sandbox, x86 bios based, etc.
- build: kconfig, kbuild
- boot media: linux16, nand, ubi, sd
- data: dfu, kermit, z/y/zmodem, tftp
- gfx: framebuffer, splash screen
- filesystem: cd, ls, cp, saveenv/loadenv, mount, partitions
- tools: crc, edit, gpio, unizo
- user interaction: login, menu (for simple text-based menus)
- drivers: i2c, mfd, flash, serial, spi, usb host+device
- modules: insmod, lsmod
- memory: meminfo, memtest, md, mw
- network: ipv4, dhcp, netconsole, tftp, rarp, ping, nfs, dns
Configuration done just by assigning variables e.g. eth0=18.104.22.168.
Booting linux fast:
- power controller releases reset line: optimize hardware (electronics)
- ROM bootloader starts running: select cpus optimized for fastboot eg mx25
- fetch boot blok from nand/sd: done by firmware, usually can’t be tuned
- execute first boot code: first place can do something in sw
- initialize hardware: only what’s necessary, tune clocks & timings
- fetch linux kernel from nand/sd: async read and decompression tricks eg prepare kernel image in blocks of certain size, while decompressing block, instruct device to send next block.
- execute linux
- extract compressed image: depending on hw, use uncompressed image or zImage
- kernel boots, initialize hardware: minimized kernel, all tricks from elinux.org wiki
- /sbin/init: depending on use case, use initramfs or real rootfs (slower)
Example: 336ms from bootloader to init on freescale mx35, 532mhz. On beagleboard this is usually 800ms.
Booting linux fancy:
- initialise hardware: backlight off load splash show splash backlight on (to avoid flicker)
- kernel boots, initializes hardware: make sure framebuffer has fixed address between bootloader and kernel – no re-init! (stops splash disappearing)linux driver looks at what is initialized, and doesn’t reinitialize.
- sbin/init: cross fading with overlay
Fast, but not the 200ms limit for automotive.
BTCS: Boot Time Critical Services (originally inspired by freescale, now implmented with mainline focus).
Idea: set aside some memory, register a poller in barebox, make sure memory is handed over to linux, poller ends up as a normal interupt service routine in linux.Interupt service routine runs during bootloader. compromise – can’t use much infrastructure from isr. possible to run commercial stacks for ECU.
CAN is ready after about < 100ms. Downside: it is a bare metal stack.
Key takeaways: it is possible with attention to detail to create extremely fast booting devices. This would be of significant value in a mobile linux stack.
Reason for attending this talk: Linaro could form an important base for a mobile linux platform.
Approximately 300 people attended this talk. The speaker began by outlining the rationale for Linaro’s creation: ARM-embedded is too hard, and there are 4 key problems:
- under-investment in the open source that makes up linux platform
- distribution fragmentation: different tools/versions, different graphics and multimedia plumbing, kernel forking and versions
- SoC fragmentation, different SoC vendors with different approaches eg kernel, power management, graphics and multimedia
- not enough optimization, features in processors not being used
How is Linaro fixing this? engineering, engineering, engineering!
In the above graph:
- blue: Canonical
- red: ARM
- yellow: codesource?
- green: IBM
- pink: TI
They recrutied engineers from all member companies and hiring their own people to work on Linaro.
Linaro engineering : working groups, taking opensource upstream and improving, releasing own branches with new features (will go upstream but maybe not there yet)
landing teams only area with privacy (future products/hardware)
platform engineering: mix all together. important to have reference images prove it works and test/validate work of other groups.
two types of cycle:
- 6 months design – implement – deliver features
- subprojects on monthly releases
10.11 technical highlights
- took member bsps and wrote summary of what was wrong
- combination of distributions and SoCs .
- release hardware packs as set of enablement files
- at end of cycle toolchain widely adopted
- too high level, goals too abstract
- ramping up engineers to 90 was time-consuming
2011 plans: build of linaro-enhanced key distributions on member SoCs
- chrome os
Building a test and validation framework for member SoC hardware.
Approx 200 attending. Speakers are kde developers – kdepim, plasma, libgcal, gallium,…
kinetic scrolling – as made famous in 2007 by iphone. but prior art discussed in 1982 bill buxton two-handed input in HCI, canola 2007
Qt flickable 2008 “oh my god QML’s so wonderful!” in fact a really really neat way to do things. You can do it in C++ but use QML, it’s easier.
- ariya’s flickable 2008
- toyflick 2009
- plasma scrollwidget 2009
- imtk imtkkinecticlistview 2010
- qml flickable 2010
Meego UI without libmeegotouch? issues with libmeegotouch – can’t run on symbian (uses GTK), so cheat
pure blood qt runs everywhere – nokia n580, n97, n900.