Summary
| Mentor(s): | Dr. Mike Murphy |
|---|---|
| Project Type: | Software development; system administration |
| Technologies: | Python, Bourne/Almquist shell, Alpine Linux, SquashFS |
| Undergraduate Credit: | CSCI 399, CSCI 490 |
| Graduate Credit: | IST 659 |
| Locality: | Main campus and/or remote |
Purpose
I have created a framework and prototype toolchain for building Alpine Linux desktop environments that run entirely from RAM. At today's RAM prices, however, it would be beneficial to have the ability to run from a read-only backing store using SquashFS as an alternative.
Since most existing Linux live environments already use SquashFS, plenty of examples are available. The main challenges with this project will be to understand and extend my existing Bourne/Almquist shell code. From there, it will be possible to change the underlying Linux distribution or even to compile the target system from source.
Scope of Work
Revise my existing live system generator code so that it can run the resulting system from SquashFS (with a RAM-backed overlay) instead of requiring the entire system to be copied into RAM. Refine the package download and system creation process to make it more robust. Potentially replace much of the Almquist shell code with Python, also replacing the existing configuration system with an INI or TOML file.
Related Research
Live systems that run from RAM or SquashFS are immutable, meaning that any changes to the installed system do not persist past a reboot, if such changes are even allowed in the first place. Immutable systems have nice properties for security and privacy work. For example, when handling many types of malware, an immutable system is self-cleaning (by simply rebooting) if it becomes infected. On the privacy side, an immutable system doesn't save forensically recoverable artifacts that the user didn't intend to save.
An ability to create customized live systems on demand would enable further research into making environments that are hardened against both security and privacy threats. The ultimate level of hardening could be achieved if the target system could be compiled from source with only those libraries and features required by the system's deployment mission.