Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What are the bare minimum components for a Linux OS to be functional, and that I can use as a base to expand and improve as I learn Linux and my understanding and needs grow?

share|improve this question

10 Answers 10

up vote 25 down vote accepted

If you mean learn Linux as in getting to know the source code, you may want to try Linux from scratch

share|improve this answer
You may also be interested in the SO question What's the best way to get to know linux or BSD kernel internals? – Tobias Kienzler Oct 22 '10 at 8:50

Archlinux uses a base group of files for a very minimum install.

Along with a base-devel group, if your going to be doing any system development.

share|improve this answer
In the right direction, still includes lots of packages, but I can use what they give & cut packages until things break. – slashmais Oct 4 '10 at 12:23

If you're looking to learn, Gentoo's a good option - the minimal Gentoo installation is a root shell and a package manager, and you build the rest of your system from there. Gentoo also stays pretty close to upstream on packages, so you won't run into too many problems if you want to download and build some packages yourself (and in fact, you can add them to the /etc/portage/package.provided file after they're installed, and use them as dependencies!)

If you're looking for the absolute smallest possible Linux system, then build your own kernel, stripping out all the drivers and features that you're not planning to use, and then add an initramfs containing a similarly minimized build of Busybox. The result is a fully-bootable Linux system in a single executable (which you can point your bootloader at), and which you can fit in under 10 MB without even trying.

share|improve this answer
Your last para - I think that would be a good place to start. Then I'll know what is there and why it is there, using it as a base to grow. – slashmais Oct 26 '10 at 18:35
10MB? You could probably do it under 1MB – Falmarri Feb 5 '11 at 10:22

If you really want just the bare minimum of what is a Linux system, you might try distributions for embedded systems like routers. They normally only carry the absolute minimum of software and the common lack of a graphical user interface forces you to become familiar with the command line. One drawback is, that often those systems break conventions of regular Linux distributions, e.g. they install software in uncommon places or use simplified init systems.

If you want to give it a shot, you might try e.g. openwrt in a virtual machine.

share|improve this answer
I can use OpenWrt for reference; I will be glad if you can point out other such sites. Already using VirtualBox & they have a noddy-guide to install OpenWrt in it. – slashmais Oct 4 '10 at 14:11
Maybe embedded Debian: emdebian.org – fschmitt Oct 4 '10 at 14:36
wiki.alpinelinux.org – dubiousjim Nov 14 '12 at 18:17

How is it that nobody has mentioned tomsrtbt? (Linux on a single 1.44" floppy)

share|improve this answer
sounds about right - links? – slashmais Oct 6 '10 at 14:23
don't worry - found it – slashmais Oct 6 '10 at 14:38
Who still has a floppy drive these days? ;) – p-static Oct 8 '10 at 0:14
I'm looking at one right now. But I've only used it once in the years I've had the PC. – lamcro Oct 8 '10 at 8:31
@p-static: I'm using an old box as print-server - it still has a 8 1/4 inch floppy drive & I just tested it with 20-year-old floppies - amazingly the floppies are still OK! with uncorrupted data on them too (turbo pascal v3 code from student days). – slashmais Oct 26 '10 at 18:40

You could try Slackware linux. The menu-driven install will allow you to install quite a minimum system. You can easily leave off man pages, X11, Tcl, Emacs and that's just from the very top-level install. You can dive into the install and only install a bare minimum of packages.

After that, I'd recompile the kernel specifically for the machine you installed on.

Slackware still defaults to the Lilo boot manager, so you end up knowing a bit more than you want to know about boot sectors, which partition is marked bootable, what your initrd contains, etc etc than for Grub-booted distros.

share|improve this answer

To me, Damn Small Linux got the name for "the smallest possible Linux distro"! However I heard that it is kind of discontinued. You can also see a list of similar distributions (called "Mini Linux") on this wiki page.

If space isn't your aim I'll suggest Gentoo or Arch Linux, they both install a base system. You choose what to use and install packages as your needs grow.

share|improve this answer
Not space - learning Linux. I've looked at most of those, as well as LFS, but LFS makes you do/add stuff with, it feels, not enough explanation. – slashmais Oct 4 '10 at 10:25
If you want to learn, Archlinux is really good. The Arch Wiki has ALOT of clear, helpfull information. – Stefan Oct 4 '10 at 10:51
seems like I've shifted the target after you fired your shot, sorry :o – slashmais Oct 4 '10 at 11:15

What you need to do is download the latest kernel from kernel.org, do a make menuconfig and just look through the options, and use that as a starting point for research and investigation. You'll learn a lot.

share|improve this answer
"Time is my enemy." - not really, but I'll definitely be looking into your suggestion. – slashmais Aug 14 '11 at 15:02

A system that runs a single program is the absolute minimum system as I've explained at http://superuser.com/a/991733/128124

For a more interesting interactive system, Minimal Linux Live is a small script that:

  • downloads the source for the kernel and busybox
  • compiles them
  • generates a bootable 8Mb ISO with them

The ISO then leaves you in a minimal shell with busybox.

With QEMU you can easily boot into the system.


git clone https://github.com/ivandavidov/minimal
cd minimal/src
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated

and you will be left inside a QEMU Window with you new minimal system. Awesome.

I've made a version that builds an out-of-tree kernel tree: https://github.com/cirosantilli/runlinux

Another great option is Alpine Linux, which also adds glibc and a package manager, so you can then install whatever you want easily.

See also:

share|improve this answer
I eventually went the LFS route. Made a note of this & will explore it soon – slashmais May 1 at 11:13

You could look at Puppy Linux. It may not be the smallest but it has a repuation of being small.

However Linux distrtos that are meant to be small generally tend to stay small. For learning linux, I would a live debian somewhere. .I would get the debian kernel sources, bash sources and grub sources cross compile and install. Then cross compile install an editor, apt and gcc. Then generate a list of packages from the debian live. Install the source for each package, compile and install. Then add X then the Wm of your choice then you have the basis for what you want to do.

PS: apt-get source gets you the source for a debian package.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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