site  contact  subhomenews

Quirky has returned!

March 21, 2024 — BarryK

I created Quirky Linux in 2010 and the last release was in 2018. I then notified Distrowatch that the project was discontinued.

Quirky was a full installation, occupying an entire partition, the same as most Linux distributions. It did not support squashfs (SFS) files, nor did it use aufs or overlay fs layered filesystem. So it did not have "run in RAM with a save file";  what it did have was strategies to minimize flushes to the storage media, to help prolong the life of flash media.

There are some guys active on the Puppy Forum who would have fond memories of Quirky. Well, Quirky is back, though this is "Quirky on steroids". And very highly experimental.

Yes, the features are as described above; however, major new features are added. Quirky can be installed frugally, that is, be in one folder in a partition used for other purposes -- but it has to be a btrfs partition. There is a snapshot and potentially rollback/roll-forward capability, like we have in EasyOS and the pups. The filesystem has read-write compression. There is per-folder encryption.

Regarding the requirement for a btrfs partition, if you want to install to an internal drive, you would probably have one if have installed Fedora or OpenSuse. It is theoretically possible to create a file in a ext4 partition and create a btrfs filesystem in that file (maybe a sparse file) and mount it as subvolume; then can boot into it.

The containers feature of EasyOS is gone. Instead, there will be more attention given to isolation of apps from each other by the method introduced in Easy; to run each app as its own user. This mechanism can be tightened further.

This new Quirky is built with Void Linux packages, and uses XBPS package management, with PKGget (PPM) as a GUI frontend. As introduced in easyVoid. I was struggling with easyVoid, as it uses SFSs and aufs layered filesystem, which is very incompatible with XBPS. It is this incompatibility that was causing me to implement hacks that I did not like, and turned my attention to bringing back Quirky.

A name for this new Quirky can be "QuirkyVoid", or just "QV". Here is the old logo:


...I never created an SVG for it; will put that on the to-do list.

The new build system is derived from woofV that builds easyVoid; the new name is "woofQV". I will be uploading it to github very soon.

woofQV is very simple. A series of scripts to run, and it creates a drive image file 'qv-<date>-amd64.img'. Just like with EasyOS, write it to a USB-stick and boot it. OK, I did that, and got a normal-looking desktop:


Works as you would expect. What is important though, is what is underneath. The filesystem is completely different. If I am running another distro and plugin the USB-stick and mount the working-partition, this is what is seen:


...the working-partition has a btrfs filesystem, and those folders named "@*" are what is called "subvolumes". This is a frugal-install, as all of this is inside folder 'quirkyvoid'. Folder '@qv' is the root-filesystem -- before clarifying that, explaining more about the drive-image file...

Just like EasyOS, the drive-image file has two partitions; an esp boot vfat partition, and a working-partition. Except the working-partition is no longer ext4. Here is the boot-partition:


...for various reasons, this has 'vmlinuz' and 'initrd'; not in the working-partition.

Here is code in the 'init' script in the initrd, before the switch_root operation:


...that SUBVOL variable is "quirkyvoid/@qv", which mounts the @qv folder onto /newroot folder.  SUBDIR is "quirkyvoid/". Then /dev, /proc, etc are moved to /newroot, and a switch_root performed.

There are three "--bind" mounts, that mount the external folders 'data', '@home' and '@files' inside /newroot. So, after bootup, this is what "/" looks like:


...which looks similar to EasyOS. Except for that new 'data' folder.

It is intended that 'files' and 'home' will be encrypted. This will require a password to be entered at bootup. Currently don't have that, as the 6.8.1 kernel with fscrypt patches doesn't work; booted to the shell prompt, then a second later the kernel crashed. I have reported this to the 'linux-btrfs' mail-list, with a screenshot of the crash.

QV has huge potential, but a lot of work to get it to a reasonable working condition that can be released. A pre-alpha maybe not to far away.

I will post more explanations in future blog posts. I'm a beginner with btrfs, so refinement will happen. Those 'data', '@home' and '@files' located outside of '@qv' is unusual, I gather from reading so far; it seems that it is more usual to create '@home' for example, nested inside '@qv' -- but intuitively it seemed better to have '@home' outside and bind-mount it inside -- anyway, my way seems to be working.    

Tags: quirky