BTRFS on SD-Card Raspberry Pi

I am getting a new Raspberry Pi 4b in a couple of days and want to install Arm edition on it. Both the installations procedures on the Endeavouros Arm website and Arch Arm website use ext4 as the file format on the SD Card. I will be using a 256 GB SD Card.
Is using Btrfs instead of ext4 viable? Has anyone tried it and how is the experience?

The only way to install Arch Linux Arm is with an base image, which as you have pointed out only offers ext4.

Go to archlinuxarm.com and click on packages, then enter btrfs in the search area.

Arch Repo Name Version Description
any community btrfs-heatmap 9-1 creates a visualization of how a btrfs filesystem is using the underlying disk space
aarch64 core btrfs-progs 5.16.2-1 Btrfs filesystem utilities
armv7h core btrfs-progs 5.16.2-1 Btrfs filesystem utilities
any community grub-btrfs 4.11-2 Include btrfs snapshots in GRUB boot options
any community python-btrfs 13-2 Python Btrfs module, with useful scripts to inspect btrfs internals

Looks like the packages are available, but one would have to start with ext4 then switch over to btrfs and I am not sure if that is possible.

Perhaps @dalto could shed some light on if this is possible.

Pudge

EDIT:
You might want to go archlinuxarm.com then click on “Forum” and search for btrfs there.

1 Like

I have never tried on an arm platform but you can convert an ext4 filesystem to btrfs on a x86. That being said, it needs available disk space equal to the current space in use. I suspect it will take a fairly long time to do the conversion on an SD card.

That being said, why do you want btrfs for that use case?

1 Like

Just want to see if it is possible. Having snapshots and compression using Btrfs helps

On the archlinuxarm forum, post 4 refers to using BTRFS on the linux-rpi module kernel.

On that subject, the EnOS arm install-image script does not use the linux-aarch64 kernel which is default kernel using the Archlinux Arm image. Instead, it automatically uses the linux-rpi kernel.

Pudge

1 Like

I know little to nothing about btrfs, but doesn’t using snapshots involve grub?
If so, there is no such thing as grub on Arm devices. There is also no UEFI or any form of BIOS. Which is exactly why one has to start with an image to externally burn to a uSD or USB SSD.

Here is the image for EnOS arm.

Pudge

No. grub allows booting directly from a snapshot but that isn’t really the point of snapshots.

1 Like

Is it possible to install via wifi after step 1 or is an ethernet connection necessary for steps 2 and 3?

I am not sure. RPi 4b does have both 2.4 and 5.1 channels, but I am not sure if Archlinux Arm has the drivers installed in their image.

Let me try a test install and see.

Pudge

1 Like

Would packages compiled for aarch64 kernel work for the rpi kernel?

Short answer = yes.

Long answer =
There are both 32 Bit and 64 Bit packages available for linux-rpi.

Go to archlinuxarm.org and click on packages and enter linux-rpi in the search area.

Arch Repo Name Version Description
armv7h core linux-rpi 5.15.30-4 RPi Foundation patched Linux kernel and modules
aarch64 core linux-rpi 5.15.30-4 RPi Foundation patched Linux kernel and modules

The first column is the Architecture where armv7h = 32 Bit and aarch64 = 64 bit.
The RPi 4b will run either one.

As far as the linux-aarch64 kernel vs linux-rpi kernel,
as seen above the linux-rpi kernel is the RPi Foundation kernel currently 5.15.30-4
the linux-aarch kernel is I believe is the https://www.kernel.org/ stable kernel compiled for 64 bit aarch64 (64 bit) currently 5.17.1-1.

So the linux-rpi kernel is more like the LTS kernel and the linux-aarch64 kernel is the latest stable version of the kernel.

Don’t let the aarch64 tag confuse you, it means different things in different situations.

Back to my test install. The wireless packages seem to be there, but I haven’t looked at how to enable WiFi from the command line yet.

Pudge

1 Like

Yes, you can use WiFi for steps 2 and three.

After step 1, insert the uSD or USB SSD into the RPi 4b
boot into the RPi 4b and enter “root” for user, and “root” for the password.
enter

# sed -i 's/#WIRELESS_REGDOM="US"/WIRELESS_REGDOM="US"/g' /etc/conf.d/wireless-redom

You may have to substitute your REGion/DOMain with what is appropriate for “US”

# cat /etc/conf.d/wireless-regdom

will display the list of REGDOMs available.

# ip addr

should see something like
3: wlan0 yada yada yada state DOWN

# wifi-menu

a pcurses window will appear with the detected WiFi channels.
Choose which channel you want and enter it’s password.
Wait for about 20 seconds and you will get your cursor back.

# ping endeavouros.com

and ping should show success.

You’re ready to continue by typing

# ./config-update

and the step 2 script will run.

Pudge

2 Likes

Thanks a lot @Pudge, @dalto. I will try the btrfs installation on my own later and let you know. I found a couple of guides on GitHub.

1 Like

Marking this as solved because btrfs is included in the latest install script.

2 Likes

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.