This page is meant to fully document all current knowledge about the Lubuntu ISO, including how it's built, what the ISO is made of, and what tooling to look at to make changes if needed. Please add new information as you come across it.
= ISO Build Process =
The ISO build process is handled by several pieces of tooling. **ubuntu-cdimage** is the tooling which triggers the entire process. It interacts with Launchpad, handles ISO publishing, etc. **livecd-rootfs** is what handles the creation of the squashfs, and this is done on Launchpad itself. **debian-cd**, as forked by Ubuntu, is what handles wrapping up the squashfs and adding metadata. This section breaks down each part and their role.
== Nusakan vs Launchpad ==
A common point of confusion is where the ISOs are actually built. The ISO images and the building of the final ISO is done on a machine called **Nusakan**, named after [[ http://stars.astro.illinois.edu/sow/nusakan.html | the second brightest star in the Corona Borealis ]]. Canonical employees have direct SSH access to this machine and can use it to manually trigger builds, as well as doing final publishing.
The only thing Launchpad is used for is the building of the squashfs using **livecd-rootfs**. We very rarely trigger builds using Launchpad, but we do use it to view the logs of the livefs build.
Nusakan outputs its ISO building logs to https://people.canonical.com/~ubuntu-archive/cd-build-logs/ - here you can also find links to the livefs build within each respective build log. https://launchpad.net/~ubuntu-cdimage/+livefs/ubuntu/CODENAME/lubuntu/ will always give you the latest output of the livefs builds if you do not want to find the Nusakan logs first.
== ubuntu-cdimage ==
What ubuntu-cdimage specifically handles is the creation of the index pages for each published ISO, and triggering of each build. The code can be found [[ https://code.launchpad.net/~ubuntu-cdimage/ubuntu-cdimage/mainline | here ]], and if you ever need someone with direct SSH access to tweak something, file a bug against the project [[ https://bugs.launchpad.net/ubuntu-cdimage | here ]]. One example where we had to do this was updated CSS after our custom CSS was deployed.
== debian-cd ==
Ubuntu's fork of debian-cd takes the produced squashfs and wraps it up in an ISO file. The code can be found [[ https://code.launchpad.net/~ubuntu-cdimage/debian-cd/ubuntu | here ]].
In tools/boot/CODENAME/boot-ARCH is where you can find the boot parameters and entries for the ISOs. Of note are two boot parameters; `maybe-ubiquity` and `only-ubiquity`. Ubiquity then intercepts this and can act accordingly, however, they are fairly useless for us until Calamares gains that functionality.