So, during the couple of days I've been thinking what it takes to make your own linux distribution. Where should I actually start? I'd like to have some very basic tips for this. I consider myself a decent programmer, mainly in c++ and objective c. And what limits there are in making a distro?
-
2Is this just for fun or are you not happy with any of the distros out there? Do you have a particular philosophy in mind? – Job Aug 27 '11 at 23:57
-
Really just want to know the process of making one. – Samuli Lehtonen Aug 27 '11 at 23:59
-
4@Samuli have a look at [linux from scratch](http://www.linuxfromscratch.org/lfs/) – Mahmoud Hossam Aug 28 '11 at 00:12
-
2or [Pocket Linux](http://tldp.org/LDP/Pocket-Linux-Guide/html/index.html) – Philomath Aug 28 '11 at 02:44
-
Have you also considered what it takes to support the distribution? WHats you plans for release cycles, stability vs latest feature set. Have you considered how to market your distro, who you target audience is? It's easy to put together a flavour of linux, or any other open source package, but to make a distribution is a lot more than the installable CD image. – mattnz Aug 28 '11 at 05:26
-
[instalinux](http://www.instalinux.com/) let's you create a custom distribution online. Just pick what you want and then download it. – Falcon Aug 28 '11 at 07:41
2 Answers
99.5% of what's in a Linux distribution is aggregation of existing packages. Unless you have some ideas for a new way to do installations or package management or intend to rewrite everything from awk
to zcat
from scratch, there really isn't a lot of programming involved.

- 20,235
- 2
- 49
- 75
-
5Or succinctly, a distribution is an integration project not a programming project. – Steve-o Aug 28 '11 at 03:25
Depends on why you're doing it.
If you're into the learning experience, check out Linux From Scratch.
If you need to deliver a functioning product, and a customized Linux distro is part of the solution, you are better off basing your Linux on a suitable mainstream distro (say, Debian, SuSE, RedHat / CentOS, Fedora, etc.), learning to use their packaging system, and setting up your own repositories.
In either case, this is not so much a programming task as a packaging and system administration task - a distribution is mainly an aggregation of existing software, selected to work together, with all dependencies automatically managed (this is what package managers do), and usually precompiled into suitable binaries (though some distros, e.g. Gentoo, download sources and compile on the target system).
Also, if you're looking for a practical solution, there are literally hundreds of Linux distributions, and some of them are extremely customizable. Chances are whatever you need has already been done.

- 52,406
- 14
- 106
- 154