Edocti
Advanced Technical Training for the Software Engineer of Tomorrow
Edocti Training

Linux Internals and Application Programming

Intermediate
14 h
4.7 (201 reviews)
Linux Internals and Application Programming

Inside Linux: dive into system calls, processes, IPC and memory management with C programming.

Hands‑on labs with POSIX APIs, file I/O, signals, pipes and shared memory.

Explore scheduling, threads and synchronization in depth.

Gain practical experience by coding and testing user‑space applications (~70% labs).

How this helps: build a strong foundation for efficient, portable Linux applications.

Who it’s for: designed for individuals with basic C/Linux who want advanced programming skills.

By the end you’ll master Linux internals and create robust user‑level applications.

Curriculum

Intro to embedded Linux
  • Analyze the main components of an embedded Linux project
Toolchains
  • Types of toolchains
  • Choosing the C library
  • Toolchain components and tools
  • Building a toolchain (focus on ARM)
  • Static vs. dynamic linking
  • Cross-compiling larger projects — an example
Bootloaders
  • Understanding bootloaders
  • Intro to device trees
  • Das U-Boot: installation, configuration, main commands
Booting the kernel
  • Booting on BeagleBone Black
  • Booting on QEMU
A simple Linux application
  • A very small introduction to POSIX IPC
  • Build a simple IPC application used throughout the course
Debugging and core dumps
  • Basic debugging
  • Remote debugging
  • Main GDB commands
  • Analyzing core files and controlling CPU‑intensive apps
Intro to Yocto
  • Installing Yocto
  • Configuring, building and running
  • Layers, BitBake and recipes
  • Customizing images
Kernel programming preview
  • Error numbers and kernel output
  • task_struct overview
  • Kernel linked lists
  • Object‑Oriented mechanisms inside the kernel
Intro to modules
  • A trivial example
  • Compiling modules
  • Modules vs. built‑in
  • Module utilities
  • Automatic loading/unloading
  • Exporting symbols
Intro to device drivers
  • Modules and device drivers
  • Memory allocation/deallocation
  • Transferring data between user‑space and kernel‑space
  • Character devices
  • Using the cache
  • Interrupts and exceptions
  • Deferrable functions

Optional modules

Suggested enhancements (optional)
  • systemd service units and process supervision
  • Deeper IPC: POSIX message queues, shared memory, semaphores
  • Filesystems: /proc and sysfs basics for application developers
  • Scheduling and priorities (nice/rtprio) for user-space apps
  • gdbserver + VS Code remote debugging tips
  • perf and a brief eBPF intro for troubleshooting

Course Day Structure

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30