You do not need to program to make a new distro.
however, for the sake of answering your question.....
Linux itself is written in C and Assembly.
GNU is written mostly in C.
Libraries are written in C and C++ (QT is written in C++, GTK i believe is C)
Boot scripts are USUALLY written in Bash Script, but there is no reason you couldnt use some other scripting language
To create a differant distro, here's what you need to do....
1) Decide on a package management system.
You can use a currently existing system such as RPM, Debian PKG, Gentoo's Portage, or Slackware's TGZ.
Alternativly, you could choose to have no package management system, and the user will needto compile everything from source (similar to Linux From Scratch)
OR Ideally, Program your own package management system (the language of your choice)
2) The Kernel....
Most distro's patch the vanilla linux kernel. For example, Gentoo has many krnels available, some patched to be optimised towards desktop use, some optimised for server use.
You need to decide on what makes your distro differant / beter than other distro's and patch the kernel accordingly.
For example, you may decide that disk IO is more important that disk reliability on your distro, so you may want to patch your kernel with the experimental file system Reiser4.
Alternativly, you could use the kernel from anouther distro, for example the Gentoo kernel for performance, or the Redhat kernel for a more server oriented kernel.
Alternativly, you could just use the un-patched vanilla linux kernel from kernel.org
3) Boot scripts.
Many disto's use differant methods for selecting what scripts are executed dureing boot up.
Slackware just executes every script that has executable permissions.
Redhat / Fedora executes every script that has a symbolic link in the runlevel folder.
Gentoo uses a tool called rc-update,
Either use a currently existing method, or create your own method.
4) Create an Install CD.
This doesnt have to be complicated.
a simple install CD could be a simpl bootable CD, that just coppies a default install folder to the root of the hard disk, and installs GRUB to the MBR.
Their are2 reasons i can think of for creating a distro...
1) for fun and learning
2) because there are no distro's that work exactly the way you like.
For help getting started, you may want to look at Linux From Scratch.
http://www.linuxfromscratch.org/this is a book with step by step instructions on how to start with a completely empty hard disk, and download and compile a full linux distro.
the end result is a completely customised, lightning fast minimal distro.
then books like Beyond Linux From Scratch will help you turn this into a full OS with all the features of any top quality distro.
Many people create there own distro's using LFS as a base to work from.
Enjoy.
Comment/Reply (w/o sign-up)