Alex Waite's picture

  I have a need to get a very simple Linux system in a VM, make it as small as possible (less than 100MB) while keeping it very easy to maintain (package management).  The best balance of all of these things that I've found so far seems to be TurnKey Bootstrap, but it seems to be only available in LiveCD form.  Is there any way I can install it into a VM?

  Thank you to everyone for such a great project.  I like what you have built here together.



Jeremy Davis's picture

but you can have a look at Ubuntu JeOS (Just enough Operating System - pronounced 'juice'). Although its still ~300MB installed its pretty minimal.

The offical Ubuntu JeOS page is here. You can download the 8.04 ISO and the manifest here but if you want to use a later version of Ubuntu than 8.04 you'll need to check out the options down the bottom of the page on the first link. There is also some very interesting info on the Ubuntu wiki here.

If you really want to go small and low resource then one of the mini/micro distros may be worthy of inspection. Both Puppy Linux and DSL (DamnSmallLinux) are nice slim distros, built to run on minimal hardware although they're aimed more at the desktop market than server. Puppy is a unique distro so you'd need to check that the packages you'll want are available. AFAIK DSL is Debian based so is probably a lot more flexible. Both have a GUI by default so you'll need to work out how to disable that.

Speaking of Debian another avenue may be to install Debian via bootstrap. The Debian wiki has no details but gives you the outline I'm sure the install manual has the details somewhere.

Distrowatch may be worth a search to see if you can find a distro that suits your needs exactly.

Good luck.

Liraz Siri's picture

Bootstrap is literally the smallest "legal" Ubuntu system that can install additional packages so it doesn't even have the di-live installer. You could boot a VM from bootstrap Live CD, install di-live through the package management system, use it to install bootstrap to a VM and then remove di-live:
apt-get install di-live
OTOH, it might be easier to start with Core, install it and then remove the components you don't want. You can compare the manifests for bootstrap and Core to see what extra packages Core has.

Be careful with DSL and some of the other tiny Linux distributions. They can be very hard to maintain since they butcher the system pretty bad to get it to fit into that tiny space. Last time I checked DSL was pretty awful in that regard. I wouldn't even consider DSL a Debian distribution, despite its roots. I'd recommend you stay away as a development base for anything unless you like spending in an inordinate amount of time fixing stuff that should work automatically (like the package management system!).

Good luck and tell us how it goes!

Alex Waite's picture

Thanks for the suggestions and feedback.  I am aware of Ubuntu JeOS and others, but I am looking for something truly minimal (all I need is Perl, BASH, SSH, and wget).  I agree with Liraz Siri's comments about how not all small systems are maintainable, hence why TurnKey's minimal versions (core and Bootstrap) are appealing to me.  Also, just because we have a limited set of tools needed now doesn't mean our requirements won't change in the future, and having access to Ubuntu's repos means we have a good chance of easily being able to add any new tools that we may need.

I tried the method of installing di-live after booting up TurnKey Bootstrap.  I was able to launch the installer and progress through most of it, but it ultimately fails when trying to install Grub.  I'm still trying to figure out why.

So, in the meantime, I just diff-ed the two file manifests for Core and Bootstrap, installed Core, and then uninstalled all of the differences (except for Grub).

I'll let you know if anything else comes up of interest.  Also, if anyone else thinks of anything, I am always open to suggestions!  Thanks again for your help so far.


Alon Swartz's picture

di-live requires grub in both the live running system as well as the being-installed-system (ie. /target). You could install grub in the live system, and cook up a di-live component script that installs grub in /target prior to di-live.d/grub-installer, but its a dirty hack.

I planned on adding something like this to di-live so it magically does whats needed, but there just wasn't really a need (until now).

I can offer you 2 options. The first as Liraz mentioned is to install Core and remove what you don't need. The second is to use TKLPatch to add grub (and while you are at it, di-live + deps) to bootstrap.

Hope the above helps.
Alex Waite's picture

Thanks for all of the responses.  I think I'll give the Grub install approach a try.  Though, you mentioned that you planned on adding this feature to di-live eventually.  If you're interested, I'd be happy to work with you now to test it out, etc.


Add new comment