2021-07-22 06:34:19 +08:00
# The Linux Kernel Module Programming Guide
2021-09-10 22:03:09 +08:00
This project keeps the Linux Kernel Module Programming Guide up to date, with [working examples ](examples/ ) for recent 5.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.
2021-08-07 18:53:06 +08:00
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/ ).
2021-07-22 06:34:19 +08:00
2021-08-08 01:29:50 +08:00
## Getting Started
2021-09-10 22:03:09 +08:00
### 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.
2021-08-08 01:29:50 +08:00
2021-09-10 22:03:09 +08:00
### 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
To gernate 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):
2021-08-08 01:29:50 +08:00
```bash
# Debian / Ubuntu
2021-08-18 20:43:51 +08:00
$ sudo apt install make texlive-full
2021-08-08 01:29:50 +08:00
# Arch / Manjaro
2021-08-18 20:43:51 +08:00
$ sudo pacman -S make texlive-most texlive-bin
2021-08-08 01:29:50 +08:00
# macOS
$ brew install --cask mactex
2021-08-18 20:43:51 +08:00
$ sudo tlmgr update --self
2021-08-08 01:29:50 +08:00
```
2021-09-10 22:03:09 +08:00
Alternatively, using [Docker ](https://docs.docker.com/ ) is recommended, as it guarantees the same dependencies with our GitHub Actions wokrflow.
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.
2021-08-08 01:29:50 +08:00
2021-09-10 22:03:09 +08:00
```shell
# pull docker image and run it as container
$ docker pull twtug/lkmpg
$ docker run --rm -it -v $(pwd):/workdir twtug/lkmpg
2021-08-08 01:29:50 +08:00
```
2021-09-10 22:03:09 +08:00
[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.
2021-08-08 01:29:50 +08:00
2021-09-10 22:03:09 +08:00
### Step 3: Generate PDF and/or HTML documents
2021-08-08 01:29:50 +08:00
2021-09-10 22:03:09 +08:00
Now we could build document with following commands:
2021-08-08 01:29:50 +08:00
```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-08-08 01:29:50 +08:00
```
2021-07-22 06:34:19 +08:00
## License
2021-07-27 10:10:16 +08:00
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.