Introduction to Embedded Linux - a short Crash Course

Introduction to Embedded Linux - a short Crash Course

Course Objectives

The aim of this short crash course is to provide a basic overview of embedded GNU/Linux. What are the components needed to build an embedded GNU/Linux system where to get them from and how to configure/build/install them? Where to get help? What about licenses? Compared to other trainings offered here the time spend with hands-on will be limited in order to meet the one day goal. You will be provided with handouts and exercises so you can can go through them at your own pace at home in order to be able to go ahead and configure/build an embedded GNU/Linux system with mainline components. After this one day overview you might even want to book one of the more in-depth trainings which can be offered on-site and on-line as well. Feel free to ask for a quote.


This one day training class uses hands-on exercises combined with instruction to illustrate some basic concepts of Embedded GNU/Linux. Hands on sessions are performed with a toolchain from the the freely available Yocto Project, on a Beagle Bone Black. This enables you to take the course material home and work with it. The whole workshop is designed to bring you quickly up to speed. The concepts and commands necessary to make effective use of Embedded GNU/Linux are described through a combination of theory and on-the-job training. Don’t reinvent the wheel, but learn from an experienced trainer and take home a working knowledge of Embedded GNU/Linux and the ability to use it effectively in your own embedded development project.


  • Basic knowledge of how to use Linux (Ubuntu)
  • Familiarity with embedded C concepts and programming
  • Ability to develop software using C syntax
  • Basic knowledge of embedded processor development boards
  • ... or no fear to learn the above ...

Who should attend?

Managers, project managers, software-, hardware-, development- and systems engineers, technicians and those interested in technology who want to try to understand as quickly as possible how Embedded GNU/Linux works. You have to use GNU/Linux, or have the luxury to decide whether it makes sense to use it or not. You may already use Embedded GNU/Linux, but you are not quite sure if you do everything right. You currently use another operating system and want to find out whether Linux would maybe be more cost effective...

Course Outline


  • What is GNU/Linux?
  • Licensing
  • Standards
  • Working with free software
  • The Unix Philosophy

Stuff needed (part 1)

  • Toolchain
  • nfs server
  • tftp server

Eval board

  • What is the Beagle?
  • Booting
  • Booting the Beagle
  • Partition/Format SD card
  • Populate partitions with given boot-loader, kernel, rootfs
  • Configure serial console
  • Board booting Linux 

Stuff needed (part 2)

  • U-boot
    • What is U-boot?
    • What does it do?
    • Fancy Stuff
    • Get/configure/build install
  • Flat device tree
    • What is a flat device tree?
  • Linux kernel
    • What is uImage?
    • Get/configure/build install
    • Kernel modules
  • Rootfs
    • Use rootfs from the Yocto Project

Kernel Modules

  • Hello Kernel, module-init-tools, Kconfig, Kbuild
  • out of tree, in tree

Device Drivers

  • Device Nodes
  • Registration, Initialization, Open, Release,...
  • Miscellaneous Character Drivers


  • Simple debugging tools
    • lsof, ltrace, strace, proc, top, netstat, syslog
  • Advanced debugging tools
    • What’s a debugger?
    • gdb
      • target gdb
      • gdbserver
      • kgdb/kdb + agent-proxy
      • JTAG
  • What is profiling?
  • What is tracing?
  • Profiling tools
    • time, gprof, gcov, oprofile
  • Tracing tools
    • ftrace, kernelshark, LTTng
  • Misc. tools
    • top, latencytop, powertop, powerdebug, crash, systemtap

Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.