From cab8833a3d3f2ce43ee525453cad1eee0f5c9f2b Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 13:44:48 -0500 Subject: [PATCH 01/71] murderuus wiki --- wiki/css/stylesheet.css | 7 ++ wiki/index.html | 19 +++ wiki/unix/C.m4 | 112 ++++++++++++++++++ wiki/unix/Makefile | 33 ++++++ wiki/unix/X.m4 | 71 +++++++++++ wiki/unix/acpi.m4 | 13 +++ wiki/unix/culture.m4 | 5 + wiki/unix/doas.m4 | 24 ++++ wiki/unix/editing.m4 | 13 +++ wiki/unix/fonts.m4 | 1 + wiki/unix/foreword.m4 | 5 + wiki/unix/fstab.m4 | 4 + wiki/unix/index.m4 | 59 ++++++++++ wiki/unix/linux.m4 | 229 ++++++++++++++++++++++++++++++++++++ wiki/unix/m4.m4 | 4 + wiki/unix/macros.m4 | 1 + wiki/unix/manual.m4 | 11 ++ wiki/unix/multitasking.m4 | 14 +++ wiki/unix/netbsd.m4 | 66 +++++++++++ wiki/unix/pci.m4 | 15 +++ wiki/unix/pkg-config.m4 | 10 ++ wiki/unix/pkgsrc.m4 | 17 +++ wiki/unix/posix.m4 | 239 ++++++++++++++++++++++++++++++++++++++ wiki/unix/telepathy.m4 | 16 +++ wiki/unix/unix.m4 | 5 + wiki/unix/volumes.m4 | 84 ++++++++++++++ wiki/unix/wifi.m4 | 19 +++ wiki/wiki.m4 | 11 ++ 28 files changed, 1107 insertions(+) create mode 100644 wiki/css/stylesheet.css create mode 100644 wiki/index.html create mode 100644 wiki/unix/C.m4 create mode 100644 wiki/unix/Makefile create mode 100644 wiki/unix/X.m4 create mode 100644 wiki/unix/acpi.m4 create mode 100644 wiki/unix/culture.m4 create mode 100644 wiki/unix/doas.m4 create mode 100644 wiki/unix/editing.m4 create mode 100644 wiki/unix/fonts.m4 create mode 100644 wiki/unix/foreword.m4 create mode 100644 wiki/unix/fstab.m4 create mode 100644 wiki/unix/index.m4 create mode 100644 wiki/unix/linux.m4 create mode 100644 wiki/unix/m4.m4 create mode 100644 wiki/unix/macros.m4 create mode 100644 wiki/unix/manual.m4 create mode 100644 wiki/unix/multitasking.m4 create mode 100644 wiki/unix/netbsd.m4 create mode 100644 wiki/unix/pci.m4 create mode 100644 wiki/unix/pkg-config.m4 create mode 100644 wiki/unix/pkgsrc.m4 create mode 100644 wiki/unix/posix.m4 create mode 100644 wiki/unix/telepathy.m4 create mode 100644 wiki/unix/unix.m4 create mode 100644 wiki/unix/volumes.m4 create mode 100644 wiki/unix/wifi.m4 create mode 100644 wiki/wiki.m4 diff --git a/wiki/css/stylesheet.css b/wiki/css/stylesheet.css new file mode 100644 index 0000000..770d526 --- /dev/null +++ b/wiki/css/stylesheet.css @@ -0,0 +1,7 @@ +a{ color: #ABCDEF; } +a:hover{ color: #FF0000; } +body{ + background-color: #000; + color: #EFECFC; +} +h1, h2, h3{ font-style: italic; } diff --git a/wiki/index.html b/wiki/index.html new file mode 100644 index 0000000..6cbbd24 --- /dev/null +++ b/wiki/index.html @@ -0,0 +1,19 @@ + + + + + + + + + + +murderu.us + + +

WIKI.MURDERU.US

+ + + diff --git a/wiki/unix/C.m4 b/wiki/unix/C.m4 new file mode 100644 index 0000000..5d98e46 --- /dev/null +++ b/wiki/unix/C.m4 @@ -0,0 +1,112 @@ +_header(`C') +

+For compilation, _man(`tcc(1)'), _man(`gcc(1)'), and _man(`clang(1)') are all reasonable choices depending on your needs. +

+

+On Alpine Linux, the standard library headers are in the _code(`musl-dev') package. +

+

+In most system package managers, standard library documentation can be found in the _code(`man-pages') and _code(`man-pages-posix') packages. +

+

+Many Linux software distributions' system package managers have meta-packages that pull all necessities for C development as dependencies. +Alpine has _code(`build-base') and Debian has _code(`build-essential'). +

+

+For linking to libraries, see _ref(`#pkg-config'). +

+ +_subheader(`Prototypical C (1978)') + +

+The C programming language was first described to the public in The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie, published by Prentice Hall in 1978. +The language evolved out of the former B programming language, which was a product of Ken Thompson: +

+
+
+

Challenged by McIlroy's feat in reproducing TMG, Thompson decided that Unix—possibly it had not even been named yet—needed a system programming language. After a rapidly scuttled attempt at Fortran, he created instead a language of his own, which he called B. B can be thought of as C without types; more accurately, it is BCPL squeezed into 8K bytes of memory and filtered through Thompson's brain. Its name most probably represents a contraction of BCPL, though an alternate theory holds that it derives from Bon [Thompson 69], an unrelated language created by Thompson during the Multics days. Bon in turn was named either after his wife Bonnie, or (according to an encyclopedia quotation in its manual), after a religion whose rituals involve the murmuring of magic formulas.

+
+
(The Development of the C Language)
+
+

[Thompson 69] references K. Thompson, `Bon—an Interactive Language,' undated AT&T Bell Laboratories internal memorandum (ca. 1969). This is possibly Bon User's Manual. +Please get in touch if you have a hyperlink for this document as I can't find it indexed on any search engines.

+

+This language described in The C Programming Language isn't the C programming language known by most. +It was a pre-standardization, relatively prototypical C, and rather than being codified in ANSI its primary documentation was the book by Kernighan and Ritchie (this book would later be known colloquially as K&R). +This was known as "pre-ANSI C" or "K&R C" and dubbed "C78" for the purposes of naming this page, in the same style as the later "C89", described in ANSI X3.159-1989, or "C11", described in ISO/IEC 9899:2011. +"C78" was also the name given to historical C by the c78(7) manual page on FreeBSD 9.0. +

+

+"C78" is incompatible with "C89" and later standards. +This page documents those incompatibilities and relative oddities. +

+

+I have never done (and probably never will do) extensive programming in pre-ANSI C. +These incompatibilities were discovered out of Appendix C in The C Programming Language, 2nd ed. but are described further. +

+

8 and 9 as valid octal digits

+ +
+main()
+{
+	printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",
+		00, 01, 02, 03, 04, 05, 06, 07, 08, 09
+	);
+}
+
+

+On my machine, the GNU C compiler emits the following errors (this omits warnings) for the preceding piece of code: +

+
+snippet.c:4:49: error: invalid digit "8" in octal constant
+    4 |                 00, 01, 02, 03, 04, 05, 06, 07, 08, 09
+      |                                                 ^~
+snippet.c:4:53: error: invalid digit "9" in octal constant
+    4 |                 00, 01, 02, 03, 04, 05, 06, 07, 08, 09
+      |                                                     ^~
+
+

+This is because in C (both pre-standardization and post-ANSI) integer constants with leading zeroes are parsed as octal (base 8) numbers. +In pre-ANSI C, 8 and 9 were valid octal digits corresponding to 010(b8) and 011(b8). +This is documented in The C Programming Language, Appendix A, subsection 2.4.1, and evidenced by the preceding code block. +The following is output of the compiled program in UNIX V6 on an emulated PDP-11: +

+
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+
+

+This behavior exists within /usr/source/c/c0t.s, which is a PDP-11 assembler file that parses integer constants (as far as I can tell). +This file provides getnum, a function used in /usr/source/c/c00.c. +My theory is that this behavior is a side-effect of a very efficient but imperfect method of parsing integer constants from a file stream. +

+

+This wouldn't be a significant or even noticeable error; most programmers wouldn't use 8 or 9 as octal digits anyway. +If not for its documentation within The C Programming Language it would probably be an obscure bug. +This is also mentioned in The C Programming Language, 2nd ed. in Appendix C. +

+_subheader(`C1989') +_subheader(`C1999') + +_subheader(`C2011') +_subheader(`C2017') +_subheader(`C202x') diff --git a/wiki/unix/Makefile b/wiki/unix/Makefile new file mode 100644 index 0000000..b56c5ac --- /dev/null +++ b/wiki/unix/Makefile @@ -0,0 +1,33 @@ +SOURCES = \ + ../wiki.m4 \ + macros.m4 \ + foreword.m4 \ + unix.m4 \ + posix.m4 \ + acpi.m4 \ + C.m4 \ + culture.m4 \ + doas.m4 \ + editing.m4 \ + fonts.m4 \ + fstab.m4 \ + linux.m4 \ + m4.m4 \ + netbsd.m4 \ + manual.m4 \ + multitasking.m4 \ + pci.m4 \ + telepathy.m4 \ + wifi.m4 \ + volumes.m4 \ + X.m4 + +RM = rm -rf + +index.html: index.m4 $(SOURCES) + m4 index.m4 >index.html + +clean: + $(RM) index.html + +.PHONY: clean diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 new file mode 100644 index 0000000..438e1f3 --- /dev/null +++ b/wiki/unix/X.m4 @@ -0,0 +1,71 @@ +

X

+ +

+X is a graphical windowing system that can be used on Linux, FreeBSD, OpenBSD, NetBSD, and some proprietary operating systems as well. +X is not the only windowing system; twin(1) exists for windowed multitasking within a framebuffer and Wayland is another windowing system intended to replace X. +

+

+Some Linux software distributions have included scripts to automatically fetch and install an X server. +Alpine has setup-xorg-base, which adds the packages xorg-server, xf86-input-libinput, eudev, and mesa, and then enables the OpenRC services for udev. +

+ +

Mail

+

+The (formerly Mozilla) Thunderbird mail suite is a popular though maximal choice. +Claws Mail is a nice mail reader with a somewhat similar interface to Thunderbird but, in my experience, easier to use. +

+ +

Media

+

+mpv(1) and vlc(1) are good options. +

+ +

Server

+ +

X.org

+ +

+The de-facto standard X server is X.org (available on the web at _literal_link(https://www.X.org)). +NetBSD uses X.org as the default system X server. +

+

+Arch Linux's package repositories have https://archlinux.org/groups/x86_64/xorg/, +https://archlinux.org/groups/x86_64/xorg-apps/, +and https://archlinux.org/groups/x86_64/xorg-drivers/ package groups. +#pkgsrc has _code(`meta-pkgs/modular-xorg'). +

+
Failed to open /dev/input/event[number] (Permission denied)
+

You need to be a part of the input group to use X.org.

+
Failed to open /dev/tty[number] (Permission denied)
+

You need to be a part of the video group to use X.org.

+ +

Window Management

+

+It's possible to make X exec(3) a window manager at the end of initialization to ease the creation, deletion, and manipulation of windows. +Contrary to what is now popular belief, window managers are not necessary (thought they're extremely convenient compared to the lack of them). +

+

ctwm

+ + +

Web Browsing

+

TOR Browser

+

+TOR Browser is available through pkgsrc at security/tor-browser. +

+ +

xinit(1)

+

+startx(1) is usually included with xinit(1). +

+

+On Alpine Linux, xinit(1) is provided by the xinit package. +On Arch Linux, xinit(1) is provided by https://archlinux.org/packages/extra/x86_64/xorg-xinit/. +

diff --git a/wiki/unix/acpi.m4 b/wiki/unix/acpi.m4 new file mode 100644 index 0000000..e09b561 --- /dev/null +++ b/wiki/unix/acpi.m4 @@ -0,0 +1,13 @@ +_header(`ACPI') +

Advanced Configuration and Power Interface

+_bibliography(` +_bentr(`_link(`Advanced Configuration and Power Interface', `https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface') (Wikipedia)') +') +

+The Advanced Configuration and Power Interface, or ACPI, is the interface through which the operating system and client programs can control features in your computer's firmware. +Usually this is used with an ACPI client or opaquely controlled by the operating environment. +

+

+On Linux, see _ref(`#Linux#ACPI'). +On NetBSD, see _man(`acpi(4)'). +

diff --git a/wiki/unix/culture.m4 b/wiki/unix/culture.m4 new file mode 100644 index 0000000..9376aaa --- /dev/null +++ b/wiki/unix/culture.m4 @@ -0,0 +1,5 @@ +_header(`Culture') +_subheader(`Pronunciation') +_bibliography(` +_bentry(`_link(`Common pronunciations of Linux directories, commands, etc', `https://www.linux.org/threads/common-pronunciations-of-linux-directories-commands-etc.4445/')') +') diff --git a/wiki/unix/doas.m4 b/wiki/unix/doas.m4 new file mode 100644 index 0000000..51347dd --- /dev/null +++ b/wiki/unix/doas.m4 @@ -0,0 +1,24 @@ +_header(`doas(1)') +_bibliography(` +_bentr(`_link(`doas(1)', `http://man.openbsd.org/doas.1') (OpenBSD)') +_bentr(`_link(`doas.conf(5)', `http://man.openbsd.org/doas.conf.5') (OpenBSD)') +_bentr(`_link(`doas mastery', `https://flak.tedunangst.com/post/doas-mastery')') +') +

+doas(1) is a systems administration tool that performs a command as a different user. +doas(1) is configured in doas.conf(5). +

+

+For a pretty typical configuration, where users in the wheel group are meant to be administrating the system, the set-up session usually looks something like this: +

+
+$ su
+# ed /etc/doas.conf
+/etc/doas.conf: No such file or directory
+a
+permit :wheel
+.
+w
+14
+q
+
diff --git a/wiki/unix/editing.m4 b/wiki/unix/editing.m4 new file mode 100644 index 0000000..3748f9b --- /dev/null +++ b/wiki/unix/editing.m4 @@ -0,0 +1,13 @@ +_header(`Editing') +_subheader(`emacs') +

+Emacs ("editor macros") is a text editor with a very powerful Lisp interpreter included. +

+_subheader(`nano(1)') +

+_man(`nano(1)') is a text editor that's usually recommended for beginners because of its lack of edit modes and its similar controls to popular editors from outside of UNIX. +

+_subheader(`ne(1)') +

+_man(`ne(1)') is similar to _man(`nano(1)') but has a different featureset. +

diff --git a/wiki/unix/fonts.m4 b/wiki/unix/fonts.m4 new file mode 100644 index 0000000..2a7d932 --- /dev/null +++ b/wiki/unix/fonts.m4 @@ -0,0 +1 @@ +_header(`Fonts') diff --git a/wiki/unix/foreword.m4 b/wiki/unix/foreword.m4 new file mode 100644 index 0000000..d416b5e --- /dev/null +++ b/wiki/unix/foreword.m4 @@ -0,0 +1,5 @@ +

Foreword

+

+This wiki page is the work of many Anonymous authors. +Please support our type of Internet denizen by getting into trouble. +

diff --git a/wiki/unix/fstab.m4 b/wiki/unix/fstab.m4 new file mode 100644 index 0000000..65d4bc3 --- /dev/null +++ b/wiki/unix/fstab.m4 @@ -0,0 +1,4 @@ +_header(`fstab') +

See _man(`fstab(5)').

+

postmarketOS requires that the _code(`localmount') OpenRC service be enabled for the system to read _man(`fstab(5)'). +

Arch and Artix have fstab generators at _man(`genfstab(8)') and _man(`fstabgen(8)') respectively in their installation scripts.

diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 new file mode 100644 index 0000000..2031e27 --- /dev/null +++ b/wiki/unix/index.m4 @@ -0,0 +1,59 @@ + + + + + + + + + + +UNIX - wiki.murderu.us + + +include(`../wiki.m4') +include(`macros.m4') +

wiki.murderu.us/unix

+ +include(`foreword.m4') + +include(`unix.m4') + +include(`posix.m4') + +include(`acpi.m4') + +include(`C.m4') + +include(`culture.m4') + +include(`doas.m4') + +include(`editing.m4') + +include(`fonts.m4') + +include(`fstab.m4') + +include(`linux.m4') + +include(`m4.m4') + +include(`netbsd.m4') + +include(`manual.m4') + +include(`multitasking.m4') + +include(`pci.m4') + +include(`telepathy.m4') + +include(`wifi.m4') + +include(`volumes.m4') + +include(`X.m4') + + + diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 new file mode 100644 index 0000000..70f15dd --- /dev/null +++ b/wiki/unix/linux.m4 @@ -0,0 +1,229 @@ +_header(`Linux') + + +

ACPI

+_bibliography(` +_bentr(`_ref(`#ACPI')') +') +

+logind (as part of SystemD), elogind, acpid, and many desktop environments can manage ACPI events automatically, and sometimes this is configured by default as part of a Linux software distribution. +

+_subsubheader(`acpid(8)') +_bibliography(` +_bentr(`_link(`acpid', `https://sourceforge.net/projects/acpid2/')') +') +

+_man(`acpid(8)') is a daemon that can automatically manage ACPI events on Linux. +

+ +_subheader(`Audio') +

+Most audio servers recommend that they be run in userspace with user privileges, with PulseAudio going so far as to exiting when run as root without additional configuration. +The Alpine wiki currently recommends _man(`pipewire(1)'), with postmarketOS, which is based on Alpine, coming pre-configured with PipeWire. +PipeWire is relatively new and the typical audio server used is PulseAudio; Debian and many popular Debian-based distributions come pre-configured with PulseAudio. +

+_subsubheader(`ALSA') + +

+The Alpine wiki ("Adding sound") says to install _code(`alsa-conf'), _code(`alsa-lib'), and _code(`alsa-utils'), +add yourself to the _code(`audio') group, and then do some more configuration that I've never needed to do: +Use _man(`alsamixer(1)') to find a working sound card (press _code(`F6') from the first screen ALSAMixer presents) +and edit _code(`/usr/share/alsa/alsa.conf') and change _code(`defaults.ctl.card') and _code(`defaults.pcm.card') to the sound card that works. +

+

+The Alpine wiki doesn't mention this but you'll need to enable the _code(`alsa') OpenRC service and either start it or reboot. +I also installed _code(`gstreamer') but I don't know why. +

+

+ALSA is clunky, many people prefer to use a frontend such as Pipewire or PulseAudio that exposes its own interface while remaining compatible with ALSA. +

+

OSS

+

+Deprecated, unfortunately. +

+

PipeWire

+ +

+Provided by the _code(`pipewire') package on Alpine. +

+
+RTKit error: org.freedesktop.DBus.Error.ServiceUnknown
+
+

+This means you need _code(`rtkit') installed and running through your initialization system. +

+

PulseAudio

+

+On Alpine you'll need the _code(`pulseaudio'), _code(`pulseaudio-alsa'), and _code(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. +Start _man(`pulseaudio(1)') when you want audio, ideally in your _code(`.xinitrc'). +

+ +_subheader(`Distributions') +

+Linux is usually obtained as part of a software distribution put together to form a useable operating system. +

+

Alpine

+ +
Always install manual pages
+

+Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. +To always install doc packages with program packages, _code(`apk add docs'). +

+

Arch

+

+Arch is known for using the latest versions of programs, which has given it an undeserved reputation of instability. +

+
Bootstrapping
+

+Use _man(`pacstrap(8)'). +

+

+At a minimum you need the _code(`base') package. +Select a kernel and install the corresponding package; _code(`linux'), _code(`linux-lts'), or another Linux configuration or fork. +The Arch wiki says you need to install _code(`linux-firmware'), this isn't strictly necessary but it is recommended. +Install _code(`base-devel') if you plan on using the AUR or if you don't know what the AUR is yet. +

+

+It's also a good idea to install any utilities you'll need on the bootstrapped system. +Text editors, network managers or utilities, and other administration tools, for example. +Manual utilities such as _code(`man-db') and others would also be useful. +

+
Ubiquitous packages missing
+

From the annals of my notes, 2021-06-04:

+
+Had an issue with pacman missing some ubiquitous packages (esr's 'ascii', xorg-xev, etc).
+This fixed it. I don't really know why - maybe some issues with my repos?
+This was cleanly installed artix-openrc.
+
+[5:46 PM] Bassman Leyla: So what I did is I went into /etc/pacman.d/mirrorlist-arch and uncommented a local mirror
+[5:46 PM] Bassman Leyla: Then I appended a config block a package maintainer gave me onto /etc/pacman.conf
+[5:46 PM] Bassman Leyla: I'll paste it in
+[5:47 PM] Bassman Leyla:
+'''
+#
+# ARCHLINUX
+#
+
+#[testing]
+#Include = /etc/pacman.d/mirrorlist-arch
+
+[extra]
+Include = /etc/pacman.d/mirrorlist-arch
+
+#[community-testing]
+#Include = /etc/pacman.d/mirrorlist-arch
+
+[community]
+Include = /etc/pacman.d/mirrorlist-arch
+
+#[multilib-testing]
+#Include = /etc/pacman.d/mirrorlist-arch
+
+#[multilib]
+#Include = /etc/pacman.d/mirrorlist-arch
+'''
+
+

Artix

+ +

+Artix is a Linux software distribution based on Arch that doesn't mandate SystemD as its initialization system. +

+
Bootstrapping
+

+This process differs from Arch's bootstrapping process. +Artix uses _man(`basestrap(8)') rather than _man(`pacstrap(8)'); +you need to select the initialization you want to use: _code(`66'), _code(`dinit'), _code(`openrc'), _code(`runit'), or _code(`s6-base'), as a package separate from _code(`base'); +and Artix's official wiki says you need to install the appropriate _link(`#logind', `_code(`elogind')') package (_code(`elogind-[initialization system]') e.g. _code(`elogind-66')) but like _code(`linux-firmware') though it is helpful it isn't strictly necessary. +

+ +

Debian

+ +

+Debian is known for its stability and longevity. +Debian uses SystemD as its initialization system, the GNU core utilities, and dpkg and apt for package management. +

+

+While it's possible to use non-Linux kernels within Debian, it's uncommon and the only non-Linux option currently maintained is the GNU HURD microkernel. +

+ +

postmarketOS

+

+postmarketOS is an Alpine-based Linux software distribution that makes configuring and using Linux easy on mobile devices. +

+
Random MAC address generation on Wifi
+

+By default, postmarketOS will generate a random software MAC address when connecting to a new WLAN network. +You can disable this by adding a NetworkManager rule. +In _code(`/etc/NetworkManager/conf.d/') you can make a file with any name that has the following: +

+
+[device]
+wifi.scan-rand-mac-address=no
+
+

+On a live system you can then _code(`rc-service networkmanager restart') to restart NetworkManager and have it load the new configuration. +

+ +

Ubuntu

+ +

+Ubuntu is a derivative of Debian. +

+ +_subheader(`logind') + +

+logind (_code(`systemd-logind.service(8)')) is a component of SystemD that exposes information about active users on the system via the org.freedesktop.login1 D-Bus interface which is used by the popular desktop environments GNOME and KDE. +It also handles _ref(`#ACPI') events. +It can be configured in _code(`logind.conf(5)'). +

+

+On systems without SystemD and with conflicting software, _code(`elogind(8)') may be used. +

+ +_subheader(`util-linux') + +

+_code(`util-linux') is distributed on all popular Linux distributions and contains utilities users may expect to be already present on their systems, like _man(`more(1)') or _man(`hexdump(1)'). +

+ +_subheader(`Xenia') +_bibliography(` +_bentr(`_link(`A hacker fox!', `http://yerf.metafur.org/date/1996-07-14')') +') +

+Xenia was an entry for the Linux logo competition which Tux eventually won. +

diff --git a/wiki/unix/m4.m4 b/wiki/unix/m4.m4 new file mode 100644 index 0000000..3990a49 --- /dev/null +++ b/wiki/unix/m4.m4 @@ -0,0 +1,4 @@ +

m4

+ diff --git a/wiki/unix/macros.m4 b/wiki/unix/macros.m4 new file mode 100644 index 0000000..a1e28e2 --- /dev/null +++ b/wiki/unix/macros.m4 @@ -0,0 +1 @@ +define(`_man', `_cite($1)')dnl diff --git a/wiki/unix/manual.m4 b/wiki/unix/manual.m4 new file mode 100644 index 0000000..8a0660d --- /dev/null +++ b/wiki/unix/manual.m4 @@ -0,0 +1,11 @@ +

On-line manual

+ +

+In the context of POSIX and UNIX-like systems, an "on-line" manual is a manual that is accessible via the computer system it documents. +Particularly, the man(1) utility and the manual "pages" it references. +

+

+Alpine by default uses mandoc. +

diff --git a/wiki/unix/multitasking.m4 b/wiki/unix/multitasking.m4 new file mode 100644 index 0000000..4fa9b73 --- /dev/null +++ b/wiki/unix/multitasking.m4 @@ -0,0 +1,14 @@ +_header(`Multitasking') +_subheader(`Task management') +_subsubheader(`htop(1)') +_bibliography(` +_bentry(`_link(`htop', `https://en.wikipedia.org/wiki/Htop') (Wikipedia)') +_bentry(`_link(`htop - an interactive process viewer', `https://htop.dev/')') +') +

+_man(`htop(1)') is a featureful alternative to _man(`top(1)'). +

+_subsubheader(`top(1)') +

+Busybox and NetBSD provide implementations of _code(`top(1)'), an interactive in-terminal task manager. +

diff --git a/wiki/unix/netbsd.m4 b/wiki/unix/netbsd.m4 new file mode 100644 index 0000000..34a3e48 --- /dev/null +++ b/wiki/unix/netbsd.m4 @@ -0,0 +1,66 @@ +_header(`NetBSD') + +

Battery

+

envstat(1) can show the current battery status.

+

Mounting filesystems

+
    +
  1. Connect the drive with the filesystem you want to access.
  2. +
  3. Use dmesg(8) to determine the location in /dev/ of the disk.
  4. +
  5. disklabel(8) the drive to determine which partition on the disk you want to access (disklabel /dev/disk)
  6. +
  7. mount(8) the filesystem.
  8. +
  9. umount(8) the filesystem when done using it.
  10. +
+

ext4

+

+Install filesystems/fuse and filesystems/fuse-ext2. +disklabel(8) will list ext4 filesystems as of type "Linux Ext2". +Use fuse-ext2(1) to mount the filesystem. +

+

+fuse-ext2(1) is spotty in places and may not work correctly. +

+

exFAT

+

+Install filesystems/fuse and filesystems/fuse-exfat. +Use mount.exfat to mount the filesystem (the manual page for which is mount.exfat-fuse(8)). +

+

Fix SSL certificate problem: unable to get local issuer certificate

+ +

Install security/mozilla-rootcerts-openssl.

+

+Do not use SSL workarounds like (in the case of git) GIT_SSL_NO_VERIFY. +These leave your system open to man-in-the-middle attacks. +

+

OpenVPN

+ +

+If using Mullvad, you have to change the shebang on update-resolv-conf(8) +(a standalone Bash script included in the OpenVPN configurations from Mullvad, intended to be placed in /etc/openvpn/) +from #!/bin/bash to _code(`#!/usr/pkg/bin/bash') if using Bash from pkgsrc or another appropriate location if using a different package manager. +

+

rc.d

+ +

System logging

+ +

See syslogd(8) and syslog.conf(5), which pertain to system logging.

+

Setting DDB_ONPANIC (see options(4) and sysctl(8)) will save a crash dump at /var/crash on kernel panic. +

Upgrading

+ diff --git a/wiki/unix/pci.m4 b/wiki/unix/pci.m4 new file mode 100644 index 0000000..94d25d6 --- /dev/null +++ b/wiki/unix/pci.m4 @@ -0,0 +1,15 @@ +

PCI Utilities

+ +

+Available as sysutils/pciutils from pkgsrc. +Supplies lspci(8), setpci(8), and update-pciids(8). +

+

+update-pciids(8) is not part of the pciutils package in Alpine Linux repositories. +

+

+NetBSD includes pcictl(8) which offers similar functionality. +pcictl pci0 list outputs roughly the same information as lspci(8), though lspci(8) may offer slightly more detailed information. +

diff --git a/wiki/unix/pkg-config.m4 b/wiki/unix/pkg-config.m4 new file mode 100644 index 0000000..41ac434 --- /dev/null +++ b/wiki/unix/pkg-config.m4 @@ -0,0 +1,10 @@ +

pkg-config

+ +

+pkg-config provides a way to link to libraries independent of a particular system's directory heirarchy. +

+

+The relevant manual pages on NetBSD are pkgconf(1), pc(5), and pkg.m4(7). +

diff --git a/wiki/unix/pkgsrc.m4 b/wiki/unix/pkgsrc.m4 new file mode 100644 index 0000000..82947b1 --- /dev/null +++ b/wiki/unix/pkgsrc.m4 @@ -0,0 +1,17 @@ +

pkgsrc

+ +

pkg_add: Conflicting PLIST

+ +

Try pkg_admin(1).

+

Upgrading packages

+ +

+See pkgtools/pkg_rolling_replace. +

diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 new file mode 100644 index 0000000..e47b56e --- /dev/null +++ b/wiki/unix/posix.m4 @@ -0,0 +1,239 @@ +_header(`POSIX') + + +_header(`as(1)') + +

GAS

+ + +_header(`cat(1)') + +

+_man(`cat(1)') is a program that exists to catenate files; to "join" one file at its end to another at its start. +

+

+_man(`cat(1)') was introduced in UNIX's first edition to succeed _man(`pr(1)'), which prints the contents of a single file to the screen. +Most use of _man(`cat(1)') is similar; it's often introduced to beginners as a means to print the contents of a file to the screen, which is why many implementations include options that modify output to make it easier to read on a display. +POSIX requires only _code(`-u') to be implemented, which guarantees output is unbuffered - on some systems output is buffered in 512-byte blocks, which is also the default of _man(`dd(1)'), though most current implementations (busybox, GNU coreutils) don't buffer output regardless. +Various implementations include _code(`-s') to strip duplicate blank lines (cat "$@" | sed '/^\s*$/d' would also work), +_code(`-n') to number lines (to which Pike and Kernighan offered awk '{ print NR "\t" $0 }' "$@" as a replacement) +and _code(`-b') to number non-blank lines (both cases for which _man(`nl(1)') was later made), +and _code(`-v') to mark invisible characters. +

+

+Additions to _code(`man(1)') are controversial; Rob Pike and Brian Kernighan explain this in _italic(`Program Design in the UNIX Environment'), the paper that accompanied Rob Pike's presentation _italic(`UNIX Style, or cat -v Considered Harmful') at the 1983 USENIX Summer Conference. +

+ +

+The following shell script is a POSIX-compliant implementation of _man(`cat(1)'): +

+ +
+#!/bin/sh
+set -e
+
+DD=dd
+
+# usage with 0 arguments - print standard input to standard output
+if test -z "$1"; then
+	dd 2>/dev/null
+	exit $?
+fi
+
+while test -n "$1"; do
+	# Parse options
+
+	if test -z "$DONT_PARSE_ARGS"
+		then case "$1" in
+		--)
+			DONT_PARSE_ARGS=1
+			shift; continue; ;;
+		-u)
+			DD="dd bs=1"
+			shift; continue; ;;
+		-)
+			$DD </dev/stdin 2>/dev/null
+			shift; continue; ;;
+		esac
+	fi
+
+	# Print input to output.
+	$DD <"$1" 2>/dev/null
+
+	shift
+done
+
+exit 0
+
+ +_subheader(`echo(1)') + +

+Don't use _man(`echo(1)'), use _man(`printf(1)'). +_man(`printf(1)') simulates the _man(`printf(3)') function in the C standard I/O library which has no significant variations, whereas the functionality of _man(`echo(1)') can vary between vendors. +

+

+_code(`printf "%s" "$*"') does not work as _man(`echo(1)') though it's been said to do so (including by this page). +

+

+The following is an implementation of _man(`echo(1)') in the C programming language, using the standard library. +

+
+#include <stdio.h>
+int main(int argc, char *argv[]) {
+	int i;
+	for(i = 1; ; ) {
+		if(i >= argc)
+			break;
+		printf("%s", argv[i]);
+		++i;    
+		if(i == argc)
+			putchar('\n');
+		else
+			putchar(' ');
+	}
+	return 0;
+}
+
+

+The following is an implementation of _man(`echo(1)') in shell. +

+
+while :; do
+	if test -z "$1"
+		then break
+	fi
+	printf "%s" "$1"
+	`shift'
+	if test -z "$1"; then
+		printf "\n"
+		break
+	else
+		printf " "
+	fi
+done
+
+ +_subheader(`find(1)') + + +_subheader(`echo(1)') + +

+A particularly shoddy attempt at _man(`ed(1)') is provided by _code(`busybox'). +A traditional _man(`ed(1)') implementation is in plan9ports. +I'm pretty sure some later UNIX-based OSes doubled the _man(`ed(1)') buffers, there's pretty much no downside to doing so in the modern era but it should be very easy to do yourself if it hasn't already been done (just double some of the array sizes in the beginning of _code(`ed.c')). +

+ +_subheader(`make(1)') +

+_man(`make(1)') in modern times is fragmented into the GNU version gmake and the BSD version bmake. +Complex Makefiles may not be useable in both. +Usually Linux systems have GNU Make as _command(`make') and BSD Make as _command(`bmake'), +and BSD systems to have BSD Make as _command(`make') and GNU Make as _command(`gmake'); +the native Make is simply _command(`make') and the external Make gets a name designating its source. +

+ +_subheader(`mkfifo(1)') + + +_subheader(`true(1)') + +

+_man(`true(1)') is a tool that only quits silently with an exit status of 0. +Similarly, _man(`false(1)') is a tool that only quits silently with an exit status of 1. +Recognizing arguments, printing to standard output, reading from standard input, or otherwise exiting with any other status of 0, is a violation of the POSIX specification for _man(`true(1)'). +These utilities find use in shell scripting, which, though extremely relevant to these utilities, is beyond the scope of this article. +

+

+Because _man(`true(1)')'s required functionality is so simple a POSIX-compliant implementation is a one-liner in most languages, so long as you're willing to make an exception in your code styling. +For example, in C: +

+
+int main(void) { return 0; }
+
+

+Because executing an empty shellscript file will in most shells do nothing and return an exit status of 0, technically an empty shellscript file is a POSIX-compliant _man(`true(1)') implementation in 0 bytes. +This was the _man(`true(1)') implementation on early versions of UNIX, including Research UNIX, System V, and Sun's Solaris, according to both Rob Pike and John Chambers. +A more explicit implementation also exists in POSIX shell: +

+
+#!/bin/sh
+exit 0
+
+

+This happens to be nearly identical in source to the implementation used by NetBSD. +

+

+Python has the same 0 byte _man(`true(1)') implementation feature as most shells. +Here's _man(`false(1)') in Python rather than _man(`true(1)') to demonstrate how exiting with an arbitrary exit status can be done: +

+
+import sys
+sys.exit(1)
+
+

+In some shells, _man(`true(1)') is a shell built-in command, so running _program(`true') will run the shell author's implementation of _man(`true(1)') rather than the system implementation. +

+

+GNU _man(`true(1)'), from the GNU coreutils, is well known for being a maximalist implementation - it's eighty lines long and directly includes four C header files. +Their _code(`true.c') is 2.3 kilobytes and parses the arguments _code(`--help') and _code(`--version') (only if either are the first argument to the program). +The GNU coreutils implementation of _man(`true(1)') is not POSIX compliant. +

+ +_subheader(`vi(1)') + +

+Unlike _code(`busybox')'s _man(`ed(1)') implementation, its _man(`vi(1)') is very useable. +_man(`vim(1)') is a popular re-implementation of _man(`vi(1)'). +

diff --git a/wiki/unix/telepathy.m4 b/wiki/unix/telepathy.m4 new file mode 100644 index 0000000..b977172 --- /dev/null +++ b/wiki/unix/telepathy.m4 @@ -0,0 +1,16 @@ +_header(`Telepathy') +_subheader(`SSH') +

Secure SHell

+_subsubheader(`Keys') + +

SSH keys are typically stored in $HOME/.ssh.

+

Typically, the public key's filename will be suffixed with .pub, while the private key will not.

+

You can generate an SSH key with ssh-keygen(1). Currently the preferred implementation is openssh-keygen, part of the OpenSSH suite.

+

+Microsoft GitHub documentation suggests a user create a key with ssh-keygen -t ed25519 -C "[e-mail address]". +This generates an Ed25519 SSH key with an e-mail address in the key comment. +

diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 new file mode 100644 index 0000000..0df0507 --- /dev/null +++ b/wiki/unix/unix.m4 @@ -0,0 +1,5 @@ +

UNIX

+ diff --git a/wiki/unix/volumes.m4 b/wiki/unix/volumes.m4 new file mode 100644 index 0000000..17138de --- /dev/null +++ b/wiki/unix/volumes.m4 @@ -0,0 +1,84 @@ +

Partitions and filesystems

+ +

+Don't use partitioners included with OS media where the same job can be done by GParted (which has live media available) or another good general-purpose partitioner. +BSDs and Plan 9 are exceptions to this rule due to their exotic partitioning systems. +Using utilities from a shell or TUIs does not make you "cooler" than someone who needs a GUI for partitioning; in some cases, messing up partitioning can have serious consequences, so it's always nice to have some idiot-proofing. +I always partition my disks with the GParted live media. +

+

+You should do your own research on how you should partition your disks. +I personally use separate partitions for /boot, /home, /, and swap. +Your needs will vary. +

+

+Please note that a separate boot partition is mandatory if you intend to boot via (U)EFI. +Check out the linked pages in the "See also" section. +

+

+Use mkfs(8) for creating filesystems and mount(8) for mounting partitions' filesystems. +

+

gpart

+ +

+Available as sysutils/gpart in pkgsrc. +

+

+gpart(8) is a tool that scans a file (or block device presented as a file) for drive partitions regardless of any table present on the medium. +

+

LUKS

+ +

+e2fsprogs is needed for the dm_mod kernel module used for LUKS partition decryption. +

+

+To format a partition to a LUKS volume, determine the physical block device location for that partition and run cryptsetup luksFormat [partition]. +The passphrase used can be changed or removed after creation. +

+

+To open a LUKS volume, use cryptsetup luksOpen [partition] [name]. +This name is the name the decrypted block device location will take in /dev/mapper/. +

+

+Before the decrypted block device has a filesystem it'll just be cleared space - format as normal but use the decrypted block device location. +

+

+To mount a partition in an opened LUKS volume, use mount(8) as normal, just with the decrypted block device location. +

+

+To close an open LUKS volume, umount(8) any mapped and mounted partitions from the volume and cryptsetup luksClose [name]. +

+

+To make the LUKS partition openable via keyfile, first make a keyfile (dd if=/dev/urandom of=/root/keyfile bs=1024 count=4 seems to work), and optionally make it readable by root only (chmod 0400 [keyfile]). +Then add the keyfile to the partition's LUKS header with cryptsetup luksAddKey [physical partition block device] [keyfile]. +

+

dm-crypt

+

+dm-crypt is a service that automatically mounts LUKS volumes at boot. +

+

+On most OpenRC-initialized distributions, the cryptsetup-openrc package provides dmcrypt. +Make sure that service is added to runlevel boot. +

+

+Configuration is in /etc/conf.d/dmcrypt and further configuration should be done in fstab. +dm-crypt will need the UUID of the physical block device while fstab (if being configured with UUIDs will need the UUID of the decrypted block device in the device mapper). +

+

TestDisk

+ diff --git a/wiki/unix/wifi.m4 b/wiki/unix/wifi.m4 new file mode 100644 index 0000000..9c24d19 --- /dev/null +++ b/wiki/unix/wifi.m4 @@ -0,0 +1,19 @@ +

WiFi

+

wpa_supplicant

+

+wpa_supplicant(1) is usually good enough for establishing WiFi connections. +

+

+Here's an example configuration for a simple WPA-2 PSK access point. +

+
+network={
+	ssid="My SSID"
+	key_mgmt=WPA-PSK
+	scan_ssid=1
+	psk="My password"
+}
+
+

+See wpa_supplicant.conf(5). +

diff --git a/wiki/wiki.m4 b/wiki/wiki.m4 new file mode 100644 index 0000000..960b7a2 --- /dev/null +++ b/wiki/wiki.m4 @@ -0,0 +1,11 @@ +changecom(`')dnl +define(`_bibliography', `')dnl +define(`_bibliography_entry', `
  • $1
  • ')dnl +define(`_bentr', `_bibliography_entry($1)')dnl +define(`_cite', `$1')dnl +define(`_code', `$1')dnl +define(`_header', `

    $1

    ')dnl +define(`_subheader', `

    $1

    ')dnl +define(`_subsubheader', `

    $1

    ')dnl +define(`_link', `$1')dnl +define(`_ref', `_link(`$1', `$1')')dnl From 1e93814f9f470147e763b1531db2289cde509878 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 13:49:56 -0500 Subject: [PATCH 02/71] sourcehut build system --- wiki/.build.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 wiki/.build.yml diff --git a/wiki/.build.yml b/wiki/.build.yml new file mode 100644 index 0000000..e7d30ca --- /dev/null +++ b/wiki/.build.yml @@ -0,0 +1,13 @@ +image: alpine/edge +oauth: pages.sr.ht/PAGES:RW +packages: +- hut +- m4 +tasks: +- package: | + cd wiki + make + tar cvz --exclude .git --exclude '*.m4' . >../site.tar.gz + ls -l ../site.tar.gz +- upload: | + hut pages publish -d wiki.murderu.us site.tar.gz From b5b59c3698e1a4cbf1f43a0428ece4b9061262d8 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 13:53:54 -0500 Subject: [PATCH 03/71] Make --- wiki/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 wiki/Makefile diff --git a/wiki/Makefile b/wiki/Makefile new file mode 100644 index 0000000..772e1c4 --- /dev/null +++ b/wiki/Makefile @@ -0,0 +1,6 @@ +all: unix/index.html +unix/index.html: unix/* + $(MAKE) -C unix +clean: + $(MAKE) -C unix clean +.PHONY: all clean From 80de47d81f0cda84113de423b09cfb25c30798cd Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 14:12:20 -0500 Subject: [PATCH 04/71] clarify guidelines --- wiki/css/stylesheet.css | 1 + wiki/index.html | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/wiki/css/stylesheet.css b/wiki/css/stylesheet.css index 770d526..2f63adb 100644 --- a/wiki/css/stylesheet.css +++ b/wiki/css/stylesheet.css @@ -5,3 +5,4 @@ body{ color: #EFECFC; } h1, h2, h3{ font-style: italic; } +h1{ text-transform: uppercase; } diff --git a/wiki/index.html b/wiki/index.html index 6cbbd24..98f2fd3 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -8,12 +8,20 @@ -murderu.us +the murderu.us wiki -

    WIKI.MURDERU.US

    +

    wiki.murderu.us

    +

    Contributing

    +
      +
    • All contributions are public domain and anyone may steal, pilfer, and otherwise plaigarize from this Wiki.
    • +
    • However, contributions to this Wiki must be original or properly quoted and cited from other sources.
    • +
    • Original research is encouraged and this Wiki serves as either a primary or secondary source when appropriate.
    • +
    • Articles are written with semantic markup in m4 http://www.bitsavers.org/pdf/bellLabs/unix/UNIX_ProgrammersManual_Nov71.pdf
    • -
    +_header(`Manuals') +_bibliography(` +_bentr(`http://www.bitsavers.org/pdf/bellLabs/unix/UNIX_ProgrammersManual_Nov71.pdf') +_bentr(`_link(`The Linux man-pages project', `https://www.kernel.org/doc/man-pages/')') +')

    -In the context of POSIX and UNIX-like systems, an "on-line" manual is a manual that is accessible via the computer system it documents. -Particularly, the man(1) utility and the manual "pages" it references. +One of UNIX's innovations was its inclusion of a detailed, useful manual accessible on-system, accessible via _man(`man(1)').

    Alpine by default uses mandoc. diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index e47b56e..9be1176 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -1,7 +1,10 @@ _header(`POSIX') -

      -
    • _link(`POSIX', `https://en.wikipedia.org/wiki/POSIX') (Wikipedia)
    • -
    +_bibliography(` +_bentr(`_link(`IEEE Std 1003.1-2017', `https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/contents.html')') +_bentr(`_link(`The origin of the name POSIX.', `https://stallman.org/articles/posix.html')') +_bentr(`_link(`POSIX', `https://en.wikipedia.org/wiki/POSIX') (Wikipedia)') +_bentr(`_link(`POSIX™ 1003.1 Frequently Asked Questions', `https://www.opengroup.org/austin/papers/posix_faq.html')') +') _header(`as(1)')

    -The de-facto standard X server is X.org (available on the web at _literal_link(https://www.X.org)). +The de-facto standard X server is X.org (available on the web at _ref(https://www.X.org)). NetBSD uses X.org as the default system X server.

    diff --git a/wiki/unix/culture.m4 b/wiki/unix/culture.m4 index 9376aaa..762a6bf 100644 --- a/wiki/unix/culture.m4 +++ b/wiki/unix/culture.m4 @@ -1,5 +1,5 @@ _header(`Culture') _subheader(`Pronunciation') _bibliography(` -_bentry(`_link(`Common pronunciations of Linux directories, commands, etc', `https://www.linux.org/threads/common-pronunciations-of-linux-directories-commands-etc.4445/')') +_bentr(`_link(`Common pronunciations of Linux directories, commands, etc', `https://www.linux.org/threads/common-pronunciations-of-linux-directories-commands-etc.4445/')') ') diff --git a/wiki/unix/foreword.m4 b/wiki/unix/foreword.m4 deleted file mode 100644 index d416b5e..0000000 --- a/wiki/unix/foreword.m4 +++ /dev/null @@ -1,5 +0,0 @@ -

    Foreword

    -

    -This wiki page is the work of many Anonymous authors. -Please support our type of Internet denizen by getting into trouble. -

    diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index 2031e27..d66b8b6 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -15,8 +15,6 @@ include(`../wiki.m4') include(`macros.m4')

    wiki.murderu.us/unix

    -include(`foreword.m4') - include(`unix.m4') include(`posix.m4') diff --git a/wiki/unix/macros.m4 b/wiki/unix/macros.m4 index d35fe66..3986eb1 100644 --- a/wiki/unix/macros.m4 +++ b/wiki/unix/macros.m4 @@ -1,3 +1,4 @@ +define(`_command', `_code($1)')dnl define(`_man', `_cite($1)')dnl define(`_program', `_code($1)')dnl define(`_package', `_code($1)')dnl diff --git a/wiki/unix/manual.m4 b/wiki/unix/manual.m4 index 3d687c9..01afa96 100644 --- a/wiki/unix/manual.m4 +++ b/wiki/unix/manual.m4 @@ -1,6 +1,5 @@ _header(`Manuals') _bibliography(` -_bentr(`http://www.bitsavers.org/pdf/bellLabs/unix/UNIX_ProgrammersManual_Nov71.pdf') _bentr(`_link(`The Linux man-pages project', `https://www.kernel.org/doc/man-pages/')') ')

    diff --git a/wiki/unix/multitasking.m4 b/wiki/unix/multitasking.m4 index 4fa9b73..141e3eb 100644 --- a/wiki/unix/multitasking.m4 +++ b/wiki/unix/multitasking.m4 @@ -2,8 +2,8 @@ _header(`Multitasking') _subheader(`Task management') _subsubheader(`htop(1)') _bibliography(` -_bentry(`_link(`htop', `https://en.wikipedia.org/wiki/Htop') (Wikipedia)') -_bentry(`_link(`htop - an interactive process viewer', `https://htop.dev/')') +_bentr(`_link(`htop', `https://en.wikipedia.org/wiki/Htop') (Wikipedia)') +_bentr(`_link(`htop - an interactive process viewer', `https://htop.dev/')') ')

    _man(`htop(1)') is a featureful alternative to _man(`top(1)'). diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index 9be1176..1cae270 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -6,37 +6,37 @@ _bentr(`_link(`POSIX', `https://en.wikipedia.org/wiki/POSIX') (Wikipedia)') _bentr(`_link(`POSIX™ 1003.1 Frequently Asked Questions', `https://www.opengroup.org/austin/papers/posix_faq.html')') ') -_header(`as(1)') -

      -
    • _link(`as', `https://en.wikipedia.org/wiki/As_(Unix)') (Wikipedia)
    • -
    • _link(`UNIX Assembler Reference Manual', `https://www.tom-yam.or.jp/2238/ref/as.pdf')
    • -
    • _link(`UNIX Operating System Porting Experiences', `https://www.bell-labs.com/usr/dmr/www/otherports/newp.pdf')
    • -
    -

    GAS

    -
      -
    • _link(`What I Dislike About GAS', `http://x86asm.net/articles/what-i-dislike-about-gas/')
    • -
    +_subheader(`as(1)') +_bibliography(` +_bentr(`_link(`as', `https://en.wikipedia.org/wiki/As_(Unix)') (Wikipedia)') +_bentr(`_link(`UNIX Assembler Reference Manual', `https://www.tom-yam.or.jp/2238/ref/as.pdf')') +_bentr(`_link(`UNIX Operating System Porting Experiences', `https://www.bell-labs.com/usr/dmr/www/otherports/newp.pdf')') +') +_subsubheader(`GAS') +_bibliography(` +_bentr(`_link(`What I Dislike About GAS', `http://x86asm.net/articles/what-i-dislike-about-gas/')') +') -_header(`cat(1)') -
      -
    • _link(`4.4BSD-Lite2', `https://en.wikipedia.org/wiki/Berkeley_Software_Distribution')/_link(`usr/src/bin/cat/cat.c', `https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/bin/cat/cat.c')
    • -
    • _link(`busybox', `https://git.busybox.net/busybox/')/_link(`coreutils/cat.c', `https://git.busybox.net/busybox/tree/coreutils/cat.c')
    • -
    • _link(`cat(1)', `http://man.cat-v.org/unix-1st/1/cat') (UNIX v1)
    • -
    • _link(`cat(1p)', `https://www.unix.com/man-page/posix/1posix/cat/')
    • -
    • _link(`UNIX Style, or cat -v Considered Harmful', `http://harmful.cat-v.org/cat-v/')
    • -
    • _link(`dd(1p)', `https://www.unix.com/man-page/posix/1posix/dd/')
    • -
    • _link(`FreeBSD', `https://www.freebsd.org/')/_link(`bin/cat/cat.c', `https://github.com/freebsd/freebsd-src/blob/main/bin/cat/cat.c')
    • -
    • _link(`GNU coreutils', `https://www.gnu.org/software/coreutils/')/_link(`src/cat.c', `https://git.savannah.gnu.org/cgit/coreutils.git/tree/src/cat.c')
    • -
    • _link(`The history of why cat -v is considered harmful', `https://lyngvaer.no/log/cat-v-history')
    • -
    • _link(`NetBSD', `https://www.netbsd.org/')/_link(`bin/cat/cat.c', `https://github.com/NetBSD/src/blob/trunk/bin/cat/cat.c')
    • -
    • _link(`Plan 9 from Bell Labs Fourth Edition', `https://9p.io/plan9/')/_link(`sys/src/cmd/cat.c', `https://github.com/plan9foundation/plan9/blob/main/sys/src/cmd/cat.c')
    • -
    • _link(`Program Design in the UNIX Environment', `https://harmful.cat-v.org/cat-v/unix_prog_design.pdf')
    • -
    • _link(`A Research Unix Reader', `https://www.cs.dartmouth.edu/~doug/reader.pdf')
    • -
    • _link(`UNIX v7', `https://en.wikipedia.org/wiki/Unix')/_link(`usr/src/cmd/cat.c', `https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/cat.c')
    • -
    • Thanks to Miles and WeedSmokingJew for help with content.
    • -
    • Thanks to adamz01h and wiresToGround for help with the JavaScript that used to accompany this article (to facilitate syntax highlighting in code samples using _link(`highlight.js', `https://highlightjs.org/')).
    • -
    • Thanks to Ando_Bando, Miles, u/oh5nxo, and WeedSmokingJew for help with the accompanying code samples.
    • -
    +_subheader(`cat(1)') +_bibliography(` +_bentr(`_link(`4.4BSD-Lite2', `https://en.wikipedia.org/wiki/Berkeley_Software_Distribution')/_link(`usr/src/bin/cat/cat.c', `https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/bin/cat/cat.c')') +_bentr(`_link(`busybox', `https://git.busybox.net/busybox/')/_link(`coreutils/cat.c', `https://git.busybox.net/busybox/tree/coreutils/cat.c')') +_bentr(`_link(`cat(1)', `http://man.cat-v.org/unix-1st/1/cat') (UNIX v1)') +_bentr(`_link(`cat(1p)', `https://www.unix.com/man-page/posix/1posix/cat/')') +_bentr(`_link(`UNIX Style, or cat -v Considered Harmful', `http://harmful.cat-v.org/cat-v/')') +_bentr(`_link(`dd(1p)', `https://www.unix.com/man-page/posix/1posix/dd/')') +_bentr(`_link(`FreeBSD', `https://www.freebsd.org/')/_link(`bin/cat/cat.c', `https://github.com/freebsd/freebsd-src/blob/main/bin/cat/cat.c')') +_bentr(`_link(`GNU coreutils', `https://www.gnu.org/software/coreutils/')/_link(`src/cat.c', `https://git.savannah.gnu.org/cgit/coreutils.git/tree/src/cat.c')') +_bentr(`_link(`The history of why cat -v is considered harmful', `https://lyngvaer.no/log/cat-v-history')') +_bentr(`_link(`NetBSD', `https://www.netbsd.org/')/_link(`bin/cat/cat.c', `https://github.com/NetBSD/src/blob/trunk/bin/cat/cat.c')') +_bentr(`_link(`Plan 9 from Bell Labs Fourth Edition', `https://9p.io/plan9/')/_link(`sys/src/cmd/cat.c', `https://github.com/plan9foundation/plan9/blob/main/sys/src/cmd/cat.c')') +_bentr(`_link(`Program Design in the UNIX Environment', `https://harmful.cat-v.org/cat-v/unix_prog_design.pdf')') +_bentr(`_link(`A Research Unix Reader', `https://www.cs.dartmouth.edu/~doug/reader.pdf')') +_bentr(`_link(`UNIX v7', `https://en.wikipedia.org/wiki/Unix')/_link(`usr/src/cmd/cat.c', `https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/cat.c')') +_bentr(`Thanks to Miles and WeedSmokingJew for help with content.') +_bentr(`Thanks to adamz01h and wiresToGround for help with the JavaScript that used to accompany this article (to facilitate syntax highlighting in code samples using _link(`highlight.js', `https://highlightjs.org/')).') +_bentr(`Thanks to Ando_Bando, Miles, u/oh5nxo, and WeedSmokingJew for help with the accompanying code samples.') +')

    _man(`cat(1)') is a program that exists to catenate files; to "join" one file at its end to another at its start.

    @@ -50,7 +50,7 @@ and _code(`-b') to number non-blank lines (both cases for which _man(`nl(1)') wa and _code(`-v') to mark invisible characters.

    -Additions to _code(`man(1)') are controversial; Rob Pike and Brian Kernighan explain this in _italic(`Program Design in the UNIX Environment'), the paper that accompanied Rob Pike's presentation _italic(`UNIX Style, or cat -v Considered Harmful') at the 1983 USENIX Summer Conference. +Additions to _code(`man(1)') are controversial; Rob Pike and Brian Kernighan explain this in _cite(`Program Design in the UNIX Environment'), the paper that accompanied Rob Pike's presentation _cite(`UNIX Style, or cat -v Considered Harmful') at the 1983 USENIX Summer Conference.

    @@ -96,13 +96,13 @@ exit 0 _subheader(`echo(1)') -

      -
    • _link(`echo', `https://en.wikipedia.org/wiki/Echo_(command)') (Wikipedia)
    • -
    • _link(`echo(1p)', `https://man7.org/linux/man-pages/man1/echo.1p.html') (man7)
    • -
    • _link(`NetBSD', `https://www.netbsd.org/')/_link(`bin/echo/echo.sh', `https://github.com/NetBSD/src/blob/trunk/bin/echo/echo.c')
    • -
    • _link(`UNIX v5', `#UNIX')/_link(`usr/source/s1/echo.c', `https://www.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s1/echo.c')
    • -
    • _link(`Variations in echo implementations', `https://www.in-ulm.de/~mascheck/various/echo+printf/')
    • -
    +_bibliography(` +_bentr(`_link(`echo', `https://en.wikipedia.org/wiki/Echo_(command)') (Wikipedia)') +_bentr(`_link(`echo(1p)', `https://man7.org/linux/man-pages/man1/echo.1p.html') (man7)') +_bentr(`_link(`NetBSD', `https://www.netbsd.org/')/_link(`bin/echo/echo.sh', `https://github.com/NetBSD/src/blob/trunk/bin/echo/echo.c')') +_bentr(`_link(`UNIX v5', `#UNIX')/_link(`usr/source/s1/echo.c', `https://www.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s1/echo.c')') +_bentr(`_link(`Variations in echo implementations', `https://www.in-ulm.de/~mascheck/various/echo+printf/')') +')

    Don't use _man(`echo(1)'), use _man(`printf(1)'). _man(`printf(1)') simulates the _man(`printf(3)') function in the C standard I/O library which has no significant variations, whereas the functionality of _man(`echo(1)') can vary between vendors. @@ -149,15 +149,22 @@ while :; do done +_subheader(`ed(1)') +_bibliography(` +_bentr(`_link(`A Tutorial Introduction to the Unix Text Editor', `https://verticalsysadmin.com/vi/a_tutorial_introduction_to_the_unix_text_editor.pdf')') +') + _subheader(`find(1)') -

    +_bibliography(` +_bentr(`_link(`find', `https://en.wikipedia.org/wiki/Find_(Unix)') (Wikipedia)') +_bentr(`_link(`"Has this only been added in the last 20 years?"', `https://news.ycombinator.com/item?id=10318841')') +_bentr(`The History of the Design of Unix's Find Command') +') _subheader(`echo(1)') - +_bibliography(` +_bentr(`Ed Cheat Sheet') +')

    A particularly shoddy attempt at _man(`ed(1)') is provided by _code(`busybox'). A traditional _man(`ed(1)') implementation is in plan9ports. @@ -174,22 +181,22 @@ the native Make is simply _command(`make') and the external Make gets a name des

    _subheader(`mkfifo(1)') -
      -
    • _link(`mkfifo(1)', `https://man.netbsd.org/mkfifo.1') (NetBSD)
    • -
    • _link(`mkfifo(2)', `https://man.netbsd.org/mkfifo.2') (NetBSD)
    • -
    • _link(`Use mkfifo to create named pipe', `https://dev.to/0xbf/use-mkfifo-to-create-named-pipe-linux-tips-5bbk')
    • -
    • _link(`What is the purpose of using a FIFO vs a temporary file or a pipe?', `https://unix.stackexchange.com/questions/433488/what-is-the-purpose-of-using-a-fifo-vs-a-temporary-file-or-a-pipe')
    • -
    +_bibliography(` +_bentr(`_link(`mkfifo(1)', `https://man.netbsd.org/mkfifo.1') (NetBSD)') +_bentr(`_link(`mkfifo(2)', `https://man.netbsd.org/mkfifo.2') (NetBSD)') +_bentr(`_link(`Use mkfifo to create named pipe', `https://dev.to/0xbf/use-mkfifo-to-create-named-pipe-linux-tips-5bbk')') +_bentr(`_link(`What is the purpose of using a FIFO vs a temporary file or a pipe?', `https://unix.stackexchange.com/questions/433488/what-is-the-purpose-of-using-a-fifo-vs-a-temporary-file-or-a-pipe')') +') _subheader(`true(1)') - +_bibliography(` +_bentr(`CHAMBERS John - The /bin/true Command and Copyright') +_bentr(`PIKE Rob - "/bin/true used to be an empty file."') +_bentr(`RAITER Brian - A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux') +_bentr(`true(1p) (The Open Group, 2003)') +_bentr(`GNU/coreutils/src/true.c') +_bentr(`NetBSD/usr.bin/true/true.sh') +')

    _man(`true(1)') is a tool that only quits silently with an exit status of 0. Similarly, _man(`false(1)') is a tool that only quits silently with an exit status of 1. @@ -233,9 +240,9 @@ The GNU coreutils implementation of _man(`true(1)') is not POSIX compliant.

    _subheader(`vi(1)') -
      -
    • _link(`vi(1p)', `https://man7.org/linux/man-pages/man1/vi.1p.html') (man7)
    • -
    +_bibliography(` +_bentr(`_link(`vi(1p)', `https://man7.org/linux/man-pages/man1/vi.1p.html') (man7)') +')

    Unlike _code(`busybox')'s _man(`ed(1)') implementation, its _man(`vi(1)') is very useable. _man(`vim(1)') is a popular re-implementation of _man(`vi(1)'). diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index 0df0507..0544bd4 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -1,5 +1,35 @@ -

    UNIX

    -
      +_header(`UNIX') +_bibliography(` +_bentr(`_link(`A Research Unix Reader', `https://www.cs.dartmouth.edu/~doug/reader.pdf')') +_bentr(`_link(`Dennis Ritchie', `https://en.wikipedia.org/wiki/Dennis_Ritchie') (Wikipedia)') _bentr(`_link(`Unix', `https://en.wikipedia.org/wiki/Unix') (Wikipedia)') -
    • _link(`unix-history-repo', `https://github.com/dspinellis/unix-history-repo') (GitHub)
    • -
    +_bentr(`_link(`unix-history-repo', `https://github.com/dspinellis/unix-history-repo') (GitHub)') +') +_passage(`Wikipedia', `

    +Unix (/ˈjuːnɪks/; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others. +

    ') +_subheader(`V1') +_bibliography(` +_bentr(`_link(`Rudd Canaday', `https://en.wikipedia.org/wiki/Rudd_Canaday') (Wikipedia)') +_bentr(`_link(`The Evolution of the Unix Time-sharing System', `https://www.bell-labs.com/usr/dmr/www/hist.html')') +_bentr(`_link(`Douglas McIlroy', `https://en.wikipedia.org/wiki/Douglas_McIlroy') (Wikipedia)') +_bentr(`_link(`Interview with Brian Kernighan', `https://www.linuxjournal.com/article/7035')') +_bentr(`_link(`Myths about Multics', `https://www.multicians.org/myths.html')') +_bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikipedia)') +_bentr(`_link(`Ken Thompson', `https://en.wikipedia.org/wiki/Ken_Thompson') (Wikipedia)') +_bentr(`_link(`Unix History', `https://livinginternet.com/i/iw_unix_dev.htm')') +_bentr(`_link(`The Unix Oral History Project', `https://web.archive.org/web/20080919055843/http://www.princeton.edu:80/~mike/expotape.htm')') +_bentr(`http://www.bitsavers.org/pdf/bellLabs/unix/UNIX_ProgrammersManual_Nov71.pdf') +') +

    +UNIX was an operating systems experiment started when Bell Labs started to leave the Multics project because most of their community felt Multics hadn't delivered what it promised, +its titular _italic(`mult')iplexed _italic(`i')nformation and _italic(`c')omputing _italic(`s')ervice. +The Bell Labs engineers working on Multics at the time (Ken Thompson, Dennis Ritchie, Malcolm Douglas Mcilroy, and Joseph Frank Ossanna) had realized Multics' goal as a system but at an unsustainable cost, +so, reading the writing on the wall, they began working on a new operating system and unsuccessfully lobbying Bell Labs for their own computer on which to work. +Thompson, Rudd H. Canaday, and Ritchie developed a heirarchical file system and Thompson simulated it on Multics. +Thompson also developed _cite(`Space Travel'), first for Multics, then for another operating system where it ran poorly. +Hoping to be able to continue to work on _cite(`Space Travel'), which simulated the movements of the major cellestial bodies of the Solar System and allowed the player to roam in a starship among them, past Multics' demise at Bell Labs, +Thompson rewrote the game to run on a spare PDP-7 at Bell. +Having written so much code already to get the PDP-7 to work, Thompson started to work on other things for it; a file system, some utilities for it, a command interpreter, and an assembler. +Then, mid-1970, Brian Kernighan named the non-multiplexing Multics workalike _italic(`Unics'), which was somehow (see _cite(`Interview with Brian Kernighan')) bastardized into _italic(`Unix'). +

    diff --git a/wiki/wiki.m4 b/wiki/wiki.m4 index 960b7a2..14cb4f5 100644 --- a/wiki/wiki.m4 +++ b/wiki/wiki.m4 @@ -5,7 +5,12 @@ define(`_bentr', `_bibliography_entry($1)')dnl define(`_cite', `$1')dnl define(`_code', `$1')dnl define(`_header', `

    $1

    ')dnl +define(`_italic', `$1')dnl +define(`_link', `
    $1')dnl +define(`_passage', `
    +
    $2
    +
    (_cite(`$1'))
    +
    ')dnl +define(`_ref', `_link(`$1', `$1')')dnl define(`_subheader', `

    $1

    ')dnl define(`_subsubheader', `

    $1

    ')dnl -define(`_link', `$1')dnl -define(`_ref', `_link(`$1', `$1')')dnl From 875bab318d0d6db31772d836d607324434ff052f Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 19:12:05 -0500 Subject: [PATCH 07/71] fix hyperlink --- wiki/unix/unix.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index 0544bd4..93b47a9 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -19,7 +19,7 @@ _bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikip _bentr(`_link(`Ken Thompson', `https://en.wikipedia.org/wiki/Ken_Thompson') (Wikipedia)') _bentr(`_link(`Unix History', `https://livinginternet.com/i/iw_unix_dev.htm')') _bentr(`_link(`The Unix Oral History Project', `https://web.archive.org/web/20080919055843/http://www.princeton.edu:80/~mike/expotape.htm')') -_bentr(`http://www.bitsavers.org/pdf/bellLabs/unix/UNIX_ProgrammersManual_Nov71.pdf') +_bentr(`http://www.bitsavers.org/pdf/bellLabs/unix/UNIX_ProgrammersManual_Nov71.pdf') ')

    UNIX was an operating systems experiment started when Bell Labs started to leave the Multics project because most of their community felt Multics hadn't delivered what it promised, From 85f9a14806be18de7c45f86d9f6602d809df75e6 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 19:14:07 -0500 Subject: [PATCH 08/71] fix hyperlink moar --- wiki/unix/unix.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index 93b47a9..a68d9c7 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -19,7 +19,7 @@ _bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikip _bentr(`_link(`Ken Thompson', `https://en.wikipedia.org/wiki/Ken_Thompson') (Wikipedia)') _bentr(`_link(`Unix History', `https://livinginternet.com/i/iw_unix_dev.htm')') _bentr(`_link(`The Unix Oral History Project', `https://web.archive.org/web/20080919055843/http://www.princeton.edu:80/~mike/expotape.htm')') -_bentr(`http://www.bitsavers.org/pdf/bellLabs/unix/UNIX_ProgrammersManual_Nov71.pdf') +_bentr(`UNIX Programmers Manual - November 1971') ')

    UNIX was an operating systems experiment started when Bell Labs started to leave the Multics project because most of their community felt Multics hadn't delivered what it promised, From c54f7f7aecc536bb039951b7e244fcb230ab87f9 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 19:22:50 -0500 Subject: [PATCH 09/71] add another source --- wiki/unix/unix.m4 | 1 + 1 file changed, 1 insertion(+) diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index a68d9c7..0a4df82 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -16,6 +16,7 @@ _bentr(`_link(`Douglas McIlroy', `https://en.wikipedia.org/wiki/Douglas_McIlroy' _bentr(`_link(`Interview with Brian Kernighan', `https://www.linuxjournal.com/article/7035')') _bentr(`_link(`Myths about Multics', `https://www.multicians.org/myths.html')') _bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikipedia)') +_bentr(`_link(`Preliminary Unix Implementation Document - June 1972', `http://www.bitsavers.org/pdf/bellLabs/unix/PreliminaryUnixImplementationDocument_Jun72.pdf')') _bentr(`_link(`Ken Thompson', `https://en.wikipedia.org/wiki/Ken_Thompson') (Wikipedia)') _bentr(`_link(`Unix History', `https://livinginternet.com/i/iw_unix_dev.htm')') _bentr(`_link(`The Unix Oral History Project', `https://web.archive.org/web/20080919055843/http://www.princeton.edu:80/~mike/expotape.htm')') From 64bdfbf906554dbdd93255595bd804036dfa7a8a Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 14 Nov 2022 23:45:05 -0500 Subject: [PATCH 10/71] change wiki name to 'be' --- wiki/.build.yml | 2 +- wiki/index.html | 4 ++-- wiki/unix/index.m4 | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wiki/.build.yml b/wiki/.build.yml index e7d30ca..fb26077 100644 --- a/wiki/.build.yml +++ b/wiki/.build.yml @@ -10,4 +10,4 @@ tasks: tar cvz --exclude .git --exclude '*.m4' . >../site.tar.gz ls -l ../site.tar.gz - upload: | - hut pages publish -d wiki.murderu.us site.tar.gz + hut pages publish -d be.murderu.us site.tar.gz diff --git a/wiki/index.html b/wiki/index.html index 98f2fd3..828fbe1 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -6,12 +6,12 @@ - + the murderu.us wiki -

    wiki.murderu.us

    +

    be.murderu.us

    diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index d66b8b6..7caff86 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -6,14 +6,14 @@ - + -UNIX - wiki.murderu.us +UNIX - be.murderu.us include(`../wiki.m4') include(`macros.m4') -

    wiki.murderu.us/unix

    +

    be.murderu.us/unix

    include(`unix.m4') From e50cab2d15d35e8a6c993a48bcadcf4d68296783 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 17 Nov 2022 22:43:09 -0500 Subject: [PATCH 11/71] more changes --- wiki/tail.m4 | 2 ++ wiki/unix/C.m4 | 55 ++++++++++++++++++++++++---------------------- wiki/unix/Makefile | 2 +- wiki/unix/index.m4 | 25 +++++---------------- wiki/unix/m4.m4 | 4 ---- wiki/unix/posix.m4 | 6 +++++ wiki/unix/unix.m4 | 5 +++++ wiki/wiki.m4 | 17 ++++++++++++++ 8 files changed, 65 insertions(+), 51 deletions(-) create mode 100644 wiki/tail.m4 delete mode 100644 wiki/unix/m4.m4 diff --git a/wiki/tail.m4 b/wiki/tail.m4 new file mode 100644 index 0000000..e04310f --- /dev/null +++ b/wiki/tail.m4 @@ -0,0 +1,2 @@ + + diff --git a/wiki/unix/C.m4 b/wiki/unix/C.m4 index 0155def..69eb1d3 100644 --- a/wiki/unix/C.m4 +++ b/wiki/unix/C.m4 @@ -7,7 +7,7 @@ On Alpine Linux, the standard library headers are in the _package(`musl-dev') pa

    Many Linux software distributions' system package managers have meta-packages that pull all necessities for C development as dependencies. -Alpine has _code(`build-base') and Debian has _code(`build-essential'). +Alpine has _package(`build-base') and Debian has _package(`build-essential').

    For linking to libraries, see _ref(`#pkg-config'). @@ -31,7 +31,9 @@ The language evolved out of the former B programming language, which was a produ

    (The Development of the C Language)
    -

    [Thompson 69] references K. Thompson, `Bon—an Interactive Language,' undated AT&T Bell Laboratories internal memorandum (ca. 1969). This is possibly Bon User's Manual. +

    +[Thompson 69] references _cite(`K. Thompson, "Bon—an Interactive Language," undated AT&T Bell Laboratories internal memorandum (ca. 1969)'). +This is possibly Bon User's Manual but it's not conclusive. Please get in touch if you have a hyperlink for this document as I can't find it indexed on any search engines.

    This language described in The C Programming Language isn't the C programming language known by most. @@ -39,18 +41,10 @@ It was a pre-standardization, relatively prototypical C, and rather than being c This was known as "pre-ANSI C" or "K&R C" and dubbed "C78" for the purposes of naming this page, in the same style as the later "C89", described in ANSI X3.159-1989, or "C11", described in ISO/IEC 9899:2011. "C78" was also the name given to historical C by the c78(7) manual page on FreeBSD 9.0.

    -

    -"C78" is incompatible with "C89" and later standards. -This page documents those incompatibilities and relative oddities. -

    -

    -I have never done (and probably never will do) extensive programming in pre-ANSI C. -These incompatibilities were discovered out of Appendix C in The C Programming Language, 2nd ed. but are described further. -

    -

    8 and 9 as valid octal digits

    - +_subsubheader(`_italic(`8') and _italic(`9') as valid octal digits') +_bibliography(` +_bentr(`_ref(`#Unix#V6') - see /usr/source/c/ in the Sixth Edition root tree') +')
     main()
     {
    @@ -60,7 +54,7 @@ main()
     }
     

    -On my machine, the GNU C compiler emits the following errors (this omits warnings) for the preceding piece of code: +The GNU C compiler emits the following errors (this omits warnings) for the preceding piece of code:

     snippet.c:4:49: error: invalid digit "8" in octal constant
    @@ -72,8 +66,8 @@ snippet.c:4:53: error: invalid digit "9" in octal constant
     

    This is because in C (both pre-standardization and post-ANSI) integer constants with leading zeroes are parsed as octal (base 8) numbers. -In pre-ANSI C, 8 and 9 were valid octal digits corresponding to 010(b8) and 011(b8). -This is documented in The C Programming Language, Appendix A, subsection 2.4.1, and evidenced by the preceding code block. +In pre-ANSI C, _italic(`8') and _italic(`9') were valid octal digits corresponding to _italic(`010')(b8) and _italic(`011')(b8). +This is documented in _cite(`The C Programming Language'), Appendix A, subsection 2.4.1, and evidenced by the preceding code block. The following is output of the compiled program in UNIX V6 on an emulated PDP-11:

    @@ -89,21 +83,30 @@ The following is output of the compiled program in UNIX V6 on an emulated PDP-11
     9
     

    -This behavior exists within /usr/source/c/c0t.s, which is a PDP-11 assembler file that parses integer constants (as far as I can tell). -This file provides getnum, a function used in /usr/source/c/c00.c. +This behavior exists within _code(`/usr/source/c/c0t.s'), which is a PDP-11 assembler file that parses integer constants (as far as I can tell). +This file provides _program(`getnum'), a function used in _code(`/usr/source/c/c00.c'). My theory is that this behavior is a side-effect of a very efficient but imperfect method of parsing integer constants from a file stream.

    -This wouldn't be a significant or even noticeable error; most programmers wouldn't use 8 or 9 as octal digits anyway. -If not for its documentation within The C Programming Language it would probably be an obscure bug. -This is also mentioned in The C Programming Language, 2nd ed. in Appendix C. +This wouldn't be a significant or even noticeable error; most programmers wouldn't use _italic(`8') or _italic(`9') as octal digits anyway. +If not for its documentation within _cite(`The C Programming Language') it might have totally faded into obscurity. +This is also mentioned in _cite(`The C Programming Language, 2nd ed.') in Appendix C. +

    +_subheader(`Standardization') +_bibliography(` +_bentr(`_link(`Standard C: The ANSI Draft Grows Up', `https://archive.org/details/PC-Mag-1988-09-13/page/n115/')') +_bentr(`_link(`A Brief History of GCC', `https://gcc.gnu.org/wiki/History')') +') +

    +In 1987, Richard M. Stallman, then a former MIT hacker who was working full time on the _italic(`GNU Project'), a re-implementation of the Unix operating system, +released the first beta release of _italic(`GCC'), then the _italic(`GNU C Compiler') and later re-named the _italic(`GNU Compiler Collection').

    _subheader(`C1989') _subheader(`C1999') -
      -
    • _link(`C99', `https://en.wikipedia.org/wiki/C99') (Wikipedia)
    • -
    • _link(`c99(1p)', `https://www.man7.org/linux/man-pages/man1/c99.1p.html')
    • -
    +_bibliography(` +_bentr(`_link(`C99', `https://en.wikipedia.org/wiki/C99') (Wikipedia)') +_bentr(`_link(`c99(1p)', `https://www.man7.org/linux/man-pages/man1/c99.1p.html')') +') _subheader(`C2011') _subheader(`C2017') _subheader(`C202x') diff --git a/wiki/unix/Makefile b/wiki/unix/Makefile index f39a484..b3dad50 100644 --- a/wiki/unix/Makefile +++ b/wiki/unix/Makefile @@ -1,5 +1,6 @@ SOURCES = \ ../wiki.m4 \ + ../tail.m4 \ macros.m4 \ unix.m4 \ posix.m4 \ @@ -11,7 +12,6 @@ SOURCES = \ fonts.m4 \ fstab.m4 \ linux.m4 \ - m4.m4 \ netbsd.m4 \ manual.m4 \ multitasking.m4 \ diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index 7caff86..e693b1c 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -1,19 +1,7 @@ - - - - - - - - - - -UNIX - be.murderu.us - - -include(`../wiki.m4') -include(`macros.m4') -

    be.murderu.us/unix

    +define(`_DESCRIPTION', `Unix is a multitasking operating system designed with simplicity in mind.')dnl +define(`_PAGE', `Unix')dnl +include(`../wiki.m4')dnl +include(`macros.m4')dnl include(`unix.m4') @@ -35,8 +23,6 @@ include(`fstab.m4') include(`linux.m4') -include(`m4.m4') - include(`netbsd.m4') include(`manual.m4') @@ -53,5 +39,4 @@ include(`volumes.m4') include(`X.m4') - - +include(`../tail.m4')dnl diff --git a/wiki/unix/m4.m4 b/wiki/unix/m4.m4 deleted file mode 100644 index 3990a49..0000000 --- a/wiki/unix/m4.m4 +++ /dev/null @@ -1,4 +0,0 @@ -

    m4

    - diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index 1cae270..be955d5 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -171,6 +171,12 @@ A traditional _man(`ed(1)') implementation is in plan9ports. I'm pretty sure some later UNIX-based OSes doubled the _man(`ed(1)') buffers, there's pretty much no downside to doing so in the modern era but it should be very easy to do yourself if it hasn't already been done (just double some of the array sizes in the beginning of _code(`ed.c')).

    +_subheader(`m4(1)') +_bibliography(` +_bentr(`_link(`m4', `https://en.wikipedia.org/wiki/`M4_'(computer_language)') (Wikipedia)') +_bentr(`_link(`Notes on the M4 Macro Language', `https://mbreen.com/m4.html')') +') + _subheader(`make(1)')

    _man(`make(1)') in modern times is fragmented into the GNU version gmake and the BSD version bmake. diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index 0a4df82..2423a46 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -4,6 +4,7 @@ _bentr(`_link(`A Research Unix Reader', `https://www.cs.dartmouth.edu/~doug/read _bentr(`_link(`Dennis Ritchie', `https://en.wikipedia.org/wiki/Dennis_Ritchie') (Wikipedia)') _bentr(`_link(`Unix', `https://en.wikipedia.org/wiki/Unix') (Wikipedia)') _bentr(`_link(`unix-history-repo', `https://github.com/dspinellis/unix-history-repo') (GitHub)') +_bentr(`_link(`The UNIX Time-sharing System - A Retrospective', `https://web.archive.org/web/20080504013206/http://cm.bell-labs.com/cm/cs/who/dmr/retro.html')') ') _passage(`Wikipedia', `

    Unix (/ˈjuːnɪks/; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others. @@ -34,3 +35,7 @@ Thompson rewrote the game to run on a spare PDP-7 at Bell. Having written so much code already to get the PDP-7 to work, Thompson started to work on other things for it; a file system, some utilities for it, a command interpreter, and an assembler. Then, mid-1970, Brian Kernighan named the non-multiplexing Multics workalike _italic(`Unics'), which was somehow (see _cite(`Interview with Brian Kernighan')) bastardized into _italic(`Unix').

    +_subheader(`V6') +_bibliography(` +_bentr(`_link(`Unix Sixth Edition root tree', `https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6')') +') diff --git a/wiki/wiki.m4 b/wiki/wiki.m4 index 14cb4f5..b591c6d 100644 --- a/wiki/wiki.m4 +++ b/wiki/wiki.m4 @@ -1,4 +1,6 @@ changecom(`')dnl +define(`_ASCII_UPPER', `ABCDEFGHIJKLMNOPQRSTUVWXYZ')dnl +define(`_ASCII_LOWER', `abcdefghijklmnopqrstuvwxyz')dnl define(`_bibliography', `
      $1
    ')dnl define(`_bibliography_entry', `
  • $1
  • ')dnl define(`_bentr', `_bibliography_entry($1)')dnl @@ -7,6 +9,7 @@ define(`_code', `$1')dnl define(`_header', `

    $1

    ')dnl define(`_italic', `$1')dnl define(`_link', `$1')dnl +define(`_lowercase', `translit(`$1', _ASCII_UPPER, _ASCII_LOWER)')dnl define(`_passage', `
    $2
    (_cite(`$1'))
    @@ -14,3 +17,17 @@ define(`_passage', `
    define(`_ref', `_link(`$1', `$1')')dnl define(`_subheader', `

    $1

    ')dnl define(`_subsubheader', `

    $1

    ')dnl + + + + + + + + + + +_PAGE - murderu.us wiki + + +

    _link(`be.murderu.us', `https://be.murderu.us/')/_lowercase(_PAGE)

    From 5fa86efd26334ea157cb859ad615e91b69148b53 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 17 Nov 2022 22:52:34 -0500 Subject: [PATCH 12/71] new header id system --- wiki/unix/C.m4 | 4 ++-- wiki/wiki.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wiki/unix/C.m4 b/wiki/unix/C.m4 index 69eb1d3..6d9de07 100644 --- a/wiki/unix/C.m4 +++ b/wiki/unix/C.m4 @@ -13,7 +13,7 @@ Alpine has _package(`build-base') and Debian has _package(`build-essential'). For linking to libraries, see _ref(`#pkg-config').

    -_subheader(`Prototypical C (1978)') +_subheader(`C1978')
    • The C Programming Language, 1st ed. (The Internet Archive)
    • C Reference Manual (this paper bears striking similarity to and was also written by the author of Appendix A of The C Programming Language, 1st ed. - the chronology of these writings' release is unknown)
    • @@ -43,7 +43,7 @@ This was known as "pre-ANSI C" or "K&R C" and dubbed "C78" for the purposes

      _subsubheader(`_italic(`8') and _italic(`9') as valid octal digits') _bibliography(` -_bentr(`_ref(`#Unix#V6') - see /usr/source/c/ in the Sixth Edition root tree') +_bentr(`_ref(`#unix#v6') - see /usr/source/c/ in the Sixth Edition root tree') ')
       main()
      diff --git a/wiki/wiki.m4 b/wiki/wiki.m4
      index b591c6d..46fd3e2 100644
      --- a/wiki/wiki.m4
      +++ b/wiki/wiki.m4
      @@ -6,7 +6,7 @@ define(`_bibliography_entry', `
    • $1
    • ')dnl define(`_bentr', `_bibliography_entry($1)')dnl define(`_cite', `$1')dnl define(`_code', `$1')dnl -define(`_header', `

      $1

      ')dnl +define(`_header', `define(`_CURRENT_HEADER', $1)

      $1

      ')dnl define(`_italic', `$1')dnl define(`_link', `$1')dnl define(`_lowercase', `translit(`$1', _ASCII_UPPER, _ASCII_LOWER)')dnl @@ -15,7 +15,7 @@ define(`_passage', `
      (_cite(`$1'))
      ')dnl define(`_ref', `_link(`$1', `$1')')dnl -define(`_subheader', `

      $1

      ')dnl +define(`_subheader', `

      $1

      ')dnl define(`_subsubheader', `

      $1

      ')dnl From a490d1d8d13832ec9a774d285039d4fed43aa69f Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 18 Nov 2022 00:01:51 -0500 Subject: [PATCH 13/71] fix syntax errors + other stuff --- wiki/unix/culture.m4 | 2 +- wiki/unix/posix.m4 | 6 ++++++ wiki/unix/unix.m4 | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/wiki/unix/culture.m4 b/wiki/unix/culture.m4 index 762a6bf..1353537 100644 --- a/wiki/unix/culture.m4 +++ b/wiki/unix/culture.m4 @@ -1,5 +1,5 @@ _header(`Culture') _subheader(`Pronunciation') _bibliography(` -_bentr(`_link(`Common pronunciations of Linux directories, commands, etc', `https://www.linux.org/threads/common-pronunciations-of-linux-directories-commands-etc.4445/')') +_bentr(`_link(`Common pronunciations of Linux directories`,' commands`,' etc', `https://www.linux.org/threads/common-pronunciations-of-linux-directories-commands-etc.4445/')') ') diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index be955d5..a4e8a94 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -194,6 +194,12 @@ _bentr(`_link(`Use mkfifo to create named pipe', `https://dev.to/0xbf/use-mkfifo _bentr(`_link(`What is the purpose of using a FIFO vs a temporary file or a pipe?', `https://unix.stackexchange.com/questions/433488/what-is-the-purpose-of-using-a-fifo-vs-a-temporary-file-or-a-pipe')') ') +_subheader(`sh(1)') +_bibliography(` +_bentr(`_link(`Interview with Ken Thompson`,' 9-6-89', `https://tuhs.v6sh.org/UnixArchiveMirror/Documentation/OralHistory/transcripts/thompson.htm')') +') +_passage(`Interview with Ken Thompson, 9-6-89', `

      We stole a shell out of a MULTICS, the concept of a shell. We stole per process execution. You know create a process -execute the command. From a combination of the two, although, neither of them really did it, MULTICS wanted to do it. But, it was so expensive creating a process that it ended up creating a few processes and then using them and putting them back on the shelf, then picking them up and reinitializing them. So, they never really created a process for command because it was just too expensive. The ION direction and the stuff like that and later in fact streams came from um the IO switch, that we worked on in MULTICS. Having everything work the same and just directing, you know, changing what it really pointed to.

      ') + _subheader(`true(1)') _bibliography(` _bentr(`CHAMBERS John - The /bin/true Command and Copyright') diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index 2423a46..d97a8da 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -15,6 +15,7 @@ _bentr(`_link(`Rudd Canaday', `https://en.wikipedia.org/wiki/Rudd_Canaday') (Wik _bentr(`_link(`The Evolution of the Unix Time-sharing System', `https://www.bell-labs.com/usr/dmr/www/hist.html')') _bentr(`_link(`Douglas McIlroy', `https://en.wikipedia.org/wiki/Douglas_McIlroy') (Wikipedia)') _bentr(`_link(`Interview with Brian Kernighan', `https://www.linuxjournal.com/article/7035')') +_bentr(`_link(`Interview with Ken Thompson, 9-6-89', `https://tuhs.v6sh.org/UnixArchiveMirror/Documentation/OralHistory/transcripts/thompson.htm')') _bentr(`_link(`Myths about Multics', `https://www.multicians.org/myths.html')') _bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikipedia)') _bentr(`_link(`Preliminary Unix Implementation Document - June 1972', `http://www.bitsavers.org/pdf/bellLabs/unix/PreliminaryUnixImplementationDocument_Jun72.pdf')') From bd381bfa11b8def870e4735e9943abb250d7bcf3 Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 18 Nov 2022 00:29:58 -0500 Subject: [PATCH 14/71] pushing random stuff yall --- wiki/unix/posix.m4 | 1 + wiki/unix/unix.m4 | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index a4e8a94..3bd23ec 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -200,6 +200,7 @@ _bentr(`_link(`Interview with Ken Thompson`,' 9-6-89', `https://tuhs.v6sh.org/Un ') _passage(`Interview with Ken Thompson, 9-6-89', `

      We stole a shell out of a MULTICS, the concept of a shell. We stole per process execution. You know create a process -execute the command. From a combination of the two, although, neither of them really did it, MULTICS wanted to do it. But, it was so expensive creating a process that it ended up creating a few processes and then using them and putting them back on the shelf, then picking them up and reinitializing them. So, they never really created a process for command because it was just too expensive. The ION direction and the stuff like that and later in fact streams came from um the IO switch, that we worked on in MULTICS. Having everything work the same and just directing, you know, changing what it really pointed to.

      ') + _subheader(`true(1)') _bibliography(` _bentr(`CHAMBERS John - The /bin/true Command and Copyright') diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index d97a8da..34dbad4 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -9,25 +9,29 @@ _bentr(`_link(`The UNIX Time-sharing System - A Retrospective', `https://web.arc _passage(`Wikipedia', `

      Unix (/ˈjuːnɪks/; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

      ') + _subheader(`V1') _bibliography(` _bentr(`_link(`Rudd Canaday', `https://en.wikipedia.org/wiki/Rudd_Canaday') (Wikipedia)') +_bentr(`_link(`The Creation of the UNIX Operating System', `https://web.archive.org/web/20140402192351/http://www.bell-labs.com/history/unix/')') _bentr(`_link(`The Evolution of the Unix Time-sharing System', `https://www.bell-labs.com/usr/dmr/www/hist.html')') -_bentr(`_link(`Douglas McIlroy', `https://en.wikipedia.org/wiki/Douglas_McIlroy') (Wikipedia)') +_bentr(`_link(`The History of Unix', `https://archive.org/details/byte-magazine-1983-08/page/n189/')') _bentr(`_link(`Interview with Brian Kernighan', `https://www.linuxjournal.com/article/7035')') _bentr(`_link(`Interview with Ken Thompson, 9-6-89', `https://tuhs.v6sh.org/UnixArchiveMirror/Documentation/OralHistory/transcripts/thompson.htm')') +_bentr(`_link(`Douglas McIlroy', `https://en.wikipedia.org/wiki/Douglas_McIlroy') (Wikipedia)') _bentr(`_link(`Myths about Multics', `https://www.multicians.org/myths.html')') _bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikipedia)') _bentr(`_link(`Preliminary Unix Implementation Document - June 1972', `http://www.bitsavers.org/pdf/bellLabs/unix/PreliminaryUnixImplementationDocument_Jun72.pdf')') _bentr(`_link(`Ken Thompson', `https://en.wikipedia.org/wiki/Ken_Thompson') (Wikipedia)') _bentr(`_link(`Unix History', `https://livinginternet.com/i/iw_unix_dev.htm')') +_bentr(`_link(`Unix and Multics', `https://www.multicians.org/unix.html')') _bentr(`_link(`The Unix Oral History Project', `https://web.archive.org/web/20080919055843/http://www.princeton.edu:80/~mike/expotape.htm')') _bentr(`UNIX Programmers Manual - November 1971') ')

      UNIX was an operating systems experiment started when Bell Labs started to leave the Multics project because most of their community felt Multics hadn't delivered what it promised, its titular _italic(`mult')iplexed _italic(`i')nformation and _italic(`c')omputing _italic(`s')ervice. -The Bell Labs engineers working on Multics at the time (Ken Thompson, Dennis Ritchie, Malcolm Douglas Mcilroy, and Joseph Frank Ossanna) had realized Multics' goal as a system but at an unsustainable cost, +The Bell Labs engineers working on Multics at the time (Ken Thompson, Dennis Ritchie, Malcolm Douglas McIlroy, and Joseph Frank Ossanna) had realized Multics' goal as a system but at an unsustainable cost, so, reading the writing on the wall, they began working on a new operating system and unsuccessfully lobbying Bell Labs for their own computer on which to work. Thompson, Rudd H. Canaday, and Ritchie developed a heirarchical file system and Thompson simulated it on Multics. Thompson also developed _cite(`Space Travel'), first for Multics, then for another operating system where it ran poorly. @@ -36,6 +40,30 @@ Thompson rewrote the game to run on a spare PDP-7 at Bell. Having written so much code already to get the PDP-7 to work, Thompson started to work on other things for it; a file system, some utilities for it, a command interpreter, and an assembler. Then, mid-1970, Brian Kernighan named the non-multiplexing Multics workalike _italic(`Unics'), which was somehow (see _cite(`Interview with Brian Kernighan')) bastardized into _italic(`Unix').

      + +_subheader(`V5') +_bibliography(` +_bentr(`_link(`The UNIX time-sharing system', `https://dl.acm.org/doi/10.1145/361011.361061')') +') +_passage(`Unix and Multics', + +`

      +There had been a highly regarded ACM SIGOPS sponsored conference on operating systems at Gatlinburg, Tennessee in 1967. +The fourth of these conferences was held in Yorktown Heights, NY in 1973, and Ken and Dennis gave a talk there, presenting Unix. +Several of us Multicians went to the conference, and sat with the Bell Labs ex-Multicians, and applauded the paper, which was and remains one of the best and clearest pieces of writing in the computer field. +There were some other great papers at that conference, but as I remember, the Unix paper won the best paper award. +

      ' +

      +I was working for MIT in those days`,' and one thing I did was to organize an MIT PDP-11 users' group and encourage them to look into Unix. +The idea of a free`,' non-vendor-supported operating system was new to them. +I invited Dennis Ritchie to come up and talk to them. +

      +

      +We went to lunch afterward`,' and I remarked to Dennis that easily half the code I was writing in Multics was error recovery code. +He said`,' "We left all that stuff out. If there's an error`,' we have this routine called panic()`,' and when it is called`,' the machine crashes`,' and you holler down the hall`,' 'Hey`,' reboot it.'" +

      +) + _subheader(`V6') _bibliography(` _bentr(`_link(`Unix Sixth Edition root tree', `https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6')') From cff48040e87fb4ed04a763c0e7dc053ada924a2d Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 18 Nov 2022 00:42:31 -0500 Subject: [PATCH 15/71] some stuff --- wiki/unix/unix.m4 | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index 34dbad4..8c32955 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -1,7 +1,12 @@ _header(`UNIX') _bibliography(` +_bentr(`_link(`Rudd Canaday', `https://en.wikipedia.org/wiki/Rudd_Canaday') (Wikipedia)') +_bentr(`_link(`History and Timeline', `https://unix.org/what_is_unix/history_timeline.html')') +_bentr(`_link(`Douglas McIlroy', `https://en.wikipedia.org/wiki/Douglas_McIlroy') (Wikipedia)') +_bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikipedia)') _bentr(`_link(`A Research Unix Reader', `https://www.cs.dartmouth.edu/~doug/reader.pdf')') _bentr(`_link(`Dennis Ritchie', `https://en.wikipedia.org/wiki/Dennis_Ritchie') (Wikipedia)') +_bentr(`_link(`Ken Thompson', `https://en.wikipedia.org/wiki/Ken_Thompson') (Wikipedia)') _bentr(`_link(`Unix', `https://en.wikipedia.org/wiki/Unix') (Wikipedia)') _bentr(`_link(`unix-history-repo', `https://github.com/dspinellis/unix-history-repo') (GitHub)') _bentr(`_link(`The UNIX Time-sharing System - A Retrospective', `https://web.archive.org/web/20080504013206/http://cm.bell-labs.com/cm/cs/who/dmr/retro.html')') @@ -12,17 +17,15 @@ Unix (/ˈjuːnɪks/; trademarked as UNIX) is a family of multitasking, multiuser _subheader(`V1') _bibliography(` -_bentr(`_link(`Rudd Canaday', `https://en.wikipedia.org/wiki/Rudd_Canaday') (Wikipedia)') _bentr(`_link(`The Creation of the UNIX Operating System', `https://web.archive.org/web/20140402192351/http://www.bell-labs.com/history/unix/')') _bentr(`_link(`The Evolution of the Unix Time-sharing System', `https://www.bell-labs.com/usr/dmr/www/hist.html')') _bentr(`_link(`The History of Unix', `https://archive.org/details/byte-magazine-1983-08/page/n189/')') +_bentr(`_link(`In their own words: Unix pioneers remember the good times', `https://www.networkworld.com/article/2168942/in-their-own-words--unix-pioneers-remember-the-good-times.html')') _bentr(`_link(`Interview with Brian Kernighan', `https://www.linuxjournal.com/article/7035')') _bentr(`_link(`Interview with Ken Thompson, 9-6-89', `https://tuhs.v6sh.org/UnixArchiveMirror/Documentation/OralHistory/transcripts/thompson.htm')') -_bentr(`_link(`Douglas McIlroy', `https://en.wikipedia.org/wiki/Douglas_McIlroy') (Wikipedia)') _bentr(`_link(`Myths about Multics', `https://www.multicians.org/myths.html')') -_bentr(`_link(`Joe Ossanna', `https://en.wikipedia.org/wiki/Joe_Ossanna') (Wikipedia)') _bentr(`_link(`Preliminary Unix Implementation Document - June 1972', `http://www.bitsavers.org/pdf/bellLabs/unix/PreliminaryUnixImplementationDocument_Jun72.pdf')') -_bentr(`_link(`Ken Thompson', `https://en.wikipedia.org/wiki/Ken_Thompson') (Wikipedia)') +_bentr(`_link(`Unix and Beyond: An Interview with Ken Thompson', `http://cse.unl.edu/~witty/class/csce351/howto/ken_thompson.pdf')') _bentr(`_link(`Unix History', `https://livinginternet.com/i/iw_unix_dev.htm')') _bentr(`_link(`Unix and Multics', `https://www.multicians.org/unix.html')') _bentr(`_link(`The Unix Oral History Project', `https://web.archive.org/web/20080919055843/http://www.princeton.edu:80/~mike/expotape.htm')') @@ -40,13 +43,16 @@ Thompson rewrote the game to run on a spare PDP-7 at Bell. Having written so much code already to get the PDP-7 to work, Thompson started to work on other things for it; a file system, some utilities for it, a command interpreter, and an assembler. Then, mid-1970, Brian Kernighan named the non-multiplexing Multics workalike _italic(`Unics'), which was somehow (see _cite(`Interview with Brian Kernighan')) bastardized into _italic(`Unix').

      +_passage(`History and Timeline', `1971; First Edition; It had a assembler for a PDP-11/20, file system, fork(), roff and ed. It was used for text processing of patent documents.') + +_subheader(`V4') +_passage(`History and Timeline', 1973; Fourth Edition; It was rewritten in C. This made it portable and changed the history of OS's.) _subheader(`V5') _bibliography(` _bentr(`_link(`The UNIX time-sharing system', `https://dl.acm.org/doi/10.1145/361011.361061')') ') _passage(`Unix and Multics', - `

      There had been a highly regarded ACM SIGOPS sponsored conference on operating systems at Gatlinburg, Tennessee in 1967. The fourth of these conferences was held in Yorktown Heights, NY in 1973, and Ken and Dennis gave a talk there, presenting Unix. From 852c0ca651d4f088ae7e828ad130703bb8032a90 Mon Sep 17 00:00:00 2001 From: dtb Date: Sat, 19 Nov 2022 22:07:02 -0500 Subject: [PATCH 16/71] alpine doas.conf --- wiki/unix/doas.m4 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wiki/unix/doas.m4 b/wiki/unix/doas.m4 index 51347dd..41752a9 100644 --- a/wiki/unix/doas.m4 +++ b/wiki/unix/doas.m4 @@ -22,3 +22,6 @@ w 14 q

      +

      +_man(`doas.conf(5)') is located in _code(`$PREFIX/etc/doas.conf'), except on Alpine Linux, where it's located in _code(`$PREFIX/etc/doas.d/doas.conf'). +

      From 4e383c062628b196f1120b53e925a2239a1ec5ee Mon Sep 17 00:00:00 2001 From: WSJ Date: Tue, 22 Nov 2022 18:05:21 -0400 Subject: [PATCH 17/71] alpine linux bootstrapping --- wiki/unix/linux.m4 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index 70f15dd..06507d4 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -79,9 +79,39 @@ _subheader(`Distributions') Linux is usually obtained as part of a software distribution put together to form a useable operating system.

      Alpine

      +

      +Alpine Linux is a small Linux distribution based on musl libc. +Its main purpose is to serve as a server distribution, however many have found use for it as a desktop distribution. +

      +
      Bootstrapping
      +

      +Alpine's bootstrapping procedure is quite manual; you should probably use _code(`setup-alpine'). +However, it is possible and quite easy to perform the steps manually. +

      +
        +
      • Copy over the contents of _code(`/etc/apk/keys') to _code(`/mnt/etc/apk/keys')
      • +
      • +Add newline-delimited mirrors to _code(`/mnt/etc/apk/repositories'), such as these if you wish to use the _code(`edge') branch: +
        +http://dl-cdn.alpinelinux.org/alpine/edge/main
        +http://dl-cdn.alpinelinux.org/alpine/edge/community
        +http://dl-cdn.alpinelinux.org/alpine/edge/testing
        +
        +_code(`edge') may be replaced with a stable branch, the latest being _code(`v3.17') as of writing. +
      • +
      • Run _code(`apk --root /mnt add --initdb alpine-base'). This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time.
      • +
      +

      +Alpine does not have a _man(`chroot(1)') helper; you must manually do that with a one-liner such as +_code(`for i in dev proc sys; do mount -o bind "/$i" "/mnt/$i"; done; cp /etc/resolv.conf /mnt/etc/resolv.conf') +which you can chroot into. +

      +

      +After chrooting in, you must configure basics such as users, passwords, _man(`fstab(5)'), and the bootloader yourself. +

      Always install manual pages

      Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. From 416e3ddb12622a25712f8c605650319870c90025 Mon Sep 17 00:00:00 2001 From: WSJ Date: Tue, 22 Nov 2022 18:06:40 -0400 Subject: [PATCH 18/71] only include m4 files as dep for unix/index.html --- wiki/.gitignore | 1 + wiki/Makefile | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 wiki/.gitignore diff --git a/wiki/.gitignore b/wiki/.gitignore new file mode 100644 index 0000000..e5af9ee --- /dev/null +++ b/wiki/.gitignore @@ -0,0 +1 @@ +/unix/index.html diff --git a/wiki/Makefile b/wiki/Makefile index 772e1c4..9c05f58 100644 --- a/wiki/Makefile +++ b/wiki/Makefile @@ -1,5 +1,5 @@ all: unix/index.html -unix/index.html: unix/* +unix/index.html: unix/*.m4 $(MAKE) -C unix clean: $(MAKE) -C unix clean From 4309ea4365fc5edb3723198b9ce3ec8f2b6e3302 Mon Sep 17 00:00:00 2001 From: WSJ Date: Tue, 22 Nov 2022 18:20:50 -0400 Subject: [PATCH 19/71] fix index.html --- wiki/index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wiki/index.html b/wiki/index.html index 828fbe1..c8d28d3 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -20,8 +20,10 @@

    • All contributions are public domain and anyone may steal, pilfer, and otherwise plaigarize from this Wiki.
    • However, contributions to this Wiki must be original or properly quoted and cited from other sources.
    • Original research is encouraged and this Wiki serves as either a primary or secondary source when appropriate.
    • -
    • Articles are written with semantic markup in m4 m4 macros.
    - +

    +The contents of this site is generated by the Git repository at https://git.sr.ht/~trinity/wiki. +

    From 30d9e3f89e825001c34f3e71ba0ad2d804b371cb Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 11:19:54 -0500 Subject: [PATCH 20/71] some dash links --- wiki/unix/posix.m4 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index 3bd23ec..eeef4e3 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -196,6 +196,8 @@ _bentr(`_link(`What is the purpose of using a FIFO vs a temporary file or a pipe _subheader(`sh(1)') _bibliography(` +_bentr(`_link(`DASH', `http://gondor.apana.org.au/~herbert/dash/')') +_bentr(`_link(`DASH (cgit)', `https://git.kernel.org/pub/scm/utils/dash/dash.git')') _bentr(`_link(`Interview with Ken Thompson`,' 9-6-89', `https://tuhs.v6sh.org/UnixArchiveMirror/Documentation/OralHistory/transcripts/thompson.htm')') ') _passage(`Interview with Ken Thompson, 9-6-89', `

    We stole a shell out of a MULTICS, the concept of a shell. We stole per process execution. You know create a process -execute the command. From a combination of the two, although, neither of them really did it, MULTICS wanted to do it. But, it was so expensive creating a process that it ended up creating a few processes and then using them and putting them back on the shelf, then picking them up and reinitializing them. So, they never really created a process for command because it was just too expensive. The ION direction and the stuff like that and later in fact streams came from um the IO switch, that we worked on in MULTICS. Having everything work the same and just directing, you know, changing what it really pointed to.

    ') From db433d999a049cfdb5da94a8f3155aa1e58b6969 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 11:33:48 -0500 Subject: [PATCH 21/71] small grammar fix and subjective casing change --- wiki/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/index.html b/wiki/index.html index c8d28d3..fb82c37 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -23,7 +23,7 @@
  • Articles are written with semantic markup in m4 macros.
  • -The contents of this site is generated by the Git repository at https://git.sr.ht/~trinity/wiki. +The contents of this site are generated by the git repository at https://git.sr.ht/~trinity/wiki.

    From 5b5239bf31f148303a458c12d84c6a47dffa1183 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 11:37:38 -0500 Subject: [PATCH 22/71] little semantic tag changes --- wiki/unix/linux.m4 | 14 +++++++------- wiki/unix/macros.m4 | 1 + 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index 06507d4..d259850 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -66,12 +66,12 @@ Provided by the _code(`pipewire') package on Alpine. RTKit error: org.freedesktop.DBus.Error.ServiceUnknown

    -This means you need _code(`rtkit') installed and running through your initialization system. +This means you need _program(`rtkit') installed and running through your initialization system.

    PulseAudio

    -On Alpine you'll need the _code(`pulseaudio'), _code(`pulseaudio-alsa'), and _code(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. -Start _man(`pulseaudio(1)') when you want audio, ideally in your _code(`.xinitrc'). +On Alpine you'll need the _program(`pulseaudio'), _program(`pulseaudio-alsa'), and _program(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. +Start _man(`pulseaudio(1)') when you want audio, ideally in your _file(`.xinitrc').

    _subheader(`Distributions') @@ -88,13 +88,13 @@ Its main purpose is to serve as a server distribution, however many have found u
    Bootstrapping

    -Alpine's bootstrapping procedure is quite manual; you should probably use _code(`setup-alpine'). +Alpine's bootstrapping procedure is quite manual; you should probably use _program(`setup-alpine'). However, it is possible and quite easy to perform the steps manually.

      -
    • Copy over the contents of _code(`/etc/apk/keys') to _code(`/mnt/etc/apk/keys')
    • +
    • Copy over the contents of _file(`/etc/apk/keys') to _file(`/mnt/etc/apk/keys')
    • -Add newline-delimited mirrors to _code(`/mnt/etc/apk/repositories'), such as these if you wish to use the _code(`edge') branch: +Add newline-delimited mirrors to _file(`/mnt/etc/apk/repositories'), such as these if you wish to use the _code(`edge') branch:
       http://dl-cdn.alpinelinux.org/alpine/edge/main
       http://dl-cdn.alpinelinux.org/alpine/edge/community
      @@ -102,7 +102,7 @@ http://dl-cdn.alpinelinux.org/alpine/edge/testing
       
      _code(`edge') may be replaced with a stable branch, the latest being _code(`v3.17') as of writing.
    • -
    • Run _code(`apk --root /mnt add --initdb alpine-base'). This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time.
    • +
    • Run _command(`apk --root /mnt add --initdb alpine-base'). This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time.

    Alpine does not have a _man(`chroot(1)') helper; you must manually do that with a one-liner such as diff --git a/wiki/unix/macros.m4 b/wiki/unix/macros.m4 index 3986eb1..2b3cbaf 100644 --- a/wiki/unix/macros.m4 +++ b/wiki/unix/macros.m4 @@ -1,4 +1,5 @@ define(`_command', `_code($1)')dnl +define(`_file', `_code($1)')dnl define(`_man', `_cite($1)')dnl define(`_program', `_code($1)')dnl define(`_package', `_code($1)')dnl From 8b913b02e21fe56297001d0d3b3dc1d639f801af Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 11:50:35 -0500 Subject: [PATCH 23/71] m4ification --- wiki/unix/linux.m4 | 109 +++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 53 deletions(-) diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index d259850..f7954ef 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -1,16 +1,16 @@ _header(`Linux') -

      -
    • _link(`How to Linux', `http://tldp.yolinux.com/HOWTO/subdir/HOWTO-INDEX.html')
    • -
    • _link(`How to Use User Mode Linux', `https://christine.website/blog/howto-usermode-linux-2019-07-07')
    • -
    • LINUX's History
    • -
    • _link(`The Linux Kernel documentation', `https://www.kernel.org/doc/html/v4.17/index.html')
    • -
    • _link(`LINUX is obsolete', `https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI')
    • -
    • _link(`Linux From Scratch', `http://www.linuxfromscratch.org/')
    • -
    • _link(`Move your Linux from BIOS to UEFI in place', `https://www.redhat.com/sysadmin/bios-uefi')
    • -
    • Using the Linux kernel's Case-insensitive feature in Ext4
    • -
    +_bibliography(` +_bentr(`_link(`How to Linux', `http://tldp.yolinux.com/HOWTO/subdir/HOWTO-INDEX.html')') +_bentr(`_link(`How to Use User Mode Linux', `https://christine.website/blog/howto-usermode-linux-2019-07-07')') +_bentr(`LINUX's History') +_bentr(`_link(`The Linux Kernel documentation', `https://www.kernel.org/doc/html/v4.17/index.html')') +_bentr(`_link(`LINUX is obsolete', `https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI')') +_bentr(`_link(`Linux From Scratch', `http://www.linuxfromscratch.org/')') +_bentr(`_link(`Move your Linux from BIOS to UEFI in place', `https://www.redhat.com/sysadmin/bios-uefi')') +_bentr(`Using the Linux kernel's Case-insensitive feature in Ext4') +') -

    ACPI

    +_subheader(`ACPI') _bibliography(` _bentr(`_ref(`#ACPI')') ') @@ -32,11 +32,11 @@ The Alpine wiki currently recommends _man(`pipewire(1)'), with postmarketOS, whi PipeWire is relatively new and the typical audio server used is PulseAudio; Debian and many popular Debian-based distributions come pre-configured with PulseAudio.

    _subsubheader(`ALSA') - +_bibliography(` +_bentr(`Adding sound (Alpine Linux Wiki)') +_bentr(`ALSA lib conf Evaluate error') +_bentr(`ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave') +')

    The Alpine wiki ("Adding sound") says to install _code(`alsa-conf'), _code(`alsa-lib'), and _code(`alsa-utils'), add yourself to the _code(`audio') group, and then do some more configuration that I've never needed to do: @@ -50,15 +50,15 @@ I also installed _code(`gstreamer') but I don't know why.

    ALSA is clunky, many people prefer to use a frontend such as Pipewire or PulseAudio that exposes its own interface while remaining compatible with ALSA.

    -

    OSS

    +_subsubheader(`OSS')

    Deprecated, unfortunately.

    -

    PipeWire

    - +_subsubheader(`PipeWire') +_bibliography(` +_bentr(`PipeWire (Alpine Linux Wiki)') +_bentr(`PipeWire (FreeDesktop Wiki)') +')

    Provided by the _code(`pipewire') package on Alpine.

    @@ -68,7 +68,7 @@ RTKit error: org.freedesktop.DBus.Error.ServiceUnknown

    This means you need _program(`rtkit') installed and running through your initialization system.

    -

    PulseAudio

    +_subsubheader(`PulseAudio')

    On Alpine you'll need the _program(`pulseaudio'), _program(`pulseaudio-alsa'), and _program(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. Start _man(`pulseaudio(1)') when you want audio, ideally in your _file(`.xinitrc'). @@ -78,14 +78,14 @@ _subheader(`Distributions')

    Linux is usually obtained as part of a software distribution put together to form a useable operating system.

    -

    Alpine

    +_subsubheader(`Alpine')

    Alpine Linux is a small Linux distribution based on musl libc. Its main purpose is to serve as a server distribution, however many have found use for it as a desktop distribution.

    - +_bibliography(` +_bentr(`Alpine repositories content search') +')
    Bootstrapping

    Alpine's bootstrapping procedure is quite manual; you should probably use _program(`setup-alpine'). @@ -102,7 +102,10 @@ http://dl-cdn.alpinelinux.org/alpine/edge/testing _code(`edge') may be replaced with a stable branch, the latest being _code(`v3.17') as of writing. -

  • Run _command(`apk --root /mnt add --initdb alpine-base'). This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time.
  • +
  • +Run _command(`apk --root /mnt add --initdb alpine-base'). +This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time. +
  • Alpine does not have a _man(`chroot(1)') helper; you must manually do that with a one-liner such as @@ -117,7 +120,7 @@ After chrooting in, you must configure basics such as users, passwords, _man(`fs Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. To always install doc packages with program packages, _code(`apk add docs').

    -

    Arch

    +_subsubheader(`Arch')

    Arch is known for using the latest versions of programs, which has given it an undeserved reputation of instability.

    @@ -171,11 +174,11 @@ Include = /etc/pacman.d/mirrorlist-arch #Include = /etc/pacman.d/mirrorlist-arch ''' -

    Artix

    - +_subsubheader(`Artix') +_bibliography(` +_bentr(`Artix Linux') +_bentr(`Artix Linux (Wikipedia)') +')

    Artix is a Linux software distribution based on Arch that doesn't mandate SystemD as its initialization system.

    @@ -187,11 +190,11 @@ you need to select the initialization you want to use: _code(`66'), _code(`dinit and Artix's official wiki says you need to install the appropriate _link(`#logind', `_code(`elogind')') package (_code(`elogind-[initialization system]') e.g. _code(`elogind-66')) but like _code(`linux-firmware') though it is helpful it isn't strictly necessary.

    -

    Debian

    - +_subsubheader(`Debian') +_bibliography(` +_bentr(`Debian') +_bentr(`Debian (Wikipedia)') +')

    Debian is known for its stability and longevity. Debian uses SystemD as its initialization system, the GNU core utilities, and dpkg and apt for package management. @@ -200,7 +203,7 @@ Debian uses SystemD as its initialization system, the GNU core utilities, and dp While it's possible to use non-Linux kernels within Debian, it's uncommon and the only non-Linux option currently maintained is the GNU HURD microkernel.

    -

    postmarketOS

    +_subsubheader(`postmarketOS')

    postmarketOS is an Alpine-based Linux software distribution that makes configuring and using Linux easy on mobile devices.

    @@ -218,21 +221,21 @@ wifi.scan-rand-mac-address=no On a live system you can then _code(`rc-service networkmanager restart') to restart NetworkManager and have it load the new configuration.

    -

    Ubuntu

    - +_subsubheader(`Ubuntu') +_bibliography(` +_bentr(`How to get root on Ubuntu 20.04 by pretending nobody's /home') +')

    Ubuntu is a derivative of Debian.

    _subheader(`logind') - +_bibliography(` +_bentr(`elogind') +_bentr(`elogind (Gentoo Wiki)') +_bentr(`org.freedesktop.login1') +_bentr(`logind (NixOS Wiki)') +')

    logind (_code(`systemd-logind.service(8)')) is a component of SystemD that exposes information about active users on the system via the org.freedesktop.login1 D-Bus interface which is used by the popular desktop environments GNOME and KDE. It also handles _ref(`#ACPI') events. @@ -243,9 +246,9 @@ On systems without SystemD and with conflicting software, _code(`elogind(8)') ma

    _subheader(`util-linux') -
      -
    • _link(`util-linux', `https://en.wikipedia.org/wiki/Util-linux') (Wikipedia)
    • -
    +_bibliography(` +_bentr(`_link(`util-linux', `https://en.wikipedia.org/wiki/Util-linux') (Wikipedia)') +')

    _code(`util-linux') is distributed on all popular Linux distributions and contains utilities users may expect to be already present on their systems, like _man(`more(1)') or _man(`hexdump(1)').

    From 813e5ab1c4cac3ae74a2fcc32be99167eed4fbc9 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 11:54:21 -0500 Subject: [PATCH 24/71] fix silliness --- wiki/unix/Makefile | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/wiki/unix/Makefile b/wiki/unix/Makefile index b3dad50..e0ce0de 100644 --- a/wiki/unix/Makefile +++ b/wiki/unix/Makefile @@ -1,29 +1,6 @@ -SOURCES = \ - ../wiki.m4 \ - ../tail.m4 \ - macros.m4 \ - unix.m4 \ - posix.m4 \ - acpi.m4 \ - C.m4 \ - culture.m4 \ - doas.m4 \ - editing.m4 \ - fonts.m4 \ - fstab.m4 \ - linux.m4 \ - netbsd.m4 \ - manual.m4 \ - multitasking.m4 \ - pci.m4 \ - telepathy.m4 \ - wifi.m4 \ - volumes.m4 \ - X.m4 +RM = rm -f -RM = rm -rf - -index.html: index.m4 $(SOURCES) +index.html: *.m4 m4 index.m4 >index.html clean: From ca9cfe7045a1410fce312c7e7aae347caf343ed6 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 12:32:04 -0500 Subject: [PATCH 25/71] split linux distros to their own sections --- wiki/unix/alpine.m4 | 60 +++++++++++++++++ wiki/unix/arch.m4 | 70 +++++++++++++++++++ wiki/unix/debian.m4 | 22 ++++++ wiki/unix/index.m4 | 6 ++ wiki/unix/linux.m4 | 160 ++------------------------------------------ 5 files changed, 165 insertions(+), 153 deletions(-) create mode 100644 wiki/unix/alpine.m4 create mode 100644 wiki/unix/arch.m4 create mode 100644 wiki/unix/debian.m4 diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 new file mode 100644 index 0000000..1c0d7bc --- /dev/null +++ b/wiki/unix/alpine.m4 @@ -0,0 +1,60 @@ +_header(`Alpine') +

    +Alpine Linux is a small Linux distribution based on musl libc. +Its main purpose is to serve as a server distribution, however many have found use for it as a desktop distribution. +

    +_bibliography(` +_bentr(`Alpine repositories content search') +') +
    Bootstrapping
    +

    +Alpine's bootstrapping procedure is quite manual; you should probably use _program(`setup-alpine'). +However, it is possible and quite easy to perform the steps manually. +

    +
      +
    • Copy over the contents of _file(`/etc/apk/keys') to _file(`/mnt/etc/apk/keys')
    • +
    • +Add newline-delimited mirrors to _file(`/mnt/etc/apk/repositories'), such as these if you wish to use the _code(`edge') branch: +
      +http://dl-cdn.alpinelinux.org/alpine/edge/main
      +http://dl-cdn.alpinelinux.org/alpine/edge/community
      +http://dl-cdn.alpinelinux.org/alpine/edge/testing
      +
      +_code(`edge') may be replaced with a stable branch, the latest being _code(`v3.17') as of writing. +
    • +
    • +Run _command(`apk --root /mnt add --initdb alpine-base'). +This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time. +
    • +
    +

    +Alpine does not have a _man(`chroot(1)') helper; you must manually do that with a one-liner such as +_code(`for i in dev proc sys; do mount -o bind "/$i" "/mnt/$i"; done; cp /etc/resolv.conf /mnt/etc/resolv.conf') +which you can chroot into. +

    +

    +After chrooting in, you must configure basics such as users, passwords, _man(`fstab(5)'), and the bootloader yourself. +

    +
    Always install manual pages
    +

    +Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. +To always install doc packages with program packages, _code(`apk add docs'). +

    + +_subheader(`postmarketOS') +

    +postmarketOS is an Alpine-based Linux software distribution that makes configuring and using Linux easy on mobile devices. +

    +
    Random MAC address generation on Wifi
    +

    +By default, postmarketOS will generate a random software MAC address when connecting to a new WLAN network. +You can disable this by adding a NetworkManager rule. +In _code(`/etc/NetworkManager/conf.d/') you can make a file with any name that has the following: +

    +
    +[device]
    +wifi.scan-rand-mac-address=no
    +
    +

    +On a live system you can then _code(`rc-service networkmanager restart') to restart NetworkManager and have it load the new configuration. +

    diff --git a/wiki/unix/arch.m4 b/wiki/unix/arch.m4 new file mode 100644 index 0000000..999d52d --- /dev/null +++ b/wiki/unix/arch.m4 @@ -0,0 +1,70 @@ +_header(`Arch') +

    +Arch is known for using the latest versions of programs, which has given it an undeserved reputation of instability. +

    +_subheader(`Bootstrapping') +

    +Use _man(`pacstrap(8)'). +

    +

    +At a minimum you need the _code(`base') package. +Select a kernel and install the corresponding package; _code(`linux'), _code(`linux-lts'), or another Linux configuration or fork. +The Arch wiki says you need to install _code(`linux-firmware'), this isn't strictly necessary but it is recommended. +Install _code(`base-devel') if you plan on using the AUR or if you don't know what the AUR is yet. +

    +

    +It's also a good idea to install any utilities you'll need on the bootstrapped system. +Text editors, network managers or utilities, and other administration tools, for example. +Manual utilities such as _code(`man-db') and others would also be useful. +

    +
    Ubiquitous packages missing
    +

    From the annals of my notes, 2021-06-04:

    +
    +Had an issue with pacman missing some ubiquitous packages (esr's 'ascii', xorg-xev, etc).
    +This fixed it. I don't really know why - maybe some issues with my repos?
    +This was cleanly installed artix-openrc.
    +
    +[5:46 PM] Bassman Leyla: So what I did is I went into /etc/pacman.d/mirrorlist-arch and uncommented a local mirror
    +[5:46 PM] Bassman Leyla: Then I appended a config block a package maintainer gave me onto /etc/pacman.conf
    +[5:46 PM] Bassman Leyla: I'll paste it in
    +[5:47 PM] Bassman Leyla:
    +'''
    +#
    +# ARCHLINUX
    +#
    +
    +#[testing]
    +#Include = /etc/pacman.d/mirrorlist-arch
    +
    +[extra]
    +Include = /etc/pacman.d/mirrorlist-arch
    +
    +#[community-testing]
    +#Include = /etc/pacman.d/mirrorlist-arch
    +
    +[community]
    +Include = /etc/pacman.d/mirrorlist-arch
    +
    +#[multilib-testing]
    +#Include = /etc/pacman.d/mirrorlist-arch
    +
    +#[multilib]
    +#Include = /etc/pacman.d/mirrorlist-arch
    +'''
    +
    + +_subheader(`Artix') +_bibliography(` +_bentr(`Artix Linux') +_bentr(`Artix Linux (Wikipedia)') +') +

    +Artix is a Linux software distribution based on Arch that doesn't mandate SystemD as its initialization system. +

    +_subsubheader(`Bootstrapping') +

    +This process differs from Arch's bootstrapping process. +Artix uses _man(`basestrap(8)') rather than _man(`pacstrap(8)'); +you need to select the initialization you want to use: _code(`66'), _code(`dinit'), _code(`openrc'), _code(`runit'), or _code(`s6-base'), as a package separate from _code(`base'); +and Artix's official wiki says you need to install the appropriate _link(`#logind', `_code(`elogind')') package (_code(`elogind-[initialization system]') e.g. _code(`elogind-66')) but like _code(`linux-firmware') though it is helpful it isn't strictly necessary. +

    diff --git a/wiki/unix/debian.m4 b/wiki/unix/debian.m4 new file mode 100644 index 0000000..26b0362 --- /dev/null +++ b/wiki/unix/debian.m4 @@ -0,0 +1,22 @@ +_header(`Debian') +_bibliography(` +_bentr(`_link(`Debian', `https://www.debian.org/')') +_bentr(`_link(`Debian', `https://en.wikipedia.org/wiki/Debian') (Wikipedia)') +') +

    +Debian is a software distribution that can use _ref(`#linux') or the GNU HURD as its kernel. +In the past, FreeBSD's kernel was also an option. +Debian is known for its stability and longevity. +Debian uses SystemD as its initialization system, the GNU core utilities, and dpkg and apt for package management. +

    +

    +The vast majority of support and attention is on the Debian GNU+Linux configuration. +

    + +_subheader(`Ubuntu') + +

    +Ubuntu is a derivative of Debian. +

    diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index e693b1c..ee5eb53 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -9,10 +9,16 @@ include(`posix.m4') include(`acpi.m4') +include(`alpine.m4') + +include(`arch.m4') + include(`C.m4') include(`culture.m4') +include(`debian.m4') + include(`doas.m4') include(`editing.m4') diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index f7954ef..3a1c126 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -1,5 +1,5 @@ _header(`Linux') -_bibliography(` +
      _bentr(`_link(`How to Linux', `http://tldp.yolinux.com/HOWTO/subdir/HOWTO-INDEX.html')') _bentr(`_link(`How to Use User Mode Linux', `https://christine.website/blog/howto-usermode-linux-2019-07-07')') _bentr(`LINUX's History') @@ -7,8 +7,8 @@ _bentr(`_link(`The Linux Kernel documentation', `https://www.kernel.org/doc/html _bentr(`_link(`LINUX is obsolete', `https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI')') _bentr(`_link(`Linux From Scratch', `http://www.linuxfromscratch.org/')') _bentr(`_link(`Move your Linux from BIOS to UEFI in place', `https://www.redhat.com/sysadmin/bios-uefi')') -_bentr(`Using the Linux kernel's Case-insensitive feature in Ext4') -') +
    • Using the Linux kernel's Case-insensitive feature in Ext4
    • +
    _subheader(`ACPI') _bibliography(` @@ -29,7 +29,7 @@ _subheader(`Audio')

    Most audio servers recommend that they be run in userspace with user privileges, with PulseAudio going so far as to exiting when run as root without additional configuration. The Alpine wiki currently recommends _man(`pipewire(1)'), with postmarketOS, which is based on Alpine, coming pre-configured with PipeWire. -PipeWire is relatively new and the typical audio server used is PulseAudio; Debian and many popular Debian-based distributions come pre-configured with PulseAudio. +PipeWire is relatively new and the typical audio server used is PulseAudio; _ref(`#debian') and many popular Debian-based distributions come pre-configured with PulseAudio.

    _subsubheader(`ALSA') _bibliography(` @@ -78,156 +78,10 @@ _subheader(`Distributions')

    Linux is usually obtained as part of a software distribution put together to form a useable operating system.

    -_subsubheader(`Alpine') -

    -Alpine Linux is a small Linux distribution based on musl libc. -Its main purpose is to serve as a server distribution, however many have found use for it as a desktop distribution. -

    -_bibliography(` -_bentr(`Alpine repositories content search') -') -
    Bootstrapping
    -

    -Alpine's bootstrapping procedure is quite manual; you should probably use _program(`setup-alpine'). -However, it is possible and quite easy to perform the steps manually. -

    -
      -
    • Copy over the contents of _file(`/etc/apk/keys') to _file(`/mnt/etc/apk/keys')
    • -
    • -Add newline-delimited mirrors to _file(`/mnt/etc/apk/repositories'), such as these if you wish to use the _code(`edge') branch: -
      -http://dl-cdn.alpinelinux.org/alpine/edge/main
      -http://dl-cdn.alpinelinux.org/alpine/edge/community
      -http://dl-cdn.alpinelinux.org/alpine/edge/testing
      -
      -_code(`edge') may be replaced with a stable branch, the latest being _code(`v3.17') as of writing. -
    • -
    • -Run _command(`apk --root /mnt add --initdb alpine-base'). -This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time. -
    • -
    -

    -Alpine does not have a _man(`chroot(1)') helper; you must manually do that with a one-liner such as -_code(`for i in dev proc sys; do mount -o bind "/$i" "/mnt/$i"; done; cp /etc/resolv.conf /mnt/etc/resolv.conf') -which you can chroot into. -

    -

    -After chrooting in, you must configure basics such as users, passwords, _man(`fstab(5)'), and the bootloader yourself. -

    -
    Always install manual pages
    -

    -Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. -To always install doc packages with program packages, _code(`apk add docs'). -

    -_subsubheader(`Arch') -

    -Arch is known for using the latest versions of programs, which has given it an undeserved reputation of instability. -

    -
    Bootstrapping
    -

    -Use _man(`pacstrap(8)'). -

    -

    -At a minimum you need the _code(`base') package. -Select a kernel and install the corresponding package; _code(`linux'), _code(`linux-lts'), or another Linux configuration or fork. -The Arch wiki says you need to install _code(`linux-firmware'), this isn't strictly necessary but it is recommended. -Install _code(`base-devel') if you plan on using the AUR or if you don't know what the AUR is yet. -

    -

    -It's also a good idea to install any utilities you'll need on the bootstrapped system. -Text editors, network managers or utilities, and other administration tools, for example. -Manual utilities such as _code(`man-db') and others would also be useful. -

    -
    Ubiquitous packages missing
    -

    From the annals of my notes, 2021-06-04:

    -
    -Had an issue with pacman missing some ubiquitous packages (esr's 'ascii', xorg-xev, etc).
    -This fixed it. I don't really know why - maybe some issues with my repos?
    -This was cleanly installed artix-openrc.
     
    -[5:46 PM] Bassman Leyla: So what I did is I went into /etc/pacman.d/mirrorlist-arch and uncommented a local mirror
    -[5:46 PM] Bassman Leyla: Then I appended a config block a package maintainer gave me onto /etc/pacman.conf
    -[5:46 PM] Bassman Leyla: I'll paste it in
    -[5:47 PM] Bassman Leyla:
    -'''
    -#
    -# ARCHLINUX
    -#
    -
    -#[testing]
    -#Include = /etc/pacman.d/mirrorlist-arch
    -
    -[extra]
    -Include = /etc/pacman.d/mirrorlist-arch
    -
    -#[community-testing]
    -#Include = /etc/pacman.d/mirrorlist-arch
    -
    -[community]
    -Include = /etc/pacman.d/mirrorlist-arch
    -
    -#[multilib-testing]
    -#Include = /etc/pacman.d/mirrorlist-arch
    -
    -#[multilib]
    -#Include = /etc/pacman.d/mirrorlist-arch
    -'''
    -
    -_subsubheader(`Artix') -_bibliography(` -_bentr(`Artix Linux') -_bentr(`Artix Linux (Wikipedia)') -') -

    -Artix is a Linux software distribution based on Arch that doesn't mandate SystemD as its initialization system. -

    -
    Bootstrapping
    -

    -This process differs from Arch's bootstrapping process. -Artix uses _man(`basestrap(8)') rather than _man(`pacstrap(8)'); -you need to select the initialization you want to use: _code(`66'), _code(`dinit'), _code(`openrc'), _code(`runit'), or _code(`s6-base'), as a package separate from _code(`base'); -and Artix's official wiki says you need to install the appropriate _link(`#logind', `_code(`elogind')') package (_code(`elogind-[initialization system]') e.g. _code(`elogind-66')) but like _code(`linux-firmware') though it is helpful it isn't strictly necessary. -

    - -_subsubheader(`Debian') -_bibliography(` -_bentr(`Debian') -_bentr(`Debian (Wikipedia)') -') -

    -Debian is known for its stability and longevity. -Debian uses SystemD as its initialization system, the GNU core utilities, and dpkg and apt for package management. -

    -

    -While it's possible to use non-Linux kernels within Debian, it's uncommon and the only non-Linux option currently maintained is the GNU HURD microkernel. -

    - -_subsubheader(`postmarketOS') -

    -postmarketOS is an Alpine-based Linux software distribution that makes configuring and using Linux easy on mobile devices. -

    -
    Random MAC address generation on Wifi
    -

    -By default, postmarketOS will generate a random software MAC address when connecting to a new WLAN network. -You can disable this by adding a NetworkManager rule. -In _code(`/etc/NetworkManager/conf.d/') you can make a file with any name that has the following: -

    -
    -[device]
    -wifi.scan-rand-mac-address=no
    -
    -

    -On a live system you can then _code(`rc-service networkmanager restart') to restart NetworkManager and have it load the new configuration. -

    - -_subsubheader(`Ubuntu') -_bibliography(` -_bentr(`How to get root on Ubuntu 20.04 by pretending nobody's /home') -') -

    -Ubuntu is a derivative of Debian. -

    +_subsubheader(_ref(`#alpine')) +_subsubheader(_ref(`#arch')) +_subsubheader(_ref(`#debian')) _subheader(`logind') _bibliography(` From c064f56a84ca267cf01872238fa2bad55c2479aa Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 12:54:57 -0500 Subject: [PATCH 26/71] oops --- wiki/unix/index.m4 | 2 ++ wiki/unix/pkg-config.m4 | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index ee5eb53..f00cf78 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -37,6 +37,8 @@ include(`multitasking.m4') include(`pci.m4') +include(`pkg-config.m4') + include(`telepathy.m4') include(`wifi.m4') diff --git a/wiki/unix/pkg-config.m4 b/wiki/unix/pkg-config.m4 index 41ac434..873c298 100644 --- a/wiki/unix/pkg-config.m4 +++ b/wiki/unix/pkg-config.m4 @@ -1,10 +1,18 @@ -

    pkg-config

    - +_header(`pkg-config') +_bibliography(` +_bentr(`_link(`Guide to pkg-config', `https://people.freedesktop.org/~dbn/pkg-config-guide.html')') +_bentr(`_link(`pkgconf', `https://github.com/pkgconf/pkgconf') (GitHub)') +_bentr(`_link(`pkg-config', `https://www.freedesktop.org/wiki/Software/pkg-config/')') +_bentr(`_link(`pkg-config', `https://en.wikipedia.org/wiki/Pkg-config') (Wikipedia)') +')

    -pkg-config provides a way to link to libraries independent of a particular system's directory heirarchy. +pkg-config is the querying interface to the _man(`pc(5)') file format, +which stores metadata relating to the file locations of key files for a language compiler or interpreter. +Its purpose is to facilitate library linking, particularly for C and C++, +without knowledge of where exactly a library's files are stored, +which can vary dramatically between system and package manager.

    -The relevant manual pages on NetBSD are pkgconf(1), pc(5), and pkg.m4(7). +Another implementation of pkg-config, _man(`pkgconf(1)'), is the default on _ref(`#netbsd'). +_man(`pkgconf(1)') comes with _man(`pkg.m4(7)'), macros for GNU autoconf.

    From b0bb494dadd758095a3f8c9056231b50abef36b9 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 13:24:40 -0500 Subject: [PATCH 27/71] m4ification --- wiki/unix/X.m4 | 77 +++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index a7a0c91..37e028b 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -1,71 +1,70 @@ -

    X

    - +_header(`X') +_bibliography(` +_bentr(`_link(`Cool, but obscure X11 tools', `http://cyber.dabamos.de/unix/x11/')') +_bentr(`_link(`Xorg', `https://wiki.archlinux.org/title/Xorg') (Arch Wiki)') +')

    -X is a graphical windowing system that can be used on Linux, FreeBSD, OpenBSD, NetBSD, and some proprietary operating systems as well. -X is not the only windowing system; twin(1) exists for windowed multitasking within a framebuffer and Wayland is another windowing system intended to replace X. +X is a graphical windowing system that can be used on _ref(`#linux'), FreeBSD, OpenBSD, _ref(`#netbsd'), and some proprietary operating systems as well. +X is not the only windowing system; _man(`twin(1)') exists for windowed multitasking within a framebuffer and Wayland is another windowing system intended to replace X.

    Some Linux software distributions have included scripts to automatically fetch and install an X server. -Alpine has setup-xorg-base, which adds the packages xorg-server, xf86-input-libinput, eudev, and mesa, and then enables the OpenRC services for udev. +_ref(`#alpine') has _package(`setup-xorg-base'), which adds the packages _package(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the OpenRC services for udev.

    -

    Mail

    +_subheader(`Mail')

    The (formerly Mozilla) Thunderbird mail suite is a popular though maximal choice. Claws Mail is a nice mail reader with a somewhat similar interface to Thunderbird but, in my experience, easier to use.

    -

    Media

    +_subheader(`Media')

    -mpv(1) and vlc(1) are good options. +_man(`mpv(1)') and _man(`vlc(1)') are good options.

    -

    Server

    - -

    X.org

    - +_subheader(`Server') +_subsubheader(`X.org') +_bibliography(` +_bentr(`_link(`X.org', `https://www.X.org')') +_bentr(`_link(`X.Org Server', `https://en.wikipedia.org/wiki/X.Org_Server') (Wikipedia)') +')

    -The de-facto standard X server is X.org (available on the web at _ref(https://www.X.org)). +The de-facto standard X server is X.org. NetBSD uses X.org as the default system X server.

    -Arch Linux's package repositories have https://archlinux.org/groups/x86_64/xorg/, -https://archlinux.org/groups/x86_64/xorg-apps/, -and https://archlinux.org/groups/x86_64/xorg-drivers/ package groups. -#pkgsrc has _code(`meta-pkgs/modular-xorg'). +_ref(`#arch') Linux's package repositories have _link(`_package(`xorg')', `https://archlinux.org/groups/x86_64/xorg/'), +_link(`_package(`xorg-apps')', `https://archlinux.org/groups/x86_64/xorg-apps/'), +and _link(`_package(`xorg-drivers')', `https://archlinux.org/groups/x86_64/xorg-drivers/') package groups. +_ref(`#pkgsrc') has _package(`meta-pkgs/modular-xorg').

    -
    Failed to open /dev/input/event[number] (Permission denied)
    -

    You need to be a part of the input group to use X.org.

    -
    Failed to open /dev/tty[number] (Permission denied)
    -

    You need to be a part of the video group to use X.org.

    +
    _code(`Failed to open /dev/input/event[_italic(`number')] (Permission denied)')
    +

    You need to be a part of the _italic(`input') group to use X.org.

    +
    _code(`Failed to open /dev/tty[_italic(`number')] (Permission denied)')
    +

    You need to be a part of the _italic(`video') group to use X.org.

    -

    Window Management

    +_subheader(`Managing Clients')

    -It's possible to make X exec(3) a window manager at the end of initialization to ease the creation, deletion, and manipulation of windows. +It's possible to make X _man(`exec(3)') a window manager at the end of initialization to ease the creation, deletion, and manipulation of windows. Contrary to what is now popular belief, window managers are not necessary (thought they're extremely convenient compared to the lack of them).

    ctwm

    - +_bibliography(` +_bentr(`_link(`Configurations for ctwm (and twm)', `https://datagubbe.se/twm/')') +') -

    Web Browsing

    -

    TOR Browser

    +_subheader(`WWW') +_subsubheader(`TOR Browser')

    -TOR Browser is available through pkgsrc at security/tor-browser. +TOR Browser is available through pkgsrc at _package(`security/tor-browser').

    -

    xinit(1)

    +_subheader(`xinit(1)')

    -startx(1) is usually included with xinit(1). +_man(`startx(1)') is usually included with _man(`xinit(1)').

    -On Alpine Linux, xinit(1) is provided by the xinit package. -On Arch Linux, xinit(1) is provided by https://archlinux.org/packages/extra/x86_64/xorg-xinit/. +On _ref(`#alpine') Linux, _man(`xinit(1)') is provided by _package(`xinit'). +On _ref(`#arch') Linux, _man(`xinit(1)') is provided by _link(`_package(`xorg-xinit')', `https://archlinux.org/packages/extra/x86_64/xorg-xinit/').

    From f2249a0cc1d7ea69d3d3961255fda715583b4d18 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 13:27:21 -0500 Subject: [PATCH 28/71] I have got to figure out how to escape quotation marks in m4. --- wiki/unix/posix.m4 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index eeef4e3..406ebe5 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -155,11 +155,11 @@ _bentr(`_link(`A Tutorial Introduction to the Unix Text Editor', `https://vertic ') _subheader(`find(1)') -_bibliography(` + _subheader(`echo(1)') _bibliography(` @@ -178,6 +178,9 @@ _bentr(`_link(`Notes on the M4 Macro Language', `https://mbreen.com/m4.html')') ') _subheader(`make(1)') +_bibliography(` +_bentr(`_link(`Lab 06 - Makefiles', `https://cs.brown.edu/courses/csci0330/docs/labs/makefiles.pdf')') +')

    _man(`make(1)') in modern times is fragmented into the GNU version gmake and the BSD version bmake. Complex Makefiles may not be useable in both. From d3c91d59fc75debc41bc369865630ca147475561 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 13:29:08 -0500 Subject: [PATCH 29/71] fix link --- wiki/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/index.html b/wiki/index.html index fb82c37..f66c312 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -20,7 +20,7 @@

  • All contributions are public domain and anyone may steal, pilfer, and otherwise plaigarize from this Wiki.
  • However, contributions to this Wiki must be original or properly quoted and cited from other sources.
  • Original research is encouraged and this Wiki serves as either a primary or secondary source when appropriate.
  • -
  • Articles are written with semantic markup in m4 macros.
  • +
  • Articles are written with semantic markup in m4 macros.
  • The contents of this site are generated by the git repository at https://git.sr.ht/~trinity/wiki. From dba848a3e96e39bde4faf9b8287953c535599a62 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 13:31:54 -0500 Subject: [PATCH 30/71] UNLICENSE --- wiki/LICENSE | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 wiki/LICENSE diff --git a/wiki/LICENSE b/wiki/LICENSE new file mode 100644 index 0000000..68a49da --- /dev/null +++ b/wiki/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to From 9c441194416c7321e64518ac2382d57287ea7c1b Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 20:18:41 -0500 Subject: [PATCH 31/71] UNTRUSTED signature --- wiki/unix/alpine.m4 | 17 +++++++++++++---- wiki/wiki.m4 | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 1c0d7bc..58cbec8 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -6,12 +6,20 @@ Its main purpose is to serve as a server distribution, however many have found u _bibliography(` _bentr(`Alpine repositories content search') ') -

    Bootstrapping
    +_subheader(`_code(`WARNING: Ignoring [_italic(`path')]: UNTRUSTED signature')') +_bibliography(` +_bentr(_link(`ERROR: http://dl-4.alpinelinux.org/alpine/edge/testing: UNTRUSTED signature', `https://stackoverflow.com/questions/73374745/error-http-dl-4-alpinelinux-org-alpine-edge-testing-untrusted-signature')') +') +

    +If you are absolutely sure what you're doing is fine, _command(`apk [_italic(`command')] _em(`--allow-untrusted')'). +This ignores the error and allows the operation to proceed. +

    +_subheader(`Bootstrapping')

    Alpine's bootstrapping procedure is quite manual; you should probably use _program(`setup-alpine'). However, it is possible and quite easy to perform the steps manually.

    -
      +
      1. Copy over the contents of _file(`/etc/apk/keys') to _file(`/mnt/etc/apk/keys')
      2. Add newline-delimited mirrors to _file(`/mnt/etc/apk/repositories'), such as these if you wish to use the _code(`edge') branch: @@ -26,7 +34,7 @@ _code(`edge') may be replaced with a stable branch, the latest being _code(`v3.1 Run _command(`apk --root /mnt add --initdb alpine-base'). This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time.
      3. -
    +

    Alpine does not have a _man(`chroot(1)') helper; you must manually do that with a one-liner such as _code(`for i in dev proc sys; do mount -o bind "/$i" "/mnt/$i"; done; cp /etc/resolv.conf /mnt/etc/resolv.conf') @@ -35,7 +43,8 @@ which you can chroot into.

    After chrooting in, you must configure basics such as users, passwords, _man(`fstab(5)'), and the bootloader yourself.

    -
    Always install manual pages
    + +_subheader(`Always install manual pages')

    Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. To always install doc packages with program packages, _code(`apk add docs'). diff --git a/wiki/wiki.m4 b/wiki/wiki.m4 index 46fd3e2..30344dd 100644 --- a/wiki/wiki.m4 +++ b/wiki/wiki.m4 @@ -6,6 +6,7 @@ define(`_bibliography_entry', `

  • $1
  • ')dnl define(`_bentr', `_bibliography_entry($1)')dnl define(`_cite', `$1')dnl define(`_code', `$1')dnl +define(`_em', `$1')dnl define(`_header', `define(`_CURRENT_HEADER', $1)

    $1

    ')dnl define(`_italic', `$1')dnl define(`_link', `$1')dnl From 31eed40cd55774ea3adec059571c10667532a74a Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 22:04:46 -0500 Subject: [PATCH 32/71] touch up alpine bootstrapping process --- wiki/unix/alpine.m4 | 54 +++++++++++++++++++++++++++------------------ wiki/unix/fstab.m4 | 3 +-- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 58cbec8..cd65296 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -3,17 +3,44 @@ _header(`Alpine') Alpine Linux is a small Linux distribution based on musl libc. Its main purpose is to serve as a server distribution, however many have found use for it as a desktop distribution.

    + +_subheader(`apk(8)') _bibliography(` +_bentr(`_link(`Alpine Package Keeper', `https://wiki.alpinelinux.org/wiki/Alpine_Package_Keeper') (Alpine Wiki)') _bentr(`Alpine repositories content search') ') -_subheader(`_code(`WARNING: Ignoring [_italic(`path')]: UNTRUSTED signature')') +_subsubheader(`Repositories') +

    +See _man(`apk-repositories(5)'). +

    +

    +Most Internet repositories use the URL scheme of _code(`https://[_italic(`server')]/alpine/[_italic(`release branch')]/[_italic(`repository branch')]'). +For example, the _italic(`main') repository branch on the _italic(`edge') release branch on the server _italic(`dl-cdn.alpinelinux.org') is _code(`http://dl-cdn.alpinelinux.org/alpine/edge/main'). +A repositories file could look like the following: +

    +
    +http://dl-cdn.alpinelinux.org/alpine/edge/main
    +http://dl-cdn.alpinelinux.org/alpine/edge/community
    +http://dl-cdn.alpinelinux.org/alpine/edge/testing
    +
    +

    +Local directories like _file(`/media/cdrom/apks'), an example from the Alpine Wiki, are valid as well. +

    +_subsubheader(`_code(`WARNING: Ignoring [_italic(`path')]: UNTRUSTED signature')') _bibliography(` -_bentr(_link(`ERROR: http://dl-4.alpinelinux.org/alpine/edge/testing: UNTRUSTED signature', `https://stackoverflow.com/questions/73374745/error-http-dl-4-alpinelinux-org-alpine-edge-testing-untrusted-signature')') +_bentr(`_link(`ERROR: http://dl-4.alpinelinux.org/alpine/edge/testing: UNTRUSTED signature', `https://stackoverflow.com/questions/73374745/error-http-dl-4-alpinelinux-org-alpine-edge-testing-untrusted-signature')') ')

    If you are absolutely sure what you're doing is fine, _command(`apk [_italic(`command')] _em(`--allow-untrusted')'). This ignores the error and allows the operation to proceed.

    + +_subheader(`Always install manual pages') +

    +Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. +To always install doc packages with program packages, _code(`apk add docs'). +

    + _subheader(`Bootstrapping')

    Alpine's bootstrapping procedure is quite manual; you should probably use _program(`setup-alpine'). @@ -22,13 +49,7 @@ However, it is possible and quite easy to perform the steps manually.

    1. Copy over the contents of _file(`/etc/apk/keys') to _file(`/mnt/etc/apk/keys')
    2. -Add newline-delimited mirrors to _file(`/mnt/etc/apk/repositories'), such as these if you wish to use the _code(`edge') branch: -
      -http://dl-cdn.alpinelinux.org/alpine/edge/main
      -http://dl-cdn.alpinelinux.org/alpine/edge/community
      -http://dl-cdn.alpinelinux.org/alpine/edge/testing
      -
      -_code(`edge') may be replaced with a stable branch, the latest being _code(`v3.17') as of writing. +Fill out _man(`apk-repositories(5)') on the mount.
    3. Run _command(`apk --root /mnt add --initdb alpine-base'). @@ -36,18 +57,9 @@ This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities

    -Alpine does not have a _man(`chroot(1)') helper; you must manually do that with a one-liner such as -_code(`for i in dev proc sys; do mount -o bind "/$i" "/mnt/$i"; done; cp /etc/resolv.conf /mnt/etc/resolv.conf') -which you can chroot into. -

    -

    -After chrooting in, you must configure basics such as users, passwords, _man(`fstab(5)'), and the bootloader yourself. -

    - -_subheader(`Always install manual pages') -

    -Alpine doesn't include man pages in program packages to save on space, instead keeping them in _code(`[package]-doc') sibling packages. -To always install doc packages with program packages, _code(`apk add docs'). +Make sure to bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the bootstrap prefix +and copy _file(`/etc/resolv.conf') over before _ref(`#posix#chroot(1)')ing into the bootstrap directory and finalizing setup. +Remember to set up users, _ref(`#fstab(5)'), and the bootloader if necessary.

    _subheader(`postmarketOS') diff --git a/wiki/unix/fstab.m4 b/wiki/unix/fstab.m4 index 65d4bc3..104bc4d 100644 --- a/wiki/unix/fstab.m4 +++ b/wiki/unix/fstab.m4 @@ -1,4 +1,3 @@ -_header(`fstab') -

    See _man(`fstab(5)').

    +_header(`fstab(5)')

    postmarketOS requires that the _code(`localmount') OpenRC service be enabled for the system to read _man(`fstab(5)').

    Arch and Artix have fstab generators at _man(`genfstab(8)') and _man(`fstabgen(8)') respectively in their installation scripts.

    From 2cdc5ca5763b420f123ce08a88d0264afb722fbc Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 22:47:54 -0500 Subject: [PATCH 33/71] initramfs stub --- wiki/unix/archives.m4 | 6 ++++++ wiki/unix/index.m4 | 2 ++ wiki/unix/linux.m4 | 10 ++++++++++ 3 files changed, 18 insertions(+) create mode 100644 wiki/unix/archives.m4 diff --git a/wiki/unix/archives.m4 b/wiki/unix/archives.m4 new file mode 100644 index 0000000..ce45d9d --- /dev/null +++ b/wiki/unix/archives.m4 @@ -0,0 +1,6 @@ +_header(`Archives') + +_subheader(`cpio') +_bibliography(` +_bentr(`_link(`cpio', `https://en.wikipedia.org/wiki/Cpio') (Wikipedia)') +') diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index f00cf78..f07eb44 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -13,6 +13,8 @@ include(`alpine.m4') include(`arch.m4') +include(`archives.m4') + include(`C.m4') include(`culture.m4') diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index 3a1c126..7443935 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -83,6 +83,16 @@ _subsubheader(_ref(`#alpine')) _subsubheader(_ref(`#arch')) _subsubheader(_ref(`#debian')) +_subheader(`initramfs') +_bibliography(` +_bentr(`_link(`Initial ramdisk', `https://en.wikipedia.org/wiki/Initial_ramdisk') (Wikipedia)') +_bentr(`_link(`initramfs', `https://wiki.debian.org/initramfs') (Debian Wiki)') +_bentr(`_link(`initramfs', `https://wiki.ubuntu.com/Initramfs') (Ubuntu Wiki)') +') +

    +_file(`initramfs') is a _ref(`#archives#cpio') archive that contains a small Linux filesystem with just enough utility to mount the actual operating system's root filesystem. +

    + _subheader(`logind') _bibliography(` _bentr(`elogind') From 37f1d6ae161f2a10c0d644d4213eabc27fdc55ad Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 24 Nov 2022 22:57:48 -0500 Subject: [PATCH 34/71] unix advertising --- wiki/unix/unix.m4 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/wiki/unix/unix.m4 b/wiki/unix/unix.m4 index 8c32955..a6b05a0 100644 --- a/wiki/unix/unix.m4 +++ b/wiki/unix/unix.m4 @@ -74,3 +74,8 @@ _subheader(`V6') _bibliography(` _bentr(`_link(`Unix Sixth Edition root tree', `https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6')') ') + +_subheader(`V7') +_bibliography(` +_bentr(`_link(`Unix Advertising', `https://archive.ph/20130102004255/http://cm.bell-labs.com/cm/cs/who/dmr/unixad.html') (_link(`Original link', `http://cm.bell-labs.com/cm/cs/who/dmr/unixad.html'))') +') From 9d315d321f5266029032b3b27f85c3e515666c52 Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 25 Nov 2022 20:57:29 -0500 Subject: [PATCH 35/71] alpine dash-binsh --- wiki/unix/posix.m4 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index 406ebe5..3e1e4b4 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -199,12 +199,17 @@ _bentr(`_link(`What is the purpose of using a FIFO vs a temporary file or a pipe _subheader(`sh(1)') _bibliography(` -_bentr(`_link(`DASH', `http://gondor.apana.org.au/~herbert/dash/')') -_bentr(`_link(`DASH (cgit)', `https://git.kernel.org/pub/scm/utils/dash/dash.git')') _bentr(`_link(`Interview with Ken Thompson`,' 9-6-89', `https://tuhs.v6sh.org/UnixArchiveMirror/Documentation/OralHistory/transcripts/thompson.htm')') ') _passage(`Interview with Ken Thompson, 9-6-89', `

    We stole a shell out of a MULTICS, the concept of a shell. We stole per process execution. You know create a process -execute the command. From a combination of the two, although, neither of them really did it, MULTICS wanted to do it. But, it was so expensive creating a process that it ended up creating a few processes and then using them and putting them back on the shelf, then picking them up and reinitializing them. So, they never really created a process for command because it was just too expensive. The ION direction and the stuff like that and later in fact streams came from um the IO switch, that we worked on in MULTICS. Having everything work the same and just directing, you know, changing what it really pointed to.

    ') - +_subsubheader(`DASH') +_bibliography(` +_bentr(`_link(`DASH', `http://gondor.apana.org.au/~herbert/dash/')') +_bentr(`_link(`DASH (cgit)', `https://git.kernel.org/pub/scm/utils/dash/dash.git')') +') +

    +On _ref(`#alpine') Linux, the _package(`dash-binsh') package configures DASH as the system's _file(`/bin/sh'). +

    _subheader(`true(1)') _bibliography(` From ada16e72c57e992754e2694d6ed6b6da5805822a Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 25 Nov 2022 20:57:56 -0500 Subject: [PATCH 36/71] mention kernel on bootstrapping --- wiki/unix/alpine.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index cd65296..21d359a 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -59,7 +59,7 @@ This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities

    Make sure to bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the bootstrap prefix and copy _file(`/etc/resolv.conf') over before _ref(`#posix#chroot(1)')ing into the bootstrap directory and finalizing setup. -Remember to set up users, _ref(`#fstab(5)'), and the bootloader if necessary. +Remember to set up users, _ref(`#fstab(5)'), the kernel, and the bootloader if necessary.

    _subheader(`postmarketOS') From 74b48cbdaff3fe32f27a2dd3a492ab565757e98b Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 25 Nov 2022 21:20:44 -0500 Subject: [PATCH 37/71] mention devmgmt in alpine, add stub in linux --- wiki/unix/alpine.m4 | 4 ++-- wiki/unix/linux.m4 | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 21d359a..5247ab3 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -1,6 +1,6 @@ _header(`Alpine')

    -Alpine Linux is a small Linux distribution based on musl libc. +Alpine Linux is a small _ref(`#linux') distribution based on musl libc. Its main purpose is to serve as a server distribution, however many have found use for it as a desktop distribution.

    @@ -59,7 +59,7 @@ This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities

    Make sure to bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the bootstrap prefix and copy _file(`/etc/resolv.conf') over before _ref(`#posix#chroot(1)')ing into the bootstrap directory and finalizing setup. -Remember to set up users, _ref(`#fstab(5)'), the kernel, and the bootloader if necessary. +Remember to set up users, _ref(`#fstab(5)'), the kernel, device management, and the bootloader if necessary.

    _subheader(`postmarketOS') diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index 7443935..ea2d0dc 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -74,6 +74,11 @@ On Alpine you'll need the _program(`pulseaudio'), _program(`pulseaudio-alsa'), a Start _man(`pulseaudio(1)') when you want audio, ideally in your _file(`.xinitrc').

    +_subheader(`Device Management') +_bibliography(` +_bentr(`_link(`udev', `https://en.wikipedia.org/wiki/Udev') (Wikipedia)') +') + _subheader(`Distributions')

    Linux is usually obtained as part of a software distribution put together to form a useable operating system. From f2791961c7249117366f6da6ad077535584780b6 Mon Sep 17 00:00:00 2001 From: dtb Date: Sat, 26 Nov 2022 22:00:58 -0500 Subject: [PATCH 38/71] site favicon --- wiki/favicon.ico | Bin 0 -> 318 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wiki/favicon.ico diff --git a/wiki/favicon.ico b/wiki/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e32f47cd819d467cd8a9c90603740ece3d4684d0 GIT binary patch literal 318 zcmb`C!3}^g3&lS|Dt)>cwGBJiZzQrWgT(j2%t%u?Pr04J!lCFV&8nym~V`46AKEfJn EZ{sEhd;kCd literal 0 HcmV?d00001 From c677057f6b267271bc571df95bedb96d5a3fcc1c Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 28 Nov 2022 16:10:40 -0500 Subject: [PATCH 39/71] fix alphabetization, clean up some of posix#ed(1) --- wiki/unix/posix.m4 | 48 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index 3e1e4b4..a0ac0f7 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -152,7 +152,45 @@ done _subheader(`ed(1)') _bibliography(` _bentr(`_link(`A Tutorial Introduction to the Unix Text Editor', `https://verticalsysadmin.com/vi/a_tutorial_introduction_to_the_unix_text_editor.pdf')') +_bentr(`_link(`Ed Cheat Sheet', `https://catonmat.net/ftp/ed.text.editor.cheat.sheet.txt')') ') +

    +I'm pretty sure some later UNIX-based OSes doubled the _man(`ed(1)') buffers, there's pretty much no downside to doing so in the modern era but it should be very easy to do yourself if it hasn't already been done (just double some of the array sizes in the beginning of _code(`ed.c')). +

    +_subsubheader(`Busybox') +_bibliography(` +_bentr(`_link(`editors/ed.c', `https://git.busybox.net/busybox/tree/editors/ed.c')') +') +_passage(`editors/ed.c, as of 2021-12-29', ` +
    +/* vi: set sw=4 ts=4: */
    +/*
    + * Copyright (c) 2002 by David I. Bell
    + * Permission is granted to use, distribute, or modify this source,
    + * provided that this copyright notice remains intact.
    + *
    + * The "ed" built-in command (much simplified)
    + */
    +//config:config ED
    +//config:	bool "ed (21 kb)"
    +//config:	default y
    +//config:	help
    +//config:	The original 1970'`s Unix text editor, from the days of teletypes.
    +//config:	Small, simple, evil. Part of SUSv3. If you'`re not already using
    +//config:	this, you don`'t need it.
    +
    ') +

    +_package(`busybox') _man(`ed(1)') exists as part of _package(`busybox') as an afterthought; +if on an embedded system, see if _ref(`#posix#vi(1)') has been included in the _package(`busybox') +configuration, which is much closer to traditional implementations of itself. +

    +_subsubheader(`plan9ports') +_bibliography(` +_bentr(`_link(`src/cmd/ed.c', `view-source:https://9fans.github.io/usr/local/plan9/src/cmd/ed.c')') +') +

    +Pretty good in use, but if you're using _package(`plan9port') consider checking out _man(`sam(1)'), a much more powerful line editor. +

    _subheader(`find(1)') -_subheader(`echo(1)') -_bibliography(` -_bentr(`Ed Cheat Sheet') -') -

    -A particularly shoddy attempt at _man(`ed(1)') is provided by _code(`busybox'). -A traditional _man(`ed(1)') implementation is in plan9ports. -I'm pretty sure some later UNIX-based OSes doubled the _man(`ed(1)') buffers, there's pretty much no downside to doing so in the modern era but it should be very easy to do yourself if it hasn't already been done (just double some of the array sizes in the beginning of _code(`ed.c')). -

    - _subheader(`m4(1)') _bibliography(` _bentr(`_link(`m4', `https://en.wikipedia.org/wiki/`M4_'(computer_language)') (Wikipedia)') From 5794c0ebbb404925f6ba34016a34e146f081415e Mon Sep 17 00:00:00 2001 From: dtb Date: Sun, 4 Dec 2022 09:31:32 -0500 Subject: [PATCH 40/71] split out a thing --- wiki/unix/alpine.m4 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 5247ab3..80ad351 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -9,6 +9,8 @@ _bibliography(` _bentr(`_link(`Alpine Package Keeper', `https://wiki.alpinelinux.org/wiki/Alpine_Package_Keeper') (Alpine Wiki)') _bentr(`Alpine repositories content search') ') +_subsubheader(`Adding software') +_man(`apk_add(8)') _subsubheader(`Repositories')

    See _man(`apk-repositories(5)'). @@ -53,7 +55,6 @@ Fill out _man(`apk-repositories(5)') on the mount.

  • Run _command(`apk --root /mnt add --initdb alpine-base'). -This is an ordinary _man(`apk-add(8)') call; you may wish to install necessities such as a kernel, firmware, and a bootloader at the same time.
  • From 53eb33023aefd8e4b6ac5a2e6c43348c7129cbe1 Mon Sep 17 00:00:00 2001 From: dtb Date: Sun, 4 Dec 2022 23:50:53 -0500 Subject: [PATCH 41/71] overhaul bootstrapping sections --- wiki/unix/alpine.m4 | 24 +++++++++++----------- wiki/unix/arch.m4 | 44 +++++++++++++++++------------------------ wiki/unix/bootloader.m4 | 1 + wiki/unix/index.m4 | 2 ++ wiki/unix/linux.m4 | 43 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 75 insertions(+), 39 deletions(-) create mode 100644 wiki/unix/bootloader.m4 diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 80ad351..a1e3f56 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -10,7 +10,7 @@ _bentr(`_link(`Alpine Package Keeper', `https://wiki.alpinelinux.org/wiki/Alpine _bentr(`Alpine repositories content search') ') _subsubheader(`Adding software') -_man(`apk_add(8)') +_man(`apk-add(8)') _subsubheader(`Repositories')

    See _man(`apk-repositories(5)'). @@ -45,22 +45,20 @@ To always install doc packages with program packages, _code(`apk add docs'). _subheader(`Bootstrapping')

    -Alpine's bootstrapping procedure is quite manual; you should probably use _program(`setup-alpine'). -However, it is possible and quite easy to perform the steps manually. +_program(`setup-alpine') exists to automate installation. +

    +_passage(`Eunakria on the Alpine Linux Discord server', +`

    setup-alpine is jank.

    ') +

    +To bootstrap _man(`apk(8)') do the following:

      -
    1. Copy over the contents of _file(`/etc/apk/keys') to _file(`/mnt/etc/apk/keys')
    2. -
    3. -Fill out _man(`apk-repositories(5)') on the mount. -
    4. -
    5. -Run _command(`apk --root /mnt add --initdb alpine-base'). -
    6. +
    7. Copy _man(`apk-keys(5)') to the analogous location on the mounted volume.
    8. +
    9. Fill out _man(`apk-repositories(5)') on the mount.
    10. +
    11. Use _man(`apk-add(8)') to initialize the package database on the mount (_command(`apk --root [mount] add --initdb alpine-base').

    -Make sure to bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the bootstrap prefix -and copy _file(`/etc/resolv.conf') over before _ref(`#posix#chroot(1)')ing into the bootstrap directory and finalizing setup. -Remember to set up users, _ref(`#fstab(5)'), the kernel, device management, and the bootloader if necessary. +Copy _file(`/etc/resolv.conf') over (and bind _file(`/dev/'), _file(`/proc/'), and _file(`/sys/')) before _ref(`#posix#chroot(1)')ing.

    _subheader(`postmarketOS') diff --git a/wiki/unix/arch.m4 b/wiki/unix/arch.m4 index 999d52d..445a7ab 100644 --- a/wiki/unix/arch.m4 +++ b/wiki/unix/arch.m4 @@ -2,33 +2,32 @@ _header(`Arch')

    Arch is known for using the latest versions of programs, which has given it an undeserved reputation of instability.

    + +_subheader(`AUR') +

    +You will need _package(`base-devel'). +

    + _subheader(`Bootstrapping')

    -Use _man(`pacstrap(8)'). +See _ref(`#linux#bootstrapping'). +Use _man(`pacstrap(8)') on Arch and _man(`basestrap(8)') on Artix.

    -At a minimum you need the _code(`base') package. -Select a kernel and install the corresponding package; _code(`linux'), _code(`linux-lts'), or another Linux configuration or fork. -The Arch wiki says you need to install _code(`linux-firmware'), this isn't strictly necessary but it is recommended. +Arch's base package is _package(`base'). +Additionally, a kernel such as _package(`linux') or _package(`linux-lts') will be necessary. +The Arch wiki says _package(`linux-firmware') is necessary; it's not on many hardware configurations but it's recommended. Install _code(`base-devel') if you plan on using the AUR or if you don't know what the AUR is yet. +On Artix you also need to select the _ref(`#linux#initialization') system: _package(`66'), _package(`dinit'), _package(`openrc'), _package(`runit'), or _package(`s6-base'). +The Artix wiki says the initialization-specific _ref(`#linux#logind') package is necessary; it's not but it's recommended.

    -It's also a good idea to install any utilities you'll need on the bootstrapped system. -Text editors, network managers or utilities, and other administration tools, for example. -Manual utilities such as _code(`man-db') and others would also be useful. +On the bootstrapped system, after chrooting in, uncomment a local mirror in _file(`/etc/pacman.d/mirrorlist-arch'). +Then configure _file(`/etc/pacman.conf') to use that mirror list.

    -
    Ubiquitous packages missing
    -

    From the annals of my notes, 2021-06-04:

    +_passage(`Config block conveyed to Leyla by an Arch package maintainer, shared to the Tebibyte Media Discord server 2021-06-04T1746+0500', +`
    -Had an issue with pacman missing some ubiquitous packages (esr's 'ascii', xorg-xev, etc).
    -This fixed it. I don't really know why - maybe some issues with my repos?
    -This was cleanly installed artix-openrc.
    -
    -[5:46 PM] Bassman Leyla: So what I did is I went into /etc/pacman.d/mirrorlist-arch and uncommented a local mirror
    -[5:46 PM] Bassman Leyla: Then I appended a config block a package maintainer gave me onto /etc/pacman.conf
    -[5:46 PM] Bassman Leyla: I'll paste it in
    -[5:47 PM] Bassman Leyla:
    -'''
     #
     # ARCHLINUX
     #
    @@ -50,8 +49,8 @@ Include = /etc/pacman.d/mirrorlist-arch
     
     #[multilib]
     #Include = /etc/pacman.d/mirrorlist-arch
    -'''
     
    +') _subheader(`Artix') _bibliography(` @@ -61,10 +60,3 @@ _bentr(`Artix Linux (Wik

    Artix is a Linux software distribution based on Arch that doesn't mandate SystemD as its initialization system.

    -_subsubheader(`Bootstrapping') -

    -This process differs from Arch's bootstrapping process. -Artix uses _man(`basestrap(8)') rather than _man(`pacstrap(8)'); -you need to select the initialization you want to use: _code(`66'), _code(`dinit'), _code(`openrc'), _code(`runit'), or _code(`s6-base'), as a package separate from _code(`base'); -and Artix's official wiki says you need to install the appropriate _link(`#logind', `_code(`elogind')') package (_code(`elogind-[initialization system]') e.g. _code(`elogind-66')) but like _code(`linux-firmware') though it is helpful it isn't strictly necessary. -

    diff --git a/wiki/unix/bootloader.m4 b/wiki/unix/bootloader.m4 new file mode 100644 index 0000000..3c02140 --- /dev/null +++ b/wiki/unix/bootloader.m4 @@ -0,0 +1 @@ +_header(`Bootloader') diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index f07eb44..20843b0 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -15,6 +15,8 @@ include(`arch.m4') include(`archives.m4') +include(`bootloader.m4') + include(`C.m4') include(`culture.m4') diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index ea2d0dc..1f6f47f 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -25,6 +25,11 @@ _bentr(`_link(`acpid', `https://sourceforge.net/projects/acpid2/')') _man(`acpid(8)') is a daemon that can automatically manage ACPI events on Linux.

    +_subheader(`a.out') +_bibliography(` +_bentr(`_link(`Re: [PATCH] x86: Remove a.out support', `https://lwn.net/ml/linux-kernel/202203161523.857B469@keescook/')') +') + _subheader(`Audio')

    Most audio servers recommend that they be run in userspace with user privileges, with PulseAudio going so far as to exiting when run as root without additional configuration. @@ -74,6 +79,38 @@ On Alpine you'll need the _program(`pulseaudio'), _program(`pulseaudio-alsa'), a Start _man(`pulseaudio(1)') when you want audio, ideally in your _file(`.xinitrc').

    +_subheader(`Bootstrapping') +

    +Usually the first program a computer will run is the _ref(`#bootloader'), +which loads the kernel and usually the _ref(`#linux#initramfs') which will handle mounting the system storage. +Then the _ref(`#linux#initialization') system is started, which handles daemons, some of which will handle login. +

    +

    +Bootstrapping Linux involves booting an operating system, usually off a temporary storage medium, mounting the intended system storage, +and installing the operating system on the intended storage. +Sometimes distributions come with software that mostly automates this. +

    +_passage(`veronika on the Alpine Linux Discord server, 2022-12-04T1111+0400',` +

    bootstrapping things is only useful for rare cases where you actually don`'t want to use the base packages that the installer gets for you automatically, and the installer doesn`'t get in your way of making your own system, instead it suggests you install certain packages, and asks what packages you want installed. If you`'re installing a desktop environment, it will probably ask you which meta package you want (or at least that`'s how I remember it working).

    +

    If you have an installer to do the same things with less steps for you, you should use it. Automation is progress, automation is the whole point of all this computer stuff. If you can automate it or make it easier, you probably should, unless you want some control over the process. For example, instead of checking the charge and running a command to put your laptop into battery saver mode, you make a program do it for you. Convenience is key to happy and painless computing

    +') +

    +If running very thin installation media, for example, a _ref(`#debian') network install CD, or just need the most up-to-date software possible, +the first step will be to connect to the Internet. +

    +

    +Next, if your chosen Linux distribution has a package manager, configure it, use it to initialize the file system on the intended system storage, +and install the necessary system packages to the storage. +Usually distributions have a single base package, like _ref(`#arch')'s _package(`base') or _ref(`#alpine')'s _package(`alpine-base'). +If it doesn't include any of them, install separately a kernel, initialization system, and userland. +

    +

    +Bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the volume to bootstrap +(_code(`for d in dev proc sys; do mount -o bind /$d /[mount]/$d; done')), +then _ref(`#posix#chroot(1)') in and complete the system setup. +Set up additional configuration necessary to boot (including _ref(`#fstab(5)'), _man(`hostname(5)'), _man(`hosts(5)'), and anything necessary for the kernel or initialization). +

    + _subheader(`Device Management') _bibliography(` _bentr(`_link(`udev', `https://en.wikipedia.org/wiki/Udev') (Wikipedia)') @@ -88,6 +125,12 @@ _subsubheader(_ref(`#alpine')) _subsubheader(_ref(`#arch')) _subsubheader(_ref(`#debian')) +_subheader(`Initialization') +_subsubheader(`OpenRC') +_subsubheader(`Runit') +_subsubheader(`S6') +_subsubheader(`Systemd') + _subheader(`initramfs') _bibliography(` _bentr(`_link(`Initial ramdisk', `https://en.wikipedia.org/wiki/Initial_ramdisk') (Wikipedia)') From 180590f2318a924e1f6cfd9b1412bfa602fd6921 Mon Sep 17 00:00:00 2001 From: dtb Date: Sun, 4 Dec 2022 23:54:31 -0500 Subject: [PATCH 42/71] reference --- wiki/unix/alpine.m4 | 1 + 1 file changed, 1 insertion(+) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index a1e3f56..01f0f8c 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -45,6 +45,7 @@ To always install doc packages with program packages, _code(`apk add docs'). _subheader(`Bootstrapping')

    +See _ref(`#linux#bootstrapping'). _program(`setup-alpine') exists to automate installation.

    _passage(`Eunakria on the Alpine Linux Discord server', From 0a926cb895cbaa5f7982ad6332d238b68285776e Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 5 Dec 2022 00:05:29 -0500 Subject: [PATCH 43/71] a tiny bit on the setup scripts --- wiki/unix/alpine.m4 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 01f0f8c..08ceaaa 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -46,10 +46,8 @@ To always install doc packages with program packages, _code(`apk add docs'). _subheader(`Bootstrapping')

    See _ref(`#linux#bootstrapping'). -_program(`setup-alpine') exists to automate installation. +The Alpine setup scripts also exist to aid in the bootstrap process.

    -_passage(`Eunakria on the Alpine Linux Discord server', -`

    setup-alpine is jank.

    ')

    To bootstrap _man(`apk(8)') do the following:

    @@ -61,6 +59,15 @@ To bootstrap _man(`apk(8)') do the following:

    Copy _file(`/etc/resolv.conf') over (and bind _file(`/dev/'), _file(`/proc/'), and _file(`/sys/')) before _ref(`#posix#chroot(1)')ing.

    +_subsubheader(`Setup scripts') +_bibliography(` +_bentr(`_link(`Alpine setup scripts', `https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts') (Alpine Wiki)') +') +_passage(`Eunakria on the Alpine Linux Discord server', +`

    setup-alpine is jank.

    ') +

    +_program(`setup-hostname') validates a _man(`hostname(5)') before writing to the mounted volume. +

    _subheader(`postmarketOS')

    From 45e4cb77b879bf52be1b8f7333b675cd7a320ed6 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 5 Dec 2022 01:42:09 -0500 Subject: [PATCH 44/71] clean favicon up a bit --- wiki/favicon.ico | Bin 318 -> 318 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/wiki/favicon.ico b/wiki/favicon.ico index e32f47cd819d467cd8a9c90603740ece3d4684d0..f4267c84b4654b5eab67bc5249c4bf8aa3a183c7 100644 GIT binary patch delta 94 zcmXwv!3_W*48sy8NIy3ZE3g^7*oM&%DLPcOwwkQ6N}nwPpbsIB9im}IMj&ql>ZgBl OF-vc)*OMCU8@nD@g$C9D delta 86 zcmXAgu?@g55CXvy@C#&?v?;ThU3nXi7Ug8qoH)U1tM&QFk*kzgk!0Bb)?ty|Q4Ekw OHpS(9@EPwlzWWC;I0o1N From 5e11258c0ce10141ea7faaca1132495187e0e15c Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 5 Dec 2022 23:25:22 -0500 Subject: [PATCH 45/71] some more arch info --- wiki/unix/alpine.m4 | 4 ++-- wiki/unix/arch.m4 | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 08ceaaa..1712e05 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -54,10 +54,10 @@ To bootstrap _man(`apk(8)') do the following:

    1. Copy _man(`apk-keys(5)') to the analogous location on the mounted volume.
    2. Fill out _man(`apk-repositories(5)') on the mount.
    3. -
    4. Use _man(`apk-add(8)') to initialize the package database on the mount (_command(`apk --root [mount] add --initdb alpine-base').
    5. +
    6. Use _man(`apk-add(8)') to initialize the package database on the mount (_command(`apk --root [mount] add --initdb alpine-base')).

    -Copy _file(`/etc/resolv.conf') over (and bind _file(`/dev/'), _file(`/proc/'), and _file(`/sys/')) before _ref(`#posix#chroot(1)')ing. +Copy _man(`resolv.conf(5)') over (and bind _file(`/dev/'), _file(`/proc/'), and _file(`/sys/')) before _ref(`#posix#chroot(1)')ing.

    _subsubheader(`Setup scripts') _bibliography(` diff --git a/wiki/unix/arch.m4 b/wiki/unix/arch.m4 index 445a7ab..bb9fd1f 100644 --- a/wiki/unix/arch.m4 +++ b/wiki/unix/arch.m4 @@ -1,6 +1,8 @@ _header(`Arch')

    -Arch is known for using the latest versions of programs, which has given it an undeserved reputation of instability. +Arch is a Linux software distribution that uses the _man(`pacman(8)') package manager. +Arch performs little in the way of modification of upstream versions of packages and offers only the latest (or last noticed) revisions of programs in its repositories, +which has given it a reputation for instability compared to other Linux software distributions that bug-test programs before offering them to users in standard release channels (for example, _ref(`#debian')).

    _subheader(`AUR') @@ -17,7 +19,6 @@ Use _man(`pacstrap(8)') on Arch and _man(`basestrap(8)') on Artix. Arch's base package is _package(`base'). Additionally, a kernel such as _package(`linux') or _package(`linux-lts') will be necessary. The Arch wiki says _package(`linux-firmware') is necessary; it's not on many hardware configurations but it's recommended. -Install _code(`base-devel') if you plan on using the AUR or if you don't know what the AUR is yet. On Artix you also need to select the _ref(`#linux#initialization') system: _package(`66'), _package(`dinit'), _package(`openrc'), _package(`runit'), or _package(`s6-base'). The Artix wiki says the initialization-specific _ref(`#linux#logind') package is necessary; it's not but it's recommended.

    @@ -60,3 +61,12 @@ _bentr(`Artix Linux (Wik

    Artix is a Linux software distribution based on Arch that doesn't mandate SystemD as its initialization system.

    + +_subheader(`makepkg(8)') +_bibliography(` +_bentr(`_link(`makepkg', `https://wiki.archlinux.org/title/Makepkg') (Arch Wiki)') +_bentr(`_link(`pacman', `https://gitlab.archlinux.org/pacman/pacman/')/_link(`scripts/makepkg.sh.in', `https://gitlab.archlinux.org/pacman/pacman/-/blob/master/scripts/makepkg.sh.in')') +') +

    +_man(`makepkg(8)') is a _man(`bash(1)') script provided by _package(`pacman') that provides an interface through which to manage _man(``PKGBUILD'(5)')s. +

    From a947f37c312b57efcc36e27295af073bc7a96a6c Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 5 Dec 2022 23:37:25 -0500 Subject: [PATCH 46/71] moar stuff --- wiki/unix/X.m4 | 4 ---- wiki/unix/alpine.m4 | 7 +++++++ wiki/unix/linux.m4 | 9 +++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index 37e028b..42a2787 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -7,10 +7,6 @@ _bentr(`_link(`Xorg', `https://wiki.archlinux.org/title/Xorg') (Arch Wiki)') X is a graphical windowing system that can be used on _ref(`#linux'), FreeBSD, OpenBSD, _ref(`#netbsd'), and some proprietary operating systems as well. X is not the only windowing system; _man(`twin(1)') exists for windowed multitasking within a framebuffer and Wayland is another windowing system intended to replace X.

    -

    -Some Linux software distributions have included scripts to automatically fetch and install an X server. -_ref(`#alpine') has _package(`setup-xorg-base'), which adds the packages _package(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the OpenRC services for udev. -

    _subheader(`Mail')

    diff --git a/wiki/unix/alpine.m4 b/wiki/unix/alpine.m4 index 1712e05..38a2579 100644 --- a/wiki/unix/alpine.m4 +++ b/wiki/unix/alpine.m4 @@ -59,6 +59,10 @@ To bootstrap _man(`apk(8)') do the following:

    Copy _man(`resolv.conf(5)') over (and bind _file(`/dev/'), _file(`/proc/'), and _file(`/sys/')) before _ref(`#posix#chroot(1)')ing.

    +

    +In the chroot, make sure to install a kernel, which will put _ref(`#linux#initramfs') creation in the _man(`apk(8)') build hooks and rebuild the initramfs whenever the kernel is upgraded. +

    + _subsubheader(`Setup scripts') _bibliography(` _bentr(`_link(`Alpine setup scripts', `https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts') (Alpine Wiki)') @@ -68,6 +72,9 @@ _passage(`Eunakria on the Alpine Linux Discord server',

    _program(`setup-hostname') validates a _man(`hostname(5)') before writing to the mounted volume.

    +

    +_program(`setup-xorg-base') adds the packages _package(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the _ref(`#linux#initialization') services for udev. +

    _subheader(`postmarketOS')

    diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index 1f6f47f..fd4cd39 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -125,8 +125,17 @@ _subsubheader(_ref(`#alpine')) _subsubheader(_ref(`#arch')) _subsubheader(_ref(`#debian')) +_subheader(`hostname') +

    +The special file _file(`/proc/sys/kernel/hostname') directly controls the system hostname in the kernel. +

    + _subheader(`Initialization') _subsubheader(`OpenRC') +_bibliography(` +_bentr(`_link(`OpenRC', `https://wiki.gentoo.org/wiki/OpenRC') (Gentoo Wiki)') +') + _subsubheader(`Runit') _subsubheader(`S6') _subsubheader(`Systemd') From 7fca631d01e1ea1497c0df670c63037d82043c8b Mon Sep 17 00:00:00 2001 From: dtb Date: Sun, 18 Dec 2022 01:17:02 -0500 Subject: [PATCH 47/71] the game --- wiki/Makefile | 5 ++++- wiki/game/Makefile | 9 +++++++++ wiki/game/index.m4 | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 wiki/game/Makefile create mode 100644 wiki/game/index.m4 diff --git a/wiki/Makefile b/wiki/Makefile index 9c05f58..e08e540 100644 --- a/wiki/Makefile +++ b/wiki/Makefile @@ -1,6 +1,9 @@ -all: unix/index.html +all: game/index.html unix/index.html +game/index.html: game/*.m4 + $(MAKE) -C game unix/index.html: unix/*.m4 $(MAKE) -C unix clean: + $(MAKE) -C game clean $(MAKE) -C unix clean .PHONY: all clean diff --git a/wiki/game/Makefile b/wiki/game/Makefile new file mode 100644 index 0000000..e0ce0de --- /dev/null +++ b/wiki/game/Makefile @@ -0,0 +1,9 @@ +RM = rm -f + +index.html: *.m4 + m4 index.m4 >index.html + +clean: + $(RM) index.html + +.PHONY: clean diff --git a/wiki/game/index.m4 b/wiki/game/index.m4 new file mode 100644 index 0000000..1880e70 --- /dev/null +++ b/wiki/game/index.m4 @@ -0,0 +1,15 @@ +define(`_DESCRIPTION', `a loss cause')dnl +define(`_PAGE', `thegame')dnl +include(`../wiki.m4')dnl + +_header(`Game') + +_passage(`_link(`James Dunckley', `https://www.urbandictionary.com/define.php?term=the%20game')', ` +

    +A game, The sole object of which is to not remember that you are playing it. As soon as you remember that it exists, you have lost and must start again. +

    ') + +

    +Played in the walls of schools and on the walls of BBSes, the Game is an early cognitovirus that has drawn ire for its unwinnable nature; +nobody who knows of the Game has won, yet nobody who's won has ever known of the Game. +

    From e71bc5e89868791f440b283d94060dd07694c46f Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 19 Dec 2022 22:14:20 -0500 Subject: [PATCH 48/71] add sxmo app --- wiki/unix/X.m4 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index 42a2787..3d21d74 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -50,6 +50,15 @@ _bibliography(` _bentr(`_link(`Configurations for ctwm (and twm)', `https://datagubbe.se/twm/')') ') +_subheader(`sxmo') +_subsubheader(`Add an app') +_bibliography(` +_bentr(`_link(`How to Add Apps to the List?', `https://wiki.postmarketos.org/wiki/Sxmo/Tips_and_Tricks#How_to_Add_Apps_to_the_List.3F')') +') +

    +Copy _file(`/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh') to _file(`"$XDG_CONFIG_HOME"/sxmo/hooks/sxmo_hook_apps.sh') and edit the script. +

    + _subheader(`WWW') _subsubheader(`TOR Browser')

    From 32425e5ea916b08b172d3b12c209d12fae8fa688 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 19 Dec 2022 22:36:54 -0500 Subject: [PATCH 49/71] anki fix for pmos 22.12 --- wiki/unix/X.m4 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index 3d21d74..a7b77f7 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -8,6 +8,22 @@ X is a graphical windowing system that can be used on _ref(`#linux'), FreeBSD, O X is not the only windowing system; _man(`twin(1)') exists for windowed multitasking within a framebuffer and Wayland is another windowing system intended to replace X.

    +_subheader(`Anki') +

    +Anki is the de facto standard flashcards studying programming given its popularity and lack of competition. +Anki uses spaced repetition to make sure the user remembers what they study for the long term. +

    +_subsubheader(`_code(`ModuleNotFoundError: No module named `'aqt`'')') +

    +The module _code(`aqt') isn't findable in the environment variable _code(`PYTHONPATH'). +Check each directory in the pattern _file(`$PREFIX/lib/python*/site-packages') for the directory _file(`aqt/'), +and if it's there, try setting _code(`PYTHONPATH') to that corresponding _file(`site-packages') directory. +

    +

    +This bug exists on postmarketOS 22.12 (aarch64, based on Alpine Linux 3.17; anki-2.1.49-r2); +the _code(`PYTHONPATH') fix works as _code(`PYTHONPATH=/usr/lib/python3.11/site-packages/ anki'). +

    + _subheader(`Mail')

    The (formerly Mozilla) Thunderbird mail suite is a popular though maximal choice. From 47fd14b15fede3d3d41ad1efe1e3a3a83533b780 Mon Sep 17 00:00:00 2001 From: dtb Date: Wed, 21 Dec 2022 23:47:05 -0500 Subject: [PATCH 50/71] fonts --- wiki/unix/X.m4 | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index a7b77f7..404b8b6 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -24,6 +24,30 @@ This bug exists on postmarketOS 22.12 (aarch64, based on Alpine Linux 3.17; anki the _code(`PYTHONPATH') fix works as _code(`PYTHONPATH=/usr/lib/python3.11/site-packages/ anki').

    +_subheader(`Fonts') +_subsubheader(`日本語 (Japanese)') +_bibliography(` +_bentr(`_link(`CJK characters', `https://en.wikipedia.org/wiki/CJK_characters') (Wikipedia)') +_bentr(`_link(`jiskan', `https://ja.wikipedia.org/wiki/Jiskan') (Wikipedia) (_link(`English', `https://ja-m-wikipedia-org.translate.goog/wiki/Jiskan'))') +_bentr(`_link(`Xorg', `https://gitlab.freedesktop.org/xorg/')/_link(`font/jis-misc', `https://gitlab.freedesktop.org/xorg/font/jis-misc')') +_bentr(`_link(`久しぶりにPostmarketOS on PinePhone', `https://twitter.com/osakanataro2/status/1379410388110864385')') +') +

    +jiskan is a family of fonts comprising jiskan16 and jiskan24. +Both are included in Xorg, in the source tree at font/jis-misc but usually packaged separately (_package(`font-jis-misc') on _ref(`#alpine')). +

    + +_subsubheader(`Noto') +_bibliography(` +_bentr(`_link(`Noto fonts', `https://en.wikipedia.org/wiki/Noto_fonts') (Wikipedia)') +') +

    +Noto has glyphs for CJK characters and emoji. +

    +

    +On _ref(`#alpine'), the _link(`_package(`font-noto-')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*&branch=edge&repo=&arch=&maintainer=') prefix precedes all Noto family fonts. +

    + _subheader(`Mail')

    The (formerly Mozilla) Thunderbird mail suite is a popular though maximal choice. From 3244799eff7affea43a2635065374a2c08a60a50 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 22 Dec 2022 08:36:32 -0500 Subject: [PATCH 51/71] move fonts out of X --- wiki/unix/X.m4 | 19 ++----------------- wiki/unix/fonts.m4 | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index 404b8b6..f129105 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -25,27 +25,12 @@ the _code(`PYTHONPATH') fix works as _code(`PYTHONPATH=/usr/lib/python3.11/site-

    _subheader(`Fonts') -_subsubheader(`日本語 (Japanese)') +_subsubheader(`日本語') _bibliography(` -_bentr(`_link(`CJK characters', `https://en.wikipedia.org/wiki/CJK_characters') (Wikipedia)') -_bentr(`_link(`jiskan', `https://ja.wikipedia.org/wiki/Jiskan') (Wikipedia) (_link(`English', `https://ja-m-wikipedia-org.translate.goog/wiki/Jiskan'))') _bentr(`_link(`Xorg', `https://gitlab.freedesktop.org/xorg/')/_link(`font/jis-misc', `https://gitlab.freedesktop.org/xorg/font/jis-misc')') -_bentr(`_link(`久しぶりにPostmarketOS on PinePhone', `https://twitter.com/osakanataro2/status/1379410388110864385')') ')

    -jiskan is a family of fonts comprising jiskan16 and jiskan24. -Both are included in Xorg, in the source tree at font/jis-misc but usually packaged separately (_package(`font-jis-misc') on _ref(`#alpine')). -

    - -_subsubheader(`Noto') -_bibliography(` -_bentr(`_link(`Noto fonts', `https://en.wikipedia.org/wiki/Noto_fonts') (Wikipedia)') -') -

    -Noto has glyphs for CJK characters and emoji. -

    -

    -On _ref(`#alpine'), the _link(`_package(`font-noto-')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*&branch=edge&repo=&arch=&maintainer=') prefix precedes all Noto family fonts. +Both jiskan16 and jiskan24 are included in Xorg, in the source tree at font/jis-misc but usually packaged separately (_package(`font-jis-misc') on _ref(`#alpine')).

    _subheader(`Mail') diff --git a/wiki/unix/fonts.m4 b/wiki/unix/fonts.m4 index 2a7d932..f73790a 100644 --- a/wiki/unix/fonts.m4 +++ b/wiki/unix/fonts.m4 @@ -1 +1,29 @@ _header(`Fonts') +

    +Also see _ref(`#x#fonts'). + +_subheader(`Noto') +_bibliography(` +_bentr(`_link(`Noto fonts', `https://en.wikipedia.org/wiki/Noto_fonts') (Wikipedia)') +_bentr(`_link(`Overview of Unicode coverage by Noto', `https://notofonts.github.io/overview/')') +') +

    +As of 2021-04, Noto has fonts for 54% of Unicode. +

    +

    +On _ref(`#alpine'), all Noto family fonts match the pattern _link(`_package(`font-noto-*')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*'). +

    + +_subheader(`日本語') +_bibliography(` +_bentr(`_link(`CJK characters', `https://en.wikipedia.org/wiki/CJK_characters') (Wikipedia)') +_bentr(`_link(`jiskan', `https://ja.wikipedia.org/wiki/Jiskan') (Wikipedia) (_link(`English', `https://ja-m-wikipedia-org.translate.goog/wiki/Jiskan'))') +_bentr(`_link(`久しぶりにPostmarketOS on PinePhone', `https://twitter.com/osakanataro2/status/1379410388110864385')') +') +

    +jiskan is a family of fonts comprising jiskan16 and jiskan24. +

    +_subsubheader(`あずき') +_bibliography(` +_bentr(`_link(`あずきフォント', `http://azukifont.com/font/azuki.html')') +') From 7866d6250d6a5b93efc2294c64ff8ccb9a9ea7e0 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 22 Dec 2022 08:48:41 -0500 Subject: [PATCH 52/71] bookmark dump --- wiki/unix/fonts.m4 | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/wiki/unix/fonts.m4 b/wiki/unix/fonts.m4 index f73790a..b05d679 100644 --- a/wiki/unix/fonts.m4 +++ b/wiki/unix/fonts.m4 @@ -2,6 +2,16 @@ _header(`Fonts')

    Also see _ref(`#x#fonts'). +_subheader(`Century Schoolbook') +_bibliography(` +_bentr(`_link(`Fonts in Use: Neon Genesis Evangelion', `https://fontsinuse.com/uses/28760/neon-genesis-evangelion')') +') + +_subheader(`Comic Mono') +_bibliography(` +_bentr(`_link(`Comic Mono', `https://dtinth.github.io/comic-mono-font/')') +') + _subheader(`Noto') _bibliography(` _bentr(`_link(`Noto fonts', `https://en.wikipedia.org/wiki/Noto_fonts') (Wikipedia)') @@ -14,6 +24,20 @@ As of 2021-04, Noto has fonts for 54% of Unicode. On _ref(`#alpine'), all Noto family fonts match the pattern _link(`_package(`font-noto-*')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*').

    +_subheader(`Vendor Fonts') +_bibliography(` +_bentr(`_link(`Fonts for NeXTStep, OpenStep, and Rhapsody', `http://shawcomputing.net/resources/next/software/ns-os-rhap_fonts/NS-OS-Rhap_Fonts_1.html')') +_bentr(`_link(`The Ultimate Oldschool PC Font Pack', `https://int10h.org/oldschool-pc-fonts/')') +') + +_subheader(`Unscii') +_bibliography(` +_bentr(`_link(`Unscii', `http://pelulamu.net/unscii/')') +') +

    +Unscii is packaged as _package(`fonts/unscii') on _ref(`#pkgsrc'). +

    + _subheader(`日本語') _bibliography(` _bentr(`_link(`CJK characters', `https://en.wikipedia.org/wiki/CJK_characters') (Wikipedia)') From 1be03616c2f04f20802f324e6a537a7dfb009435 Mon Sep 17 00:00:00 2001 From: dtb Date: Thu, 22 Dec 2022 09:15:56 -0500 Subject: [PATCH 53/71] noto pkgsrc --- wiki/unix/fonts.m4 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wiki/unix/fonts.m4 b/wiki/unix/fonts.m4 index b05d679..0d5cc1c 100644 --- a/wiki/unix/fonts.m4 +++ b/wiki/unix/fonts.m4 @@ -21,7 +21,8 @@ _bentr(`_link(`Overview of Unicode coverage by Noto', `https://notofonts.github. As of 2021-04, Noto has fonts for 54% of Unicode.

    -On _ref(`#alpine'), all Noto family fonts match the pattern _link(`_package(`font-noto-*')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*'). +On _ref(`#alpine'), all Noto family fonts match the glob _link(`_package(`font-noto-*')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*'). +In _ref(`#pkgsrc'), all Noto family fonts match the glob _package(`fonts/noto-*').

    _subheader(`Vendor Fonts') From 736470bf057f238a5be301b609dfe5e8e8a62f44 Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 23 Dec 2022 21:34:32 -0500 Subject: [PATCH 54/71] simplify build --- wiki/Makefile | 16 +++++++++++----- wiki/game/index.m4 | 2 +- wiki/{game/Makefile => page.mk} | 0 wiki/unix/Makefile | 9 --------- 4 files changed, 12 insertions(+), 15 deletions(-) rename wiki/{game/Makefile => page.mk} (100%) delete mode 100644 wiki/unix/Makefile diff --git a/wiki/Makefile b/wiki/Makefile index e08e540..3f5b591 100644 --- a/wiki/Makefile +++ b/wiki/Makefile @@ -1,9 +1,15 @@ -all: game/index.html unix/index.html +RM = rm -f +TARGETS = game/index.html unix/index.html + +all: $(TARGETS) + game/index.html: game/*.m4 - $(MAKE) -C game + $(MAKE) -f page.mk -C game + unix/index.html: unix/*.m4 - $(MAKE) -C unix + $(MAKE) -f page.mk -C unix + clean: - $(MAKE) -C game clean - $(MAKE) -C unix clean + $(RM) $(TARGETS) + .PHONY: all clean diff --git a/wiki/game/index.m4 b/wiki/game/index.m4 index 1880e70..950eea9 100644 --- a/wiki/game/index.m4 +++ b/wiki/game/index.m4 @@ -1,5 +1,5 @@ define(`_DESCRIPTION', `a loss cause')dnl -define(`_PAGE', `thegame')dnl +define(`_PAGE', `game')dnl include(`../wiki.m4')dnl _header(`Game') diff --git a/wiki/game/Makefile b/wiki/page.mk similarity index 100% rename from wiki/game/Makefile rename to wiki/page.mk diff --git a/wiki/unix/Makefile b/wiki/unix/Makefile deleted file mode 100644 index e0ce0de..0000000 --- a/wiki/unix/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -RM = rm -f - -index.html: *.m4 - m4 index.m4 >index.html - -clean: - $(RM) index.html - -.PHONY: clean From dd4614c190afc38377131dae7070213d347bd535 Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 23 Dec 2022 21:36:56 -0500 Subject: [PATCH 55/71] try this --- wiki/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wiki/Makefile b/wiki/Makefile index 3f5b591..1ed41af 100644 --- a/wiki/Makefile +++ b/wiki/Makefile @@ -4,10 +4,10 @@ TARGETS = game/index.html unix/index.html all: $(TARGETS) game/index.html: game/*.m4 - $(MAKE) -f page.mk -C game + $(MAKE) -f ../page.mk -C game unix/index.html: unix/*.m4 - $(MAKE) -f page.mk -C unix + $(MAKE) -f ../page.mk -C unix clean: $(RM) $(TARGETS) From e75d1281e4b519cb46236ce46962f7cf79f43d4e Mon Sep 17 00:00:00 2001 From: dtb Date: Fri, 23 Dec 2022 21:40:59 -0500 Subject: [PATCH 56/71] game is officially on murderuus --- wiki/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/wiki/index.html b/wiki/index.html index f66c312..434b760 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -13,6 +13,7 @@

    be.murderu.us

    Contributing

    From 170cfdd6ee13fb9049ac714c8db6ea8c52a0d4f4 Mon Sep 17 00:00:00 2001 From: dtb Date: Sat, 24 Dec 2022 12:09:20 -0500 Subject: [PATCH 57/71] wvkbd --- wiki/unix/X.m4 | 11 +++++++++++ wiki/unix/fonts.m4 | 11 +++++++++++ wiki/unix/index.m4 | 2 ++ wiki/unix/wayland.m4 | 22 ++++++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 wiki/unix/wayland.m4 diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index f129105..056a2af 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -24,6 +24,17 @@ This bug exists on postmarketOS 22.12 (aarch64, based on Alpine Linux 3.17; anki the _code(`PYTHONPATH') fix works as _code(`PYTHONPATH=/usr/lib/python3.11/site-packages/ anki').

    +_subheader(`cairo') +_bibliography(` +_bentr(`_link(`cairo', `https://en.wikipedia.org/wiki/Cairo_(graphics)') (Wikipedia)') +') +

    +cairo is a graphics rendering library, originally for X but later made cross-platform. +

    +

    +cairo is available on _ref(`#alpine') as _package(`cairo-dev'). +

    + _subheader(`Fonts') _subsubheader(`日本語') _bibliography(` diff --git a/wiki/unix/fonts.m4 b/wiki/unix/fonts.m4 index 0d5cc1c..51f5476 100644 --- a/wiki/unix/fonts.m4 +++ b/wiki/unix/fonts.m4 @@ -25,6 +25,17 @@ On _ref(`#alpine'), all Noto family fonts match the glob _link(`_package(`font-n In _ref(`#pkgsrc'), all Noto family fonts match the glob _package(`fonts/noto-*').

    +_subheader(`Pango') +_bibliography(` +_bentr(`_link(`Pango', `https://pango.gnome.org/')') +') +

    +Pango is a font rendering library. +

    +

    +Pango is packaged for _ref(`#alpine') as _package(`pango-dev'). +

    + _subheader(`Vendor Fonts') _bibliography(` _bentr(`_link(`Fonts for NeXTStep, OpenStep, and Rhapsody', `http://shawcomputing.net/resources/next/software/ns-os-rhap_fonts/NS-OS-Rhap_Fonts_1.html')') diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index 20843b0..34e8518 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -45,6 +45,8 @@ include(`pkg-config.m4') include(`telepathy.m4') +include(`wayland.m4') + include(`wifi.m4') include(`volumes.m4') diff --git a/wiki/unix/wayland.m4 b/wiki/unix/wayland.m4 new file mode 100644 index 0000000..c253f59 --- /dev/null +++ b/wiki/unix/wayland.m4 @@ -0,0 +1,22 @@ +_header(`Wayland') +_subheader(`wvkbd') +

    +wvkbd (Wayland Virtual Keyboard) is a software keyboard implementation for +environments without a physical keyboard, such as a smartphone or tablet. +_ref(`#x#sxmo') uses wvkbd by default in its variant for Wayland. +

    +

    +wvkbd depends on _ref(`#x#cairo'), _ref(`#fonts#pango'), the Wayland client libraries, and xkb-common. +

    +_subsubheader(`warning: implicit declaration of function `'zwp_virtual_keyboard_*`'') +

    +Due to how the Makefile and ref(`#posix#make(1)') work, if compilation is +attempted before _program(`wayland-scanner') is installed, an empty +_file(`proto/virtual-keyboard-unstable-v1-client-protocol.h') will be generated. +The preprocessor won't error for lack of the file but because the file will be +empty the necessary prototypes and constants will be missing and compilation +will fail. +

    +

    +_code(`make clean') should fix this. +

    From 66b3b1480cb8f31a666f2bc2ae4f51a4c2dcb447 Mon Sep 17 00:00:00 2001 From: dtb Date: Sat, 24 Dec 2022 12:11:28 -0500 Subject: [PATCH 58/71] typo --- wiki/unix/wayland.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/unix/wayland.m4 b/wiki/unix/wayland.m4 index c253f59..1ab1baa 100644 --- a/wiki/unix/wayland.m4 +++ b/wiki/unix/wayland.m4 @@ -10,7 +10,7 @@ wvkbd depends on _ref(`#x#cairo'), _ref(`#fonts#pango'), the Wayland client libr

    _subsubheader(`warning: implicit declaration of function `'zwp_virtual_keyboard_*`'')

    -Due to how the Makefile and ref(`#posix#make(1)') work, if compilation is +Due to how the Makefile and _ref(`#posix#make(1)') work, if compilation is attempted before _program(`wayland-scanner') is installed, an empty _file(`proto/virtual-keyboard-unstable-v1-client-protocol.h') will be generated. The preprocessor won't error for lack of the file but because the file will be From c6cb7696c7812690ceb591388e98241eab6d8331 Mon Sep 17 00:00:00 2001 From: dtb Date: Sat, 24 Dec 2022 19:39:07 -0500 Subject: [PATCH 59/71] typo --- wiki/game/index.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/game/index.m4 b/wiki/game/index.m4 index 950eea9..cf1670f 100644 --- a/wiki/game/index.m4 +++ b/wiki/game/index.m4 @@ -10,6 +10,6 @@ A game, The sole object of which is to not remember that you are playing it. As

    ')

    -Played in the walls of schools and on the walls of BBSes, the Game is an early cognitovirus that has drawn ire for its unwinnable nature; +Played in the halls of schools and on the walls of BBSes, the Game is an early cognitovirus that has drawn ire for its unwinnable nature; nobody who knows of the Game has won, yet nobody who's won has ever known of the Game.

    From 6cbece0716aff78f1dc7fdfad18ff97ce08ba5c0 Mon Sep 17 00:00:00 2001 From: dtb Date: Sat, 24 Dec 2022 19:53:29 -0500 Subject: [PATCH 60/71] polish --- wiki/.build.yml | 10 ++++++++-- wiki/Makefile | 9 +++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/wiki/.build.yml b/wiki/.build.yml index fb26077..d56f99e 100644 --- a/wiki/.build.yml +++ b/wiki/.build.yml @@ -4,10 +4,16 @@ packages: - hut - m4 tasks: -- package: | +- build: | cd wiki make - tar cvz --exclude .git --exclude '*.m4' . >../site.tar.gz +- package: | + cd wiki + tar cvz \ + --exclude .git \ + --exclude '*.m4' \ + --exclude '*.mk' \ + . >../site.tar.gz ls -l ../site.tar.gz - upload: | hut pages publish -d be.murderu.us site.tar.gz diff --git a/wiki/Makefile b/wiki/Makefile index 1ed41af..9058a11 100644 --- a/wiki/Makefile +++ b/wiki/Makefile @@ -3,13 +3,10 @@ TARGETS = game/index.html unix/index.html all: $(TARGETS) -game/index.html: game/*.m4 - $(MAKE) -f ../page.mk -C game - -unix/index.html: unix/*.m4 - $(MAKE) -f ../page.mk -C unix - clean: $(RM) $(TARGETS) +%/index.html: %/*.m4 + $(MAKE) -C $* -f ../page.mk + .PHONY: all clean From 00a0bb0a4fa33c1e4d2740a5c6e02d2b28eee953 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 17:46:46 -0500 Subject: [PATCH 61/71] separate out linux from unix --- wiki/Makefile | 2 +- wiki/linux/a.out.m4 | 4 + wiki/linux/acpi.m4 | 14 +++ wiki/{unix => linux}/alpine.m4 | 0 wiki/{unix => linux}/arch.m4 | 0 wiki/linux/audio.m4 | 48 +++++++++ wiki/linux/bootstrapping.m4 | 31 ++++++ wiki/{unix => linux}/debian.m4 | 0 wiki/linux/devices.m4 | 4 + wiki/linux/distributions.m4 | 8 ++ wiki/linux/hostname.m4 | 4 + wiki/linux/initialization.m4 | 9 ++ wiki/linux/initramfs.m4 | 9 ++ wiki/linux/linux.m4 | 40 ++++++++ wiki/linux/login.m4 | 17 +++ wiki/linux/macros.m4 | 5 + wiki/linux/util-linux.m4 | 7 ++ wiki/unix/index.m4 | 6 -- wiki/unix/linux.m4 | 182 +-------------------------------- 19 files changed, 202 insertions(+), 188 deletions(-) create mode 100644 wiki/linux/a.out.m4 create mode 100644 wiki/linux/acpi.m4 rename wiki/{unix => linux}/alpine.m4 (100%) rename wiki/{unix => linux}/arch.m4 (100%) create mode 100644 wiki/linux/audio.m4 create mode 100644 wiki/linux/bootstrapping.m4 rename wiki/{unix => linux}/debian.m4 (100%) create mode 100644 wiki/linux/devices.m4 create mode 100644 wiki/linux/distributions.m4 create mode 100644 wiki/linux/hostname.m4 create mode 100644 wiki/linux/initialization.m4 create mode 100644 wiki/linux/initramfs.m4 create mode 100644 wiki/linux/linux.m4 create mode 100644 wiki/linux/login.m4 create mode 100644 wiki/linux/macros.m4 create mode 100644 wiki/linux/util-linux.m4 diff --git a/wiki/Makefile b/wiki/Makefile index 9058a11..eb58f69 100644 --- a/wiki/Makefile +++ b/wiki/Makefile @@ -1,5 +1,5 @@ RM = rm -f -TARGETS = game/index.html unix/index.html +TARGETS = game/index.html linux/index.html unix/index.html all: $(TARGETS) diff --git a/wiki/linux/a.out.m4 b/wiki/linux/a.out.m4 new file mode 100644 index 0000000..732694b --- /dev/null +++ b/wiki/linux/a.out.m4 @@ -0,0 +1,4 @@ +_header(`a.out') +_bibliography(` +_bentr(`_link(`Re: [PATCH] x86: Remove a.out support', `https://lwn.net/ml/linux-kernel/202203161523.857B469@keescook/')') +') diff --git a/wiki/linux/acpi.m4 b/wiki/linux/acpi.m4 new file mode 100644 index 0000000..8bc9174 --- /dev/null +++ b/wiki/linux/acpi.m4 @@ -0,0 +1,14 @@ +_header(`ACPI') +_bibliography(` +_bentr(`_ref(`#ACPI')') +') +

    +logind (as part of SystemD), elogind, acpid, and many desktop environments can manage ACPI events automatically, and sometimes this is configured by default as part of a Linux software distribution. +

    +_subheader(`acpid(8)') +_bibliography(` +_bentr(`_link(`acpid', `https://sourceforge.net/projects/acpid2/')') +') +

    +_man(`acpid(8)') is a daemon that can automatically manage ACPI events on Linux. +

    diff --git a/wiki/unix/alpine.m4 b/wiki/linux/alpine.m4 similarity index 100% rename from wiki/unix/alpine.m4 rename to wiki/linux/alpine.m4 diff --git a/wiki/unix/arch.m4 b/wiki/linux/arch.m4 similarity index 100% rename from wiki/unix/arch.m4 rename to wiki/linux/arch.m4 diff --git a/wiki/linux/audio.m4 b/wiki/linux/audio.m4 new file mode 100644 index 0000000..9df8d29 --- /dev/null +++ b/wiki/linux/audio.m4 @@ -0,0 +1,48 @@ +_header(`Audio') +

    +Most audio servers recommend that they be run in userspace with user privileges, with PulseAudio going so far as to exiting when run as root without additional configuration. +The Alpine wiki currently recommends _man(`pipewire(1)'), with postmarketOS, which is based on Alpine, coming pre-configured with PipeWire. +PipeWire is relatively new and the typical audio server used is PulseAudio; _ref(`#debian') and many popular Debian-based distributions come pre-configured with PulseAudio. +

    +_subheader(`ALSA') +_bibliography(` +_bentr(`Adding sound (Alpine Linux Wiki)') +_bentr(`ALSA lib conf Evaluate error') +_bentr(`ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave') +') +

    +The Alpine wiki ("Adding sound") says to install _code(`alsa-conf'), _code(`alsa-lib'), and _code(`alsa-utils'), +add yourself to the _code(`audio') group, and then do some more configuration that I've never needed to do: +Use _man(`alsamixer(1)') to find a working sound card (press _code(`F6') from the first screen ALSAMixer presents) +and edit _code(`/usr/share/alsa/alsa.conf') and change _code(`defaults.ctl.card') and _code(`defaults.pcm.card') to the sound card that works. +

    +

    +The Alpine wiki doesn't mention this but you'll need to enable the _code(`alsa') OpenRC service and either start it or reboot. +I also installed _code(`gstreamer') but I don't know why. +

    +

    +ALSA is clunky, many people prefer to use a frontend such as Pipewire or PulseAudio that exposes its own interface while remaining compatible with ALSA. +

    +_subheader(`OSS') +

    +Deprecated, unfortunately. +

    +_subheader(`PipeWire') +_bibliography(` +_bentr(`PipeWire (Alpine Linux Wiki)') +_bentr(`PipeWire (FreeDesktop Wiki)') +') +

    +Provided by the _code(`pipewire') package on Alpine. +

    +
    +RTKit error: org.freedesktop.DBus.Error.ServiceUnknown
    +
    +

    +This means you need _program(`rtkit') installed and running through your initialization system. +

    +_subheader(`PulseAudio') +

    +On Alpine you'll need the _program(`pulseaudio'), _program(`pulseaudio-alsa'), and _program(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. +Start _man(`pulseaudio(1)') when you want audio, ideally in your _file(`.xinitrc'). +

    diff --git a/wiki/linux/bootstrapping.m4 b/wiki/linux/bootstrapping.m4 new file mode 100644 index 0000000..c8d57dc --- /dev/null +++ b/wiki/linux/bootstrapping.m4 @@ -0,0 +1,31 @@ +_header(`Bootstrapping') +

    +Usually the first program a computer will run is the _ref(`#bootloader'), +which loads the kernel and usually the _ref(`#linux#initramfs') which will handle mounting the system storage. +Then the _ref(`#linux#initialization') system is started, which handles daemons, some of which will handle login. +

    +

    +Bootstrapping Linux involves booting an operating system, usually off a temporary storage medium, mounting the intended system storage, +and installing the operating system on the intended storage. +Sometimes distributions come with software that mostly automates this. +

    +_passage(`veronika on the Alpine Linux Discord server, 2022-12-04T1111+0400',` +

    bootstrapping things is only useful for rare cases where you actually don`'t want to use the base packages that the installer gets for you automatically, and the installer doesn`'t get in your way of making your own system, instead it suggests you install certain packages, and asks what packages you want installed. If you`'re installing a desktop environment, it will probably ask you which meta package you want (or at least that`'s how I remember it working).

    +

    If you have an installer to do the same things with less steps for you, you should use it. Automation is progress, automation is the whole point of all this computer stuff. If you can automate it or make it easier, you probably should, unless you want some control over the process. For example, instead of checking the charge and running a command to put your laptop into battery saver mode, you make a program do it for you. Convenience is key to happy and painless computing

    +') +

    +If running very thin installation media, for example, a _ref(`#debian') network install CD, or just need the most up-to-date software possible, +the first step will be to connect to the Internet. +

    +

    +Next, if your chosen Linux distribution has a package manager, configure it, use it to initialize the file system on the intended system storage, +and install the necessary system packages to the storage. +Usually distributions have a single base package, like _ref(`#arch')'s _package(`base') or _ref(`#alpine')'s _package(`alpine-base'). +If it doesn't include any of them, install separately a kernel, initialization system, and userland. +

    +

    +Bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the volume to bootstrap +(_code(`for d in dev proc sys; do mount -o bind /$d /[mount]/$d; done')), +then _ref(`#posix#chroot(1)') in and complete the system setup. +Set up additional configuration necessary to boot (including _ref(`#fstab(5)'), _man(`hostname(5)'), _man(`hosts(5)'), and anything necessary for the kernel or initialization). +

    diff --git a/wiki/unix/debian.m4 b/wiki/linux/debian.m4 similarity index 100% rename from wiki/unix/debian.m4 rename to wiki/linux/debian.m4 diff --git a/wiki/linux/devices.m4 b/wiki/linux/devices.m4 new file mode 100644 index 0000000..679a3bf --- /dev/null +++ b/wiki/linux/devices.m4 @@ -0,0 +1,4 @@ +_header(`Devices') +_bibliography(` +_bentr(`_link(`udev', `https://en.wikipedia.org/wiki/Udev') (Wikipedia)') +') diff --git a/wiki/linux/distributions.m4 b/wiki/linux/distributions.m4 new file mode 100644 index 0000000..2e61497 --- /dev/null +++ b/wiki/linux/distributions.m4 @@ -0,0 +1,8 @@ +_subheader(`Distributions') +

    +Linux is usually obtained as part of a software distribution put together to form a useable operating system. +

    + +_subsubheader(_ref(`#alpine')) +_subsubheader(_ref(`#arch')) +_subsubheader(_ref(`#debian')) diff --git a/wiki/linux/hostname.m4 b/wiki/linux/hostname.m4 new file mode 100644 index 0000000..060e343 --- /dev/null +++ b/wiki/linux/hostname.m4 @@ -0,0 +1,4 @@ +_header(`hostname') +

    +The special file _file(`/proc/sys/kernel/hostname') directly controls the system hostname in the kernel. +

    diff --git a/wiki/linux/initialization.m4 b/wiki/linux/initialization.m4 new file mode 100644 index 0000000..b95e0cd --- /dev/null +++ b/wiki/linux/initialization.m4 @@ -0,0 +1,9 @@ +_header(`Initialization') +_subheader(`OpenRC') +_bibliography(` +_bentr(`_link(`OpenRC', `https://wiki.gentoo.org/wiki/OpenRC') (Gentoo Wiki)') +') + +_subheader(`Runit') +_subheader(`S6') +_subheader(`Systemd') diff --git a/wiki/linux/initramfs.m4 b/wiki/linux/initramfs.m4 new file mode 100644 index 0000000..a5dccdf --- /dev/null +++ b/wiki/linux/initramfs.m4 @@ -0,0 +1,9 @@ +_header(`initramfs') +_bibliography(` +_bentr(`_link(`Initial ramdisk', `https://en.wikipedia.org/wiki/Initial_ramdisk') (Wikipedia)') +_bentr(`_link(`initramfs', `https://wiki.debian.org/initramfs') (Debian Wiki)') +_bentr(`_link(`initramfs', `https://wiki.ubuntu.com/Initramfs') (Ubuntu Wiki)') +') +

    +_file(`initramfs') is a _ref(`#archives#cpio') archive that contains a small Linux filesystem with just enough utility to mount the actual operating system's root filesystem. +

    diff --git a/wiki/linux/linux.m4 b/wiki/linux/linux.m4 new file mode 100644 index 0000000..2153b10 --- /dev/null +++ b/wiki/linux/linux.m4 @@ -0,0 +1,40 @@ +define(`_DESCRIPTION', `Linux is a Unix-workalike operating system kernel.')dnl +define(`_PAGE', `Linux')dnl +include(`../wiki.m4')dnl +include(`../unix/macros.m4')dnl +
      +_bentr(`_link(`How to Linux', `http://tldp.yolinux.com/HOWTO/subdir/HOWTO-INDEX.html')') +_bentr(`_link(`How to Use User Mode Linux', `https://christine.website/blog/howto-usermode-linux-2019-07-07')') +_bentr(`LINUX's History') +_bentr(`_link(`The Linux Kernel documentation', `https://www.kernel.org/doc/html/v4.17/index.html')') +_bentr(`_link(`LINUX is obsolete', `https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI')') +_bentr(`_link(`Linux From Scratch', `http://www.linuxfromscratch.org/')') +_bentr(`_link(`Move your Linux from BIOS to UEFI in place', `https://www.redhat.com/sysadmin/bios-uefi')') +
    • Using the Linux kernel's Case-insensitive feature in Ext4
    • +
    + +include(`a.out.m4')dnl + +include(`acpi.m4')dnl + +include(`alpine.m4')dnl + +include(`arch.m4')dnl + +include(`audio.m4')dnl + +include(`bootstrapping.m4')dnl + +include(`debian.m4')dnl + +include(`devices.m4')dnl + +include(`distributions.m4')dnl + +include(`hostname.m4')dnl + +include(`initialization.m4')dnl + +include(`initramfs.m4')dnl + +include(`util-linux.m4')dnl diff --git a/wiki/linux/login.m4 b/wiki/linux/login.m4 new file mode 100644 index 0000000..83ed3f6 --- /dev/null +++ b/wiki/linux/login.m4 @@ -0,0 +1,17 @@ +_header(`Login') + +_subheader(`logind') +_bibliography(` +_bentr(`elogind') +_bentr(`elogind (Gentoo Wiki)') +_bentr(`org.freedesktop.login1') +_bentr(`logind (NixOS Wiki)') +') +

    +logind (_code(`systemd-logind.service(8)')) is a component of SystemD that exposes information about active users on the system via the org.freedesktop.login1 D-Bus interface which is used by the popular desktop environments GNOME and KDE. +It also handles _ref(`#ACPI') events. +It can be configured in _code(`logind.conf(5)'). +

    +

    +On systems without SystemD and with conflicting software, _code(`elogind(8)') may be used. +

    diff --git a/wiki/linux/macros.m4 b/wiki/linux/macros.m4 new file mode 100644 index 0000000..2b3cbaf --- /dev/null +++ b/wiki/linux/macros.m4 @@ -0,0 +1,5 @@ +define(`_command', `_code($1)')dnl +define(`_file', `_code($1)')dnl +define(`_man', `_cite($1)')dnl +define(`_program', `_code($1)')dnl +define(`_package', `_code($1)')dnl diff --git a/wiki/linux/util-linux.m4 b/wiki/linux/util-linux.m4 new file mode 100644 index 0000000..f0bca6b --- /dev/null +++ b/wiki/linux/util-linux.m4 @@ -0,0 +1,7 @@ +_subheader(`util-linux') +_bibliography(` +_bentr(`_link(`util-linux', `https://en.wikipedia.org/wiki/Util-linux') (Wikipedia)') +') +

    +_code(`util-linux') is distributed on all popular Linux distributions and contains utilities users may expect to be already present on their systems, like _man(`more(1)') or _man(`hexdump(1)'). +

    diff --git a/wiki/unix/index.m4 b/wiki/unix/index.m4 index 34e8518..6090131 100644 --- a/wiki/unix/index.m4 +++ b/wiki/unix/index.m4 @@ -9,10 +9,6 @@ include(`posix.m4') include(`acpi.m4') -include(`alpine.m4') - -include(`arch.m4') - include(`archives.m4') include(`bootloader.m4') @@ -21,8 +17,6 @@ include(`C.m4') include(`culture.m4') -include(`debian.m4') - include(`doas.m4') include(`editing.m4') diff --git a/wiki/unix/linux.m4 b/wiki/unix/linux.m4 index fd4cd39..0e5ace6 100644 --- a/wiki/unix/linux.m4 +++ b/wiki/unix/linux.m4 @@ -1,183 +1,3 @@ _header(`Linux') -
      -_bentr(`_link(`How to Linux', `http://tldp.yolinux.com/HOWTO/subdir/HOWTO-INDEX.html')') -_bentr(`_link(`How to Use User Mode Linux', `https://christine.website/blog/howto-usermode-linux-2019-07-07')') -_bentr(`LINUX's History') -_bentr(`_link(`The Linux Kernel documentation', `https://www.kernel.org/doc/html/v4.17/index.html')') -_bentr(`_link(`LINUX is obsolete', `https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI')') -_bentr(`_link(`Linux From Scratch', `http://www.linuxfromscratch.org/')') -_bentr(`_link(`Move your Linux from BIOS to UEFI in place', `https://www.redhat.com/sysadmin/bios-uefi')') -
    • Using the Linux kernel's Case-insensitive feature in Ext4
    • -
    - -_subheader(`ACPI') -_bibliography(` -_bentr(`_ref(`#ACPI')') -')

    -logind (as part of SystemD), elogind, acpid, and many desktop environments can manage ACPI events automatically, and sometimes this is configured by default as part of a Linux software distribution. -

    -_subsubheader(`acpid(8)') -_bibliography(` -_bentr(`_link(`acpid', `https://sourceforge.net/projects/acpid2/')') -') -

    -_man(`acpid(8)') is a daemon that can automatically manage ACPI events on Linux. -

    - -_subheader(`a.out') -_bibliography(` -_bentr(`_link(`Re: [PATCH] x86: Remove a.out support', `https://lwn.net/ml/linux-kernel/202203161523.857B469@keescook/')') -') - -_subheader(`Audio') -

    -Most audio servers recommend that they be run in userspace with user privileges, with PulseAudio going so far as to exiting when run as root without additional configuration. -The Alpine wiki currently recommends _man(`pipewire(1)'), with postmarketOS, which is based on Alpine, coming pre-configured with PipeWire. -PipeWire is relatively new and the typical audio server used is PulseAudio; _ref(`#debian') and many popular Debian-based distributions come pre-configured with PulseAudio. -

    -_subsubheader(`ALSA') -_bibliography(` -_bentr(`Adding sound (Alpine Linux Wiki)') -_bentr(`ALSA lib conf Evaluate error') -_bentr(`ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave') -') -

    -The Alpine wiki ("Adding sound") says to install _code(`alsa-conf'), _code(`alsa-lib'), and _code(`alsa-utils'), -add yourself to the _code(`audio') group, and then do some more configuration that I've never needed to do: -Use _man(`alsamixer(1)') to find a working sound card (press _code(`F6') from the first screen ALSAMixer presents) -and edit _code(`/usr/share/alsa/alsa.conf') and change _code(`defaults.ctl.card') and _code(`defaults.pcm.card') to the sound card that works. -

    -

    -The Alpine wiki doesn't mention this but you'll need to enable the _code(`alsa') OpenRC service and either start it or reboot. -I also installed _code(`gstreamer') but I don't know why. -

    -

    -ALSA is clunky, many people prefer to use a frontend such as Pipewire or PulseAudio that exposes its own interface while remaining compatible with ALSA. -

    -_subsubheader(`OSS') -

    -Deprecated, unfortunately. -

    -_subsubheader(`PipeWire') -_bibliography(` -_bentr(`PipeWire (Alpine Linux Wiki)') -_bentr(`PipeWire (FreeDesktop Wiki)') -') -

    -Provided by the _code(`pipewire') package on Alpine. -

    -
    -RTKit error: org.freedesktop.DBus.Error.ServiceUnknown
    -
    -

    -This means you need _program(`rtkit') installed and running through your initialization system. -

    -_subsubheader(`PulseAudio') -

    -On Alpine you'll need the _program(`pulseaudio'), _program(`pulseaudio-alsa'), and _program(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. -Start _man(`pulseaudio(1)') when you want audio, ideally in your _file(`.xinitrc'). -

    - -_subheader(`Bootstrapping') -

    -Usually the first program a computer will run is the _ref(`#bootloader'), -which loads the kernel and usually the _ref(`#linux#initramfs') which will handle mounting the system storage. -Then the _ref(`#linux#initialization') system is started, which handles daemons, some of which will handle login. -

    -

    -Bootstrapping Linux involves booting an operating system, usually off a temporary storage medium, mounting the intended system storage, -and installing the operating system on the intended storage. -Sometimes distributions come with software that mostly automates this. -

    -_passage(`veronika on the Alpine Linux Discord server, 2022-12-04T1111+0400',` -

    bootstrapping things is only useful for rare cases where you actually don`'t want to use the base packages that the installer gets for you automatically, and the installer doesn`'t get in your way of making your own system, instead it suggests you install certain packages, and asks what packages you want installed. If you`'re installing a desktop environment, it will probably ask you which meta package you want (or at least that`'s how I remember it working).

    -

    If you have an installer to do the same things with less steps for you, you should use it. Automation is progress, automation is the whole point of all this computer stuff. If you can automate it or make it easier, you probably should, unless you want some control over the process. For example, instead of checking the charge and running a command to put your laptop into battery saver mode, you make a program do it for you. Convenience is key to happy and painless computing

    -') -

    -If running very thin installation media, for example, a _ref(`#debian') network install CD, or just need the most up-to-date software possible, -the first step will be to connect to the Internet. -

    -

    -Next, if your chosen Linux distribution has a package manager, configure it, use it to initialize the file system on the intended system storage, -and install the necessary system packages to the storage. -Usually distributions have a single base package, like _ref(`#arch')'s _package(`base') or _ref(`#alpine')'s _package(`alpine-base'). -If it doesn't include any of them, install separately a kernel, initialization system, and userland. -

    -

    -Bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the volume to bootstrap -(_code(`for d in dev proc sys; do mount -o bind /$d /[mount]/$d; done')), -then _ref(`#posix#chroot(1)') in and complete the system setup. -Set up additional configuration necessary to boot (including _ref(`#fstab(5)'), _man(`hostname(5)'), _man(`hosts(5)'), and anything necessary for the kernel or initialization). -

    - -_subheader(`Device Management') -_bibliography(` -_bentr(`_link(`udev', `https://en.wikipedia.org/wiki/Udev') (Wikipedia)') -') - -_subheader(`Distributions') -

    -Linux is usually obtained as part of a software distribution put together to form a useable operating system. -

    - -_subsubheader(_ref(`#alpine')) -_subsubheader(_ref(`#arch')) -_subsubheader(_ref(`#debian')) - -_subheader(`hostname') -

    -The special file _file(`/proc/sys/kernel/hostname') directly controls the system hostname in the kernel. -

    - -_subheader(`Initialization') -_subsubheader(`OpenRC') -_bibliography(` -_bentr(`_link(`OpenRC', `https://wiki.gentoo.org/wiki/OpenRC') (Gentoo Wiki)') -') - -_subsubheader(`Runit') -_subsubheader(`S6') -_subsubheader(`Systemd') - -_subheader(`initramfs') -_bibliography(` -_bentr(`_link(`Initial ramdisk', `https://en.wikipedia.org/wiki/Initial_ramdisk') (Wikipedia)') -_bentr(`_link(`initramfs', `https://wiki.debian.org/initramfs') (Debian Wiki)') -_bentr(`_link(`initramfs', `https://wiki.ubuntu.com/Initramfs') (Ubuntu Wiki)') -') -

    -_file(`initramfs') is a _ref(`#archives#cpio') archive that contains a small Linux filesystem with just enough utility to mount the actual operating system's root filesystem. -

    - -_subheader(`logind') -_bibliography(` -_bentr(`elogind') -_bentr(`elogind (Gentoo Wiki)') -_bentr(`org.freedesktop.login1') -_bentr(`logind (NixOS Wiki)') -') -

    -logind (_code(`systemd-logind.service(8)')) is a component of SystemD that exposes information about active users on the system via the org.freedesktop.login1 D-Bus interface which is used by the popular desktop environments GNOME and KDE. -It also handles _ref(`#ACPI') events. -It can be configured in _code(`logind.conf(5)'). -

    -

    -On systems without SystemD and with conflicting software, _code(`elogind(8)') may be used. -

    - -_subheader(`util-linux') -_bibliography(` -_bentr(`_link(`util-linux', `https://en.wikipedia.org/wiki/Util-linux') (Wikipedia)') -') -

    -_code(`util-linux') is distributed on all popular Linux distributions and contains utilities users may expect to be already present on their systems, like _man(`more(1)') or _man(`hexdump(1)'). -

    - -_subheader(`Xenia') -_bibliography(` -_bentr(`_link(`A hacker fox!', `http://yerf.metafur.org/date/1996-07-14')') -') -

    -Xenia was an entry for the Linux logo competition which Tux eventually won. -

    +See _ref(`/linux/'). From 7cec371dfbffbd33b28865dc0c0f089dd09d1cc5 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 17:48:32 -0500 Subject: [PATCH 62/71] fix build --- wiki/linux/{linux.m4 => index.m4} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename wiki/linux/{linux.m4 => index.m4} (100%) diff --git a/wiki/linux/linux.m4 b/wiki/linux/index.m4 similarity index 100% rename from wiki/linux/linux.m4 rename to wiki/linux/index.m4 From e8d411f5af53ca2aecc62133a19eaacf9e2d9489 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 17:51:44 -0500 Subject: [PATCH 63/71] death grips is now on-line --- wiki/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/wiki/index.html b/wiki/index.html index 434b760..254fcf2 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -13,6 +13,7 @@

    be.murderu.us

    From 79ecdc69b9a74f89fa9831680b22b9f35235bea3 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 17:57:58 -0500 Subject: [PATCH 64/71] update refs --- wiki/linux/acpi.m4 | 2 +- wiki/linux/alpine.m4 | 10 +++++----- wiki/linux/arch.m4 | 6 +++--- wiki/linux/bootstrapping.m4 | 10 +++++----- wiki/linux/debian.m4 | 4 ++-- wiki/linux/{distributions.m4 => distribution.m4} | 2 +- wiki/linux/initramfs.m4 | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) rename wiki/linux/{distributions.m4 => distribution.m4} (88%) diff --git a/wiki/linux/acpi.m4 b/wiki/linux/acpi.m4 index 8bc9174..8425c40 100644 --- a/wiki/linux/acpi.m4 +++ b/wiki/linux/acpi.m4 @@ -1,6 +1,6 @@ _header(`ACPI') _bibliography(` -_bentr(`_ref(`#ACPI')') +_bentr(`_ref(`/unix/#ACPI')') ')

    logind (as part of SystemD), elogind, acpid, and many desktop environments can manage ACPI events automatically, and sometimes this is configured by default as part of a Linux software distribution. diff --git a/wiki/linux/alpine.m4 b/wiki/linux/alpine.m4 index 38a2579..9eabe82 100644 --- a/wiki/linux/alpine.m4 +++ b/wiki/linux/alpine.m4 @@ -1,6 +1,6 @@ _header(`Alpine')

    -Alpine Linux is a small _ref(`#linux') distribution based on musl libc. +Alpine Linux is a small Linux _ref(`#distribution') based on musl libc. Its main purpose is to serve as a server distribution, however many have found use for it as a desktop distribution.

    @@ -45,7 +45,7 @@ To always install doc packages with program packages, _code(`apk add docs'). _subheader(`Bootstrapping')

    -See _ref(`#linux#bootstrapping'). +See _ref(`#bootstrapping'). The Alpine setup scripts also exist to aid in the bootstrap process.

    @@ -57,10 +57,10 @@ To bootstrap _man(`apk(8)') do the following:

  • Use _man(`apk-add(8)') to initialize the package database on the mount (_command(`apk --root [mount] add --initdb alpine-base')).
  • -Copy _man(`resolv.conf(5)') over (and bind _file(`/dev/'), _file(`/proc/'), and _file(`/sys/')) before _ref(`#posix#chroot(1)')ing. +Copy _man(`resolv.conf(5)') over (and bind _file(`/dev/'), _file(`/proc/'), and _file(`/sys/')) before _ref(`/unix/#posix#chroot(1)')ing.

    -In the chroot, make sure to install a kernel, which will put _ref(`#linux#initramfs') creation in the _man(`apk(8)') build hooks and rebuild the initramfs whenever the kernel is upgraded. +In the chroot, make sure to install a kernel, which will put _ref(`#initramfs') creation in the _man(`apk(8)') build hooks and rebuild the initramfs whenever the kernel is upgraded.

    _subsubheader(`Setup scripts') @@ -73,7 +73,7 @@ _passage(`Eunakria on the Alpine Linux Discord server', _program(`setup-hostname') validates a _man(`hostname(5)') before writing to the mounted volume.

    -_program(`setup-xorg-base') adds the packages _package(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the _ref(`#linux#initialization') services for udev. +_program(`setup-xorg-base') adds the packages _package(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the _ref(`#initialization') services for udev.

    _subheader(`postmarketOS') diff --git a/wiki/linux/arch.m4 b/wiki/linux/arch.m4 index bb9fd1f..fe51507 100644 --- a/wiki/linux/arch.m4 +++ b/wiki/linux/arch.m4 @@ -12,15 +12,15 @@ You will need _package(`base-devel'). _subheader(`Bootstrapping')

    -See _ref(`#linux#bootstrapping'). +See _ref(`#bootstrapping'). Use _man(`pacstrap(8)') on Arch and _man(`basestrap(8)') on Artix.

    Arch's base package is _package(`base'). Additionally, a kernel such as _package(`linux') or _package(`linux-lts') will be necessary. The Arch wiki says _package(`linux-firmware') is necessary; it's not on many hardware configurations but it's recommended. -On Artix you also need to select the _ref(`#linux#initialization') system: _package(`66'), _package(`dinit'), _package(`openrc'), _package(`runit'), or _package(`s6-base'). -The Artix wiki says the initialization-specific _ref(`#linux#logind') package is necessary; it's not but it's recommended. +On Artix you also need to select the _ref(`#initialization') system: _package(`66'), _package(`dinit'), _package(`openrc'), _package(`runit'), or _package(`s6-base'). +The Artix wiki says the initialization-specific _ref(`#login#logind') package is necessary; it's not but it's recommended.

    On the bootstrapped system, after chrooting in, uncomment a local mirror in _file(`/etc/pacman.d/mirrorlist-arch'). diff --git a/wiki/linux/bootstrapping.m4 b/wiki/linux/bootstrapping.m4 index c8d57dc..7f9f472 100644 --- a/wiki/linux/bootstrapping.m4 +++ b/wiki/linux/bootstrapping.m4 @@ -1,8 +1,8 @@ _header(`Bootstrapping')

    -Usually the first program a computer will run is the _ref(`#bootloader'), -which loads the kernel and usually the _ref(`#linux#initramfs') which will handle mounting the system storage. -Then the _ref(`#linux#initialization') system is started, which handles daemons, some of which will handle login. +Usually the first program a computer will run is the _ref(`/unix/#bootloader'), +which loads the kernel and usually the _ref(`#initramfs') which will handle mounting the system storage. +Then the _ref(`#initialization') system is started, which handles daemons, some of which will handle login.

    Bootstrapping Linux involves booting an operating system, usually off a temporary storage medium, mounting the intended system storage, @@ -26,6 +26,6 @@ If it doesn't include any of them, install separately a kernel, initialization s

    Bind mount (_command(`mount -o bind')) _file(`/dev/'), _file(`/proc/'), and _file(`/sys/') to the corresponding locations on the volume to bootstrap (_code(`for d in dev proc sys; do mount -o bind /$d /[mount]/$d; done')), -then _ref(`#posix#chroot(1)') in and complete the system setup. -Set up additional configuration necessary to boot (including _ref(`#fstab(5)'), _man(`hostname(5)'), _man(`hosts(5)'), and anything necessary for the kernel or initialization). +then _ref(`/unix/#posix#chroot(1)') in and complete the system setup. +Set up additional configuration necessary to boot (including _ref(`/unix/#fstab(5)'), _man(`hostname(5)'), _man(`hosts(5)'), and anything necessary for the kernel or initialization).

    diff --git a/wiki/linux/debian.m4 b/wiki/linux/debian.m4 index 26b0362..c98e2fc 100644 --- a/wiki/linux/debian.m4 +++ b/wiki/linux/debian.m4 @@ -4,7 +4,7 @@ _bentr(`_link(`Debian', `https://www.debian.org/')') _bentr(`_link(`Debian', `https://en.wikipedia.org/wiki/Debian') (Wikipedia)') ')

    -Debian is a software distribution that can use _ref(`#linux') or the GNU HURD as its kernel. +Debian is a software _ref(`#distribution') that can use Linux or the GNU HURD as its kernel. In the past, FreeBSD's kernel was also an option. Debian is known for its stability and longevity. Debian uses SystemD as its initialization system, the GNU core utilities, and dpkg and apt for package management. @@ -18,5 +18,5 @@ _subheader(`Ubuntu')

  • How to get root on Ubuntu 20.04 by pretending nobody's /home
  • -Ubuntu is a derivative of Debian. +Ubuntu is a derivative of Debian Linux.

    diff --git a/wiki/linux/distributions.m4 b/wiki/linux/distribution.m4 similarity index 88% rename from wiki/linux/distributions.m4 rename to wiki/linux/distribution.m4 index 2e61497..777bb81 100644 --- a/wiki/linux/distributions.m4 +++ b/wiki/linux/distribution.m4 @@ -1,4 +1,4 @@ -_subheader(`Distributions') +_subheader(`Distribution')

    Linux is usually obtained as part of a software distribution put together to form a useable operating system.

    diff --git a/wiki/linux/initramfs.m4 b/wiki/linux/initramfs.m4 index a5dccdf..538362a 100644 --- a/wiki/linux/initramfs.m4 +++ b/wiki/linux/initramfs.m4 @@ -5,5 +5,5 @@ _bentr(`_link(`initramfs', `https://wiki.debian.org/initramfs') (Debian Wiki)') _bentr(`_link(`initramfs', `https://wiki.ubuntu.com/Initramfs') (Ubuntu Wiki)') ')

    -_file(`initramfs') is a _ref(`#archives#cpio') archive that contains a small Linux filesystem with just enough utility to mount the actual operating system's root filesystem. +_file(`initramfs') is a _ref(`/unix/#archives#cpio') archive that contains a small Linux filesystem with just enough utility to mount the actual operating system's root filesystem.

    From e99f346bf9c556976ac4fa43dbf6522fc53e7cc4 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 17:59:11 -0500 Subject: [PATCH 65/71] fix build --- wiki/linux/index.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/linux/index.m4 b/wiki/linux/index.m4 index 2153b10..e4d1c24 100644 --- a/wiki/linux/index.m4 +++ b/wiki/linux/index.m4 @@ -29,7 +29,7 @@ include(`debian.m4')dnl include(`devices.m4')dnl -include(`distributions.m4')dnl +include(`distribution.m4')dnl include(`hostname.m4')dnl From 26578fa48da06fc38eaa7ff6399fd8a4a385d440 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 19:31:29 -0500 Subject: [PATCH 66/71] update refs --- wiki/unix/X.m4 | 12 ++++++------ wiki/unix/fonts.m4 | 4 ++-- wiki/unix/posix.m4 | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/wiki/unix/X.m4 b/wiki/unix/X.m4 index 056a2af..3df5298 100644 --- a/wiki/unix/X.m4 +++ b/wiki/unix/X.m4 @@ -4,7 +4,7 @@ _bentr(`_link(`Cool, but obscure X11 tools', `http://cyber.dabamos.de/unix/x11/' _bentr(`_link(`Xorg', `https://wiki.archlinux.org/title/Xorg') (Arch Wiki)') ')

    -X is a graphical windowing system that can be used on _ref(`#linux'), FreeBSD, OpenBSD, _ref(`#netbsd'), and some proprietary operating systems as well. +X is a graphical windowing system that can be used on _ref(`/linux/'), FreeBSD, OpenBSD, _ref(`#netbsd'), and some proprietary operating systems as well. X is not the only windowing system; _man(`twin(1)') exists for windowed multitasking within a framebuffer and Wayland is another windowing system intended to replace X.

    @@ -32,7 +32,7 @@ _bentr(`_link(`cairo', `https://en.wikipedia.org/wiki/Cairo_(graphics)') (Wikipe cairo is a graphics rendering library, originally for X but later made cross-platform.

    -cairo is available on _ref(`#alpine') as _package(`cairo-dev'). +cairo is available on _ref(`/linux/#alpine') as _package(`cairo-dev').

    _subheader(`Fonts') @@ -41,7 +41,7 @@ _bibliography(` _bentr(`_link(`Xorg', `https://gitlab.freedesktop.org/xorg/')/_link(`font/jis-misc', `https://gitlab.freedesktop.org/xorg/font/jis-misc')') ')

    -Both jiskan16 and jiskan24 are included in Xorg, in the source tree at font/jis-misc but usually packaged separately (_package(`font-jis-misc') on _ref(`#alpine')). +Both jiskan16 and jiskan24 are included in Xorg, in the source tree at font/jis-misc but usually packaged separately (_package(`font-jis-misc') on _ref(`/linux/#alpine')).

    _subheader(`Mail') @@ -66,7 +66,7 @@ The de-facto standard X server is X.org. NetBSD uses X.org as the default system X server.

    -_ref(`#arch') Linux's package repositories have _link(`_package(`xorg')', `https://archlinux.org/groups/x86_64/xorg/'), +_ref(`/linux/#arch')'s package repositories have _link(`_package(`xorg')', `https://archlinux.org/groups/x86_64/xorg/'), _link(`_package(`xorg-apps')', `https://archlinux.org/groups/x86_64/xorg-apps/'), and _link(`_package(`xorg-drivers')', `https://archlinux.org/groups/x86_64/xorg-drivers/') package groups. _ref(`#pkgsrc') has _package(`meta-pkgs/modular-xorg'). @@ -106,6 +106,6 @@ _subheader(`xinit(1)') _man(`startx(1)') is usually included with _man(`xinit(1)').

    -On _ref(`#alpine') Linux, _man(`xinit(1)') is provided by _package(`xinit'). -On _ref(`#arch') Linux, _man(`xinit(1)') is provided by _link(`_package(`xorg-xinit')', `https://archlinux.org/packages/extra/x86_64/xorg-xinit/'). +On _ref(`/linux/#alpine'), _man(`xinit(1)') is provided by _package(`xinit'). +On _ref(`/linux/#arch'), _man(`xinit(1)') is provided by _link(`_package(`xorg-xinit')', `https://archlinux.org/packages/extra/x86_64/xorg-xinit/').

    diff --git a/wiki/unix/fonts.m4 b/wiki/unix/fonts.m4 index 51f5476..95b4e35 100644 --- a/wiki/unix/fonts.m4 +++ b/wiki/unix/fonts.m4 @@ -21,7 +21,7 @@ _bentr(`_link(`Overview of Unicode coverage by Noto', `https://notofonts.github. As of 2021-04, Noto has fonts for 54% of Unicode.

    -On _ref(`#alpine'), all Noto family fonts match the glob _link(`_package(`font-noto-*')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*'). +On _ref(`/linux/#alpine'), all Noto family fonts match the glob _link(`_package(`font-noto-*')', `https://pkgs.alpinelinux.org/packages?name=font-noto-*'). In _ref(`#pkgsrc'), all Noto family fonts match the glob _package(`fonts/noto-*').

    @@ -33,7 +33,7 @@ _bentr(`_link(`Pango', `https://pango.gnome.org/')') Pango is a font rendering library.

    -Pango is packaged for _ref(`#alpine') as _package(`pango-dev'). +Pango is packaged for _ref(`/linux/#alpine') as _package(`pango-dev').

    _subheader(`Vendor Fonts') diff --git a/wiki/unix/posix.m4 b/wiki/unix/posix.m4 index a0ac0f7..610f25d 100644 --- a/wiki/unix/posix.m4 +++ b/wiki/unix/posix.m4 @@ -236,7 +236,7 @@ _bentr(`_link(`DASH', `http://gondor.apana.org.au/~herbert/dash/')') _bentr(`_link(`DASH (cgit)', `https://git.kernel.org/pub/scm/utils/dash/dash.git')') ')

    -On _ref(`#alpine') Linux, the _package(`dash-binsh') package configures DASH as the system's _file(`/bin/sh'). +On _ref(`/linux/#alpine'), the _package(`dash-binsh') package configures DASH as the system's _file(`/bin/sh').

    _subheader(`true(1)') From 67d395f433f859c10e37acb3602553e2baf6661e Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 19:36:42 -0500 Subject: [PATCH 67/71] oops! can't forget that in a furry manga --- wiki/game/index.m4 | 2 ++ wiki/linux/index.m4 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/wiki/game/index.m4 b/wiki/game/index.m4 index cf1670f..0566038 100644 --- a/wiki/game/index.m4 +++ b/wiki/game/index.m4 @@ -13,3 +13,5 @@ A game, The sole object of which is to not remember that you are playing it. As Played in the halls of schools and on the walls of BBSes, the Game is an early cognitovirus that has drawn ire for its unwinnable nature; nobody who knows of the Game has won, yet nobody who's won has ever known of the Game.

    + +include(`../tail.m4')dnl diff --git a/wiki/linux/index.m4 b/wiki/linux/index.m4 index e4d1c24..e465d52 100644 --- a/wiki/linux/index.m4 +++ b/wiki/linux/index.m4 @@ -38,3 +38,5 @@ include(`initialization.m4')dnl include(`initramfs.m4')dnl include(`util-linux.m4')dnl + +include(`../tail.m4')dnl From e9488459abdc0d260878cbfda26c8e5b5f8f09da Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 19:44:58 -0500 Subject: [PATCH 68/71] attempt at auto linking packages --- wiki/linux/alpine.m4 | 2 +- wiki/linux/index.m4 | 1 + wiki/linux/macros.m4 | 9 ++++----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wiki/linux/alpine.m4 b/wiki/linux/alpine.m4 index 9eabe82..7c44de1 100644 --- a/wiki/linux/alpine.m4 +++ b/wiki/linux/alpine.m4 @@ -73,7 +73,7 @@ _passage(`Eunakria on the Alpine Linux Discord server', _program(`setup-hostname') validates a _man(`hostname(5)') before writing to the mounted volume.

    -_program(`setup-xorg-base') adds the packages _package(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the _ref(`#initialization') services for udev. +_program(`setup-xorg-base') adds the packages _package_alpine(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the _ref(`#initialization') services for udev.

    _subheader(`postmarketOS') diff --git a/wiki/linux/index.m4 b/wiki/linux/index.m4 index e465d52..bcd9503 100644 --- a/wiki/linux/index.m4 +++ b/wiki/linux/index.m4 @@ -2,6 +2,7 @@ define(`_DESCRIPTION', `Linux is a Unix-workalike operating system kernel.')dnl define(`_PAGE', `Linux')dnl include(`../wiki.m4')dnl include(`../unix/macros.m4')dnl +include(`macros.m4')dnl
      _bentr(`_link(`How to Linux', `http://tldp.yolinux.com/HOWTO/subdir/HOWTO-INDEX.html')') _bentr(`_link(`How to Use User Mode Linux', `https://christine.website/blog/howto-usermode-linux-2019-07-07')') diff --git a/wiki/linux/macros.m4 b/wiki/linux/macros.m4 index 2b3cbaf..7a4748d 100644 --- a/wiki/linux/macros.m4 +++ b/wiki/linux/macros.m4 @@ -1,5 +1,4 @@ -define(`_command', `_code($1)')dnl -define(`_file', `_code($1)')dnl -define(`_man', `_cite($1)')dnl -define(`_program', `_code($1)')dnl -define(`_package', `_code($1)')dnl +dnl include(`../wiki.m4') +dnl include(`../unix/macros.m4') +define(`_package_alpine', `_link(_package($1), https://pkgs.alpinelinux.org/packages?name=$1)')dnl +define(`_package_arch', `_link(_package($1), https://archlinux.org/packages/?q=$1')')dnl From c2213789da68e7811cafbc455a055e7933fef142 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 19:50:27 -0500 Subject: [PATCH 69/71] alpine and arch specific package tags --- wiki/linux/alpine.m4 | 2 +- wiki/linux/arch.m4 | 10 +++++----- wiki/linux/audio.m4 | 8 ++++---- wiki/linux/bootstrapping.m4 | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/wiki/linux/alpine.m4 b/wiki/linux/alpine.m4 index 7c44de1..f531149 100644 --- a/wiki/linux/alpine.m4 +++ b/wiki/linux/alpine.m4 @@ -73,7 +73,7 @@ _passage(`Eunakria on the Alpine Linux Discord server', _program(`setup-hostname') validates a _man(`hostname(5)') before writing to the mounted volume.

      -_program(`setup-xorg-base') adds the packages _package_alpine(`xorg-server'), _package(`xf86-input-libinput'), _package(`eudev'), and _package(`mesa'), and then enables the _ref(`#initialization') services for udev. +_program(`setup-xorg-base') adds the packages _package_alpine(`xorg-server'), _package_alpine(`xf86-input-libinput'), _package_alpine(`eudev'), and _package_alpine(`mesa'), and then enables the _ref(`#initialization') services for udev.

      _subheader(`postmarketOS') diff --git a/wiki/linux/arch.m4 b/wiki/linux/arch.m4 index fe51507..d87acdb 100644 --- a/wiki/linux/arch.m4 +++ b/wiki/linux/arch.m4 @@ -7,7 +7,7 @@ which has given it a reputation for instability compared to other Linux software _subheader(`AUR')

      -You will need _package(`base-devel'). +You will need _package_arch(`base-devel').

      _subheader(`Bootstrapping') @@ -16,9 +16,9 @@ See _ref(`#bootstrapping'). Use _man(`pacstrap(8)') on Arch and _man(`basestrap(8)') on Artix.

      -Arch's base package is _package(`base'). -Additionally, a kernel such as _package(`linux') or _package(`linux-lts') will be necessary. -The Arch wiki says _package(`linux-firmware') is necessary; it's not on many hardware configurations but it's recommended. +Arch's base package is _package_arch(`base'). +Additionally, a kernel such as _package_arch(`linux') or _package_arch(`linux-lts') will be necessary. +The Arch wiki says _package_arch(`linux-firmware') is necessary; it's not on many hardware configurations but it's recommended. On Artix you also need to select the _ref(`#initialization') system: _package(`66'), _package(`dinit'), _package(`openrc'), _package(`runit'), or _package(`s6-base'). The Artix wiki says the initialization-specific _ref(`#login#logind') package is necessary; it's not but it's recommended.

      @@ -68,5 +68,5 @@ _bentr(`_link(`makepkg', `https://wiki.archlinux.org/title/Makepkg') (Arch Wiki) _bentr(`_link(`pacman', `https://gitlab.archlinux.org/pacman/pacman/')/_link(`scripts/makepkg.sh.in', `https://gitlab.archlinux.org/pacman/pacman/-/blob/master/scripts/makepkg.sh.in')') ')

      -_man(`makepkg(8)') is a _man(`bash(1)') script provided by _package(`pacman') that provides an interface through which to manage _man(``PKGBUILD'(5)')s. +_man(`makepkg(8)') is a _man(`bash(1)') script provided by _package_arch(`pacman') that provides an interface through which to manage _man(``PKGBUILD'(5)')s.

      diff --git a/wiki/linux/audio.m4 b/wiki/linux/audio.m4 index 9df8d29..e5186d8 100644 --- a/wiki/linux/audio.m4 +++ b/wiki/linux/audio.m4 @@ -11,14 +11,14 @@ _bentr(`ALSA lib con _bentr(`ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave') ')

      -The Alpine wiki ("Adding sound") says to install _code(`alsa-conf'), _code(`alsa-lib'), and _code(`alsa-utils'), +The Alpine wiki ("Adding sound") says to install _package_alpine(`alsa-conf'), _package_alpine(`alsa-lib'), and _package_alpine(`alsa-utils'), add yourself to the _code(`audio') group, and then do some more configuration that I've never needed to do: Use _man(`alsamixer(1)') to find a working sound card (press _code(`F6') from the first screen ALSAMixer presents) and edit _code(`/usr/share/alsa/alsa.conf') and change _code(`defaults.ctl.card') and _code(`defaults.pcm.card') to the sound card that works.

      The Alpine wiki doesn't mention this but you'll need to enable the _code(`alsa') OpenRC service and either start it or reboot. -I also installed _code(`gstreamer') but I don't know why. +I also installed _package_alpine(`gstreamer') but I don't know why.

      ALSA is clunky, many people prefer to use a frontend such as Pipewire or PulseAudio that exposes its own interface while remaining compatible with ALSA. @@ -33,7 +33,7 @@ _bentr(`PipeWire (Alpin _bentr(`PipeWire (FreeDesktop Wiki)') ')

      -Provided by the _code(`pipewire') package on Alpine. +Provided by the _package_alpine(`pipewire') package on Alpine.

       RTKit error: org.freedesktop.DBus.Error.ServiceUnknown
      @@ -43,6 +43,6 @@ This means you need _program(`rtkit') installed and running through your initial
       

      _subheader(`PulseAudio')

      -On Alpine you'll need the _program(`pulseaudio'), _program(`pulseaudio-alsa'), and _program(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. +On Alpine you'll need the _package_alpine(`pulseaudio'), _package_alpine(`pulseaudio-alsa'), and _package_alpine(`alsa-plugins-pulse') packages for PulseAudio with ALSA compatibility. Start _man(`pulseaudio(1)') when you want audio, ideally in your _file(`.xinitrc').

      diff --git a/wiki/linux/bootstrapping.m4 b/wiki/linux/bootstrapping.m4 index 7f9f472..ddf051a 100644 --- a/wiki/linux/bootstrapping.m4 +++ b/wiki/linux/bootstrapping.m4 @@ -20,7 +20,7 @@ the first step will be to connect to the Internet.

      Next, if your chosen Linux distribution has a package manager, configure it, use it to initialize the file system on the intended system storage, and install the necessary system packages to the storage. -Usually distributions have a single base package, like _ref(`#arch')'s _package(`base') or _ref(`#alpine')'s _package(`alpine-base'). +Usually distributions have a single base package, like _ref(`#arch')'s _package_arch(`base') or _ref(`#alpine')'s _package_alpine(`alpine-base'). If it doesn't include any of them, install separately a kernel, initialization system, and userland.

      From 2ce015a938973ff51c0c1a25cc4bfa257610fbf3 Mon Sep 17 00:00:00 2001 From: dtb Date: Mon, 2 Jan 2023 19:54:47 -0500 Subject: [PATCH 70/71] idk --- wiki/linux/macros.m4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wiki/linux/macros.m4 b/wiki/linux/macros.m4 index 7a4748d..02142b3 100644 --- a/wiki/linux/macros.m4 +++ b/wiki/linux/macros.m4 @@ -1,4 +1,4 @@ dnl include(`../wiki.m4') dnl include(`../unix/macros.m4') -define(`_package_alpine', `_link(_package($1), https://pkgs.alpinelinux.org/packages?name=$1)')dnl -define(`_package_arch', `_link(_package($1), https://archlinux.org/packages/?q=$1')')dnl +define(`_package_alpine', `_link(`_package($1)', `https://pkgs.alpinelinux.org/packages?name=$1')')dnl +define(`_package_arch', `_link(`_package($1)', `https://archlinux.org/packages/?q=$1')')dnl From 219989a680fb9c4b51de490235d262f24db6029e Mon Sep 17 00:00:00 2001 From: dtb Date: Sun, 23 Jul 2023 15:24:34 -0400 Subject: [PATCH 71/71] mounting ffsv2 on linux --- wiki/linux/index.m4 | 2 ++ wiki/linux/volumes.m4 | 15 +++++++++++++++ wiki/unix/volumes.m4 | 6 ++++++ 3 files changed, 23 insertions(+) create mode 100644 wiki/linux/volumes.m4 diff --git a/wiki/linux/index.m4 b/wiki/linux/index.m4 index bcd9503..91e79b8 100644 --- a/wiki/linux/index.m4 +++ b/wiki/linux/index.m4 @@ -40,4 +40,6 @@ include(`initramfs.m4')dnl include(`util-linux.m4')dnl +include(`volumes.m4')dnl + include(`../tail.m4')dnl diff --git a/wiki/linux/volumes.m4 b/wiki/linux/volumes.m4 new file mode 100644 index 0000000..50c37b6 --- /dev/null +++ b/wiki/linux/volumes.m4 @@ -0,0 +1,15 @@ +_header(`File systems') +

      +Also see _ref(`/unix/#volumes'). +

      + +_subheader(`UFS') +_bibliography(` +_bentr(_link(`how to mount ffs partition under linux', `https://wiki.netbsd.org/tutorials/how_to_mount_ffs_partition_under_linux/') (NetBSD Wiki)) +') +

      +To mount a NetBSD FFSv2 partition in Linux use _cite(`mount(8)'); _code(`mount -o ufstype=ufs2 -t ufs'). +The NetBSD Wiki instead notes _code(`-o ufstype=44bsd') +but that specific snippet was _link(`imported', `https://wiki.netbsd.org/cgi-bin/cvsweb/wikisrc/tutorials/how_to_mount_ffs_partition_under_linux.mdwn') +from _link(`a NetBSD.se Wiki page at least as old as 2007', `http://web.archive.org/web/20071112075927/http://wiki.netbsd.se/How_to_mount_FFS_partition_under_Linux'). +

      diff --git a/wiki/unix/volumes.m4 b/wiki/unix/volumes.m4 index 17138de..7478ab4 100644 --- a/wiki/unix/volumes.m4 +++ b/wiki/unix/volumes.m4 @@ -22,6 +22,8 @@ Check out the linked pages in the "See also" section.

      Use mkfs(8) for creating filesystems and mount(8) for mounting partitions' filesystems.

      +_subheader(`FFS') +

      See _ref(`#volumes#ufs').

      gpart

      • Gpart (Wikipedia)
      • @@ -82,3 +84,7 @@ Configuration is in /etc/conf.d/dmcrypt and further configuration s +_subheader(`UFS') +_bibliography(` +_bentr(`_link(`Unix File System', `https://en.wikipedia.org/wiki/Unix_File_System') (Wikipedia)') +')