Facebook Pixel
Searching...
English
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
How Linux Works

How Linux Works

What Every Superuser Should Know
by Brian Ward 2004 368 pages
4.17
1k+ ratings
Listen
Listen to Summary

Key Takeaways

1. Linux Grants Full System Control

Unlike some operating systems, Linux doesn’t try to hide the important bits from you—it gives you full control of your computer.

Transparency and Access. Linux distinguishes itself by offering users complete access to the system's inner workings. This design philosophy empowers users to understand and modify their computing environment, fostering a deeper understanding of how the operating system functions. This level of control is a departure from systems that abstract away critical components, making Linux an ideal platform for learning and customization.

Mastery Through Understanding. To truly harness the power of Linux, one must delve into its internals. This includes understanding the boot process, networking protocols, and the kernel's role in managing system resources. By grasping these fundamental concepts, users can troubleshoot issues, optimize performance, and tailor the operating system to their specific needs.

Empowerment and Customization. The accessibility of Linux internals translates to unparalleled customization options. Users can modify system configurations, write custom scripts, and even contribute to the kernel itself. This level of control fosters a sense of ownership and allows users to adapt the operating system to their unique workflows and preferences.

2. Kernel Manages Hardware and Processes

The kernel is responsible for determining which processes are allowed to use the CPU.

Core Functions. The Linux kernel serves as the heart of the operating system, responsible for managing the system's hardware and processes. It acts as an intermediary between user-level applications and the underlying hardware, ensuring efficient and stable operation. Key responsibilities include process management, memory allocation, device driver handling, and system call support.

Process Scheduling. The kernel determines which processes get access to the CPU, employing scheduling algorithms to ensure fairness and prevent any single process from monopolizing system resources. This involves context switching, where the kernel rapidly switches between processes, creating the illusion of simultaneous execution.

Memory Management. The kernel manages memory allocation, ensuring that each process has its own dedicated memory space and preventing unauthorized access to other processes' memory. It also implements virtual memory, allowing the system to use disk space as an extension of RAM, enabling the execution of programs that require more memory than is physically available.

3. Shell Commands Are Essential for Interaction

The shell is one of the most important parts of a Unix system.

Command-Line Interface. The shell provides a powerful command-line interface (CLI) for interacting with the Linux system. By typing commands into the shell, users can navigate the file system, execute programs, manage processes, and perform a wide range of other tasks. Mastering shell commands is crucial for efficient system administration and scripting.

Basic Utilities. Essential shell commands include ls (list files), cd (change directory), cp (copy files), mv (move files), rm (remove files), and mkdir (make directory). These commands form the foundation for many system administration tasks and are used extensively in shell scripts.

Shell Scripting. Shell scripts are text files containing a sequence of shell commands. They allow users to automate repetitive tasks, create custom utilities, and manage system processes. Shell scripting is a powerful tool for system administrators and developers, enabling them to streamline workflows and automate complex operations.

4. Devices Are Accessed Through Files

A device is typically accessible only in kernel mode because improper access (such as a user process asking to turn off the power) could crash the machine.

Device Files. Linux represents hardware devices as files in the /dev directory. This abstraction allows user-space programs to interact with devices using standard file I/O operations, such as reading and writing. Device files provide a consistent and unified interface for accessing a wide range of hardware components.

Device Types. Device files are categorized into block devices (e.g., hard drives), character devices (e.g., terminals), and named pipes. Block devices are accessed in fixed-size blocks, while character devices are accessed as streams of data. Each device file is associated with a major and minor number, which the kernel uses to identify the corresponding device driver.

udev and Dynamic Device Management. The udev system dynamically manages device files, creating and removing them as devices are connected and disconnected. This ensures that the /dev directory accurately reflects the available hardware and simplifies device management for users and administrators.

5. Filesystems Organize Data on Disks

Building the requisite knowledge is a challenge in tackling any technical subject.

Hierarchical Structure. Filesystems provide a hierarchical structure for organizing data on storage devices. They define how files and directories are stored, accessed, and managed. Linux supports a variety of filesystem types, each with its own strengths and weaknesses.

Common Filesystem Types. Common filesystem types include ext4 (the default for many Linux distributions), XFS, Btrfs, and FAT32. Each filesystem type has its own features, such as journaling, compression, and support for large files. The choice of filesystem depends on the specific needs of the system and the type of data being stored.

Mounting Filesystems. To access a filesystem, it must be mounted to a mount point, which is a directory in the existing filesystem hierarchy. The mount command is used to attach a filesystem to a mount point, making its contents accessible to users and applications. The /etc/fstab file specifies which filesystems should be mounted automatically at boot time.

6. Boot Loaders Initiate Kernel Startup

The boot loader finds the kernel image on disk, loads it into memory, and starts it.

Essential Role. The boot loader is the first program to run when a computer is powered on. Its primary task is to locate the kernel image on disk, load it into memory, and transfer control to the kernel. The boot loader also provides a menu for selecting different operating systems or kernel versions.

GRUB (Grand Unified Bootloader). GRUB is the most widely used boot loader on Linux systems. It supports a variety of filesystems and partitioning schemes, allowing it to boot from different storage devices and configurations. GRUB also provides a command-line interface for advanced configuration and troubleshooting.

Boot Process. The boot process typically involves the BIOS or UEFI firmware loading the boot loader from the Master Boot Record (MBR) or EFI System Partition (ESP). The boot loader then reads its configuration file, presents a menu to the user, and loads the selected kernel image into memory. Finally, the boot loader transfers control to the kernel, initiating the operating system startup sequence.

7. Init Systems Manage User Space Startup

In this case, each process uses the CPU for a small fraction of a second, then pauses; then another process uses the CPU for another small fraction of a second; then another process takes a turn, and so on.

User Space Initialization. After the kernel initializes the hardware and mounts the root filesystem, it transfers control to the init system, which is responsible for starting the remaining system services and processes. The init system manages the user space environment, ensuring that all necessary components are running and configured correctly.

Systemd, Upstart, and System V Init. There are several init systems available for Linux, including Systemd, Upstart, and System V init. Systemd is the most modern and widely adopted init system, offering features such as parallel startup, dependency management, and service monitoring. Upstart is another popular init system, known for its event-driven architecture. System V init is the traditional init system, relying on a sequential startup process.

Runlevels and Targets. Init systems use runlevels or targets to define the system's state. Each runlevel or target corresponds to a specific set of services and processes that should be running. For example, a graphical runlevel or target would start the display manager and desktop environment, while a multi-user runlevel or target would start essential system services and provide a command-line interface.

8. Configuration Files Control System Behavior

In particular, most system configuration can be found in plaintext files that are easy enough to read.

Plaintext Configuration. Linux relies heavily on plaintext configuration files to control the behavior of system services and applications. These files are typically located in the /etc directory and can be edited with any text editor. The use of plaintext configuration files makes it easy to understand and modify system settings.

Configuration File Formats. Configuration files often follow specific formats, such as key-value pairs, INI-style sections, or shell scripts. Understanding these formats is crucial for effectively configuring system services and applications. Many configuration files also include comments, providing valuable information about the available options and their effects.

Centralized Management. While configuration files are distributed throughout the system, the /etc directory serves as a central location for managing system-wide settings. This makes it easier to locate and modify configuration files, ensuring consistency and simplifying system administration.

9. Networking Relies on Layered Protocols

The most effective way to understand how an operating system works is through abstraction—a fancy way of saying that you can ignore most of the details.

Layered Architecture. Networking in Linux is based on a layered architecture, with each layer responsible for a specific aspect of communication. The most common model is the TCP/IP model, which consists of four layers: application, transport, network, and physical. Each layer builds upon the services provided by the layer below it, creating a modular and flexible system.

Key Protocols. The TCP/IP model includes a variety of protocols, such as HTTP (for web browsing), TCP (for reliable data transmission), IP (for addressing and routing), and Ethernet (for physical network access). Understanding these protocols is crucial for troubleshooting network issues and configuring network services.

Network Configuration. Configuring networking in Linux involves setting up network interfaces, assigning IP addresses, configuring routing tables, and managing DNS settings. These tasks can be performed manually using command-line tools or automatically using network management tools like NetworkManager.

10. Development Tools Enable Software Creation

You should be able to make your software do what you want it to do (within the reasonable limits of its capabilities, of course).

Essential Tools. Linux provides a rich set of development tools for creating and managing software. These tools include compilers (e.g., GCC), debuggers (e.g., GDB), build automation tools (e.g., Make), and scripting languages (e.g., Python, Perl). Mastering these tools is essential for software development on Linux.

Compilers and Linkers. Compilers translate source code into machine code, while linkers combine object files and libraries to create executable programs. The GNU Compiler Collection (GCC) is the most widely used compiler on Linux, supporting a variety of programming languages, including C, C++, and Fortran.

Build Automation. Build automation tools, such as Make, streamline the process of compiling and linking software projects. Make uses a Makefile to define dependencies and build rules, allowing developers to automate the build process and ensure that all necessary components are compiled and linked correctly.

Last updated:

Review Summary

4.17 out of 5
Average of 1k+ ratings from Goodreads and Amazon.

How Linux Works receives mostly positive reviews, with readers praising its comprehensive yet concise coverage of Linux internals. Many find it educational for both beginners and experienced users, highlighting its clear explanations of complex topics. The book is commended for its practical approach, covering everything from boot processes to networking. Some readers note that certain sections may be too shallow or technical, depending on one's background. Overall, it's considered a valuable resource for understanding Linux fundamentals and bridging knowledge gaps.

Your rating:

About the Author

Brian Ward is the author of "How Linux Works," a highly regarded book on Linux internals. While specific biographical information is limited in the given content, Ward's expertise in Linux systems is evident through the depth and breadth of topics covered in his book. Readers praise his ability to explain complex concepts clearly and concisely, making the material accessible to a wide audience. Ward's approach combines practical examples with theoretical knowledge, demonstrating a deep understanding of Linux architecture and functionality. His work is appreciated by both novice and experienced Linux users, suggesting a comprehensive grasp of the subject matter and effective teaching skills.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Apr 23,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Appearance
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →