diff --git a/.vscode/settings.json b/.vscode/settings.json
index b9c8239..4c53396 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -61,6 +61,7 @@
"aclinherit",
"aclmode",
"acltype",
+ "addgroup",
"adduser",
"airgap",
"airgapped",
diff --git a/knowledge base/apk.md b/knowledge base/apk.md
index 05b8e7d..26011f1 100644
--- a/knowledge base/apk.md
+++ b/knowledge base/apk.md
@@ -3,7 +3,8 @@
## Table of contents
1. [TL;DR](#tldr)
-1. [Sources](#sources)
+1. [Further readings](#further-readings)
+ 1. [Sources](#sources)
## TL;DR
@@ -62,13 +63,21 @@ apk info -s 'top'
apk info -d 'parallel'
```
-## Sources
+## Further readings
-- [10 alpine linux apk command examples]
+- [Alpine] Linux
+
+### Sources
+
+- [10 Alpine Linux apk command examples]
+
+[alpine]: linux/alpine.md
+
[10 alpine linux apk command examples]: https://www.cyberciti.biz/faq/10-alpine-linux-apk-command-examples/
diff --git a/knowledge base/linux/alpine.md b/knowledge base/linux/alpine.md
new file mode 100644
index 0000000..9d42970
--- /dev/null
+++ b/knowledge base/linux/alpine.md
@@ -0,0 +1,30 @@
+# Alpine
+
+1. [TL;DR](#tldr)
+1. [Further readings](#further-readings)
+
+## TL;DR
+
+```sh
+# Create users.
+adduser 'somebody'
+adduser -DHS -G 'docker' 'docker'
+
+# Create groups.
+addgroup 'new-group'
+
+# Add users to groups.
+addgroup 'nobody' 'docker'
+```
+
+## Further readings
+
+- [APK]
+
+
+
+
+[apk]: ../apk.md
diff --git a/knowledge base/arch linux.md b/knowledge base/linux/arch.md
similarity index 90%
rename from knowledge base/arch linux.md
rename to knowledge base/linux/arch.md
index 00bccde..8d78cd3 100644
--- a/knowledge base/arch linux.md
+++ b/knowledge base/linux/arch.md
@@ -1,7 +1,5 @@
# Arch linux
-## Table of contents
-
1. [TL;DR](#tldr)
1. [Further readings](#further-readings)
@@ -21,7 +19,8 @@ git clone https://aur.archlinux.org/jdupes.git \
- [Arch User Repository]
diff --git a/knowledge base/armbian.md b/knowledge base/linux/armbian.md
similarity index 87%
rename from knowledge base/armbian.md
rename to knowledge base/linux/armbian.md
index 9182e19..06a8df9 100644
--- a/knowledge base/armbian.md
+++ b/knowledge base/linux/armbian.md
@@ -3,11 +3,9 @@
Ultralight Linux distribution optimized for custom ARM, RISC-V or Intel hardware.
Based on Debian.
-## Table of contents
-
1. [TL;DR](#tldr)
1. [Further readings](#further-readings)
-1. [Sources](#sources)
+ 1. [Sources](#sources)
## TL;DR
@@ -41,14 +39,19 @@ sudo usermod -aG 'docker' "$USER"
- [Debian] GNU/Linux
- [Raspberry Pi OS]
-## Sources
+### Sources
- [How to run Docker]
+
+[debian]: debian.md
+[raspberry pi os]: ../raspberry%20pi%20os.md
+
[documentation]: https://docs.armbian.com/
[github]: https://github.com/armbian
@@ -56,12 +59,5 @@ sudo usermod -aG 'docker' "$USER"
[pi4b image]: https://www.armbian.com/rpi4b/
[website]: https://www.armbian.com/
-
-[further readings]: #further-readings
-
-
-[debian]: debian.md
-[raspberry pi os]: raspberry%20pi%20os.md
-
[balenaetcher]: https://etcher.balena.io/
diff --git a/knowledge base/debian.md b/knowledge base/linux/debian.md
similarity index 56%
rename from knowledge base/debian.md
rename to knowledge base/linux/debian.md
index 022fb7b..0d3c531 100644
--- a/knowledge base/debian.md
+++ b/knowledge base/linux/debian.md
@@ -1,12 +1,7 @@
# Debian GNU/Linux
-## Table of contents
-
-1. [TL;DR](#tldr)
1. [Further readings](#further-readings)
-1. [Sources](#sources)
-
-## TL;DR
+ 1. [Sources](#sources)
## Further readings
@@ -14,23 +9,19 @@
- [`dpkg`][dpkg]
- [Armbian]
-## Sources
-
-All the references in the [further readings] section, plus the following:
+### Sources
- [Advice for new users on not breaking their Debian system]
-
-[advice for new users on not breaking their debian system]: https://wiki.debian.org/DontBreakDebian
-
-
-[further readings]: #further-readings
-
[armbian]: armbian.md
-[apt]: apt.md
-[dpkg]: dpkg.md
+[apt]: ../apt.md
+[dpkg]: ../dpkg.md
+
+
+[advice for new users on not breaking their debian system]: https://wiki.debian.org/DontBreakDebian
diff --git a/knowledge base/fedora linux.md b/knowledge base/linux/fedora.md
similarity index 96%
rename from knowledge base/fedora linux.md
rename to knowledge base/linux/fedora.md
index 1ad7dff..fff1153 100644
--- a/knowledge base/fedora linux.md
+++ b/knowledge base/linux/fedora.md
@@ -1,6 +1,4 @@
-# Fedora GNU/Linux
-
-## Table of contents
+# Fedora
1. [Enable the RPM Fusion repositories](#enable-the-rpm-fusion-repositories)
1. [Broadcom Wi-Fi drivers](#broadcom-wi-fi-drivers)
@@ -55,7 +53,8 @@ Either:
- [DNF update from behind SSL inspection proxy]
diff --git a/knowledge base/funtoo linux.md b/knowledge base/linux/funtoo.md
similarity index 77%
rename from knowledge base/funtoo linux.md
rename to knowledge base/linux/funtoo.md
index 4d22211..928c947 100644
--- a/knowledge base/funtoo linux.md
+++ b/knowledge base/linux/funtoo.md
@@ -1,7 +1,5 @@
# Funtoo GNU/Linux
-## Table of contents
-
1. [TL;DR](#tldr)
1. [Further readings](#further-readings)
@@ -21,13 +19,14 @@ sudo emerge --sync
- [Profiles]
+
+[gentoo linux]: gentoo.md
+[portage]: ../portage.md
+
[installation]: https://www.funtoo.org/Install
[profiles]: https://www.funtoo.org/Funtoo_Profiles
-
-
-[gentoo linux]: gentoo%20linux.md
-[portage]: portage.md
diff --git a/knowledge base/gentoo linux.md b/knowledge base/linux/gentoo.md
similarity index 55%
rename from knowledge base/gentoo linux.md
rename to knowledge base/linux/gentoo.md
index 49e6c30..8f63d07 100644
--- a/knowledge base/gentoo linux.md
+++ b/knowledge base/linux/gentoo.md
@@ -6,9 +6,10 @@
- [Funtoo Linux]
-[funtoo linux]: funtoo%20linux.md
-[portage]: portage.md
+[funtoo linux]: funtoo.md
+[portage]: ../portage.md
diff --git a/knowledge base/linux kernel modules.md b/knowledge base/linux/kernel modules.md
similarity index 90%
rename from knowledge base/linux kernel modules.md
rename to knowledge base/linux/kernel modules.md
index 4b15b34..1b8fad3 100644
--- a/knowledge base/linux kernel modules.md
+++ b/knowledge base/linux/kernel modules.md
@@ -1,10 +1,8 @@
# Linux kernel modules
-## Table of contents
-
1. [TL;DR](#tldr)
1. [Permanent modules configuration](#permanent-modules-configuration)
-1. [Sources](#sources)
+1. [Further readings](#further-readings)
## TL;DR
@@ -54,13 +52,14 @@ Write the options in a `.conf` file in `/etc/modprobe.d/`:
options brcmfmac roamoff=1 feature_disable=0x82000
```
-## Sources
+## Further readings
- The [Kernel module][arch wiki kernel module] page in the [Arch wiki]
-- The [Kernel modules][gentoo wiki kernel modules]
+- The [Kernel modules][gentoo wiki kernel modules] page in the [Gentoo wiki]
diff --git a/knowledge base/lower the power consumption on linux.md b/knowledge base/linux/lower the power consumption.md
similarity index 87%
rename from knowledge base/lower the power consumption on linux.md
rename to knowledge base/linux/lower the power consumption.md
index 9779ce2..8dc1bb1 100644
--- a/knowledge base/lower the power consumption on linux.md
+++ b/knowledge base/linux/lower the power consumption.md
@@ -1,6 +1,4 @@
-# Lower the power consumption on Linux
-
-## Table of contents
+# Lower the power consumption
1. [TL;DR](#tldr)
1. [Sources](#sources)
@@ -23,7 +21,8 @@ sudo sysctl vm.dirty_writeback_centisecs=6000
- Arch Wiki's [power management][arch wiki power management] page
diff --git a/knowledge base/manjaro linux.md b/knowledge base/linux/manjaro.md
similarity index 86%
rename from knowledge base/manjaro linux.md
rename to knowledge base/linux/manjaro.md
index 65bc32e..c67f82c 100644
--- a/knowledge base/manjaro linux.md
+++ b/knowledge base/linux/manjaro.md
@@ -1,11 +1,9 @@
-# Manjaro GNU/Linux
-
-## Table of contents
+# Manjaro
1. [Repositories](#repositories)
1. [Printing](#printing)
1. [Further readings](#further-readings)
-1. [Sources](#sources)
+ 1. [Sources](#sources)
## Repositories
@@ -35,26 +33,22 @@ pamac install system-config-printer
- [Switching branches]
- [Printing]
-## Sources
-
-All the references in the [further readings] section, plus the following:
+### Sources
- [Kde Plasma 5.23 not updating]
+
+[arch linux]: arch.md
+
[branch comparison]: https://manjaro.org/branch-compare
[printing]: https://wiki.manjaro.org/index.php/Printing
[switching branches]: https://wiki.manjaro.org/index.php/Switching_Branches
-
-[further readings]: #further-readings
-
-
-[arch linux]: arch%20linux.md
-
[kde plasma 5.23 not updating]: https://forum.manjaro.org/t/kde-plasma-5-23-not-updating/88297/4
diff --git a/knowledge base/opensuse linux.md b/knowledge base/linux/opensuse.md
similarity index 78%
rename from knowledge base/opensuse linux.md
rename to knowledge base/linux/opensuse.md
index cd7a237..164c65d 100644
--- a/knowledge base/opensuse linux.md
+++ b/knowledge base/linux/opensuse.md
@@ -1,7 +1,5 @@
# OpenSUSE
-## Table of contents
-
1. [Enable Bluetooth pairing on boot](#enable-bluetooth-pairing-on-boot)
1. [Enable SSH access from outside after installation](#enable-ssh-access-from-outside-after-installation)
1. [Raspberry Pi](#raspberry-pi)
@@ -10,7 +8,7 @@
1. [Firefox MP4/H.264 video support](#firefox-mp4h264-video-support)
1. [Docker images](#docker-images)
1. [Further readings](#further-readings)
-1. [Sources](#sources)
+ 1. [Sources](#sources)
## Enable Bluetooth pairing on boot
@@ -58,7 +56,8 @@ xzcat opensuse.raw.xz \
&& sync
```
-Insert the SD card in the Raspberry Pi and power it on. The network is configured to get an IP address on `eth0` using DHCP.
+Insert the SD card in the Raspberry Pi and power it on. The network is configured to get an IP address on `eth0` using
+DHCP.
Connect using SSH and login using `root:linux`.
@@ -78,15 +77,18 @@ Do as follows:
1. boot the system
1. in GRUB's boot menu, choose _Bootable snapshots_
-1. select the snapshot you want to boot into; the list of snapshots is listed by date, the most recent snapshot being listed first
+1. select the snapshot you want to boot into; the list of snapshots is listed by date, the most recent snapshot being
+ listed first
1. log in to the system
1. carefully check whether everything works as expected
- > You cannot write to any directory that is part of the snapshot. Data you write to other directories will not get lost, regardless of what you do next.
+ > You cannot write to any directory that is part of the snapshot. Data you write to other directories will not get
+ > lost, regardless of what you do next.
Depending on whether you want to perform the rollback or not, choose your next step:
-- if the system is in a state where you do **not** want to do a rollback, reboot and boot again into a different snapshot, or start the rescue system.
+- if the system is in a state where you do **not** want to do a rollback, reboot and boot again into a different
+ snapshot, or start the rescue system.
- to perform the rollback, run
```sh
@@ -97,24 +99,30 @@ Depending on whether you want to perform the rollback or not, choose your next s
On the boot screen, choose the **default** boot entry to reboot into the reinstated system.
-A snapshot of the file system status before the rollback is created, and the default subvolume for root will be replaced with a fresh read-write snapshot.
+A snapshot of the file system status before the rollback is created, and the default subvolume for root will be replaced
+with a fresh read-write snapshot.
## Firefox MP4/H.264 video support
-To deal with [patent problems][information about the h.264 patent license], neither Firefox nor openSUSE provides the H264 codec required by fresh new openSUSE installation to play some video formats on the web.
-The Packman and VLC repositories provide the needed `libav` packages. Install those libraries to let Firefox use them to decode MP4/H.264 video.
+To deal with [patent problems][information about the h.264 patent license], neither Firefox nor openSUSE provides the
+H264 codec required by fresh new openSUSE installation to play some video formats on the web.
+The Packman and VLC repositories provide the needed `libav` packages. Install those libraries to let Firefox use them to
+decode MP4/H.264 video.
```sh
zypper install 'libavcodec60' 'libavdevice60' 'libavformat60'
```
-openSUSE provides `ffmpeg` and `libav` packages like `libavcodec56`, but in them all patent related codecs were removed making them unable to play MP4/H.264 video. That is why one needs to upgrade these packages with their version in the Packman or VLC repositories.
+openSUSE provides `ffmpeg` and `libav` packages like `libavcodec56`, but in them all patent related codecs were removed
+making them unable to play MP4/H.264 video. That is why one needs to upgrade these packages with their version in the
+Packman or VLC repositories.
Go to this [Simple WebRTC H264 check page] to check if Firefox can play H.264 videos after installation.
## Docker images
-OpenSUSE's official container images are created and stored in [SUSE's container registry][container images built by the open build service]:
+OpenSUSE's official container images are created and stored in
+[SUSE's container registry][container images built by the open build service]:
```sh
docker run -ti --rm --name 'tw' 'registry.opensuse.org/opensuse/tumbleweed'
@@ -129,9 +137,7 @@ docker run -ti --rm --name 'tw' 'registry.opensuse.org/opensuse/tumbleweed'
- [System Recovery and Snapshot Management with Snapper]
- [Container Images built by the Open Build Service]
-## Sources
-
-All the references in the [further readings] section, plus the following:
+### Sources
- [OpenSSH basics]
- [Bluetooth on boot]
@@ -141,9 +147,16 @@ All the references in the [further readings] section, plus the following:
- [Simple WebRTC H264 check page]
+
+[bluetooth]: ../bluetooth.md#bluetooth-devices-cannot-be-used-at-login
+[firewalld]: ../firewalld.md
+[systemd]: ../systemd.md
+[zypper]: ../zypper.md
+
[container images built by the open build service]: https://registry.opensuse.org/cgi-bin/cooverview
[firefox mp4/h.264 video support]: https://en.opensuse.org/SDB:Firefox_MP4/H.264_Video_Support
@@ -151,12 +164,6 @@ All the references in the [further readings] section, plus the following:
[raspberry pi4]: https://en.opensuse.org/openSUSE:Raspberry_Pi
[system recovery and snapshot management with snapper]: https://documentation.suse.com/sles/12-SP4/html/SLES-all/cha-snapper.html
-
-[bluetooth]: bluetooth.md#bluetooth-devices-cannot-be-used-at-login
-[firewalld]: firewalld.md
-[systemd]: systemd.md
-[zypper]: zypper.md
-
[bluetooth on boot]: https://www.reddit.com/r/openSUSE/comments/eoozm2/comment/feetqpn/
[information about the h.264 patent license]: https://www.fsf.org/licensing/h264-patent-license
diff --git a/knowledge base/optimize battery on a linux system.md b/knowledge base/linux/optimize battery.md
similarity index 95%
rename from knowledge base/optimize battery on a linux system.md
rename to knowledge base/linux/optimize battery.md
index 88b1581..5be9d50 100644
--- a/knowledge base/optimize battery on a linux system.md
+++ b/knowledge base/linux/optimize battery.md
@@ -1,6 +1,4 @@
-# Optimize battery on a linux system
-
-## Table of contents
+# Optimize battery
1. [TL;DR](#tldr)
1. [Disable unused services](#disable-unused-services)
@@ -64,7 +62,8 @@ sudo 'powertop'
- [laptop-mode-tools in the Arch Wiki]
diff --git a/knowledge base/scan a document on linux.md b/knowledge base/linux/scan documents.md
similarity index 70%
rename from knowledge base/scan a document on linux.md
rename to knowledge base/linux/scan documents.md
index 90478aa..51dc4dd 100644
--- a/knowledge base/scan a document on linux.md
+++ b/knowledge base/linux/scan documents.md
@@ -1,11 +1,9 @@
-# Scan a document on Linux
-
-## Table of contents
+# Scan documents
1. [TL;DR](#tldr)
1. [Procedure](#procedure)
1. [Further readings](#further-readings)
-1. [Sources](#sources)
+ 1. [Sources](#sources)
## TL;DR
@@ -21,15 +19,18 @@ Install:
- the `sane-airscan` package, if the scanner is known to work in driverless mode;
- the `sane` package to use old driver-based scanning.
-If the scanner is using a USB connection, make sure to also install the `ipp-usb` package and start/enable the `ipp-usb` service to allow using IPP protocol over USB connection.
+If the scanner is using a USB connection, make sure to also install the `ipp-usb` package and start/enable the `ipp-usb`
+service to allow using IPP protocol over USB connection.
Many modern scanners will immediately work over the network as long as you have `sane-airscan` installed.
SANE has lots of front ends, a non-exhaustive list of which can be found on the [sane project website][sane frontends]:
-- [Simple Scan]: a simplified GUI intended to be easier to use and better integrated into the GNOME desktop than `XSane` is;
-- [Skanlite]: a simple image scanning application; it does nothing more than scan and save images, and is based on the KSane backend;
-- [XSane]: a full-featured GTK-based frontend; looks a bit old but provides extended functionalities.
+- [Simple Scan]: a simplified GUI intended to be easier to use and better integrated into the GNOME desktop than `XSane`
+ is;
+- [Skanlite]: a simple image scanning application; it does nothing more than scan and save images, and is based on the
+ KSane backend;
+- XSane: a full-featured GTK-based frontend; looks a bit old but provides extended functionalities.
Some OCR software are able to scan images using SANE, like gImageReader, [gscan2pdf], Linux-Intelligent-Ocr-Solution, [OCRFeeder] and [Paperwork].
@@ -42,23 +43,19 @@ Some OCR software are able to scan images using SANE, like gImageReader, [gscan2
- [simple scan]
- [skanlite]
-## Sources
-
-All the references in the [further readings] section, plus the following:
+### Sources
- [SANE frontends]
[sane frontends]: http://www.sane-project.org/sane-frontends.html
[sane]: https://wiki.archlinux.org/title/SANE
-
-[further readings]: #further-readings
-
[gscan2pdf]: https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy#gscan2pdf
[ocrfeeder]: https://en.wikipedia.org/wiki/OCRFeeder
diff --git a/knowledge base/openmediavault.md b/knowledge base/openmediavault.md
index faca1c9..5170e57 100644
--- a/knowledge base/openmediavault.md
+++ b/knowledge base/openmediavault.md
@@ -208,7 +208,7 @@ Just enable property in the pool or dataset.
[omv extras]: #omv-extras
-[debian]: debian.md
+[debian]: linux/debian.md
[disks maintenance]: disks%20maintenance.md
[proxmox]: proxmox.md
[zfs]: zfs.md