This article has been originally published in italian (here).Feedbacks on content and translation are appreciated. It will also take me some time to replace screenshots and links with the english ones. Contributions are welcome. The original article must be considered the reference in case of updates.
All GNU/Linux distributions have, among others, a peculiarity that makes them so attractive to all geeks craving for very personal system customization and configuration: modularity. Each system is made up of softwares, usually distributed as “packages”, that can be added or removed according to personal needs and preferences. “Dependencies” between packages allow adding a software “dragging” all the additional components required for the application to work properly; the same happens when removing a software, freeing the system from whatever is no longer needed.
Not only applications like browsers o multimendia players go by the name “programs”, but also graphical interfaces and the kernel itself, the latter being the “connection” between software and hardware (e.g. a videochat program requiring to access the webcam).
If we are willing not to use one of the many “ready-made” distros, an highly customizable installation can be made, resulting in a CLI only system (CLI: Command Line Interface) capable of basic operations (user management, operations on files, updates, etc…). Starting from Ubuntu, this process is called minimal install.
The whole process relies on the network connection: it is therefore strongly advised to use a fast and reliable one (cable, at best). The decision whether to add a graphic interface (full desktop environment like Gnome or KDE, or simple window managers like Fluxbox or Window Maker) and needed applications (office suites, multimedia players, system management tools, etc…) can be made right after the basic system installation.
Additional details can be found on wiki di ubuntu-it (Installazione/CdMinimale) page, including the links for “mini ISO” downloads; my installation will be based on Oneiric 32 bit (~20 MB), available at this link. [EDIT 14/10/2012] The procedure described below is valid also for next release 12.04 “Precise”.
Other distributions usually describe the procedure as “netinstall”. Below you can find download links for ISO of some of the most common distros:
Difficulties and drawbacks of a minimal install are for sure the required time and the need to know (or find out!) which packages to add, first through apt-get or aptitude (CLI), and lastly to manually set up some devices and services for which automatic configuration might have failed. Finally, some features and functionalities might be tricky to gain, being unaware of the related packages.
Some hints provided by Streetcross (his blog and technical support forum Linuxqualityhelp – italian) suggest that dealing with a “mainstream” DE does not lead to meaningful “improvements” of a minimal install compared to a standard one. Indeed, these DEs have lots of depending packages, to provide users everything they might need (even more than they might need, actually 😉 ) right away. In order to keep the system clean and free from unnecessary components we will have to accurately pick “lighter” alternatives to default software and give up some eye-candy and “automations”.
So, only bad news for minimal installs? No, we are not yet out of luck…
Replacing or removing most of included softwares in a standard install takes time and leaves “orphaned” packages and configuration files behind: we’d rather start from the very core of the system and include little by little all the useful packages. This is an even better approach when trying alternative DEs or WMs (that is exactly what I want to do!), unavailable as official derivatives of Ubuntu, to have a light and up-to-date system, ready for the newest technologies. Have you ever tried to explain “wireless” to Windows 95? 😀
This might be a convenient way to revive an old PC, rusting in your basement just because it cannot keep up with a decently modern operative system. Most of times browsing the Internet and letting children play with Edubuntu is all we need to do, and a “trashware” PC can be more than enough. Not to mention the “green” attitude and the money we save! We will have to go so much “back in time” to find a computer we could only trash. Minimum requirements for the CLI install are comparable to the ones for “server” install (CPU 300MHz / 128MB RAM).
A CLI system can be useful in many ways, although with an “old school” twist: text internet browsers like w3m (Wikipedia – w3m, homepage), chat (centerim, finch – actually it is a non-GUI Pidgin), multimedia players (herrie, moc, mplayer), P2P software (ctorrent, rtorrent), a simple file server through Samba. By the way, how does Google look like as seen in w3m? Practically the same 😉 ! We might thus have at hand a “spare” pc, maybe even remotely controlled through ssh (therefore it will be “headless”, no need for a screen) to pair with the main all-shiny power-packed machine, with all the bells and whistles we might desire.
Last but not least, the CPU time can be used for one the distributed computing projects in the BOINC pool (Berkeley Open Infrastructure for Network Computing). Biology, maths, cosmology, even chess: such a vast choice! Contributing, even with little computing power, to Search for Extraterrestrial Intelligence (SETI@Home) or to medical research (Folding@home, Docking@Home) is a very nice way to use electricity. The BOINC client (also the text-only one) is available in the official Ubuntu repos, as stated in the wiki page of the project.
Here below some links I found to pages that made me “discover” the minimal install (some of them may seem a little outdated, but the procedure has not changed so much since then):
- Crea il tuo sistema operativo personalizzato partendo da zero. » Doxaliber – lo strillone del web (Italian)
- Modest Spec or Barebones Installation of Ubuntu
- HowTo Achieve “Ubuntu-Desktop-Minimal” – Ubuntu Forums
If you are still awake after all this chatter, it is now time to see the main steps of the install process. For this test I set up a low resources virtual machine (VM) in Virtualbox (RAM 512MB, 1 core of a 2 GHz CPU, 12MB video memory, HD 10GB). I also made some trial progressively reducing the available RAM to try and reach the minimum acceptable amount (only for the freshly installed system): I have dug down to 128MB + 8MB (video) without notable issues.
0) Boot the VM (or the target PC) with the mini ISO (burned on CD or USB according to BIOS boot capabilities), selecting “Install” in the menu. The other list items start different installation procedures, that require some more detailed configuration choices. I tried also the “Expert install” (in sub-menu “Advanced Options”) but the final result is not much different from what you will get from the normal procedure: “Don’t try this at home“, it’s not worth the effort! 😉
1) Panels are drawn in pseudo-graphic style as you would see in “alternate” CD install and request the usual information: full name, user name, password, time zone, keyboard layout, computer name. You can jump between fields with arrows and TAB key and confirm with ENTER or SPACE. Easier than it might seem: most of times the default values are just what we need, so you will often be just bashing “ENTER – ENTER – ENTER”…
2) Next step is for proxy address setup, if needed. This is an option rarely found in small home networks, contrarily to large company ones. Making a wrong set up now will result in the failure of system components download, and thus to complete the install. All errors lead us back to a menu where we can select and retry any of the failed steps. P.S.: if you don’t even know what a proxy is probably you don’t need it ;-).
After this screen a few files are downloaded. Massive downloads are about to begin (the “real” install): that’s when the connection speed weighs in.
3) Now on with disk partitioning. For this test machine I have gone the easy way with a single unencrypted partition. Swap partition size is based on available RAM. In a “real” install you’d rather go for the manual partitioning, creating a separate /home partition and resizing the swap.
4) The bulk download of system components begins now: this is the real install, so just sit back and wait. Time for a coffee break…
5) Base install is over, it is now time to choose how to manage updates. The text box is pretty self-explanatory: Landscape is mainly aimed to corporate networks (centralized updates), that is probably not the case of our rusty piece of junk we are trying to revive. Let’s stick to the update manager or “tie a knot” as a reminder for manual updates. In the latter case, a cron job taking care of it from time to time (see cron(8) and crontab(5) – Ubuntu man pages).
6) Right before ending the installation, the menu shown below allows for the installation of some “metapackages” (package collections) including the main desktop environments, program groups, server tools and more. In order to keep a tighter control over all the stuff we might add to the system, I am leaving all of the provided options unselected and ending the process right away (just jump on <Continue> with TAB and hit Enter). Actually these metapackages bring a bunch of “recommended” packages along with strictly dependent ones. Such an uncontrolled addition might result in a (little) waste of disk space, while usage of apt-get “–no-install-recommends” option avoids it. Adding (meta)packages through this menu would basically result in a “standard” install, except for a few details (some graphic themes or a few additional softwaares).
Finally, this list does not include the “alternative” graphic interfaces. These components are indeed the ones I am more interested in because of their low resource request; I will be adding the appropriate packages right after the first boot.
7) Final step before the reboot: installation of GRUB on MBR (or elsewhere, choosing <No>, but you are supposed to know what you are doing).
If everything went right after the reboot, we are ready for the very first login (text based, since nothing more than this is available at the moment). In Virtualbox you might experience a black screen during boot: manually switching to tty1 with ALT + F1 is all you have to do. of course the boot process is lightning fast even on the lowest spec VM: after 4-5 seconds the login prompt already waits for us. At the end of the installation the system is also completely updated.
As shown by the output of “sudo df -h“, allocated disk (/dev/sda1) space is about 1GB.
Command “free” shows about
20 MB of RAM used (the “net” value, rounded to the MB, is [used] – [buffers] – [cached] written in the line below, here the source, where I have just read it!) while “uname” (next picture) provides details on the used kernel.
There is not much else to do on this mini-penguin (mini-ocelot, actually!) so I can just shutdown the system with “sudo halt“! 😀 Installation took about one hour to complete (connection speed was not very high, it might even take half an hour in better conditions).
Being it a virtual machine, I will now clone it (from Virtualbox menu Machine → Clone or CTRL + O) keeping one freshly installed system untouched for all the experiments that might come in mind. Just in case one of these “experiments” (very likely) blows up… In each of these machines I will then be using the “snapshot” feature to manage the advancements of my “tailored” system (possibly recovering some f****d up trials).
Et voilà! Dolly…ehm…the original machine clone is ready to be used. In my next articles I will set up a low resource system: likely it will be based on Razor + Openbox, but it might also sport FVWM or any other interesting finding occurred in the way! Or maybe I will simply stay with the command line and do some gaming!