Linux Training Overview
This course focuses on the elements of the Linux kernel that allow programmers to build software components that are linked to the hardware level. Students gain a general understanding of basic tools and interfaces in order to successfully modify features and develop new aspects of the kernel.
Linux Training Audience
Programmers, software designers, and technical managers who plan to use Linux below the application level.
Linux Training Prerequisites
Advanced UNIX Programming is recommended. Strong C programming skills and intermediate knowledge of UNIX/Linux shell commands are required. UNIX/Linux application development experience is recommended.
Linux Training Course duration
5 Days
Linux Training Course outline
Introduction to Linux Internals
Introduction and environmental setup
Main characteristics of the Linux operating system
Linux distributions
Kernel configuration facilities
Building the kernel
Location of components
Compiling
Kernel Overview
Important data structures
Processes and tasks
Files and inodes
Dynamic memory management
Queues and semaphores
System time and timers
Primary algorithms
Signals
Interrupts
System booting
Timer interrupt
Scheduler
System call implementation
Description of system calls
Practical examples
Adding new system calls
Memory Management
Architecture-dependent memory model Pages
Virtual address space
Linear address conversion
Page table and page directory
Middle page directory
Virtual address space model
User segment
Virtual memory
The brk system call
Mapping functions
Kernel segment
Static and dynamic memory allocation in the kernel
Block device caching
Block buffering
Update and bdflush
List structures for the buffer cache
How to use the buffer cache
Paging in Linux
Page cache management
Finding free pages
Page exceptions
Inter-Process Communication
Synchronization
Communication via files
Pipes
Debugging using ptrace
System V IPC
Socket-based communications
File System
Basic aspects
VFS
Mouting a file system
Superblock
The Inode concept and operations
File operations
Directory cache
Proc filesystem
Ext2 filesystem
Structure
Directories
Block allocation
Extensions
System Calls
Initialization
Process management
Memory management
Communication
Filesystem
Kernel-Related Commands
ps
top
free
init
shutdown
strace
traceroute
mount
Device Drivers
Character vs block devices
Polling and interrupts
Polling and interrupt mode
Interrupt sharing
Bottom halves
Task queues
Implementation
Setup
Init
Open and release
Read and write
Ioctl
Select
Lseek
Mmap
Readdir
Fsync and fasync
Module Management
Interfaces to modules
Adding/removing modules to the Kernel
Insmod
Modprobe
Rmmod
Implementation details
Network
Layer model
Network communications
Data structures
Socket
sk_buff
Inet socket
proto
Devices
Ethernet
SLIP and PPP
Loopback
Dummy device
Protocols
Arp
IP
Functions
Routing
Multicasting
Packet filters
Accounting
Firewalls
UDP
Standard and extra functions
TCP
Standard functions
Communication details
SCSI Subsystem
Architecture overview
Names and conventions
Upper level
Block devices (hard disks, CD-ROM)
Character devices (tape)
Generic drivers
Mid level (boot parameters, proc interface)
Lower (hardware) level and pseudo drivers
Boot Process
Booting details
LILO
Started by MBR
Started by a boot manager
Structure in the MBR
Files
Parameters
Start-up messages
Error messages
Debugging Tools
ptrace
SysRq
KDB
User Mode Linux
kgdb
|