SUSE Studio lets me build my own distribution by selecting my own apps, which it installs. I run a wizard and it generates an .ISO file.

For instance, if I want a distribution for web development, I might select MySql or MariaDB, Eclipse PHP and Eclipse JS, Xdebug, FireFox developer edition (and a few others).

  • does anything offer such a service for Ubuntu?
  • is there an API which I could use to do so myself?

If not, can anyone explain how I would go about creating such an app or wizard? I am a professional coder, so ought to be able to do it, if it is possible.

Perhaps I could automate Gentoo somehow? Although that would then take great effort to emulate Ubuntu (I am also interested in the other distributions, but Ubuntu would be a good start).

My first thought was that I just need a file system and a boot record and then I can create an ISO from that. But then I realized that I want to actually install some apps within that, which means config files, symbolic links, etc which are best created by actually running the install (or, are they?).

Is there a "build your own (Ubuntu) Linux" wizard? If not, (how) can I make one?


As a general rule, pretty much any distro that isn't purpose built for a specific task (examples of purpose-built distros include MythDora, BackTrack, SteamOS, LEAF, and SystemRescueCD) has some way to do this, though they all vary in exactly how. In general, there are three ways to do this depending on the Linux distribution:

  1. During the release engineering (you quite literally build your own install image directly). This is most common in source-based distros, with Gentoo probably being the best example (Gentoo's install images are compressed tarballs that you extract directly onto the target system, their release engineering tool (Catalyst) lets you build custom tarballs that contain the exact package set you want).

  2. During the install itself, you choose a separate set of packages to install. Arch, NixOS, and Alpine all take this approach (though they do it in different ways, Arch just has you add the packages you want to the initial install command, NixOS has you add configuration items to pull them in during the first system build, and Alpine has you add each one you want by hand during the install as if you were installing them on an existing system).

  3. By customizing the Live CD used to do the install. This is what SUSE Studio does, and is the approach taken by most distributions (as most distros just mirror the package list from the Live CD as their initial install), including Ubuntu and Fedora.

Ubuntu (and other distros that can use the Debian installer) can work with approach 2 or approach 3.

For the second approach, yuu have to do an 'expert' mode text-based install, and there's a point during the install where you can select an option that will pull up Aptitude (a nice ncurses-based text UI for APT and dpkg) to manually specify what packages to install.

For the third approach, you unfortunately have to do the work yourself, but it's not too hard (just a bit tedious). The best advice I've found for doing this is at https://help.ubuntu.com/community/InstallCDCustomization

As far as creating a tool to do this quickly and easily, you might take a look at the Ubuntu Customization Kit, an unfortunately now defunct project that appears to do pretty much the same thing as KIWI (the SUSE service that powers SUSE Studio). WHile it probably won't work with the most recent versions of Ubuntu, it should in theory provide a good starting point if you want to create such a tool yourself.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.