lkmpg/README.md

74 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

2021-07-22 06:34:19 +08:00
# The Linux Kernel Module Programming Guide
2023-09-17 18:24:27 +08:00
This project keeps the Linux Kernel Module Programming Guide up to date, with [working examples](examples/) for recent 5.x and 6.x kernel versions.
2021-07-22 06:34:19 +08:00
The guide has been around since 2001 and most copies of it on the web only describe old 2.6.x kernels.
The book can be freely accessed via https://sysprog21.github.io/lkmpg/ or [latest PDF file](https://github.com/sysprog21/lkmpg/releases).
2021-08-02 15:15:49 +08:00
The original guide may be found at [Linux Documentation Project](http://www.tldp.org/LDP/lkmpg/).
2022-10-21 09:36:47 +08:00
You may check other [freely available programming books](https://ebookfoundation.github.io/free-programming-books-search/) listed by The [Free Ebook Foundation](https://ebookfoundation.org/) or [Linux online books](https://onlinebooks.library.upenn.edu/webbin/book/browse?type=lcsubc&key=Linux) collected by [The Online Books Page](https://onlinebooks.library.upenn.edu/).
2021-07-22 06:34:19 +08:00
## Getting Started
### Summary
1. Get the latest source code from the [GitHub page](https://github.com/sysprog21/lkmpg).
2. Install the prerequisites.
3. Generate PDF and/or HTML documents.
### Step 1: Get the latest source code
Make sure you can run `git` with an Internet connection.
```shell
$ git clone https://github.com/sysprog21/lkmpg.git && cd lkmpg
```
### Step 2: Install the prerequisites
2021-11-08 22:07:08 +08:00
To generate the book from source, [TeXLive](https://www.tug.org/texlive/) ([MacTeX](https://www.tug.org/mactex/)) is required.
For Ubuntu Linux, macOS, and other Unix-like systems, run the following command(s):
```bash
# Debian / Ubuntu
$ sudo apt install make texlive-full
# Arch / Manjaro
2023-08-15 00:25:14 +08:00
$ sudo pacman -S make texlive-binextra texlive-bin
# macOS
2023-03-26 09:21:53 +08:00
$ brew install mactex
$ sudo tlmgr update --self
```
Note that `latexmk` is required to generated PDF, and it probably has been installed on your OS already. If not, please follow the [installation guide](https://mg.readthedocs.io/latexmk.html#installation).
In macOS systems, package `Pygments` may not be pre-installed. If not, please refer to the [installation guide](https://pygments.org/download/) before generate documents.
2021-11-08 22:10:21 +08:00
Alternatively, using [Docker](https://docs.docker.com/) is recommended, as it guarantees the same dependencies with our GitHub Actions workflow.
After install [docker engine](https://docs.docker.com/engine/install/) on your machine, pull the docker image [twtug/lkmpg](https://hub.docker.com/r/twtug/lkmpg) and run in isolated containers.
```shell
# pull docker image and run it as container
$ docker pull twtug/lkmpg
$ docker run --rm -it -v $(pwd):/workdir twtug/lkmpg
```
[nerdctl](https://github.com/containerd/nerdctl) is a Docker-compatible command line tool for [containerd](https://containerd.io/), and you can replace the above `docker` commands with `nerdctl` counterparts.
### Step 3: Generate PDF and/or HTML documents
Now we could build document with following commands:
```bash
2021-08-09 23:46:37 +08:00
$ make all # Generate PDF document
$ make html # Convert TeX to HTML
$ make clean # Delete generated files
```
2021-07-22 06:34:19 +08:00
## License
The Linux Kernel Module Programming Guide is a free book; you may reproduce and/or modify it under the terms of the [Open Software License](https://opensource.org/licenses/OSL-3.0).
2021-07-22 06:39:22 +08:00
Use of this work is governed by a copyleft license that can be found in the `LICENSE` file.
2021-07-22 06:34:19 +08:00
The complementary sample code is licensed under GNU GPL version 2, as same as Linux kernel.