search
0
cart
close
You have no products in your basket yet
left
Tech Categories
Best Sellers
New Releases
Books
Videos
Audiobooks
Articles
Newsletters
Free Learning
right
Linux Kernel Programming - Second Edition

Linux Kernel Programming: A comprehensive and practical guide to kernel internals, writing modules, and kernel synchronization, Second Edition

By Kaiwan N. Billimoria
$39.99 $27.98
Book Feb 2024 826 pages 2nd Edition
eBook
$39.99 $27.98
Print
$49.99
Subscription
$15.99 Monthly
eBook
$39.99 $27.98
Print
$49.99
Subscription
$15.99 Monthly

What do you get with eBook?

Feature icon Instant access to your Digital eBook purchase
Feature icon Download this book in EPUB and PDF formats
Feature icon Access this title in our online reader with advanced features
Feature icon DRM FREE - Read whenever, wherever and however you want
Buy Now

Product Details


Publication date : Feb 29, 2024
Length 826 pages
Edition : 2nd Edition
Language : English
ISBN-13 : 9781803232225
Vendor :
Linux Foundation
toc View table of contents toc Preview Book toc Download Code

Key benefits

  • Discover how to write Linux kernel and module code for real-world products
  • Implement industry-grade techniques in real-world scenarios for fast, efficient memory allocation and data synchronization
  • Understand and exploit kernel architecture, CPU scheduling, and kernel synchronization techniques

Description

The 2nd Edition of Linux Kernel Programming is an updated, comprehensive guide for new programmers to the Linux kernel. This book uses the recent 6.1 Long-Term Support (LTS) Linux kernel series, which will be maintained until Dec 2026, and also delves into its many new features. Further, the Civil Infrastructure Project has pledged to maintain and support this 6.1 Super LTS (SLTS) kernel right until August 2033, keeping this book valid for years to come! You’ll begin this exciting journey by learning how to build the kernel from source. In a step by step manner, you will then learn how to write your first kernel module by leveraging the kernel’s powerful Loadable Kernel Module (LKM) framework. With this foundation, you will delve into key kernel internals topics including Linux kernel architecture, memory management, and CPU (task) scheduling. You’ll finish with understanding the deep issues of concurrency, and gain insight into how they can be addressed with various synchronization/locking technologies (e.g., mutexes, spinlocks, atomic/refcount operators, rw-spinlocks and even lock-free technologies such as per-CPU and RCU). By the end of this book, you’ll have a much better understanding of the fundamentals of writing the Linux kernel and kernel module code that can straight away be used in real-world projects and products.

What you will learn

Configure and build the 6.1 LTS kernel from source Write high-quality modular kernel code (LKM framework) for 6.x kernels Explore modern Linux kernel architecture Get to grips with key internals details regarding memory management within the kernel Understand and work with various dynamic kernel memory alloc/dealloc APIs Discover key internals aspects regarding CPU scheduling within the kernel, including cgroups v2 Gain a deeper understanding of kernel concurrency issues Learn how to work with key kernel synchronization primitives

What do you get with eBook?

Feature icon Instant access to your Digital eBook purchase
Feature icon Download this book in EPUB and PDF formats
Feature icon Access this title in our online reader with advanced features
Feature icon DRM FREE - Read whenever, wherever and however you want
Buy Now

Product Details


Publication date : Feb 29, 2024
Length 826 pages
Edition : 2nd Edition
Language : English
ISBN-13 : 9781803232225
Vendor :
Linux Foundation

Table of Contents

16 Chapters
Preface Packt Packt
Preface
Who this book is for
What’s been added in the second edition?
What this book covers
Get in touch
Linux Kernel Programming – A Quick Introduction Packt Packt
Linux Kernel Programming – A Quick Introduction
Kernel workspace setup
Technical requirements
Cloning this book’s code repository
Building the 6.x Linux Kernel from Source – Part 1 Packt Packt
Building the 6.x Linux Kernel from Source – Part 1
Technical requirements
Preliminaries for the kernel build
Steps to build the kernel from source
Step 1 – Obtaining a Linux kernel source tree
Step 2 – Extracting the kernel source tree
Step 3 – Configuring the Linux kernel
Customizing the kernel menu, Kconfig, and adding our own menu item
Summary
Exercise
Questions
Further reading
Building the 6.x Linux Kernel from Source – Part 2 Packt Packt
Building the 6.x Linux Kernel from Source – Part 2
Technical requirements
Step 4 – building the kernel image and modules
Step 5 – installing the kernel modules
Step 6 – generating the initramfs image and bootloader setup
Understanding the initramfs framework
Step 7 – customizing the GRUB bootloader
Verifying our new kernel’s configuration
Kernel build for the Raspberry Pi
Miscellaneous tips on the kernel build
Summary
Questions
Further reading
Writing Your First Kernel Module – Part 1 Packt Packt
Writing Your First Kernel Module – Part 1
Technical requirements
Understanding the kernel architecture – part 1
Exploring LKMs
Writing our very first kernel module
Common operations on kernel modules
Understanding kernel logging and printk
Understanding the basics of a kernel module Makefile
Summary
Questions
Further reading
Writing Your First Kernel Module – Part 2 Packt Packt
Writing Your First Kernel Module – Part 2
Technical requirements
A “better” Makefile template for your kernel modules
Cross-compiling a kernel module
Gathering minimal system information
Licensing kernel modules
Emulating “library-like” features for kernel modules
Passing parameters to a kernel module
Floating point not allowed in the kernel
Auto-loading modules on system boot
Kernel modules and security – an overview
Coding style guidelines for kernel developers
Contributing to the mainline kernel
Summary
Questions
Further reading
Kernel Internals Essentials – Processes and Threads Packt Packt
Kernel Internals Essentials – Processes and Threads
Technical requirements
Understanding process and interrupt contexts
Understanding the basics of the process Virtual Address Space (VAS)
Organizing processes, threads, and their stacks – user and kernel space
Understanding and accessing the kernel task structure
Working with the task structure via ‘current’
Iterating over the kernel’s task lists
Summary
Questions
Further reading
Memory Management Internals – Essentials Packt Packt
Memory Management Internals – Essentials
Technical requirements
Understanding the VM split
Examining the process VAS
Examining the kernel VAS
Randomizing the memory layout – KASLR
Understanding physical memory organization
Summary
Questions
Further reading
Kernel Memory Allocation for Module Authors – Part 1 Packt Packt
Kernel Memory Allocation for Module Authors – Part 1
Technical requirements
Introducing kernel memory allocators
Understanding and using the kernel page allocator (or BSA)
Understanding and using the kernel slab allocator
Size limitations of the kmalloc API
Slab allocator – a few additional details
Caveats when using the slab allocator
Summary
Questions
Further reading
Kernel Memory Allocation for Module Authors – Part 2 Packt Packt
Kernel Memory Allocation for Module Authors – Part 2
Technical requirements
Creating a custom slab cache
Debugging kernel memory issues – a quick mention
Understanding and using the kernel vmalloc() API
Memory allocation in the kernel – which APIs to use when
Memory reclaim – a key kernel housekeeping task
Stayin’ alive – the OOM killer
Summary
Questions
Further reading
The CPU Scheduler – Part 1 Packt Packt
The CPU Scheduler – Part 1
Technical requirements
Learning about the CPU scheduling internals – part 1 – essential background
Visualizing the flow
Learning about the CPU scheduling internals – part 2
Querying a given thread’s scheduling policy and priority
Learning about the CPU scheduling internals – part 3
Summary
Questions
Further reading
The CPU Scheduler – Part 2 Packt Packt
The CPU Scheduler – Part 2
Technical requirements
Understanding, querying, and setting the CPU affinity mask
Querying and setting a thread’s scheduling policy and priority
An introduction to cgroups
Running Linux as an RTOS – an introduction
Miscellaneous scheduling related topics
Summary
Questions
Further reading
Kernel Synchronization – Part 1 Packt Packt
Kernel Synchronization – Part 1
Technical requirements
Critical sections, exclusive execution, and atomicity
Concurrency concerns within the Linux kernel
Mutex or spinlock? Which to use when
Using the mutex lock
Using the spinlock
Locking and interrupts
Locking – common mistakes and guidelines
Solutions
Summary
Questions
Further reading
Kernel Synchronization – Part 2 Packt Packt
Kernel Synchronization – Part 2
Technical requirements
Using the atomic_t and refcount_t interfaces
Using the RMW atomic operators
Using the reader-writer spinlock
Understanding CPU caching basics, cache effects, and false sharing
Lock-free programming with per-CPU and RCU
Lock debugging within the kernel
Introducing memory barriers
Summary
Questions
Further reading
Other Books You May Enjoy Packt Packt
Other Books You May Enjoy
Index Packt Packt
Index
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQS

How do I buy and download an eBook? Packt Packt

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Packt Packt

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Packt Packt
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Packt Packt

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Packt Packt
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Packt Packt

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.