diff --git a/.github/workflows/generate_doc.yml b/.github/workflows/generate_doc.yaml similarity index 100% rename from .github/workflows/generate_doc.yml rename to .github/workflows/generate_doc.yaml diff --git a/Makefile b/Makefile index 2622d90..b8dd159 100644 --- a/Makefile +++ b/Makefile @@ -8,16 +8,17 @@ $(PROJ).pdf: lkmpg.tex 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 diff --git a/README.md b/README.md index b136dd1..8440d43 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,58 @@ The guide has been around since 2001 and most copies of it on the web only descr 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). diff --git a/examples/procfs4.c b/examples/procfs4.c index 432b050..9804d12 100644 --- a/examples/procfs4.c +++ b/examples/procfs4.c @@ -114,4 +114,4 @@ static void __exit procfs4_exit(void) module_init(procfs4_init); module_exit(procfs4_exit); -MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL"); \ No newline at end of file diff --git a/html.cfg b/html.cfg index 9211d4c..0e86400 100644 --- a/html.cfg +++ b/html.cfg @@ -24,24 +24,21 @@ 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;