Course Objectives

The aim of this 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 from? What about licenses? Hands-on exercises provide you with the necessary practical experience to go ahead and configure/build an embedded GNU/Linux system with mainline components.


This 3-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 Yocto, on a Beagle-Bone Black Rev.C. 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 aboveand programming

Who should attend?

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
  • Spelunking
  • The Unix Philosophy
  • What is an embedded system?
  • What is a real-time operating system

Embedded Specifics

  • What’s an Embedded System?
  • Embedded vs. Desktop Linux
  • Portability
  • Build for your Target
  • Toolchains
  • C-libraries

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

  • Install toolchain
  • 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 Yocto


  • Add network support to board
    • U-boot scripting
    • Network support in U-boot
    • Custom kernel with network support
  • Rootfs from nfs
    • Nfs server setup/configuration
  • Init
    • Sys-V
    • Upstart
    • Initng
    • Systemd
  • Bootgraph
  • Bootchart

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


  • What is a bug?
  • What is debugging?
  • 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


All fields with an asterisk (*) are required.

From *) 
Subject *) 
I am interested in   Embedded GNU/Linux Systems Architecture  
one or more   Embedded GNU/Linux Kernel Internals and Device Drivers  
of these items   The Yocto Project - An Overview  
   Introduction to Embedded Linux in Theory and Practice - a Crash Course  
   (Embedded) Linux Debugging  
   FreeRTOS in Theory and Practice  
   Custom Training  
Delivery Options   on-site  
Number of trainees *) 
Name *) 
Website *) 
Timezone *) 
Street Address 
Address Line 2 
Postal / Zip Code 
State / Province / Region 
Country / Region 
Questions or comments? 
Please enter the following wrbifvpq Help us prevent SPAM!