Books & Videos

Table of Contents

  1. Chapter 1 The Big Picture

    1. 1.1 Levels and Layers of Abstraction in a Linux System

    2. 1.2 Hardware: Understanding Main Memory

    3. 1.3 The Kernel

    4. 1.4 User Space

    5. 1.5 Users

    6. 1.6 Looking Forward

  2. Chapter 2 Basic Commands and Directory Hierarchy

    1. 2.1 The Bourne Shell: /bin/sh

    2. 2.2 Using the Shell

    3. 2.3 Basic Commands

    4. 2.4 Navigating Directories

    5. 2.5 Intermediate Commands

    6. 2.6 Changing Your Password and Shell

    7. 2.7 Dot Files

    8. 2.8 Environment and Shell Variables

    9. 2.9 The Command Path

    10. 2.10 Special Characters

    11. 2.11 Command-Line Editing

    12. 2.12 Text Editors

    13. 2.13 Getting Online Help

    14. 2.14 Shell Input and Output

    15. 2.15 Understanding Error Messages

    16. 2.16 Listing and Manipulating Processes

    17. 2.17 File Modes and Permissions

    18. 2.18 Archiving and Compressing Files

    19. 2.19 Linux Directory Hierarchy Essentials

    20. 2.20 Running Commands as the Superuser

    21. 2.21 Looking Forward

  3. Chapter 3 Devices

    1. 3.1 Device Files

    2. 3.2 The sysfs Device Path

    3. 3.3 dd and Devices

    4. 3.4 Device Name Summary

    5. 3.5 udev

    6. 3.6 In-Depth: SCSI and the Linux Kernel

  4. Chapter 4 Disks and Filesystems

    1. 4.1 Partitioning Disk Devices

    2. 4.2 Filesystems

    3. 4.3 swap space

    4. 4.4 Looking Forward: Disks and User Space

    5. 4.5 Inside a Traditional Filesystem

  5. Chapter 5 How the Linux Kernel Boots

    1. 5.1 Startup Messages

    2. 5.2 Kernel Initialization and Boot Options

    3. 5.3 Kernel Parameters

    4. 5.4 Boot Loaders

    5. 5.5 GRUB Introduction

    6. 5.6 UEFI Secure Boot Problems

    7. 5.7 Chainloading Other Operating Systems

    8. 5.8 Boot Loader Details

  6. Chapter 6 How User Space Starts

    1. 6.1 Introduction to init

    2. 6.2 System V Runlevels

    3. 6.3 Identifying Your init

    4. 6.4 systemd

    5. 6.5 Upstart

    6. 6.6 System V init

    7. 6.7 Shutting Down Your System

    8. 6.8 The Initial RAM Filesystem

    9. 6.9 Emergency Booting and Single-User Mode

  7. Chapter 7 System Configuration: Logging, System Time, Batch Jobs, and Users

    1. 7.1 The Structure of /etc

    2. 7.2 System Logging

    3. 7.3 User Management Files

    4. 7.4 getty and login

    5. 7.5 Setting the Time

    6. 7.6 Scheduling Recurring Tasks with cron

    7. 7.7 Scheduling One-Time Tasks with at

    8. 7.8 Understanding User IDs and User Switching

    9. 7.9 User Identification and Authentication

    10. 7.10 PAM

    11. 7.11 Looking Forward

  8. Chapter 8 A Closer Look at Processes and Resource Utilization

    1. 8.1 Tracking Processes

    2. 8.2 Finding Open Files with lsof

    3. 8.3 Tracing Program Execution and System Calls

    4. 8.4 Threads

    5. 8.5 Introduction to Resource Monitoring

    6. 8.6 Measuring CPU Time

    7. 8.7 Adjusting Process Priorities

    8. 8.8 Load Averages

    9. 8.9 Memory

    10. 8.10 Monitoring CPU and Memory Performance with vmstat

    11. 8.11 I/O Monitoring

    12. 8.12 Per-Process Monitoring with pidstat

    13. 8.13 Further Topics

  9. Chapter 9 Understanding your Network and its Configuration

    1. 9.1 Network Basics

    2. 9.2 Network Layers

    3. 9.3 The Internet Layer

    4. 9.4 Routes and the Kernel Routing Table

    5. 9.5 Basic ICMP and DNS Tools

    6. 9.6 The Physical Layer and Ethernet

    7. 9.7 Understanding Kernel Network Interfaces

    8. 9.8 Introduction to Network Interface Configuration

    9. 9.9 Boot-Activated Network Configuration

    10. 9.10 Problems with Manual and Boot-Activated Network Configuration

    11. 9.11 Network Configuration Managers

    12. 9.12 Resolving Hostnames

    13. 9.13 Localhost

    14. 9.14 The Transport Layer: TCP, UDP, and Services

    15. 9.15 Revisiting a Simple Local Network

    16. 9.16 Understanding DHCP

    17. 9.17 Configuring Linux as a Router

    18. 9.18 Private Networks

    19. 9.19 Network Address Translation (IP Masquerading)

    20. 9.20 Routers and Linux

    21. 9.21 Firewalls

    22. 9.22 Ethernet, IP, and ARP

    23. 9.23 Wireless Ethernet

    24. 9.24 Summary

  10. Chapter 10 Network Applications and Services

    1. 10.1 The Basics of Services

    2. 10.2 Network Servers

    3. 10.3 Secure Shell (SSH)

    4. 10.4 The inetd and xinetd Daemons

    5. 10.5 Diagnostic Tools

    6. 10.6 Remote Procedure Call (RPC)

    7. 10.7 Network Security

    8. 10.8 Looking Forward

    9. 10.9 Sockets: How Processes Communicate with the Network

    10. 10.10 Unix Domain Sockets

  11. Chapter 11 Introduction to Shell Scripts

    1. 11.1 Shell Script Basics

    2. 11.2 Quoting and Literals

    3. 11.3 Special Variables

    4. 11.4 Exit Codes

    5. 11.5 Conditionals

    6. 11.6 Loops

    7. 11.7 Command Substitution

    8. 11.8 Temporary File Management

    9. 11.9 Here Documents

    10. 11.10 Important Shell Script Utilities

    11. 11.11 Subshells

    12. 11.12 Including Other Files in Scripts

    13. 11.13 Reading User Input

    14. 11.14 When (Not) to Use Shell Scripts

  12. Chapter 12 Moving Files Across the Network

    1. 12.1 Quick Copy

    2. 12.2 rsync

    3. 12.3 Introduction to File Sharing

    4. 12.4 Sharing Files with Samba

    5. 12.5 NFS Clients

    6. 12.6 Further Network File Service Options and Limitations

  13. Chapter 13 User Environments

    1. 13.1 Guidelines for Creating Startup Files

    2. 13.2 When to Alter Startup Files

    3. 13.3 Shell Startup File Elements

    4. 13.4 Startup File Order and Examples

    5. 13.5 Default User Settings

    6. 13.6 Startup File Pitfalls

    7. 13.7 Further Startup Topics

  14. Chapter 14 A Brief Survey of the Linux Desktop

    1. 14.1 Desktop Components

    2. 14.2 A Closer Look at the X Window System

    3. 14.3 Exploring X Clients

    4. 14.4 The Future of X

    5. 14.5 D-Bus

    6. 14.6 Printing

    7. 14.7 Other Desktop Topics

  15. Chapter 15 Development Tools

    1. 15.1 The C Compiler

    2. 15.2 make

    3. 15.3 Debuggers

    4. 15.4 Lex and Yacc

    5. 15.5 Scripting Languages

    6. 15.6 Java

    7. 15.7 Looking Forward: Compiling Packages

  16. Chapter 16 Introduction to Compiling Software From C Source Code

    1. 16.1 Software Build Systems

    2. 16.2 Unpacking C Source Packages

    3. 16.3 GNU Autoconf

    4. 16.4 Installation Practice

    5. 16.5 Applying a Patch

    6. 16.6 Troubleshooting Compiles and Installations

    7. 16.7 Looking Forward

  17. Chapter 17 Building on the Basics

    1. 17.1 Web Servers and Applications

    2. 17.2 Databases

    3. 17.3 Virtualization

    4. 17.4 Distributed and On-Demand Computing

    5. 17.5 Embedded Systems

    6. 17.6 Final Remarks

  1. Appendix Bibliography

  2. Appendix Updates