Difference between revisions of "Pinebook Pro Installing Void Linux ARM"

From PINE64
Jump to navigation Jump to search
(WIP X-kernel)
(Split kernel section)
Line 1: Line 1:
'''DISCLAIMER''': This is Work In Progress, no warranty implied
'''DISCLAIMER''': This is Work In Progress, no warranty implied, this is also for experienced linux users.


This will not be a complete guide, as it borrows heavily on [[Installing Arch Linux ARM On The Pinebook Pro]], so read it first then come back here.
This will not be a complete guide, as it borrows heavily on [[Installing Arch Linux ARM On The Pinebook Pro]], so read it first then come back here.
Line 8: Line 8:


You can go to the Void linux [https://voidlinux.org/download/ download page], select the "arm" tab, and choose one of the aarch64 rootfs tarballs, either glibc or musl.
You can go to the Void linux [https://voidlinux.org/download/ download page], select the "arm" tab, and choose one of the aarch64 rootfs tarballs, either glibc or musl.
How to check integrity of the downloaded file is explained on the same page, no need to reinstate that here.
How to check integrity of the downloaded file is explained on the same page.


Or use the following instructions (on debian):
Or use the following instructions (on debian):
Line 21: Line 21:
=== Extracting and configuring the root filesystem ===
=== Extracting and configuring the root filesystem ===
==== Extracting the root filesystem ====
==== Extracting the root filesystem ====
  # bsdtar -xpf void-aarch64-musl-ROOTFS-20221001.tar.xz -C /mnt
  # tar -xpf void-aarch64-musl-ROOTFS-20221001.tar.xz -C /mnt


==== Configuring a login agent on the serial console ====
==== Configuring a login agent on the serial console ====
Line 27: Line 27:
  # ln -sf /etc/sv/agetty-ttyS2 /mnt/etc/runit/runsvdir/default
  # ln -sf /etc/sv/agetty-ttyS2 /mnt/etc/runit/runsvdir/default


=== Cross-compiling a kernel suitable for the Pinebook Pro ===
=== Kernel ===
The Void linux rootfs tarball does not contain a kernel. We can borrow one from Arch Linux ARM or cross-build one ourselves.


The Void linux rootfs tarball does not contain a kernel, so we will create one. We'll use the PostmarketOS kernel configuration and boot parameters, because they are working properly, and are sufficiently up-to-date. This is done from an x86_64 computer.
=== Use Arch Linux ARM kernel ===
TODO


This has been tested with PMOS configuration for 6.0.2 and kernel 6.1.0-rc5+, no initramfs was needed.
=== Cross-compiling a mainline kernel suitable for the Pinebook Pro ===
We'll use the PostmarketOS kernel configuration and boot parameters, because they are working properly, and are sufficiently up-to-date. This is done from an x86_64 computer.
 
This has been tested with PMOS configuration for 6.0.2 and kernel 6.1.0-rc5+. No initramfs was needed to boot the OS.


  $ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
  $ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Revision as of 14:24, 21 November 2022

DISCLAIMER: This is Work In Progress, no warranty implied, this is also for experienced linux users.

This will not be a complete guide, as it borrows heavily on Installing Arch Linux ARM On The Pinebook Pro, so read it first then come back here.

Only the steps that are different are listed here. Be careful, the numbering of the sections is not the same.

Downloading and verifying the rootfs tarball

You can go to the Void linux download page, select the "arm" tab, and choose one of the aarch64 rootfs tarballs, either glibc or musl. How to check integrity of the downloaded file is explained on the same page.

Or use the following instructions (on debian):

$ wget https://repo-default.voidlinux.org/live/current/void-aarch64-musl-ROOTFS-20221001.tar.xz
$ wget https://repo-default.voidlinux.org/live/current/sha256sum.{txt,sig}
$ wget https://github.com/void-linux/void-packages/raw/master/srcpkgs/void-release-keys/files/void-release-20221001.pub
$ signify-openbsd -V -p void-release-20221001.pub -x sha256sum.sig -m sha256sum.txt
Signature Verified
$ sha256sum -c --ignore-missing sha256sum.txt
void-aarch64-musl-ROOTFS-20221001.tar.xz: OK

Extracting and configuring the root filesystem

Extracting the root filesystem

# tar -xpf void-aarch64-musl-ROOTFS-20221001.tar.xz -C /mnt

Configuring a login agent on the serial console

# cp -R /mnt/etc/sv/agetty-ttyS0 /mnt/etc/sv/agetty-ttyS2
# ln -sf /etc/sv/agetty-ttyS2 /mnt/etc/runit/runsvdir/default

Kernel

The Void linux rootfs tarball does not contain a kernel. We can borrow one from Arch Linux ARM or cross-build one ourselves.

Use Arch Linux ARM kernel

TODO

Cross-compiling a mainline kernel suitable for the Pinebook Pro

We'll use the PostmarketOS kernel configuration and boot parameters, because they are working properly, and are sufficiently up-to-date. This is done from an x86_64 computer.

This has been tested with PMOS configuration for 6.0.2 and kernel 6.1.0-rc5+. No initramfs was needed to boot the OS.

$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ cd linux
$ wget -O .config https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/linux-postmarketos-rockchip/config-postmarketos-rockchip.aarch64
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 oldconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(grep -c '^processor' /proc/cpuinfo)

Installing the newly built kernel, modules & DTB files

$ KVER="$(make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 kernelrelease)"
$ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 modules_install dtbs_install \
		INSTALL_MOD_STRIP=1 \
		INSTALL_MOD_PATH=/mnt \
		INSTALL_DTBS_PATH=/mnt/boot/dtbs
$ sudo cp arch/arm64/boot/Image "/mnt/boot/Image-${KVER}"