This readme previously contained a tutorial. It is now found at TUTORIAL.md While it’s content is largely still relevant, the version of this project it refers to has now changed. Look into the includes/*.mk files for more examples.
This wholly unnecessary and abusive concoction of Docker containers, Makefiles, and so-called “auto” scripts is the latest and most successful of my attempts to create my own custom Debian-based Live Media. At this point I basically have to acknowledge, it’s been pretty much entirely for the hell of it. But it’s been educational too. I suppose that was a little by accident, thus the tone of the tutorial linked above.
So, basically what I did was treated make like a control panel, in order to bend docker to do my bidding, which happened to be running the priveleged operation of building an iso with Debian’s live-build inside of a container. The overall rationale for this choice is mostly covered in the tutorial. There has, however emerged some errata as this configuration has come to do more things.
The first of which is paths.sh. This is just a place to store information that helps retrieve copies of the built iso from a remote build server, specifically the ssh username/hostname to use, and the folder from which to retrieve the completed images. An example paths.sh might be
export user_name="dev"
export host_name="dev"
export dev_path="/home/$user_name/Projects/hoardermediaos"
The next new configuration file is auto/common. As it’s name suggests, it’s a set of global variables used by the other scripts in auto/. It is generated inside the container, so changing it outside the container will have no effect, instead it exists to ensure that some static settings generated inside the container can be used by the parts that happen outside the container, specifically auto/copy, auto/pull, and auto/release. Speaking of which…
In addition to the actual auto scripts, several new scripts have been added. They are only related insofar as the exist to bridge gaps between the Docker parts of the build and the machine hosting it, and to automate retrieval from the remote build server. I guess I’m also planning on one that may be used to set up an encrypted persistence volume as well, resulting in a LiveUSB-only edition which would be pretty cool too. But focusing on the ones that exist so far:
Planned:
Continuing in the spirit of “Anyone can do it, if they want to,” my laptop is not new or fast. It’s actually pretty old and slow, hence the wierd mix of software I prefer. But my desktop can build this LiveCD in about 35 minutes. So when I push something from my laptop, the desktop picks up the change and builds it, I retrieve it, and sign it on my laptop. This process still has room for improvement but it’s getting to the point where it’s downright sensible. Eventually, I shall start tying together all the little, apparently disparate hobby projects I’ve been working on, when enough of them are in the CI to make the point. Anybody can start customizing their OS install media with a little effort.
To help paint a picture, here are the most significant of the repositories related to my home networking project: