Ubuntu currently uses a gzipped cpio-based initramfs created with initramfs-tools. A squashfs-based initrd might lower the time it takes for the kernel to run the early Ubuntu initialization.

would have better compression and wouldn't have to be decompressed in full before being usable by the kernel, and hence might improve boot time. This should provide an overview of the issue/functionality/change proposed here. Focus here on what will actually be DONE, summarising that so that other people don't have to read the whole spec. See also CategorySpec for examples.

Release Note

Spec abandonned, so nothing to include in release notes for now.


Squashfs has a better compression than gzip, this means a smaller image to load on boot and would hence be faster.

Also, using a real filesystem instead of an initramfs allows the kernel to look directly for the data it immediately needs for the early init instead of first having to decompress the full early init image, hence this might also speed up early init.

Use Cases

Speeding up the boot of all Ubuntu systems needing an initrd/initramfs (might not be all systems).


This assumes we can use an initrd instead of an initramfs; the kernel can only used a stream of gzipped cpio archives as an initramfs. A squashfs filesystem may only be used as an initrd.


Change the Ubuntu initramfs creation tools / hooks to output a squashfs initrds instead of an initramfs.


Check whether we can use initramfs-tools or should use another tool (e.g. yaird, but it's said to be broken) to generate initrds; do the relevant changes or write a new tool.

Update the update-initramfs script to do the right thing.

Unresolved issues

Unfortunately, the size benefits of squashfs versus gzipped cpio are relatively small (~ 10 %).

The boot loader still has to read the full early init image from disk as the kernel doesn't load the bytes it cares about itself, hence the difference in the effort before using the full early init image on boot is limited to the difference in limited to CPU usage for decompression (we don't save time to load it from disk).

Initrds are run at a different stage than initramfs, there might be a lot of difference to adapt to.

One goal of jaunty is to avoid initramfs completely by building more modules in the kernel, hence rendering this spec relatively useless.


MobileTeam/Specs/SquashfsInitrds (last edited 2009-01-20 21:27:08 by serris)