From cc67af42ca2b48636b67b328dcbaffc97fad42d5 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Wed, 1 Jan 2025 15:46:47 -0500 Subject: [PATCH 1/4] installation/guides/arm-devices: split platforms into a file per platform also note that aarch64 live isos exist --- book.toml | 1 + src/SUMMARY.md | 5 ++++- src/installation/guides/arm-devices/index.md | 17 +++++++++++------ src/installation/live-images/index.md | 4 ++++ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/book.toml b/book.toml index 86bdf9b8e..ba9914ddb 100644 --- a/book.toml +++ b/book.toml @@ -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 diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 85adf3a27..aa2f3e1a6 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -15,7 +15,10 @@ - [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) + - [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) diff --git a/src/installation/guides/arm-devices/index.md b/src/installation/guides/arm-devices/index.md index afbb04b46..aa5a7c33d 100644 --- a/src/installation/guides/arm-devices/index.md +++ b/src/installation/guides/arm-devices/index.md @@ -11,19 +11,25 @@ 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: + +- [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 @@ -103,9 +109,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 diff --git a/src/installation/live-images/index.md b/src/installation/live-images/index.md index 1195ca7f4..d3525c041 100644 --- a/src/installation/live-images/index.md +++ b/src/installation/live-images/index.md @@ -7,6 +7,10 @@ function properly. There are `x86_64` images for both `glibc` and `musl` based systems. There are also images for `i686`, but only `glibc` is supported for this architecture. +Live images are provided for `aarch64` in both `glibc` and `musl` variants, but +they only support UEFI-capable devices. Live images for `aarch64` do not support +`void-installer`. + Live installers are not provided for other architectures. Users of other architectures will need to use rootfs tarballs, or perform an installation manually. From 6d4e2710e9a3ad9bc78d4ef158edd2b793d9f8b5 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Wed, 1 Jan 2025 15:47:49 -0500 Subject: [PATCH 2/4] installation/guides/arm-devices/raspberry-pi: update for new kernel - should now support 500/CM5 (as of 6.6.67 at least) - audio/video config.txt lines should now be uncommented by default - memcg no longer required with new config --- .../{platforms.md => raspberry-pi.md} | 43 ++++++++----------- 1 file changed, 18 insertions(+), 25 deletions(-) rename src/installation/guides/arm-devices/{platforms.md => raspberry-pi.md} (79%) diff --git a/src/installation/guides/arm-devices/platforms.md b/src/installation/guides/arm-devices/raspberry-pi.md similarity index 79% rename from src/installation/guides/arm-devices/platforms.md rename to src/installation/guides/arm-devices/raspberry-pi.md index 23efd1c78..94408ac21 100644 --- a/src/installation/guides/arm-devices/platforms.md +++ b/src/installation/guides/arm-devices/raspberry-pi.md @@ -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 @@ -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 @@ -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 @@ -52,14 +50,17 @@ 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 @@ -67,11 +68,12 @@ documentation](https://www.raspberrypi.com/documentation/computers/configuration 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 @@ -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`. From b0edd4b7538adc09a0f865b69c71995ee15e4d5f Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Wed, 1 Jan 2025 15:48:31 -0500 Subject: [PATCH 3/4] installation/guides/arm-devices: add x13s page --- .../guides/arm-devices/thinkpad-x13s.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/installation/guides/arm-devices/thinkpad-x13s.md diff --git a/src/installation/guides/arm-devices/thinkpad-x13s.md b/src/installation/guides/arm-devices/thinkpad-x13s.md new file mode 100644 index 000000000..f6549d59d --- /dev/null +++ b/src/installation/guides/arm-devices/thinkpad-x13s.md @@ -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 +``` From e39aba27b4b5732d3e6d9d8cc57c593c25ce75b5 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Wed, 1 Jan 2025 15:48:54 -0500 Subject: [PATCH 4/4] installation/guides/arm-devices: add pinebook-pro page --- .../guides/arm-devices/pinebook-pro.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/installation/guides/arm-devices/pinebook-pro.md diff --git a/src/installation/guides/arm-devices/pinebook-pro.md b/src/installation/guides/arm-devices/pinebook-pro.md new file mode 100644 index 000000000..1ace9895c --- /dev/null +++ b/src/installation/guides/arm-devices/pinebook-pro.md @@ -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.