Atjaunināt sīkdatņu piekrišanu

How Linux Works, 3rd Edition: What Every Superuser Should Know [Mīkstie vāki]

4.17/5 (1237 ratings by Goodreads)
  • Formāts: Paperback / softback, 464 pages, height x width: 236x177 mm
  • Izdošanas datums: 19-Apr-2021
  • Izdevniecība: No Starch Press,US
  • ISBN-10: 1718500408
  • ISBN-13: 9781718500402
Citas grāmatas par šo tēmu:
  • Mīkstie vāki
  • Cena: 49,50 €*
  • * ši ir gala cena, t.i., netiek piemērotas nekādas papildus atlaides
  • atlaide spēkā tikai noliktavā esošajiem eksemplāriem
  • Standarta cena: 53,26 €
  • Ietaupiet 7%
  • Noliktavā 1 eksempl.
  • Daudzums:
  • Ielikt grozā
  • Pievienot vēlmju sarakstam
  • Formāts: Paperback / softback, 464 pages, height x width: 236x177 mm
  • Izdošanas datums: 19-Apr-2021
  • Izdevniecība: No Starch Press,US
  • ISBN-10: 1718500408
  • ISBN-13: 9781718500402
Citas grāmatas par šo tēmu:
Best selling guide to the inner workings of the Linux operating system with over 50,000 copies sold since its release in 2014. This in-depth guide to the various components of a Linux system covers topics like how the system boots, how networking works, and what the Linux kernel actually does.

The Linux operating system is the power behind Android, Chromebooks, web servers, and the public cloud. It's impossible to know for sure but there may well be over 60 million Linux users in the world. Developers and system maintainers need to understand how Linux works in order to use it effectively and fix it when it breaks. In this third edition of the best selling How Linux Works, author Brian Ward peels back the layers of this well-loved operating system to make Linux internals accessible. Readers learn how Linux boots, how the kernel manages devices and device drivers, and how processes, networking, interfaces, firewalls, and servers work. They also learn how Linux-based development tools work, how to use shared libraries, and how to write effective shell scripts. This edition has been thoroughly updated and expanded with added coverage of Logical Volume Manager (LVM), virtualization, and containers.

Recenzijas

"Comprehensive . . . The third edition of How Linux Works is a good introduction to Linux that also is organized such that readers can flip through and go as far into a subject as necessary to answer questions at hand, skipping the more extensive explanations that arent crucial for their current topic of interest. In that regard, the book is a nice reference to have on the bookshelf." Lee Teschler, Microcontroller Tips

"The book is very thoroughfrom looking down into the hardware, through delving into how the kernel functions, to covering the most important commands, file systems, swap space, boot loaders, networking and more. In fact, I'm not at all surprised that this book has survived to its 3rd editionboth because it's a genuinely good book and because Linux has gone through some serious changes in the past seven years, especially related to such things as its use of containers, the flexibility of logical volume manager and the continued move toward virtualization. . . . This is a very thorough and up-to-date book. After using Unix and then Linux for nearly 40 years, I am still getting a lot of value and significant insights from reading it." Sandra Henry-Stocker, longstanding Linux journalist

"If you've not read this book yet, you really should. It's very good, highly detailed, approachable, comprehensive, and just an overall joy to read as a Linux nerd. Highly recommend!" Adam Miller, @TheMaxamillion

"This book provides an overview of Linux, with some information on how to dive deeper into its topics. Recommended." Ian Bruntlett, C Vu Journal Vol. 33 #4, ACCU

"I recommend [ How Linux Works] if you want to learn and understand the core functioning of Linux. [ It's] the perfect book if you are absolutely new or if you want to improve your Linux knowledge." It's FOSS - Linux Portal, @itsfoss2

"A fantastic book which I highly recommend whether you are new to Linux or an old hat." The Security Noob

Reviews for How Linux Works:

If you are interested in Linux, How Linux Works: What Every Superuser Should Know is a must-read title. LinuxInsider

Lots to offer on almost every aspect of the Linux architecture. Everyday Linux User

Youll get an essential understanding of whats going on under the hood without getting bogged down in minutiaemaking this a very refreshing (and wholly recommended) addition to the Linux literature. Phil Bull, co-author of Ubuntu Made Easy and member of the Ubuntu documentation team

Dives straight into the transparent depths of Linux-based operating systems and shows us how all the pieces fit together. DistroWatch

Earns its place on the shelf as an essential reference. The MagPi magazine

Papildus informācija

Best selling guide to the inner workings of the Linux operating system with over 50,000 copies sold since its release in 2014. This in-depth guide to the various components of a Linux system covers topics like how the system boots, how networking works, and what the Linux kernel actually does.
Preface xxi
Who Should Read This Book? xxi
Prerequisites xxii
How to Read This Book xxii
A Hands-on Approach xxii
How This Book Is Organized xxii
What's New in the Third Edition? xxiii
A Note on Terminology xxiv
1 The Big Picture
1(10)
1.1 Levels and Layers of Abstraction in a Linux System
2(2)
1.2 Hardware: Understanding Main Memory
4(1)
1.3 The Kernel
4(4)
1.3.1 Process Management
5(1)
1.3.2 Memory Management
6(1)
1.3.3 Device Drivers and Management
6(1)
1.3.4 System Calls and Support
7(1)
1.4 User Space
8(1)
1.5 Users
9(1)
1.6 Looking Forward
10(1)
2 Basic Commands And Directory Hierarchy
11(36)
2.1 The Bourne Shell:/bin/sh
12(1)
2.2 Using the Shell
12(3)
2.2.1 The Shell Window
13(1)
2.2.2 cat
13(1)
2.2.3 Standard Input and Standard Output
14(1)
2.3 Basic Commands
15(1)
2.3.1 Is
15(1)
2.3.2 cp
15(1)
2.3.3 mv
16(1)
2.3.4 touch
16(1)
2.3.5 rm
16(1)
2.3.6 echo
16(1)
2.4 Navigating Directories
16(3)
2.4.1 cd
17(1)
2.4.2 mkdir
17(1)
2.4.3 rmdir
17(1)
2.4.4 Shell Globbing ("Wildcards")
18(1)
2.5 Intermediate Commands
19(3)
2.5.1 grep
19(1)
2.5.2 less
20(1)
2.5.3 pwd
20(1)
2.5.4 diff
21(1)
2.5.5 file
21(1)
2.5.6 Find and locate
21(1)
2.5.7 Head and tail
21(1)
2.5.8 sort
22(1)
2.6 Changing Your Password and Shell
22(1)
2.7 Dot Files
22(1)
2.8 Environment and Shell Variables
22(1)
2.9 The Command Path
23(1)
2.10 Special Characters
24(1)
2.11 Command-Line Editing
25(1)
2.12 Text Editors
25(1)
2.13 Getting Online Help
26(2)
2.14 Shell Input and Output
28(1)
2.14.1 Standard Error
29(1)
2.14.2 Standard Input Redirection
29(1)
2.15 Understanding Error Messages
29(3)
2.15.1 Anatomy of a Unix Error Message
30(1)
2.15.2 Common Errors
30(2)
2.16 Listing and Manipulating Processes
32(3)
2.16.1 Command Options
32(1)
2.16.2 Process Termination
33(1)
2.16.3 Job Control
34(1)
2.16.4 Background Processes
34(1)
2.17 File Modes and Permissions
35(4)
2.17.1 Modifying Permissions
36(2)
2.17.2 Working with Symbolic Links
38(1)
2.18 Archiving and Compressing Files
39(3)
2.18.1 gzip
39(1)
2.18.2 tar
39(1)
2.18.3 Compressed Archives (.tar.gz)
40(1)
2.18.4 zcat
41(1)
2.18.5 Other Compression Utilities
41(1)
2.19 Linux Directory Hierarchy Essentials
42(2)
2.19.1 Other Root Subdirectories
43(1)
2.19.2 The /usr Directory
44(1)
2.19.3 Kernel Location
44(1)
2.20 Running Commands as the Superuser
44(2)
2.20.1 sudo
45(1)
2.20.2 /etc/sudoers
45(1)
2.20.3 Sudo Logs
46(1)
2.21 Looking Forward
46(1)
3 Devices
47(22)
3.1 Device Files
48(1)
3.2 The sysfs Device Path
49(1)
3.3 Dd and Devices
50(1)
3.4 Device Name Summary
51(5)
3.4.1 Hard Disks:/dev/sd*
52(1)
3.4.2 Virtual Disks:/dev/xvd*,/dev/vd*
53(1)
3.4.3 Non-Volatile Memory Devices:/dev/nvme*
53(1)
3.4.4 Device Mapper:/dev/dm-*,/dev/mapper/*
53(1)
3.4.5 CD and DVD Drives: /dev/sr*
53(1)
3.4.6 PATA Hard Disks: /dev/hd*
53(1)
3.4.7 Terminals: /dev/tty*, /dev/pts/*, and /dev/tty
53(2)
3.4.8 Serial Ports:/dev/ttyS*,/dev/ttyUSB*,/dev/ttyACM*
55(1)
3.4.9 Parallel Ports: /dev/Ip0 and /dev/lpl
55(1)
3.4.10 Audio Devices: /dev/snd/*, /dev/dsp, /dev/audio, and More
55(1)
3.4.11 Device File Creation
56(1)
3.5 udev
56(6)
3.5.1 devtmpfs
57(1)
3.5.2 Udevd Operation and Configuration
58(2)
3.5.3 udevadm
60(1)
3.5.4 Device Monitoring
61(1)
3.6 In-Depth: SCSI and the Linux Kernel
62(7)
3.6.1 USB Storage and SCSI
65(1)
3.6.2 SCSI and ATA
65(1)
3.6.3 Generic SCSI Devices
66(1)
3.6.4 Multiple Access Methods for a Single Device
67(2)
4 Disks And Filesystems
69(48)
4.1 Partitioning Disk Devices
72(8)
4.1.1 Viewing a Partition Table
72(3)
4.1.2 Modifying Partition Tables
75(1)
4.1.3 Creating a Partition Table
76(2)
4.1.4 Navigating Disk and Partition Geometry
78(2)
4.1.5 Reading from Solid-State Disks
80(1)
4.2 Filesystems
80(14)
4.2.1 Filesystem Types
81(1)
4.2.2 Creating a Filesystem
82(1)
4.2.3 Mounting a Filesystem
83(2)
4.2.4 Filesystem UUID
85(1)
4.2.5 Disk Buffering, Caching, and Filesystems
86(1)
4.2.6 Filesystem Mount Options
86(1)
4.2.7 Remounting a Filesystem
87(1)
4.2.8 The /etc/fstab Filesystem Table
88(1)
4.2.9 Alternatives to /etc/fstab
89(1)
4.2.10 Filesystem Capacity X
89(2)
4.2.11 Checking and Repairing Filesystems
91(2)
4.2.12 Special-Purpose Filesystems
93(1)
4.3 Swap Space
94(2)
4.3.1 Using a Disk Partition as Swap Space
94(1)
4.3.2 Using a File as Swap Space
95(1)
4.3.3 Determining How Much Swap You Need
95(1)
4.4 The Logical Volume Manager
96(1)
4.4.2 Working with LVM
97(10)
4.4.3 The LVM Implementation
107(4)
4.5 Looking Forward: Disks and User Space
111(1)
4.6 Inside a Traditional Filesystem
111(2)
4.6.1 Inode Details and the Link Count
113(1)
4.6.2 Block Allocation
114(1)
4.6.3 Working with Filesystems in User Space
115(2)
5 How The Linux Kernel Boots
117(20)
5.1 Startup Messages
118(1)
5.2 Kernel Initialization and Boot Options V
119(1)
5.3 Kernel Parameters
120(1)
5.4 Boot Loaders
121(2)
5.4.1 Boot Loader Tasks
122(1)
5.4.2 Boot Loader Overview
123(1)
5.5 GRUB Introduction
123(8)
5.5.1 Exploring Devices and Partitions with the GRUB Command Line
125(2)
5.5.2 GRUB Configuration
127(3)
5.5.3 GRUB Installation
130(1)
5.6 UEFI Secure Boot Problems
131(1)
5.7 Chainloading Other Operating Systems
132(1)
5.8 Boot Loader Details
132(5)
5.8.1 MBR Boot
133(1)
5.8.2 UEFI Boot
133(1)
5.8.3 How GRUB Works
134(3)
6 How User Space Starts
137(30)
6.1 Introduction to init
138(1)
6.2 Identifying Your init
139(1)
6.3 systemd
139(17)
6.3.1 Units and Unit Types
140(1)
6.3.2 Booting and Unit Dependency Graphs
140(1)
6.3.3 Systemd Configuration
141(3)
6.3.4 Systemd Operation
144(3)
6.3.5 Systemd Process Tracking and Synchronization
147(1)
6.3.6 Systemd Dependencies
148(3)
6.3.7 Systemd On-Demand and Resource-Parallelized Startup
151(5)
6.3.8 Systemd Auxiliary Components
156(1)
6.4 System V Runlevels
156(1)
6.5 System V init
157(5)
6.5.1 System V init: Startup Command Sequence
158(1)
6.5.2 The System V init Link Farm
159(1)
6.5.3 run-parts
160(1)
6.5.4 System V init Control
161(1)
6.5.5 Systemd System V Compatibility
161(1)
6.6 Shutting Down Your System
162(1)
6.7 The Initial RAM Filesystem
163(1)
6.8 Emergency Booting and Single-User Mode
164(1)
6.9 Looking Forward
165(2)
7 System Configuration: Logging, System Time, Batch Jobs, And Users
167(32)
7.1 System Logging
168(8)
7.1.1 Checking Your Log Setup
169(1)
7.1.2 Searching and Monitoring Logs
169(3)
7.1.3 Logfile Rotation
172(1)
7.1.4 Journal Maintenance
173(1)
7.1.5 A Closer Look at System Logging
173(3)
7.2 The Structure of/etc
176(1)
7.3 User Management Files
177(4)
7.3.1 The/etc/passwd File
177(1)
7.3.2 Special Users
178(1)
7.3.3 The/etc/shadow File
179(1)
7.3.4 Manipulating Users and Passwords
179(1)
7.3.5 Working with Groups
180(1)
7.4 Getty and login
181(1)
7.5 Setting the Time
181(2)
7.5.1 Kernel Time Representation and Time Zones
182(1)
7.5.2 Network Time
182(1)
7.6 Scheduling Recurring Tasks with cron and Timer Units
183(4)
7.6.1 Installing Crontab Files 1
84(101)
7.6.2 System Crontab Files
185(1)
7.6.3 Timer Units
185(2)
7.6.4 Cron vs. Timer Units
187(1)
7.7 Scheduling One-Time Tasks with at
187(1)
7.7.1 Timer Unit Equivalents
188(1)
7.8 Timer Units Running as Regular Users
188(1)
7.9 User Access Topics
189(3)
7.9.1 User IDs and User Switching
189(1)
7.9.2 Process Ownership, Effective UID, Real UID, and Saved UID
189(2)
7.9.3 User Identification, Authentication, and Authorization
191(1)
7.9.4 Using Libraries for User Information
192(1)
7.10 Pluggable Authentication Modules
192(6)
7.10.1 PAM Configuration
193(3)
7.10.2 Tips on PAM Configuration Syntax
196(1)
7.10.3 PAM and Passwords
197(1)
7.11 Looking Forward
198(1)
8 A Closer Look At Processes And Resource Utilization
199(24)
8.1 Tracking Processes
200(1)
8.2 Finding Open Files with Isof
200(2)
8.2.1 Reading the Isof Output
201(1)
8.2.2 Using Isof
202(1)
8.3 Tracing Program Execution and System Calls
202(2)
8.3.1 strace
202(2)
8.3.2 Itrace
204(1)
8.4 Threads
204(2)
8.4.1 Single-Threaded and Multithreaded Processes
204(1)
8.4.2 Viewing Threads
205(1)
8.5 Introduction to Resource Monitoring
206(10)
8.5.1 Measuring CPU Time
207(1)
8.5.2 Adjusting Process Priorities
207(1)
8.5.3 Measuring CPU Performance with Load Averages
208(2)
8.5.4 Monitoring Memory Status
210(2)
8.5.5 Monitoring CPU and Memory Performance with vmstat
212(2)
8.5.6 I/O Monitoring
214(2)
8.5.7 Per-Process Monitoring with pidstat
216(1)
8.6 Control Groups (cgroups)
216(5)
8.6.1 Differentiating Between cgroup Versions
217(2)
8.6.2 Viewing cgroups X
219(1)
8.6.3 Manipulating and Creating cgroups
220(1)
8.6.4 Viewing Resource Utilization
221(1)
8.7 Further Topics
221(2)
9 Understanding Your Network And Its Configuration
223(46)
9.1 Network Basics
224(1)
9.2 Packets
224(1)
9.3 Network Layers
225(1)
9.4 The Internet Layer
226(4)
9.4.1 Viewing IP Addresses
228(1)
9.4.2 Subnets
228(1)
9.4.3 Common Subnet Masks and CIDR Notation
229(1)
9.5 Routes and the Kernel Routing Table
230(1)
9.6 The Default Gateway
231(1)
9.7 IPv6 Addresses and Networks
231(3)
9.7.1 Viewing IPv6 Configuration on Your System
232(1)
9.7.2 Configuring Dual-Stack Networks
233(1)
9.8 Basic ICMP and DNS Tools
234(1)
9.8.1 ping
234(1)
9.8.2 DNS and host
235(1)
9.9 The Physical Layer and Ethernet
235(1)
9.10 Understanding Kernel Network Interfaces
236(1)
9.11 Introduction to Network Interface Configuration
237(2)
9.11.1 Manually Configuring Interfaces
237(1)
9.11.2 Manually Adding and Deleting Routes
238(1)
9.12 Boot-Activated Network Configuration
239(1)
9.13 Problems with Manual and Boot-Activated Network Configuration
239(1)
9.14 Network Configuration Managers
240(3)
9.14.1 NetworkManager Operation
241(1)
9.14.2 NetworkManager Interaction
241(1)
9.14.3 NetworkManager Configuration
242(1)
9.15 Resolving Hostnames
243(4)
9.15.1 /etc/hosts
244(1)
9.15.2 resolv.conf
245(1)
9.15.3 Caching and Zero-Configuration DNS
245(1)
9.15.4 /etc/nsswitch.conf
246(1)
9.16 Localhost
247(1)
9.17 The Transport Layer: TCP, UDP, and Services
247(5)
9.17.1 TCP Ports and Connections
248(2)
9.17.2 UDP
250(2)
9.18 Revisiting a Simple Local Network
252(1)
9.19 Understanding DHCP
252(1)
9.19.1 Linux DHCP Clients
253(1)
9.19.2 Linux DHCP Servers
253(1)
9.20 Automatic IPv6 Network Configuration
253(1)
9.21 Configuring Linux as a Router
254(2)
9.22 Private Networks (IPv4)
256(1)
9.23 Network Address Translation (IP Masquerading)
256(2)
9.24 Routers and Linux
258(1)
9.25 Firewalls
259(5)
9.25.1 Linux Firewall Basics
259(2)
9.25.2 Setting Firewall Rules
261(1)
9.25.3 Firewall Strategies
262(2)
9.26 Ethernet, IP, ARP, and NDP
264(2)
9.27 Wireless Ethernet
266(2)
9.27.1 iw
267(1)
9.27.2 Wireless Security
268(1)
9.28 Summary
268(1)
10 Network Applications And Services
269(22)
10.1 The Basics of Services
270(1)
10.2 A Closer Look
271(1)
10.3 Network Servers
272(6)
10.3.1 Secure Shell
273(1)
10.3.2 The sshd Server
274(2)
10.3.3 fail2ban
276(1)
10.3.4 The SSH Client
277(1)
10.4 Pre-systemd Network Connection Servers: inetd/xinetd
278(1)
10.5 Diagnostic Tools
279(5)
10.5.1 Isof
280(1)
10.5.2 tcpdump
281(2)
10.5.3 netcat
283(1)
10.5.4 Port Scanning
284(1)
10.6 Remote Procedure Calls
284(1)
10.7 Network Security
285(2)
10.7.1 Typical Vulnerabilities
286(1)
10.7.2 Security Resources
287(1)
10.8 Looking Forward
287(1)
10.9 Network Sockets
288(1)
10.10 Unix Domain Sockets
289(2)
11 Introduction To Shell Scripts
291(24)
11.1 Shell Script Basics
291(2)
11.1.1 Limitations of Shell Scripts
292(1)
11.2 Quoting and Literals
293(3)
11.2.1 Literals
293(1)
11.2.2 Single Quotes
294(1)
11.2.3 Double Quotes
295(1)
11.2.4 Literal Single Quotes
295(1)
11.3 Special Variables
296(2)
11.3.1 Individual Arguments: $1, $2, and So On
296(1)
11.3.2 Number of Arguments: $#
297(1)
11.3.3 All Arguments: $@
297(1)
11.3.4 Script Name: $0
297(1)
11.3.5 Process ID
298(1)
11.3.6 Exit Code: $?
298(1)
11.4 Exit Codes
298(1)
11.5 Conditionals
299(6)
11.5.1 A Workaround for Empty Parameter Lists
299(1)
11.5.2 Other Commands for Tests
300(1)
11.5.3 elif
300(1)
11.5.4 Logical Constructs
300(1)
11.5.5 Testing Conditions
301(3)
11.5.6 case
304(1)
11.6 Loops
305(1)
11.6.1 For Loops
305(1)
11.6.2 While Loops
305(1)
11.7 Command Substitution
306(1)
11.8 Temporary File Management
307(1)
11.9 Here Documents
308(1)
11.10 Important Shell Script Utilities
308(3)
11.10.1 basename
308(1)
11.10.2 awk
309(1)
11.10.3 sed
309(1)
11.10.4 xargs
310(1)
11.10.5 expr
311(1)
11.10.6 exec
311(1)
11.11 Subshells
311(1)
11.12 Including Other Files in Scripts
312(1)
11.13 Reading User Input
312(1)
11.14 When (Not) to Use Shell Scripts
312(3)
12 Network File Transfer And Sharing
315(20)
12.1 Quick Copy
316(1)
12.2 rsync
317(6)
12.2.1 Getting Started with rsync
317(1)
12.2.2 Making Exact Copies of a Directory Structure
318(1)
12.2.3 Using the Trailing Slash
319(1)
12.2.4 Excluding Files and Directories
320(1)
12.2.5 Checking Transfers, Adding Safeguards, and Using Verbose Mode
321(1)
12.2.6 Compressing Data
321(1)
12.2.7 Limiting Bandwidth
322(1)
12.2.8 Transferring Files to Your Computer
322(1)
12.2.9 Further rsync Topics
322(1)
12.3 Introduction to File Snaring
323(1)
12.3.1 File Sharing Usage and Performance
323(1)
12.3.2 File Sharing Security
323(1)
12.4 Sharing Files with Samba
324(7)
12.4.1 Server Configuration
324(1)
12.4.2 Server Access Control
325(1)
12.4.3 Passwords
326(1)
12.4.4 Manual Server Startup
327(1)
12.4.5 Diagnostics and Logfiles
328(1)
12.4.6 File Share Configuration
328(1)
12.4.7 Home Directories
328(1)
12.4.8 Printer Sharing
329(1)
12.4.9 The Samba Client
329(2)
12.5 SSHFS
331(1)
12.6 NFS
332(1)
12.7 Cloud Storage
333(1)
12.8 The State of Network File Sharing
333(2)
13 User Environments
335(12)
13.1 Guidelines for Creating Startup Files
336(1)
13.2 When to Alter Startup Files
336(1)
13.3 Shell Startup File Elements
337(3)
13.3.1 The Command Path
337(1)
13.3.2 The Manual Page Path
338(1)
13.3.3 The Prompt
338(1)
13.3.4 Aliases
339(1)
13.3.5 The Permissions Mask
339(1)
13.4 Startup File Order and Examples
340(3)
13.4.1 The bash Shell
340(2)
13.4.2 The tcsh Shell
342(1)
13.5 Default User Settings
343(1)
13.5.1 Shell Defaults
343(1)
13.5.2 Editor
344(1)
13.5.3 Pager
344(1)
13.6 Startup File Pitfalls
344(1)
13.7 Further Startup Topics
345(2)
14 A Brief Survey Of The Linux Desktop And Printing
347(16)
14.1 Desktop Components
348(3)
14.1.1 Framebuffers
348(1)
14.1.2 The X Window System
348(1)
14.1.3 Wayland
349(1)
14.1.4 Window Managers
349(1)
14.1.5 Toolkits
350(1)
14.1.6 Desktop Environments
350(1)
14.1.7 Applications
350(1)
14.2 Are You Running Wayland or X?
351(1)
14.3 A Closer Look at Wayland
351(3)
14.3.1 The Compositing Window Manager
351(1)
14.3.2 libinput
352(1)
14.3.3 X Compatibility in Wayland
353(1)
14.4 A Closer Look at the X Window System
354(5)
14.4.1 Display Managers
355(1)
14.4.2 Network Transparency
355(1)
14.4.3 Ways of Exploring X Clients
355(1)
14.4.4 X Events
356(1)
14.4.5 X Input and Preference Settings
357(2)
14.5 D-Bus
359(1)
14.5.1 System and Session Instances
360(1)
14.5.2 D-Bus Message Monitoring
360(1)
14.6 Printing
360(2)
14.6.1 CUPS X
361(1)
14.6.2 Format Conversion and Print Filters
361(1)
14.7 Other Desktop Topics
362(1)
15 Development Tools
363(22)
15.1 The C Compiler
364(9)
15.1.1 Compiling Multiple Source Files
365(1)
15.1.2 Linking with Libraries
366(1)
15.1.3 Working with Shared Libraries
367(4)
15.1.4 Working with Header (Include) Files and Directories
371(2)
15.2 make
373(6)
15.2.1 A Sample Makefile
374(1)
15.2.2 Built-in Rules
374(1)
15.2.3 Final Program Build
375(1)
15.2.4 Dependency Updates
375(1)
15.2.5 Command-Line Arguments and Options
376(1)
15.2.6 Standard Macros and Variables
377(1)
15.2.7 Conventional Targets
378(1)
15.2.8 Makefile Organization
378(1)
15.3 LexandYacc
379(1)
15.4 Scripting Languages
380(2)
15.4.1 Python
381(1)
15.4.2 Perl
381(1)
15.4.3 Other Scripting Languages
381(1)
15.5 Java
382(1)
15.6 Looking Forward: Compiling Packages
383(2)
16 Introduction To Compiling Software From C Source Code
385(16)
16.1 Software Build Systems
386(1)
16.2 Unpacking C Source Packages
387(1)
16.3 GNU Autoconf
388(6)
16.3.1 An Autoconf Example
389(1)
16.3.2 Installation Using a Packaging Tool
390(1)
16.3.3 Configure Script Options
390(1)
16.3.4 Environment Variables
391(1)
16.3.5 Autoconf Targets
392(1)
16.3.6 Autoconf Logfiles
392(1)
16.3.7 pkg-config
393(1)
16.4 Installation Practice
394(1)
16.4.1 Where to Install
395(1)
16.5 Applying a Patch
395(1)
16.6 Troubleshooting Compiles and Installations
396(3)
16.6.1 Specific Errors
397(2)
16.7 Looking Forward
399(2)
17 Visualization
401(18)
17.1 Virtual Machines
402(3)
17.1.1 Hypervisors
402(1)
17.1.2 Hardware in a Virtual Machine
403(1)
17.1.3 Common Uses of Virtual Machines
404(1)
17.1.4 Drawbacks of Virtual Machines
404(1)
17.2 Containers
405(12)
17.2.1 Docker, Podman, and Privileges
406(1)
17.2.2 A Docker Example
407(7)
17.2.3 LXC
414(1)
17.2.4 Kubernetes
415(1)
17.2.5 Pitfalls of Containers
415(2)
17.3 Runtime-Based Virtualization
417(2)
Bibliography 419(4)
Index 423
Brian Ward has been working with Linux since 1993. He is also the author of The Linux Kernel-HOWTO, The Book of VMware (No Starch Press), and The Linux Problem Solver (No Starch Press).