--- /dev/null
+name: build-deploy-assets
+
+on:
+ push:
+ branches: [ master ]
+
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ container: twtug/lkmpg
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build
+ run: |
+ make all
+ make html
+ tar zcvf lkmpg-html.tar.gz ./html
+ - name: Delete old release asset
+ uses: mknejp/delete-release-assets@v1
+ with:
+ token: ${{ github.token }}
+ fail-if-no-assets: false
+ tag: latest
+ assets: |
+ lkmpg.pdf
+ lkmpg-html.tar.gz
+ - name: Release
+ uses: softprops/action-gh-release@v1
+ with:
+ files: |
+ lkmpg.pdf
+ lkmpg-html.tar.gz
+ tag_name: "latest"
+ prerelease: true
+++ /dev/null
-name: build-deploy-assets
-
-on:
- push:
- branches: [ master ]
-
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: ubuntu-latest
- container: twtug/lkmpg
-
- steps:
- - uses: actions/checkout@v2
- - name: Build
- run: |
- make all
- make html
- tar zcvf lkmpg-html.tar.gz ./html
- - name: Delete old release asset
- uses: mknejp/delete-release-assets@v1
- with:
- token: ${{ github.token }}
- fail-if-no-assets: false
- tag: latest
- assets: |
- lkmpg.pdf
- lkmpg-html.tar.gz
- - name: Release
- uses: softprops/action-gh-release@v1
- with:
- files: |
- lkmpg.pdf
- lkmpg-html.tar.gz
- tag_name: "latest"
- prerelease: true
pdflatex -shell-escape $< 2>/dev/null >/dev/null
html: lkmpg.tex html.cfg
- make4ht --shell-escape --utf8 --format html5 --config html.cfg --output-dir html lkmpg.tex
- ln -sf lkmpg.html html/index.html
- rm -f lkmpg.xref lkmpg.tmp lkmpg.html lkmpg.css lkmpg.4ct lkmpg.4tc lkmpg.dvi lkmpg.lg lkmpg.idv lkmpg*.svg lkmpg.log lkmpg.aux
+ sed $ 's/\t/ /g' lkmpg.tex > lkmpg-for-ht.tex
+ make4ht --shell-escape --utf8 --format html5 --config html.cfg --output-dir html lkmpg-for-ht.tex
+ ln -sf lkmpg-for-ht.html html/index.html
+ rm -f lkmpg-for-ht.tex lkmpg-for-ht.xref lkmpg-for-ht.tmp lkmpg-for-ht.html lkmpg-for-ht.css lkmpg-for-ht.4ct lkmpg-for-ht.4tc lkmpg-for-ht.dvi lkmpg-for-ht.lg lkmpg-for-ht.idv lkmpg*.svg lkmpg-for-ht.log lkmpg-for-ht.aux
+ rm -rf _minted-$(PROJ) _minted-lkmpg-for-ht
indent:
(cd examples; find . -name '*.[ch]' | xargs clang-format -i)
clean:
rm -f *.dvi *.aux *.log *.ps *.pdf *.out lkmpg.bbl lkmpg.blg lkmpg.lof lkmpg.toc
- rm -rf _minted-lkmpg
rm -rf html
-.PHONY: html
+.PHONY: html
\ No newline at end of file
The book can be freely accessed via https://sysprog21.github.io/lkmpg/ or [latest PDF file](https://github.com/sysprog21/lkmpg/releases).
The original guide may be found at [Linux Documentation Project](http://www.tldp.org/LDP/lkmpg/).
+## Getting Started
+
+### Compile on Local Machine
+
+To prepare for build this book on your local machine, we're going to have make, TeXLive (MacTeX), dvipng and latexmk installed. On various Unix/Linux operating systems, this can be done simply by:
+
+```bash
+# Debian / Ubuntu
+$ sudo apt install make texlive-full latexmk dvipng
+
+# Arch / Manjaro
+$ sudo pacman -S make texlive-most texlive-bin dvipng
+
+# macOS
+$ brew install --cask mactex
+$ sudo tlmgr update --self && sudo tlmgr install dvipng latexmk
+```
+
+Now we could build document with following commands:
+
+```bash
+# download project
+$ git clone https://github.com/sysprog21/lkmpg.git && cd lkmpg
+
+# run commands
+$ make all # compile pdf document
+$ make html # convert to HTML
+$ make clean # delete generated files
+```
+
+### Compile with Docker
+
+The compile process could be run completely using Docker. **Using Docker 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, pulling the docker image [twtug/lkmpg](https://hub.docker.com/r/twtug/lkmpg) and compile with it.
+
+Execute followings
+
+```bash
+# download project
+$ git clone https://github.com/sysprog21/lkmpg.git && cd lkmpg
+
+# pull docker image and run it as container
+$ docker pull twtug/lkmpg
+$ docker run --rm -it -v $(pwd):/workdir twtug/lkmpg
+
+# run commands
+$ make all # compile pdf document
+$ make html # convert to HTML
+$ make clean # delete generated files
+```
+
## 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).
module_init(procfs4_init);
module_exit(procfs4_exit);
-MODULE_LICENSE("GPL");
+MODULE_LICENSE("GPL");
\ No newline at end of file
vertical-align: top;
}}
+\Css{pre.fancyvrb, {
+ white-space: pre;
+}}
+
\Css{figure, .fancyvrb, .verbatim {
margin-inline: 0;
overflow-x: auto;
}}
-\Css{.ecrm-0500 {
+\Css{.ecrm-0500 {
font-size: 70\%;
- font-style: italic;
+ font-style: italic;
color: gray;
- -webkit-user-select: none;
- -moz-user-select: none;
- -o-user-select: none;
- user-select: none;
-}}
-
-\Css{.ecrm-0500:after {
- content:" ";
- white-space: pre;
+ width: 1.5rem;
+ display: inline-block;
-webkit-user-select: none;
-moz-user-select: none;
-o-user-select: none;