Linux Kernal Fundamentals
Course
Inhouse
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
Start date
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.
Reviews
This centre's achievements
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