← Formations
OS / LINUX
Embedded Linux
🎯 Learning Objectives
This course trains participants in the complete construction of an embedded Linux system: from cross-compilation to image generation with Yocto and Buildroot, including U-Boot bootloader configuration, device tree writing, kernel module development, and the implementation of a working rootfs. Upon completion of the training, participants will be able to port Linux to a custom board and deliver a complete BSP.
📋 Prerequisites and related courses
Prerequisites
Fundamentals of C programming (pointers, structures, memory allocation). Regular use of Linux command line (shell, permissions, editor). Equivalent to OpCode Labs' Linux Embedded Level 1 course or similar experience.
🛠 Practical environment
🔧 Hardware Platforms
• STM32MP1 Discovery Kit
• Raspberry Pi 4 (optional)
• BeagleBone Black (optional)
• UART debug cable + Ethernet cables
💻 IDE & Toolchain
• GCC ARM cross-toolchain
• Yocto Project / Buildroot
• GDB remote debugging
• Serial console (minicom/picocom)
🔬 Analysis Tools
• Logic analyzer
• Oscilloscope
• strace / ltrace / ftrace
✅ What you will actually do
• Build a complete Linux image with Yocto
• Write a custom device tree for your board
• Develop and load a kernel module
• Configure U-Boot and the boot sequence
• Cross-compile and debug a userspace application
📍 Format & Certification
📍 Location & Format
In-person in Tunis or online (remote with access to a remote lab). Groups of 6–12 participants. Duration: 5 consecutive days or 10 evenings.
🎓 Certificate of Completion
An OpCode Labs certificate of completion will be issued at the end of the training, validating the skills acquired in embedded Linux.
Detailed program
Cross-compilation
Setting up the toolchain, sysroot, difference between target and host, compiling an application for ARM.
Buildroot
Menuconfig configuration, adding packages, customizing the rootfs, generating full images.
Yocto Project
Layered architecture, recipe writing, custom image creation, SDK generation, in-depth bitbake.
Device Tree
DTS syntax, bindings, overlays, device configuration, debug device tree.
U-Boot
Bootloader configuration, boot sequence, environment variables, boot scripts, FIT images.
Kernel Modules
Module development, Kbuild system, insmod/rmmod, module parameters, character devices.
Rootfs & systemd
Filesystem hierarchy, init systems (BusyBox init vs systemd), services, journald, networkd.
Debugging & Profiling
GDB remote on target, strace/ltrace, ftrace, kernel log analysis, boot troubleshooting.