Humongous initrd

Fatdog uses what is called as "humongous initrd" in Puppy Linux term (see here and here).

Basically what it means is that there are only two (2) files needed to boot Fatdog, which is vmlinuz and initrd instead of the usual three (3) (or more): vmlinuz, initrd and base.sfs (puppy.sfs, zdrv.sfs, adrive.sfs etc). The base.sfs file still exists in Fatdog but it is contained within the initrd, thus you can't see it. It also causes initrd's to swell: initrd's size is usually around 3-5 MB but in Fatdog it is about 200 MB because it contains the base.sfs - hence the name "humongous".

Why use humongous inird over Puppy's traditional 3-file setup?

  1. Faster boot on harddisk frugal install.
  2. Two file installation makes is very easy to boot Fatdog remotely using PXE.
  3. Easier boot on exotic medium - as long as the bootloader can load vmlinuz and initrd (which most Linux bootloader is supposed to do), then Fatdog can run.

Of course, like anything else, the "faster boot" part depends on your BIOS and your hardware. It is generally faster to use humongous initrd on harddisk frugal install but it isn't always so. Humongous initrd may be slower to boot on other kind of setup / install devices, too (though again, not always). You may have other reasons for preferring the standard 3-file setup:

Fatdog supports converting the humongous initrd back to a small initrd, extracting the base.sfs in the process and reverting to the standard 3-file setup:

  1. You can use Fatdog Installer to install to USB Flash drive. If you have large enough RAM (2 GB or more), it will offer to use either standard initrd or small initrd.

  2. You can remaster Fatdog to create an ISO with small initrd.

  3. You can use the command line tool fatdog-split-initrd.sh. Run the command in terminal to see the options. Of special note: the tmpdir (temporary directory) used by the tool by default is /tmp, if you have less than 2 GB of RAM and you don't use swap, you'd better specify a different location or Fatdog can lock-up due to running out of memory when doing the splitting.

  4. Or, if you only want to get a smaller version (not the smallest), you can extract only the fd64.sfs by clicking on your installed initrd (this should open it up), moving fd64.sfs outside to a place accessible by the bootloader (perhaps the same location of vmlinuz and initrd itself), and then re-packing the initrd by clicking repack-initrd.sh.


If you use last method, please remember to use the basesfs parameter on your bootloader to tell Fatdog where to find the basesfs. Usually setting it to basesfs=local or basesfs=local:/path/to/fd64.sfs will do (or you can specify the actual device location like basesfs=device:sda7:/path/to/fd64.sfs - this will be faster since it means Fatdog doesn't have to search for the basesfs).

Parting words: Will using a small initrd improve boot speed? Perhaps. There is not definite answer. You just need to go a try.

Note: base.sfs is a generic term for Fatdog's system SFS. The actual filename varies with Fatdog versions, it is usually called fd64_xxx.sfs where xxx refers to the version number, e.g. fd64_620.sfs. Starting from Fatdog64 700, the base sfs is simply named as fd64.sfs; there is no version number attached anymore.