Pinebook Pro Installing Void Linux ARM
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'll cross-build one ourselves.
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}"
Configuring tow-boot
The following borrows from PostmarketOS u-boot configuration for the kernel command-line parameters.
cat <<EOF > /mnt/boot/extlinux/extlinux.conf default l0 menu title Pinebook Pro Boot Menu prompt 0 timeout 50 label l0 menu label Boot Kernel on SD linux /Image-${KVER} fdt /dtbs/rockchip/rk3399-pinebook-pro.dtb append console=tty0 console=ttyS2,115200n8 coherent_pool=1M pcie_aspm.policy=performance video=HDMI-A-1:1920x1080@60 video=eDP-1:1920x1080@60 rw rootwait root=/dev/mmcblk1p3 EOF