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”
SysV Inter-Process communication
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
Readdir
Fsync and fasync
Check_mdeai_change and revalidate
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
Hands-on:
Day 1: Basic Kernel configuration, building and
testing.
Day 2: Filesystem internals
Day 3: Implementing a new system call and integrating
it in the Kernel
Day 4: Device driver development:
design and implementation
Day 5: Making modules out of device
drivers
|