[Buildroot] Squashfs boot

Arnout Vandecappelle arnout at mind.be
Sat Jan 26 22:38:12 UTC 2013


On 01/25/13 22:55, Stefan Fröberg wrote:
> Hello Stephen
>
> I made a quick conversion of my LiveCD initramfs stuff to squashfs image
> file and then played little bit with it and kernel image
> with the help of qemu. (took less time than starting all
> reconfiguring/combiling from buildroot)
>
> The good news is that yes, it should be doable to do boot directly from
> squashfs root image.
>
> For example I did this to start it (ramdisk_size is in kilobytes):
>
> qemu-system-i386 -kernel bzImage -initrd rootfs.sqfs -append
> "ramdisk_size=131072"
>
> It first tries to unpack rootfs as initramfs and then it notices that
> it's not initramfs but traditional,
> older version of initrd file. (please see root.png).
>
> After that it should print RAMDISK: squashfs filesystem found and start
> automatically loading it to ram.
> (please see root2.png)
>
> After that it continues normally and starts the normal init process.
>
> And now the bad news:
>
> - Takes a lot of memory. This is old style initrd stuff (time when 2.4
> kernel was still hot and new).

  Yes, using squashfs as initrd is probably not what you want: it will 
load the entire squashfs into memory (albeit compressed), and then copy 
it (and decompress) when you access it.

  The typical way to use squashfs is as a partition of your disk. So if 
you'd boot from a USB stick, you'd make two partitions: an ext2 for grub 
and the kernel, and a second one for the squashfs. To install it, just do 
"cat output/images/rootfs.sqfs > /dev/sdb2" (assuming your USB key is 
/dev/sdb and squashfs is the second partition). When booting, you append 
the following the kernel command line: "root=/dev/sda2 rootwait" 
(assuming there's no hard disk or anything so the USB key will end up as 
/dev/sda).


> - Squashfs is read-only so if you use mdev or udev then expect little
> troubles (please see root3.png).
>
> However maybe buildroot init already takes care of those ????

  Copy fs/cpio/init to output/target/init and all will be well.


  Regards,
  Arnout

[snip]

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F


More information about the buildroot mailing list