Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions book.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ edit-url-template = "https://github.com/void-linux/void-docs/edit/master/{path}"
"/about-this-handbook.html" = "/about/about-this-handbook.html"
"/config/man.html" = "/config/package-documentation/man.html"
"/config/gnupg.html" = "/config/openpgp.html#gnupg"
"/installation/guides/arm-devices/platforms.html" = "/installation/guides/arm-devices/raspberry-pi.html"

[output.latex]
optional = true
Expand Down
7 changes: 6 additions & 1 deletion src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@
- [Full Disk Encryption](./installation/guides/fde.md)
- [Root on ZFS](./installation/guides/zfs.md)
- [ARM Devices](./installation/guides/arm-devices/index.md)
- [Supported Platforms](./installation/guides/arm-devices/platforms.md)
- [Apple Silicon
(Asahi)](./installation/guides/arm-devices/apple-silicon.md)
- [Lenovo Thinkpad
X13s](./installation/guides/arm-devices/thinkpad-x13s.md)
- [Pinebook Pro](./installation/guides/arm-devices/pinebook-pro.md)
- [Raspberry Pi](./installation/guides/arm-devices/raspberry-pi.md)
- [musl](./installation/musl.md)
- [Configuration](./config/index.md)
- [Package Documentation](./config/package-documentation/index.md)
Expand Down
50 changes: 50 additions & 0 deletions src/installation/guides/arm-devices/apple-silicon.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Apple Silicon

Void's Apple Silicon support is based on Asahi Linux. See their
[website](https://asahilinux.org) and
[documentation](https://github.com/AsahiLinux/docs/wiki) for more information.

## Installation

Before installing, use the Asahi Linux install script to install "UEFI
environment only" from macOS:

```
macos $ curl https://alx.sh > alx.sh
macos $ sh ./alx.sh
```

Then, [create a Live USB](../../live-images/prep.md) using an [Apple Silicon
Void Linux ISO](https://voidlinux.org/download/#arm%20platforms). U-Boot
(installed by the Asahi installer) should show the external USB as a boot
option. If it does not, run these commands in the U-Boot prompt to boot:

```
U-Boot> setenv boot_targets "usb"
U-Boot> setenv bootmeths "efi"
U-Boot> boot
```

To install, follow the [chroot install guide](../chroot.md), using the "XBPS
method", observing the following modifications:

For the base installation, install `base-system`, `asahi-base`, and
`asahi-scripts`. These packages provide important configurations and install the
necessary dependencies. When running `grub-install`, add the `--removable` flag.

To use another bootloader with `m1n1`, ensure it installs the bootloader EFI
executable at `EFI/BOOT/BOOTAA64.EFI` within the EFI system partition. `m1n1`
can also be configured to boot a kernel and initramfs directly, without a
bootloader. To do this, change the `PAYLOAD` in `/etc/default/m1n1-kernel-hook`
to `kernel`.

## Audio

The `asahi-audio` package is required for audio. Ensure the speakersafetyd
service is [enabled](../../../config/services/index.md#enabling-services), and
set up [pipewire and wireplumber](../../../config/media/pipewire.md).

## Firmware

Firmware can be updated with `asahi-fwupdate` from `asahi-scripts`. It is
recommended to do so whenever the `asahi-firmware` package is updated.
36 changes: 24 additions & 12 deletions src/installation/guides/arm-devices/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,34 @@ on such devices can be done in several ways:
that can be extracted to a previously prepared partition scheme; and
- [Chroot installation](#chroot-installation): follows most of the steps
outlined in [the chroot guide](../chroot.md).
- [Live images](../../live-images/index.md) (for aarch64 UEFI devices only).

This guide also outlines [configuration steps](#configuration) that are mostly
specific to such devices.

Platform-specific documentation is available for:

- [Apple Silicon](./apple-silicon.md)
- [Lenovo ThinkPad X13s](./thinkpad-x13s.md)
- [Pinebook Pro](./pinebook-pro.md)
- [Raspberry Pi](./raspberry-pi.md)

Since most of the commands in this guide will be run on external storage, it is
important to run [sync(1)](https://man.voidlinux.org/sync.1) before removing the
device.

## Installation

If you are installing Void Linux on one of the ARM devices covered in the
"[Supported platforms](./platforms.md)" page, make sure to read its section
thoroughly.
If you are installing Void Linux on one of the officially supported ARM devices,
make sure to read its page thoroughly.

### Pre-built images

The pre-built images provided are prepared for 2GB SD cards. After [downloading
and verifying](../../index.md#downloading-installation-media) an image, it can
be uncompressed with [unxz(1)](https://man.voidlinux.org/unxz.1) and written to
the relevant media with [cat(1)](https://man.voidlinux.org/cat.1),
The pre-built images provided are prepared for 1GB storage devices. After
[downloading and verifying](../../index.md#downloading-installation-media) an
image, it can be uncompressed with [unxz(1)](https://man.voidlinux.org/unxz.1)
and written to the relevant media with
[cat(1)](https://man.voidlinux.org/cat.1),
[pv(1)](https://man.voidlinux.org/pv.1), or
[dd(1)](https://man.voidlinux.org/dd.1). For example, to flash it onto an SD
card located at `/dev/mmcblk0`:
Expand All @@ -40,8 +48,13 @@ $ unxz -k <image>.img.xz
# dd if=<image>.img of=/dev/mmcblk0 bs=4M status=progress
```

After flashing, the root partition can optionally be expanded to fit the storage
device with [cfdisk(8)](https://man.voidlinux.org/cfdisk.8),
On first boot, the root partition and filesystem will automatically expand to
fill available contiguous space in the storage device using
[growpart(1)](https://man.voidlinux.org/man1/growpart.1). This can be disabled
by commenting out `ENABLE_ROOT_GROWPART=yes` in `/etc/default/growpart`.

This can also be done manually after flashing with
[cfdisk(8)](https://man.voidlinux.org/cfdisk.8),
[fdisk(8)](https://man.voidlinux.org/fdisk.8), or another partitioning tool, and
the filesystem can be resized to fit the expanded partition with
[resize2fs(8)](https://man.voidlinux.org/resize2fs.8).
Expand Down Expand Up @@ -97,9 +110,8 @@ using [tar(1)](https://man.voidlinux.org/tar.1):
#### Chroot installation

It is also possible to perform a [chroot installation](../chroot.md) using the
appropriate architecture and base packages, some of which are listed in the
"[Supported Platforms](./platforms.md)" section. Make sure to [prepare your
storage medium](#custom-partition-layout) properly for the device.
appropriate architecture and base packages. Make sure to [prepare your storage
medium](#custom-partition-layout) properly for the device.

If doing this from a computer with an incompatible archtecture (such as x86_64),
install `binfmt-support`, enable the `binfmt-support` service, and install the
Expand Down
34 changes: 34 additions & 0 deletions src/installation/guides/arm-devices/pinebook-pro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Pinebook Pro

The Pinebook Pro is a Rockchip RK3399-based laptop.

See Pine64's [documentation](https://pine64.org/documentation/Pinebook_Pro) for
more information.

## Installation

The live ISO provided by Void is generic and does not have U-Boot integrated.
You need to provide your own firmware installed on the internal SPI flash, eMMC,
or an SD card, such as
[Tow-Boot](https://tow-boot.org/devices/pine64-pinebookPro.html) or
[rk2aw](https://xnux.eu/rk2aw/).

Boot an aarch64 Void Linux live ISO using one of the "Void Linux for Pinebook
Pro" menu entries in GRUB.

To install, follow the [chroot install guide](../chroot.md), using the "XBPS
method", observing the following modifications:

For the base installation, install both `base-system` and `pinebookpro-base`.
This package provides important configurations and installs the necessary
dependencies.

Before running `grub-install`, append the following to `/etc/default/grub`:

```
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT console=ttyS2,115200 video=eDP-1:1920x1080x60"
GRUB_DEFAULT_DTB="rockchip/rk3399-pinebook-pro.dtb"
```

> Note: if using another bootloader, ensure the kernel cmdline arguments
> `console=ttyS2,115200 video=eDP-1:1920x1080x60` are used.
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# Supported Platforms

## Raspberry Pi
# Raspberry Pi

The `rpi-kernel` packages for all Raspberry Pi variants are built from the
Raspberry Pi Foundation's kernel tree, which should enable all special
Expand All @@ -16,20 +14,20 @@ kernel are in the `/boot/cmdline.txt` file. Some of the relevant parameters are
documented in the [official
documentation](https://www.raspberrypi.com/documentation/computers/configuration.html#the-kernel-command-line).

### Supported Models
## Supported Models

| Model | Architecture |
|---------------------------------------------|--------------|
| 1 A, 1 B, 1 A+, 1 B+, Zero, Zero W, Zero WH | armv6l |
| 2 B | armv7l |
| 3 B, 3 A+, 3 B+, Zero 2W, 4 B, 400, CM4, 5 | aarch64 |
| Model | Architecture |
|------------------------------------------------------|--------------|
| 1 A, 1 B, 1 A+, 1 B+, Zero, Zero W, Zero WH | armv6l |
| 2 B | armv7l |
| 3 B, 3 A+, 3 B+, Zero 2W, 4 B, 400, CM4, 5, 500, CM5 | aarch64 |

> It is possible to run the armv7l images on an RPi 3, as the RPi 3's CPU
> supports both the Armv8 and Armv7 instruction sets. The difference between
> these images is that the armv7l image provides a 32-bit system while the
> aarch64 image provides a 64-bit system.

### Raspberry Pi 5 Kernel
## Raspberry Pi 5 Kernel

The `rpi5-kernel` and `rpi5-kernel-headers` packages provide a kernel and
headers optimized for the Raspberry Pi 5 with 16KB pages. To switch from the
Expand All @@ -40,7 +38,7 @@ replace it with `rpi5-kernel`.
> View any known issues and report any compatibility problems found in the
> [tracking issue](https://github.com/void-linux/void-packages/issues/48260).

### Enabling hardware RNG device
## Enabling hardware RNG device

By default, the
[HWRNG](https://en.wikipedia.org/wiki/Hardware_random_number_generator) device
Expand All @@ -52,26 +50,30 @@ In order to fix this, install the `rng-tools` package and
[enable](../../../config/services/index.md#enabling-services) the `rngd`
service, which uses the `/dev/hwrng` device to seed `/dev/random`.

### Graphical session
## Graphical session

The `mesa-dri` package contains drivers for all the Raspberry Pi variants, and
can be used with the [modesetting Xorg
driver](../../../config/graphical-session/xorg.md#modesetting) or
[Wayland](../../../config/graphical-session/wayland.md).

### Hardware
You may also need to uncomment the `dtoverlay=vc4-kms-v3d` line in
`/boot/config.txt`.

## Hardware

More configuration information can be found in the Raspberry Pi Foundation's
[official
documentation](https://www.raspberrypi.com/documentation/computers/configuration.html).
The `raspi-config` utility isn't available for Void Linux, so editing the
`/boot/config.txt` file is usually required.

#### Audio
### Audio

To enable the soundchip, add `dtparam=audio=on` to `/boot/config.txt`.
To enable audio, you may need to uncomment `dtparam=audio=on` in
`/boot/config.txt`.

#### Serial
### Serial

To enable serial console logins,
[enable](../../../config/services/index.md#enabling-services) the
Expand Down Expand Up @@ -101,12 +103,3 @@ configuration. It should show:
$ i2cdetect -l
i2c-1i2c bcm2835 I2C adapter I2C adapter
```

### Memory cgroup

The kernel from the `rpi-kernel` package [disables the memory cgroup by
default](https://github.com/raspberrypi/linux/commit/28aec65bb1743c9bfa53b036999f9835c889704e).

This breaks workloads which use containers. Therefore, if you want to use
containers on your Raspberry Pi, you need to enable memory cgroups by adding
`cgroup_enable=memory` to `/boot/cmdline.txt`.
41 changes: 41 additions & 0 deletions src/installation/guides/arm-devices/thinkpad-x13s.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Lenovo ThinkPad X13s

The Lenovo ThinkPad X13s Snapdragon-based laptop is supported on kernel 6.8 and
higher, with some caveats. See [jhovold's
wiki](https://github.com/jhovold/linux/wiki/X13s) for the current feature
support status.

## Installation

Before installing, update the UEFI firmware to at least version 1.59 from
Windows, then disable "Secure Boot" and enable "Linux Boot" in the UEFI
firmware.

Boot an aarch64 Void Linux live ISO using one of the "Void Linux for Thinkpad
X13s" menu entries in GRUB.

To install, follow the [chroot install guide](../chroot.md), using the "XBPS
method", observing the following modifications:

For the base installation, install both `base-system` and `x13s-base`. This
package provides important configurations and installs the necessary
dependencies.

Before running `grub-install`, append the following to `/etc/default/grub`:

```
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT arm64.nopauth clk_ignore_unused pd_ignore_unused"
GRUB_DEFAULT_DTB="qcom/sc8280xp-lenovo-thinkpad-x13s.dtb"
```

> Note: if using another bootloader, ensure the kernel cmdline arguments
> `arm64.nopauth clk_ignore_unused pd_ignore_unused` are used.

## WWAN (LTE)

To enable the WWAN modem, install `ModemManager` and unlock it:

```
# mkdir -p /etc/ModemManager/fcc-unlock.d
# ln -s /usr/share/ModemManager/fcc-unlock.available.d/105b /etc/ModemManager/fcc-unlock.d/105b:e0c3
```
Loading
Loading