Hercules Brotli SquashFS - Linux 3.18.29 kernel patch and bootchart

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Brotli is a compression format from Google.  https://github.com/google/brotli

SquashFS is a Linux utility that can build compressed file systems.  http://squashfs.sourceforge.net

For this challenge, we are going to take a recently completed implementation of brotli support for SquashFS, and we are going to document how to build a SquashFS volume that can be booted from.

The client is hoping to be able to push Brotli SquashFS support back into the main Linux Kernel repository, for specific versions.  We have already done the work for Linux 3.18.29, but now the client has asked for formalized boot timing differences on a Raspberry Pi.  I would like to use bootchart to generate this information:

http://www.bootchart.org/

Requirements:

In your submission, please provide an updated package for kernel 3.18.29 with brotli, lzma, gzip, lzo, and xz compression support for squash fs that also includes bootchart integrated into the boot process.

Note a couple things here:

1. In the current package, I haven't been able to get LZMA compression to boot.  Gzip, brotli, lzo, and xz all work fine, so we need to fix LZMA, as that is important to the client.

2. Bootchart attempts to write to the file system for temporary files.  You will need to make sure that bootchart can generate the tgz file it needs.  If it can also generate the PNG file, that would also be nice, but it isn't required.  If we can get the tgz file written, that would be enough.  /boot is generally writeable, so that would be an option, or we can mount the volume that houses the squashfs separately during the boot process and write the files there as well.

3. You will want to change the bootchartd.conf file to include "bash" in the list of processes that indicate when to stop the collector process since the image won't boot into X11.

Testing

The client has asked that we start to target the Raspberry Pi2 for validation, since they want to ensure the SquashFS code runs on different architectures, like MIPS and ARM.  Your deployment guide should detail how to get a simple installation of a base kernel and a terminal running and booted on a Raspberry Pi2, from a Brotli compressed file system using the Linux kernel version mentioned above, with the inclusion of bootchart and LZMA support.

 


Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30053859