Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@bahamas10
Last active November 22, 2022 00:26
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bahamas10/aee4cc121c29e6657a91fc53418356c7 to your computer and use it in GitHub Desktop.
Save bahamas10/aee4cc121c29e6657a91fc53418356c7 to your computer and use it in GitHub Desktop.
Void Linux on Raspberry Pi 4

Summary

I'm able to get a Void Linux image (32bit, raspberry pi 2 image) to boot on the raspberry pi 4. Currently, I can get it to boot and even handle upgrading via xbps-install -Su (networked over ethernet), however I can't seem to get it to see the internal wlan (wifi) device.

huge shout out to kodifies on this reddit post for helping me to get this going.

Steps

grab the raspberry pi 2 (32bit) image

mkdir -p ~/temp
cd ~/temp
wget https://alpha.de.repo.voidlinux.org/live/current/void-rpi2-PLATFORMFS-20181111.tar.xz

grab the latest raspberry pi firmware (will take a while)

git clone git://github.com/raspberrypi/firmware.git

prepare the sdcard and install void. This is largely based on https://wiki.voidlinux.org/Raspberry_Pi

replace /dev/sda with your device (found in fdisk -l)

$ sudo parted /dev/sda
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable msdos
(parted) mkpart primary fat32 2048s 256MB
(parted) toggle 1 boot
(parted) mkpart primary ext4 256MB -1
(parted) quit

create the filesystems

$ sudo mkfs.vfat /dev/sda1
mkfs.fat 4.1 (2017-01-24)
$ sudo mkfs.ext4 -O '^has_journal' /dev/sda2
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 15579648 4k blocks and 3899392 inodes
Filesystem UUID: f07242a6-b029-4581-a24f-dd51f6bf5d3e
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

create the root filesystem

sudo mount /dev/sda2 /mnt
sudo mkdir /mnt/boot
sudo mount /dev/sda1 /mnt/boot

place the rpi2 image onto the SD card

sudo tar xvfJp ~/temp/void-rpi2-PLATFORMFS-20181111.tar.xz -C /mnt
sudo sync

--add the following lines to /mnt/etc/fstab--

/dev/mmcblk0p1  /boot  vfat  defaults  0  0

NOTE: I now skip this step. It appears that updating the installed packages (xbps-install -Su) caused files to be overwritten in /mnt/boot and this caused my raspberry pi not to boot. We can avoid this happening and manually manage the install firmware files by not mounting it at boot.


copy the latest firmware

cd ~/temp/firmware
sudo rm -rf /mnt/boot/*
sudo rsync -r ./boot/ /mnt/boot/
sudo sync

create config.txt and cmdline.txt files

/mnt/boot/config.txt

dtoverlay=vc4-fkms-v3d
max_framebuffers=2
max_usb_current=1
gpu_mem=256

/mnt/boot/cmdline.txt

root=/dev/mmcblk0p2 rw rootwait console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 loglevel=4 elevator=noop

unmount the partitions

sudo umount /mnt/boot /mnt

put the sd card into an rpi 4 and it should boot!

@kda406
Copy link

kda406 commented Nov 6, 2019

Do you think this would this work with the 64 bit image? I'm unsure why you chose the 32 bit image.

@bahamas10
Copy link
Author

Do you think this would this work with the 64 bit image? I'm unsure why you chose the 32 bit image.

I couldn't get the 64bit image to work for me at all.

Also, this gist isn't great - I can't get it to work with updates properly (if /boot is mounted), and I also don't have wifi or bluetooth or anything like that working.... i really can't figure this thing out.

@kda406
Copy link

kda406 commented Nov 6, 2019

Thanks for your work on this.

@SimonTeixidor
Copy link

@bahamas10: Did you copy over the kernel modules from the RPI firmware repo? I ran rsync -r formware/modules/ /mnt/rpi/lib/modules/ and got more hardware supported, although I don't use wifi or bluetooth.

@pepe
Copy link

pepe commented Jul 7, 2020

Hi, I just booted pi4b in 64bit voidlinux-musl. Ping me if you are still interested in this.

Thank you very much, this gist helped me a lot.

@nathanblair
Copy link

Hey @pepe, I'm attempting to get the 64bit musl-variant voidlinux going on the Pi4 Model B. I got the PLATFORMFS extracted onto the root partition, the boot partition mounted over the boot directory.

So I'm attempting to extract the pi-firmware boot contents into the boot directory on the sd card, and the pi-firmware modules contents extracted into the lib/modules directory on the sd card.

I've also created the cmdline.txt and config.txt with the exact contents in the gist.

Is there anything else you did specifically to get your 64bit voidlinux-musl running on the pi4b?

@frmoronari
Copy link

very fine solution.
i have a boot inmy rasp4 4gb.
lets go to configurations.
thanks for sharing this article.

@dreamcat4
Copy link

[UPDATE] ah, it seems rpi4 image is now officially available for download here:

https://voidlinux.org/download/

after clicking onto the 'arm platforms' tab

Screenshot from 2021-12-13 14-39-33

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment