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?
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
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.