# knowledge/alpine

~ Return to the rest of the site

# alpine

### updated 2022-04-21

## Resources

- Alpine repositories content search

## Alpine: Always install manual pages

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`.

## Arch and Artix: Install essential packages

On Artix, use `basestrap(8)`. On Arch, use `pacstrap(8)`.

At a minimum you need `base` on both Arch and Artix. On Artix, you need to select the initialization you want to use: `66`, `dinit`, `openrc`, `runit`, or `s6-base`. On both Arch and Artix, select a kernel; `linux`, `linux-lts`, or another Linux configuration or fork. Arch says you need to install `linux-firmware`, technically you don't need to do so but you should. Artix says you need to install the appropriate elogind package (`elogind-$(INIT_SYSTEM)`; e.g. `elogind-66`). This isn't necessary if you aren't using elogind, but you most likely want elogind. Install `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 `man-db` and others would also be useful.

## Common utilities

A lot of common utilities such as `lsblk(8)` and `more(1)` are provided by `util-linux` which is not installed by default.

### C language

- Compiler: `tcc`, `gcc`, `clang`
- Standard library headers: `musl-dev`
- Standard library documentation: `man-pages`, `man-pages-posix`

Also see the `build-base` metapackage.

### LUKS

`cryptsetup` and `e2fsprogs`.

### Manual viewer

`mandoc`

### Make

`make`

### Login manager

`elogind`

### Stream Pager

`less`

### Task manager

`top(1)` comes with busybox; see its derivatives such as `htop` for curses-based alternatives.

### Text editing

`emacs` and `vim` come to mind. A particularly shoddy attempt at `ed(1)` is provided by busybox but will please nobody. busybox's `vi(1)` on the other hand is a very useable implementation of the original.

## fstab

See `fstab(5).`

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

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

## Mount LUKS encrypted partitions at boot

### Sources

- Automatically Unlock LUKS Encrypted Drives With A Keyfile
- Dm-crypt (Gentoo Wiki)
- LVM on LUKS (Alpine Wiki)

See cryptography#LUKS partitioning for how to make a LUKS partition.

`cryptsetup-openrc` provides a `dmcrypt` service for OpenRC. Make sure that service is added to runlevel boot and then configure `/etc/conf.d/dmcrypt`, and accordingly fstab. `dmcrypt` 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.

## Partitions and filesystems

### See also

- EFI system partition (Arch Wiki)
- Installation#Partition your disk - Artix wiki
- Installation guide#Partition the disks - Arch wiki

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.

## postmarketOS: 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 `/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.

## WiFi

I use `iwd(8)` and `iwctl(8)`. Some prefer NetworkManager and I believe that's the default on Debian. The Artix wiki suggests connman.