Linux Kernal Fundamentals

Course

Inhouse

Price on request

Description

  • Type

    Course

  • Methodology

    Inhouse

  • Start date

    Different dates available

This 5-day course will provide a fundamental knowledge of the internals of the Linux kernel. The focus is on understanding the workings of the kernel, and not the theory. The course is valuable to any system administrator who seeks to have a greater understanding of the Linux kernel. The course is based on Linux kernel 2.6.32 as modified for RHEL/CentOS version 6.3. For demonstrations, the course uses the cscope utility to show source files, and the crash utility to demonstrate their use in a live kernel. This course is also the basis for additional training on writing kernel drivers and kernel debugging.

Facilities

Location

Start date

Inhouse

Start date

Different dates availableEnrolment now open

About this course

Programmers or system administrators interested in further developing their understanding of the Linux kernel.

As this is an advanced level course, students must have taken courses in the following subjects: Linux Fundamentals, Linux System Administration, and C Programming.

1:1 Lab allowing for bespoke individual cuastomised delivery in a group setting.

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

This centre's achievements

2018

All courses are up to date

The average rating is higher than 3.7

More than 50 reviews in the last 12 months

This centre has featured on Emagister for 6 years

Subjects

  • Access
  • Options
  • Linux
  • Server
  • Apache
  • Database
  • Database training
  • Installation
  • Install

Course programme


#text-block-10 { margin-bottom:0px; text-align:left; }

Course Overview

Introduction

Course Prerequisites System Environment

Conventions Used in the Studen

Materials

Command Prompts Keyboard Usage Typefaces References

Linux Kernel Introduction

Operating Systems and Kernels Definition of Terms Modes of Operations

Approaches to Kernel Design

Standards and Common Interfaces The Impact of Architecture Along Came Linux History of Linux

Linux Kernel Versions

Some Linux Distributions Linux Kernel Websites

Linux Kernel Organization

Data Flow between Kernel and

Applications

Copying Buffers

The printk Statement The /proc Directory The /sys Directory

Linux Kernel Source

Installing Kernel Source CentOS Source Install Source Installation

Updating Kernel Source kernel.org Source Install

Downloading Kernel Source Installing Kernel Source Updating Kernel Soure Patching the Kernel

View of Kernel Source Finding References

Kernel Symbol Tables The System.map File The kallsyms File

Searching with Linux Commands The cscope Command Starting cscope

Searching the Source Files

Navigating the Search Results Kernel Programming Style C Language Usage

Other Kernel Coding Conventions Opaque Types

Explicitly Sized Types Byte Order

Header Files

Inline Assembly

Common Kernel Datatypes.

Building the Linux Kernel

The Build Environment Steps for Building Kernel

Creating a Configuration File Editing the Configuration File The gconfig Utility

Configuration Options Building the Kernel RPM Build of Kernel The kernel ABI (kABI)

Modify Kernel Specifications Script Build the RPM File

Non-RPM Kernel Build

Setting the Kernel Version Information Building the Kernel

Installation of Modules Installation of Kernel Using the crash Utility Options to crash Utility

Analyzing the Running Kernel The crash Commands

Booting the Kernel

Unit Overview System Startup

Master BootRecord (MBR) The Boot Loader

Grand Unified Bootloader (GRUB) Linux Loader (LILO) Other Boot loaders

Loading the Linux Kernel Kernel Image File

The Initial RAM Disk

Initial RAM File System (initramfs) Kernel Configuration Parameters Starting the Linux Kernel The bzImage File

Architecture Dependent Initialization The start_kernel() Function

Process Data Structures

The Process Descriptor The task_struct Structure The Kernel Process Stack

Process Identifiers

Process Relationships Linux Threads

Process Credentials

Process Resource Limits Understanding Memory Virtual (linear) Memory The Memory Descriptor Memory Areas Page Tables

Process File Structure The fs_struct Object

The files_struct Object

Process Management

Process Creation

Copy-on-Write (COW)

fork(), clone(), and vfork()

exec() Family of System Calls Process States

The rq Structure Wait Queues

Process Priority

Real-Time Processes Scheduling Policy

Completely Fair Scheduler Scheduler Domains

Control Groups (cgroups) Scheduler Classes

Fair Class Scheduling Idle Class Scheduling Real-time Scheduling Context Switching Signal Handling

Signal Definitions

Signal Data Structures Delivering a Signal Process Destruction Parent Notification

The sys_wait4() System Call1. Course Overview

Introduction

Course Prerequisites System Environment

Conventions Used in the Studen

Materials

Command Prompts Keyboard Usage Typefaces References

#text-block-11 { margin-bottom:0px; text-align:left; }

Memory Management

Unit Overview

The Memory Page Memory Zones Page Frames

Buddy System Algorithm gfp_mask Flags
Virtual File System

Common File Model VFS Data Structures

The super_block Structure The super_block Operations The File System Type Mounting File Systems The Inode Structure The dentry Structure The File Structure File Locks

Block I/O Layer

Generic Block Layer I/O Scheduler

Interrupt and Exceptions

Interrupt Signals Interrupts

Interrupt Context

Interrupt Execution Flow Interrupt Vectors Interrupt Handlers

Controlling Interrupts Bottom Halves Softirqs Tasklets

Work Queues Exceptions

Exception Vectors Exception Handlers Oops and Panics System Calls

System Call Interface

Kernel Implementation of System Calls Existing a System Call

The strace Command

Kernel Synchronization

Impact of Preemption

Protecting Critical Regions Race Conditions

Defining Critical Regions Synchronization Primitives Per CPU Variables Atomic Operations

Optimization and Memory Barriers Spin Locks Seqlocks

Semaphores

Read Copy Update (RCU) Controlling Preemption

The Big Kernel Lock (BKL) Preemption Primitives

Time Management

Basic Timer Variables The Tick Rate

Understaing Jiffies

Kernel Time versus User Time Nanosecond Timing Hardware Timers

Common Hardware Timers The clocksource Structures

Understanding High Resolution Timing High ResolutionStructures

Per CPU and Broadcast Clocks Clock Interrupt Handling The Clock Event Device Dynamic Timers

The Tick behind Tickless Timing

Linux Device Model

I/O Architecture I/O Ports

I/O Interfaces and Controllers Dedicated I/O Interfaces

General-Purpose I/O Architecture The sysfs File System

kobject, kset, and kibj_type Structures The sysfs_dirent Structure Kobject Inheritance Putting it Together Device Files

The Role of udev.
Linux Kernel Modules

Module Overview

Compiling the Module Managing Modules

The insmod Command The rmmod Command The Ismod Command

The modprobe Command The modinfo Command Signing External Modules kABI Compliance

Additional Examples.

#text-block-12 { margin-bottom:0px; text-align:left; }

The X Window System

X Modularity X.Org Drivers

Configuring X Manually Automatic X Configuration Automatic X Configuration –

SLES

The X11 Protocol and Display

Names

Display Managers and Graphical

Login

Starting X Apps Automatically X Access Control Remote X Access (historical/insecure approach)

Remote X Access

(modern/secure approach)

XDMCP

Remote Graphical Access With

VNC and RDP

Specialized X Servers

Enabling the Graphical User

Interface

Bind Concepts and Configuration

The Domain Name Space Delegation and Zones Server Roles

Resolving Names

Resolving IP Addresses

Basic BIND Administration Configuring the Resolver Testing Resolution

rndc Key Configuration BIND Configuration Files named.conf Syntax

named.conf Options Block Creating a Site-Wide Cache Zones In named.conf

Zone Database File Syntax SOA – Start of Authority

A & PTR – Address & Pointer

Records

NS – Name Server

CNAME & MX – Alias & Mail Host Abbreviations and Gotchas

$GENERATE, $ORIGIN, and

$INCLUDE

OPENLDAP

OpenLDAP: Server Architecture OpenLDAP: Backends OpenLDAP: Replication

OpenLDAP: Configuration Options OpenLDAP: Configuration Sections OpenLDAP: Global Parameters OpenLDAP: Database Parameters OpenLDAP Server Tools OpenLDAP Client Tools

LDIF: LDAP Data Interchange Format Enabling LDAP-based Login

System Security Services Daemon

(SSSD)

Using VSFTPD and APACHE

vsftpd

Anonymous FTP with vsftpd Configuring vsftpd HTTP Operation

Apache Architecture

Apache Configuration Files httpd.conf – Server Settings

httpd.conf – Main Configuration

httpd.conf – VirtualHost Configuration Virtual Hosting DNS Implications Dynamic Shared Objects Adding Modules to Apache Apache Logging Log Analysis

APACHE Security Delegating Administration Directory Protection

Directory Protection with

AllowOverride

Common Uses for .htaccess Symmetric Encryption

Algorithms

Asymmetric Encryption

Algorithms Digital Certificates

SSL Using mod_ssl.so

The Squid Proxy Server

Squid Overview Squid File Layout

Squid Access Control Lists

Applying Squid ACLs

Tuning Squid & Configuring

Cache Hierarchies

Bandwidth Metering Monitoring Squid

Proxy Client Configuration 18. Samba Concepts and

Configuration

Introducing Samba Samba Daemons

NetBIOS and NetBEUI

Accessing Windows/Samba

Shares from Linux

Samba Utilities

Samba Configuration Files The smb.conf File

Mapping Permissions and ACLs Mapping Linux Concepts Mapping Case Sensitivity Sharing Home Directories Sharing Printers

Share Authentication Share-Level Access User-Level Access Mapping Users

Samba Account Database User Share Restrictions

Postfix Postfix Features

Postfix Components Postfix Configuration master.cf main.cf

Postfix Map Types

Postfix Pattern Matching

Virtual Domains

Postfix Mail Filtering

Configuration Commands Management Commands Postfix Logging

SMTP AUTH Server and Relay Control SMTP AUTH Clients

TLS Server Configuration

Postfix Client Configuration for TLS Ensuring TLS Security

Mail Services and Retrieval

Procmail

SpamAssassin

amavisd-new Mail Filtering Accessing Email

The IMAP4 Protocol

Cyrus IMAP/POP3 Server

Cyrus IMAP MTA Integration Cyrus Mailbox Administration

Installing RHEL6 Anaconda: An Overview

Anaconda: Booting the System

Anaconda: Common Boot Options Anaconda: Loading Anaconda and

Packages

Anaconda: Storage Options Anaconda: Troubleshooting FirstBoot Kickstart

A Typical Install

Installing SLES11

YaST Install Program Interface Network Installation

SLP for SUSE Linux Installation Installation Choices

Kernel Crash Dump Configuration Creating AutoYaST2 Files Using AutoYaST2 files linuxrc Automation

Installation Diagnostics After The First Reboot A Typical Install


Linux Kernal Fundamentals

Price on request