Seminarinformationen

Seminar - Ziel

In diesem 4-tägigen Seminar „LFD420 Linux Kernel Internals und Development“ erwerben Sie ein tiefgehendes Verständnis für die Entwicklung im Linux-Kernel. Sie lernen die Architektur von Linux kennen, machen sich mit grundlegenden Entwicklungsmethoden im Kernel vertraut und erfahren, wie Sie effizient mit der Linux-Entwickler-Community zusammenarbeiten können.

Das Seminar bietet umfassende Einblicke in Kernel-Algorithmen, Speicher- und Hardwaremanagement sowie in die internen Abläufe des Systems. Sie erlernen Techniken für das Debugging, die Erstellung von Kernel-Modulen und die Integration eigener Entwicklungen. Die vermittelten Inhalte sind praxisnah und auf alle gängigen Linux-Distributionen übertragbar. Dieses Seminar richtet sich an alle, die sich intensiv mit dem Linux-Kernel auseinandersetzen und fundierte Kenntnisse in der Kernel-Entwicklung aufbauen möchten.

Teilnehmer - Zielgruppe

  • Entwickler

Kurs - Voraussetzungen

  • Gute Kenntnisse der Programmiersprache C
  • Grundlegende Kenntnisse von Linux-/UNIX-Dienstprogrammen wie ls, grep und tar
  • Sicherer Umgang mit einem Texteditor (z. B. emacs, vi oder vergleichbar)
  • Erfahrung mit einer gängigen Linux-Distribution ist hilfreich, aber nicht zwingend erforderlich

Seminardauer

  • 4 Tage
  • 09:00 Uhr bis 17:00 Uhr

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / Agenda

Introduction

  • Objectives
  • Who You Are
  • The Linux Foundation{
  • Copyright and No Confidential Information
  • The Linux Foundation{ Training
  • Certification Programs and Digital Badging
  • Linux Distributions
  • Platforms
  • Preparing Your System
  • Using and Downloading a Virtual Machine
  • Things Change in Linux and Open Source Projects
  • Documentation and Links

Preliminaries

  • Procedures
  • Kernel Versions
  • Kernel Sources and Use of git
  • Labs

How to Work in OSS Projects

  • Overview on How to Contribute Properly
  • Know Where the Code is Coming From: DCO and CLA
  • Stay Close to Mainline for Security and Quality
  • Study and Understand the Project DNA
  • Figure Out What Itch You Want to Scratch
  • Identify Maintainers and Their Work Flows and Methods
  • Get Early Input and Work in the Open
  • Contribute Incremental Bits, Not Large Code Dumps
  • Leave Your Ego at the Door: Don't Be Thin-Skinned
  • Be Patient, Develop Long Term Relationships, Be Helpful

Kernel Architecture I

  • UNIX and Linux **
  • Monolithic and Micro Kernels
  • Object-Oriented Methods
  • Main Kernel Components
  • User-Space and Kernel-Space

Kernel Programming Preview

  • Error Numbers and Getting Kernel Output
  • Task Structure
  • Memory Allocation
  • Transferring Data between User and Kernel Spaces
  • Object-Oriented Inheritance - Sort Of
  • Linked Lists
  • String to Number Conversions
  • Jiffies
  • Labs

Modules

  • What are Modules?
  • A Trivial Example
  • Compiling Modules
  • Modules vs Built-in
  • Module Utilities
  • Automatic Module Loading
  • Module Usage Count
  • The module struct
  • Module Licensing
  • Exporting Symbols
  • Resolving Symbols **
  • Labs

Kernel Architecture II

  • Processes, Threads, and Tasks
  • Process Context
  • Kernel Preemption
  • Real Time Preemption
  • Dynamic Kernel Patching
  • Run-time Alternatives **
  • Porting to a New Platform **
  • Labs

Kernel Initialization

  • Overview of System Initialization
  • System Boot
  • Das U-Boot for Embedded Systems**
  • Kernel Startup

Kernel Configuration and Compilation

  • Installation and Layout of the Kernel Source
  • Kernel Browsers
  • Kernel Configuration Files
  • Kernel Building and Makefiles
  • initrd and initramfs
  • Labs

System Calls

  • What are System Calls?
  • Available System Calls
  • How System Calls are Implemented
  • Adding a New System Call
  • Labs

Kernel Style and General Considerations

  • Coding Style
  • kernel-doc **
  • Using Generic Kernel Routines and Methods
  • Making a Kernel Patch
  • sparse
  • Using likely() and unlikely()
  • Writing Portable Code, CPU, 32/64-bit, Endianness
  • Writing for SMP
  • Writing for High Memory Systems
  • Power Management
  • Keeping Security in Mind
  • Mixing User- and Kernel-Space Headers **
  • Labs

Race Conditions and Synchronization Methods

  • Concurrency and Synchronization Methods
  • Atomic Operations
  • Bit Operations
  • Spinlocks
  • Seqlocks
  • Disabling Preemption
  • Mutexes
  • Semaphores
  • Completion Functions
  • Read-Copy-Update (RCU)
  • Reference Counts
  • Labs

SMP and Threads

  • SMP Kernels and Modules
  • Processor Affinity
  • CPUSETS
  • SMP Algorithms - Scheduling, Locking, etc.
  • Per-CPU Variables **
  • Labs

Processes

  • What are Processes?
  • The task_struct
  • Creating User Processes and Threads
  • Creating Kernel Threads
  • Destroying Processes and Threads
  • Executing User-Space Processes From Within the Kernel
  • Labs

Process Limits and Capabilities **

  • Process Limits
  • Capabilities
  • Labs

Monitoring and Debugging

  • Debuginfo Packages
  • Tracing and Profiling
  • sysctl
  • SysRq Key
  • oops Messages
  • Kernel Debuggers
  • debugfs
  • Labs

Scheduling

  • Main Scheduling Tasks
  • SMP
  • Scheduling Priorities
  • Scheduling System Calls
  • The 2.4 schedule() Function **
  • O(1) Scheduler **
  • Time Slices and Priorities
  • Load Balancing
  • Priority Inversion and Priority Inheritance **
  • The CFS Scheduler
  • Calculating Priorities and Fair Times
  • Scheduling Classes
  • Scheduler Details
  • Labs

Memory Addressing

  • Virtual Memory Management
  • Systems With and Without MMU and the TLB
  • Memory Addresses
  • High and Low Memory
  • Memory Zones
  • Special Device Nodes
  • NUMA
  • Paging
  • Page Tables
  • page structure
  • Kernel Samepage Merging (KSM) **
  • Labs

Huge Pages

  • Huge Page Support
  • Transparent Huge Pages
  • libhugetlbfs
  • Labs

Memory Allocation

  • Requesting and Releasing Pages
  • Buddy System
  • Slabs and Cache Allocations
  • Memory Pools
  • kmalloc()
  • vmalloc()
  • Early Allocations and bootmem()
  • Memory Defragmentation
  • Labs

Process Address Space

  • Allocating User Memory and Address Spaces
  • Locking Pages
  • Memory Descriptors and Regions
  • Access Rights
  • Allocating and Freeing Memory Regions
  • Page Faults
  • Labs

Disk Caches and Swapping

  • Caches
  • Page Cache Basics
  • What is Swapping?
  • Swap Areas
  • Swapping Pages In and Out
  • Controlling Swappiness
  • The Swap Cache
  • Reverse Mapping **
  • OOM Killer
  • Labs

Device Drivers**

  • Types of Devices
  • Device Nodes
  • Character Drivers
  • An Example
  • Labs

Signals

  • What are Signals?
  • Available Signals
  • System Calls for Signals
  • Sigaction
  • Signals and Threads
  • How the Kernel Installs Signal Handlers
  • How the Kernel Sends Signals
  • How the Kernel Invokes Signal Handlers
  • Real Time Signals
  • Labs

Closing and Evaluation Survey

  • Evaluation Survey

Weitere Schulungen zu Thema Linux Foundation

LFD459 Kubernetes für App-Entwickler

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 3-tägigen Seminar „LFD459 Kubernetes für App-Entwickler“ lernen Sie, wie Sie Anwendungen in einem Multi-Node-Cluster containerisieren, hosten, bereitstellen und konfigurieren. Sie beginnen mit einem einfachen Python-Skript, definieren Anwendungsressourcen und ...

LFS458 Kubernetes Administration

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 4-tägigen Seminar „LFS458 Kubernetes Administration“ erhalten Sie fundiertes Wissen zu den grundlegenden Konzepten und herstellerunabhängigen Werkzeugen für den Aufbau und die Verwaltung von Kubernetes-Clustern in Produktionsumgebungen. Sie setzen sich mit ...

LFS300 Linux Grundlagen

- u.a. in Berlin, Bremen, Hannover, München, Dresden

In dieser 4-tägigen Schulung "LFS300 Linux Grundlagen" erlangen Sie fundierte Linux-Kenntnisse, sowohl aus grafischer als auch aus der Kommandozeilen-Perspektive, um sich mühelos in verschiedenen führenden Linux-Distributionen zurechtzufinden. Die Schulung ...

Certified Kubernetes Administrator (CKA)

- u.a. in Frankfurt am Main, Zürich, Dresden, Koblenz, Jena

In diesem 4-tägigen Seminar „Certified Kubernetes Administrator (CKA)“ erwerben Sie das erforderliche Fachwissen, um die Tätigkeiten eines Kubernetes Administrators erfolgreich auszuführen, und erhalten das CKA-Zertifikat als Bestätigung Ihrer Kompetenz. Der Kurs LFS458 ...