netboot.xyz Build Environment
Intro
The purpose of this repository is 2 parts:
-
Maintain the centralized logic used by asset builders conventionally publishing the contents of Live CD ISOs or customized Kernel/Initrd combos with specific logic to allow booting from a github HTTPS endpoint.
-
Be an evolving written explanation of the current state of the automated build system spanning all of these externally ingested assets.
Outside of the core principles, this document should provide as much possible information on how to properly participate in the project as a whole.
Templating netboot.xyz
Our main visible output is https available customized iPXE Menu assets that can be easily consumed by a series of custom built iPXE boot mediums. We template the menu output for two reasons as it makes it possible for this project to be updated by bots reaching out for our own custom hosted assets and it also makes it possible for users to locally host their own customized menu/boot medium sets. To encapsulate all build steps and menu templating, Ansible was selected as a platform using Jinja templates.
The build process should always strive to:
- Provide dead simple build instructions to produce usable output for a normal user that does not have a deep understanding of the project
- Build helper environments in the form of Docker containers that can be used for hosting the build output
- Have documented tools the user can leverage to produce a copycat site of netboot.xyz under their own domain along with a method for consuming our releases
- Allow users to easily pick and choose the components they want to be included in their menus and custom options to go along with them.
If we can adhere to these goals it should be possible to become an industry standard for booting Operating systems off the Internet instead of an isolated environment and garner support from external projects that want to be on the list presented to users by default.