# How to start a new Linux distro?

Some of my friends and I are interested in starting a new Linux distro. How do we do that? What do we need to plan?

### Backstory

I represent a community of Linux sysadmins/implementors whose special needs include, among others:

• A specific 'lean' kernel config
• Package management that fits our 'field needs'
• Binary packages optimized for our 'use cases'
• X-less system

To the point: We have need of a specially-configured production-quality Linux distribution to be run exclusively as Para-Virtualized Production Servers. Rather than jumping through all the hoops and loops every time we need a VM-ized Server, we would very much like a semi-prepared system, optimized for its environment.

Since these VMs would be Production Servers, stability is a must, and honestly the available package management systems we're currently aware of just do not provide assurance. Zypp and Conary are the closest ones to our needs, but again still miss on some points.

-
Exactly, what do you want in a package manager? That is, for your needs, what's the weaknesses of APT, Zypp, Conary, Yum...? –  Tshepang Mar 25 '11 at 9:33
Rather than explaining one-by-one, this is what we're after: (1) multiple level of 'stabilities' instead of simplistic "testing-vs-stable" (2) smart dependency solver (3) multi-versioning (in a limited sense, kind of like Gentoo Portage's SLOTs) (4) rollback (optional, due to snapshot ability of VM hypervisors, but still nice to have) –  pepoluan Mar 25 '11 at 10:47
Can you explain what multiple levels of stability means? –  Tshepang Mar 25 '11 at 10:58
Is aptitude's dependency solver advanced enough? –  Tshepang Mar 25 '11 at 10:59
Every requirement you have set, is fulfilled by simply choosing an existing distro and creating your own repository (with maybe an alternative package manager) with your own defined release cycle. But you have rejected that option and also rejected the LFS option. Also, you mistakenly take the package manager as the critical stability factor, which is just a helper tool that by itself has little to do with overall system stability. –  forcefsck Mar 25 '11 at 11:09

You might want to look at Linux From Scratch:

Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own customized Linux system entirely from source.

-
Almost, but not quite. That's more like making a custom Linux for one's own need. But my community would like a whole framework, e.g., custom kernels, custom init, custom package management, etc. How do we start? –  pepoluan Mar 25 '11 at 9:02
Starting with LFS and building a whole framework on top of it, as described by you, is actually a definition of "Starting your own linux distro". –  forcefsck Mar 25 '11 at 11:23
I may have misconstrued what I meant. My bad. What I meant was: LFS is a good guide to start a new distro, but that's it. No guide on building the rest of the distro framework on top... uh, am I clearer this time around? –  pepoluan Mar 25 '11 at 11:41
@pepoluan: there is no guide on that. Once you have a running shell and core utils installed, you have an operating system. For the rest you either do copy from other distros or reinvent everything. Either way, creating a new distro requires a lot of work and there aren't any easy answers on how to do it. –  forcefsck Mar 25 '11 at 12:12
@pepoluan I would bet there's war stories, just not so cleanly-packaged. For example, have a look at archives of mailing lists in the early days of various distros. –  Tshepang May 29 '12 at 19:30

You will need a minimal running system, likely from another distro, to "bootstrap" your own distro with enough to at least get gcc or another C compiler running. You then need to start by deciding what core libraries (including libc) and software comprises the base, "no-packages-installed" state of your system. Then, get the source to these libraries and software and compile them, make sure all the software can find the libraries it needs, and start creating your low-level base environment.

Basically your bootstrap environment will be nothing more than a running kernel and the absolute minimum you need to get a basic shell, a C compiler, and basic things like rm, cp, tar and stuff like that working. The next thing you should get up and running after that is Perl. Once you have your base system created, you need to persist it and create some boot scripts that takes the system from initial boot to a useable shell with a compiler.

Then you need to design/write a package system and format, and download the source code to the software you want to package, compile and package it, and design a robust distribution system for your packages. None of this is trivial. Good luck.

-
Ahh, very informative, thanks! Yeah, I have no illusion that this would be a simple endeavour. Lucky I'm not alone. I'll gather the community and we'll bicker on who will do what :) –  pepoluan Mar 25 '11 at 18:09

If you just want some set of default applications, you can customize an existing distro like ubuntu using some simple tools. http://maketecheasier.com/reconstructor-creating-your-own-ubuntu-distribution/2008/07/05

-
Mmm... not really. You see, I'm part of a community of users whose needs are not really met by any existing distro, especially in regard to the kernel config and package management. We are all quite familiar with Linux, and have enough free time to try to make a distro of our own. –  pepoluan Mar 25 '11 at 9:01

You didn't really specify what you want from the package manager.

But OpenSuse provides build service where you can easily customize any package (including the kernel) and even create a whole distribution.

http://en.opensuse.org/Portal:KIWI

https://build.opensuse.org

-

There is site which you can see all distro and simple description and overview of them there. So it help you to choose the best one:

http://distrowatch.com/

But for starting i suggest you to use Ubuntu or Kubuntu. so easy and user friendly.

-
ubunut and kubuntu when aking for optimize virtual machine environnement very stable is definitly not a good idea, though wathing at distro watch is. –  Kiwy Dec 16 '13 at 9:46
I suggest it just for giving him a start point to get more familiar with them. –  shgnInc Dec 16 '13 at 16:37