Build system for Quirky

For anyone who is interested, here is the build system for Quirky:

This is forked from Woof, with quite a few changes. For example, no PUPMODEs. I also made various refinements that are not in Woof, such as eliminatiing the multi-arch symlinks (ex linking /usr/lib/i386-linux-gnu to /usr/lib), which could be ported to woof-CE if desired.

There are some docs in this blog about these changes.
Posted on 20 Apr 2014, 16:57 - Categories: Quirky

Kernel 3.12.11 with zram support

I was surprised that the 3.12.x kernel used in Quirky Tahr does not support zram. This is a compressed filesystem in RAM.
I had enabled it in some earlier kernels. It seems to have acquired a new dependency, that caused it to be de-selected when I compiled the 3.12.x kernels.

I have recompiled the 3.12.11 kernel, with these changes:

have added support for zram, builtin.

have changed aufs from module to builtin.

device drivers -->
staging drivers -->
[*] memory allocator for compressed images (CONFIG_ZSMALLOC)
<*> compressed ram block device support (CONFIG_ZRAM)

file systems -->
miscellaneous file systems -->
<*> aufs support

I want zram support, as I am playing with an idea for building Quirky as a live-CD. Don't know how far I will go with this, just thinking about a live-CD that boots up and runs totally in ram, using zram.

Note, not currently thinking about using aufs, even though have changed it to builtin.

The PET (25.2MB):
Posted on 14 Mar 2014, 21:09 - Categories: Quirky

New popup utility

I have always wanted to write a "popup" text-message utility from scratch, in C or BaCon, that is very efficient and does all of the various things that I would like a popup utility to do.

In Puppy and Quirky we have some popups that use gtkdialog, but I have always considered this to be less-than-satisfactory -- for example, 'yaf-splash' (gtkdialog-splash) and 'pupmessage').
There are others of course, such as xmessage, gxmessage, Xdialog, yad, etc. (and of course gtkdialog), most of which can do a lot more than simple information-popup, but are not really optimal for simple message-popup.

So, I have written one, named 'popup', in BaCon. It is written with HUG, with some GTK function imports and some embedded C. It runs as a daemon, that is, as a separate process, and once started you can optionally send more controls (commands) and text to it -- not by stdin or whatever, but by writing to a file.

I had originally thought that 'popup' could watch the file for modifications using inotify, but soon decided that is not suitable, for various reasons. Now, the GTK timer function is used, called every 500 msec, which is also convenient as a "terminate=<number>" control can be sent to tell it to quit after so many seconds.

Anyway, showing how it works by example, here is an invocation:
# ./popup "name=bk1 background='#00ffff' placement=top-middle|This text allows Pango Text Attribute Markup Language, for example <b>bold</b>, <big>big</big>, <small>small</small>, <i>italic</i>, <tt>monospace</tt>"

Which looks like:

Then this:
# echo "background='#ff0000' level=top flash=on writemode=append-newline|Now the message is on top layer and flashing, to draw attention" >> /tmp/popup_bk1

The popup comes to top layer and background flashes:

Then to terminate it:
# echo "terminate=now|" >> /tmp/popup_bk1

To find out all that it can do, just type "./popup" and hit ENTER key, or "-h" or "--help" then ENTER.

I have uploaded the source code to the BaCon forum:

I have placed popup into the Quirky build system, but it is a generic utility that will work in any Linux, including puppies.
Posted on 9 Mar 2014, 8:36 - Categories: Quirky


A "child-proofing application" is one of the pending ideas that I had for Quirky6. Now implemented.

The way that I intended this to work is you give a child (or spouse) Quirky on a USB stick. They can bootup on your computer, and can access the Internet, printer, scanner, optical drive, etc., but not your internal hard drives.

This is what the new childproofing system does. You can also childproof Quirky if installed in an internal hard drive partition, however the blocking mechanism works on an entire drive, so Quirky would have to be on a different drive to the one you want to block.

Some snapshots to show it in action. This is the "before" snapshot of the desktop:

The Childproof Setup application is run from the Filesystem menu, and this is the first window:

The final window has some technical description, so I won't publish that. But, after rebooting, here is the "after" snapshot:

Note that the internal drives are disabled on a per-drive basis, however, I have also hidden the first partition of the Flash stick, using a different method. This prevents the child from poking around in the first 'boot' partition and potentially undoing the internal drive disabling.

The childproofing script gets erased after it has been run.

Of course, such blocking is really only for "friendly" users, not someone who wants to break into your hard drive, and especially not someone with technical Linux knowledge. The methods used, though, will probably stump most adult users from the general population.
Posted on 20 Feb 2014, 21:11 - Categories: Quirky

Kernel 3.12.11

I have compiled the Linux kernel version 3.12.11 in Quirky Tahr.

I was playing with ideas for my next quirky idea, the "childproofing" of Quirky.

One technique involves disabling a drive by a kernel boot parameter. It used to be possible with the old "ide" drivers, but not after the move to the "libata" PATA/SATA drivers (that we now use).

However, a guy by the name of Robin Johnson wrote a patch for libata that reintroduces disabling of drives by a boot parameter. It is introduced here:

However, it got merged into the kernel at version 3.12.7, whereas our quirkies have been built with 3.12.6.

So, I have compiled the latest, 3.12.11. The PET (25.2MB):

This kernel will be in the next releases of Quirky Tahr and Quirky T2.

There is also the source PET (112.9MB):

Sources and build scripts are at:
Posted on 20 Feb 2014, 0:04 - Categories: Quirky

Pages: [1] [2] [3] [4] [5] ...