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.
acpid(8) is a daemon that can automatically manage ACPI events on Linux.
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.
See apk-repositories(5).
Most Internet repositories use the URL scheme of https://[server]/alpine/[release branch]/[repository branch]
.
For example, the main repository branch on the edge release branch on the server dl-cdn.alpinelinux.org is 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 /media/cdrom/apks
, an example from the Alpine Wiki, are valid as well.
WARNING: Ignoring [path]: UNTRUSTED signature
If you are absolutely sure what you're doing is fine, apk [command] --allow-untrusted
.
This ignores the error and allows the operation to proceed.
Alpine doesn't include man pages in program packages to save on space, instead keeping them in [package]-doc
sibling packages.
To always install doc packages with program packages, apk add docs
.
See #bootstrapping. The Alpine setup scripts also exist to aid in the bootstrap process.
To bootstrap apk(8) do the following:
apk --root [mount] add --initdb alpine-base
).
Copy resolv.conf(5) over (and bind /dev/
, /proc/
, and /sys/
) before /unix/#posix#chroot(1)ing.
In the chroot, make sure to install a kernel, which will put #initramfs creation in the apk(8) build hooks and rebuild the initramfs whenever the kernel is upgraded.
setup-alpine
is jank.
setup-hostname
validates a hostname(5) before writing to the mounted volume.
setup-xorg-base
adds the packages xorg-server
, xf86-input-libinput
, eudev
, and mesa
, and then enables the #initialization services for udev.
postmarketOS is an Alpine-based Linux software distribution that makes configuring and using Linux easy on mobile devices.
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 /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 rc-service networkmanager restart
to restart NetworkManager and have it load the new configuration.
Arch is a Linux software distribution that uses the 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, #debian).
You will need base-devel
.
See #bootstrapping. Use pacstrap(8) on Arch and basestrap(8) on Artix.
Arch's base package is base
.
Additionally, a kernel such as linux
or linux-lts
will be necessary.
The Arch wiki says linux-firmware
is necessary; it's not on many hardware configurations but it's recommended.
On Artix you also need to select the #initialization system: 66
, dinit
, openrc
, runit
, or s6-base
.
The Artix wiki says the initialization-specific #login#logind package is necessary; it's not but it's recommended.
On the bootstrapped system, after chrooting in, uncomment a local mirror in /etc/pacman.d/mirrorlist-arch
.
Then configure /etc/pacman.conf
to use that mirror list.
# # 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 is a Linux software distribution based on Arch that doesn't mandate SystemD as its initialization system.
makepkg(8) is a bash(1) script provided by pacman
that provides an interface through which to manage PKGBUILD(5)s.
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 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.
The Alpine wiki ("Adding sound") says to install alsa-conf
, alsa-lib
, and alsa-utils
,
add yourself to the audio
group, and then do some more configuration that I've never needed to do:
Use alsamixer(1) to find a working sound card (press F6
from the first screen ALSAMixer presents)
and edit /usr/share/alsa/alsa.conf
and change defaults.ctl.card
and defaults.pcm.card
to the sound card that works.
The Alpine wiki doesn't mention this but you'll need to enable the alsa
OpenRC service and either start it or reboot.
I also installed 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.
Deprecated, unfortunately.
Provided by the pipewire
package on Alpine.
RTKit error: org.freedesktop.DBus.Error.ServiceUnknown
This means you need rtkit
installed and running through your initialization system.
On Alpine you'll need the pulseaudio
, pulseaudio-alsa
, and alsa-plugins-pulse
packages for PulseAudio with ALSA compatibility.
Start pulseaudio(1) when you want audio, ideally in your .xinitrc
.
Usually the first program a computer will run is the /unix/#bootloader, which loads the kernel and usually the #initramfs which will handle mounting the system storage. Then the #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.
bootstrapping things is only useful for rare cases where you actually dont want to use the base packages that the installer gets for you automatically, and the installer doesnt get in your way of making your own system, instead it suggests you install certain packages, and asks what packages you want installed. If youre installing a desktop environment, it will probably ask you which meta package you want (or at least thats 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 #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 #arch's base
or #alpine's alpine-base
.
If it doesn't include any of them, install separately a kernel, initialization system, and userland.
Bind mount (mount -o bind
) /dev/
, /proc/
, and /sys/
to the corresponding locations on the volume to bootstrap
(for d in dev proc sys; do mount -o bind /$d /[mount]/$d; done
),
then /unix/#posix#chroot(1) in and complete the system setup.
Set up additional configuration necessary to boot (including /unix/#fstab(5), hostname(5), hosts(5), and anything necessary for the kernel or initialization).
Debian is a software #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.
The vast majority of support and attention is on the Debian GNU+Linux configuration.
Ubuntu is a derivative of Debian Linux.
Linux is usually obtained as part of a software distribution put together to form a useable operating system.
The special file /proc/sys/kernel/hostname
directly controls the system hostname in the kernel.
initramfs
is a /unix/#archives#cpio archive that contains a small Linux filesystem with just enough utility to mount the actual operating system's root filesystem.
util-linux
is distributed on all popular Linux distributions and contains utilities users may expect to be already present on their systems, like more(1) or hexdump(1).