I think that I discussed this idea with Raffy a long time ago. Well, it was briefly mentioned.
Puppy has at least three files, vmlinuz, initrd.gz and pup-xxx.sfs.
The initramfs, or to use it's old name "initial ramdisk", is initrd.gz. After the kernel vmlinuz has loaded, it then loads this initramfs, which is a mini Linux working environment. It does the searching of the drives to find the Puppy files, and after having found pup-xxx.sfs (and maybe the 'pupsave', 'zdrv', and extra sfs files) then sets up the layered filesystem and peforms a 'switch_root' into this layered filesystem.
Puppy can be built with the pup-xxx.sfs inside the initrd.gz, which is good because then Puppy doesn't have to look anywhere to find it. It does slow bootup though, as it all has to be loaded into RAM.
It is also simpler to setup booting, especially over a network, as there are only two files.
Now, the quirky idea takes this one step further. It is possible to compile the kernel vmlinuz with the initrd inside it. So, if we build the pup-xxx.sfs inside initrd, then we compile the kernel with the initrd inside the kernel... we end up with just one file!
Furthermore, the 2.6.30 kernel inroduced lzma compression. This reduces the size of the kernel, but we can keep plain gzip compression for the pup-xxx.sfs file (which runs faster). Though, I don't think that applying lzma compression to a sfs file reduces it much.
Anyway, I did a test build, based on 4.3.1 pet packages, and created 'quirky000'. This is a Linux kernel, with, as I explained above, the initrd and the pup-xxx.sfs inside it.
I put it on a USB Flash drive, and modified the 'syslinux.cfg' file to just this:
default quirky000 pmedia=usbflash
...the pmedia parameter isn't really needed.
Yep, it works! booting is a bit slow, as everything loads into RAM. But, this is the direction that I am aiming Quirky -- a distro that runs in RAM only.
Hey, this is fun!
This idea #1 is going to be very useful for those who want to do network booting, I reckon.
Comments:Posted on 31 Oct 2009, 10:24 by Caleb
Congratulations Barry - sounds like you're making progress already.
I must admit, I'm an old fashion kinda guy and my Puppy is a full install. I always want my RAM for other things, but if I didn't I could definitely see the magic in this.
Looking forward to following the progress.
Posted on 31 Oct 2009, 12:05 by moogsydodong
this is really Quirky!!!
what can I say???
THIS IS OUT OF THIS WORLD!!!
an entire system literally in RAM...in one file...
hey Barry...does this concept of loading everything in RAM really slows down the boot time??? how slower compared to the usual puppy???
this is really exciting man...
Posted on 31 Oct 2009, 12:10 by Raffy
RAM-based Tiny Puppy
Excellent, Barry. Now it will be very easy to do net-booting Puppy (Quirky does it without any needed changes). (In net-booting, transferring all the boot files is a given, so there is no perceived problem with copying files to RAM.)
If the pup-xxx.sfs base is small enough and resides in RAM, then quirky can be combined with executable sfs to simplify adding bigger applications: http://code.google.com/p/sfs-technology/
Isn't rewritable sfs exciting? Programs may no longer need pup_save (?).
Posted on 31 Oct 2009, 14:13 by lobster
Guys some of you get this - I am trying to get my head around it . . .
So far is this correct?
Taking what I have understood, does it mean
that a central server could 'push' out a Quirky Kernel to terminals?
Could the whole system reside in an eprom (or modern equivalent) with storage on a secure cloud storage?
Would 4quirkybuild be able to compile for different hardware parameters? If so does Quirky become potentially Intel independent - or is this going too far?
I am trying to work out how and why such a system would be deployed?
Gosh it is fun and I am not even sure what it is . . .
Posted on 31 Oct 2009, 14:32 by Tony
Quirky might be faster
Hi Barry, on my machine with large hard drive and number of partitions puppy takes about 10-15 seconds to search for the pup-save file so this version might boot quicker for me.
Also I was never quite sure why fast boot option was dropped (Using previous known good configuration) as this definitely helped with boot speed.
I was wondering if compression make much of a difference to file size on the core files and what is the trade off in speed.
Final thought, would a program that stripped out comments from scripts before compiling speed things up and lower the file size much. (Pardon my ignorance if the are stupid thought, I get a lot of those each day!)
Anyway looks exciting, have fun
Posted on 31 Oct 2009, 14:32 by Terryphi
How much RAM?
Interesting. As Quirky will run entirely in RAM what is the minimum RAM that will be required?
Posted on 31 Oct 2009, 18:51 by BarryK
What is it good?
I really don't know what use it is to have Quirky as a single file. I only have some vague thoughts about what it might be useful for. It's just a cool thing to do.
One thing, I can see how it would simplify installation instructions, frugal, etc.
Posted on 31 Oct 2009, 19:24 by wombat01
I also had the same thought of an eeprom or something similar. Maybe the woof build could configure for individual systems then all of the unused modules/drivers could be stripped out to reduce the size even further.
Posted on 31 Oct 2009, 19:35 by Raffy
Based on my tests with humongous Puppy 2.16, it will be 50-50, meaning, the net-booted file must have at most 50% of RAM for the boot to be successful (in a situation of scarce RAM).
Posted on 31 Oct 2009, 20:40 by Jota
Amount of RAM??
But, this is the direction that I am aiming Quirky -- a distro that runs in RAM only.
From your explanation, one thing is not clear to me: what will be the amount of Ram needed to run Quirky? Is this goodbye to old hardware with limited Ram??
Posted on 31 Oct 2009, 22:16 by Pizzasgood
Estimating from current Puppy sizes, you would probably need about 256 MB to run comfortably. But I have no idea how large/small Quirky will be in the end, so your guess is as good as mine.
Limited ram? Too bad.
This is NOT Puppy, it is Quirky. If is completely irrelevant whether you use it or not. Nobody cares. Barry is just playing around with it, not trying to take over the world or offer salvation to people with old hardware. Nobody will force you to use it.
If you want to use old hardware, stick with Puppy or one of the other many fine distros out there.
This is an experiment that Barry is doing for himself.
Posted on 31 Oct 2009, 22:59 by Nathan F
Well I get one thing
One thing sticks in my mind anyway, and that's the line about lzma being incorporated into the kernel. I double checked that and sure enough, it's right in the official kernel source tree now.
And I've been enjoying BSD so much! Now I have another reason to go back to Linux.
Posted on 31 Oct 2009, 23:04 by panzerpuppy
Puppy derivatives to the rescue
@Jota: For hardware with limited RAM / CPU resources, you should use Turbopup Xtreme :)
Posted on 1 Nov 2009, 8:58 by ttuuxxx
Hi Barry love your latest Brainstorm Idea.
from your first test could you please tell us a few specs, like
-bootime compared against say 4 or 5 series
-amount of memory used
-also is there any drag when moving folders or icons on the desktop?
I know its early and still needs configuring and tweaking, but it would give us a bit more think about.
Thanks and excellent work :)
Posted on 1 Nov 2009, 10:17 by Jota
Amount of RAM??
Hey Pizzasgood, are you angry? I was just curious? Was that a crime? :-)
@ttuuxxx: you should not ask for "amount of memory used?", cause Pizzasgood...
@panzerpuppy: many thanks, it looks good, will try it later.
Posted on 1 Nov 2009, 12:07 by technosaurus
the PUD project does something similar if you want some more ideas. It boots really fast but its mostly just firefox and some extras.
I did a manual frugal install and added this to boot it
title xPUD 0.9.1
kernel /xpud/xpud noisapnp lang=en quiet
I am trying to figure out if we really need to do a switch root - I don't think tinycore doese
Posted on 1 Nov 2009, 14:08 by Pizzasgood
No, not angry. I'm sorry that I came over that way. Looking back at it, yeah, it does look pretty grouchy. Sorry.
Posted on 1 Nov 2009, 18:50 by Terryphi
#technosaurus For those of us using legacy grub it needs to be root (hd0,1) of course.
Posted on 3 Nov 2009, 2:41 by Silver Steve
(Formaly SH.-Lost p.word)
I look forward to playing around with this. My 'user' approach is to pic&mix different versions of an operating system in a multi-boot environment so that the best of all worlds is achieved. (e.g. One for multimedia, one for office etc). Each 'facet' having a different name for easier identification, such as I did with Puppy.
('quirky' is the character of a girl called Emma who causes my pen to slip, so will probably name the first version after her).
Posted on 3 Nov 2009, 6:32 by nic2109
Most PCs these days have "loadsaram" as its cheap and (luckily for us) Windows needs just SO much that all the makers have to put loads in. Anything built for XP and beyond will have at least 512 Mb, so Quirky will load in a snip and there'll still be plenty to work with.
Posted on 3 Nov 2009, 24:46 by raymundo dionicio
On a mini-CD-R or a mini-DVD-RW
Quirky sounds like 'The Distro' for my wallet
Posted on 4 Dec 2009, 18:57 by Feverfew
This is a brilliant idea. Mr. K
So Quirky is kinda like "CrunchBang Linux" a test bed of new 'n' weird ideas. Vary cool.
Has anyone taught about implementing a puppy ideatorrent?
Posted on 4 Dec 2009, 19:01 by Feverfew