i want to make a linux distro.
basically i want to know how to make my own set of GUI
Ok, I'm making a guess at what you actually want to do here, so I may be barking up the wrong tree
.
Option 1
If you want to make your own Linux distro from scratch then take a look here at the LFS site (Choose a mirror from this page):
http://www.linuxfromscratch.org
If you follow the LFS book you'll wind up with very lean Linux distro. Basically it consists of only the things you need to get a linux computer up and running, along with a full GNU toolchain (Binutils, GCC, Glibc).
Now build yourself XFree86, using the instructions found in the book here (Again, choose a mirror):
http://beyond.linuxfromscratch.org/index.shtml
You'll need to compile a number of libraries before building your XFree86 server, the BLFS book should explain which are required.
Ok, now you have a very small Linux distro with an XFree86 graphical environment (Using the TWM window manager).
This is all you need.
Now look into programming with xlib (And optionally GL/GLX for OpenGL programming). Xlib contains everything you need to program in the XFree86 environment, and if you've picked up the full XFree86 source package you'll have all the development tools you need.
You
can program your whole environment just using xlib, but more likely you're going to want to make its functionality a little easier to use. You can do this by coding yourself a widget library over the top of it, or using one of the publicly available ones (Eg GTK+, Motif, Qt). There you go, you now have a basic Linux, a graphical environment, the tools to display fun graphics within that environment, and the means to capture events from the user (That's xlib again in case you were curious). The rest is all up to you, and if you're building a desktop GUI from scratch then it's going to take you a while (At least to get as far as Gnome or KDE).
While you're doing all that look up as much as possible on package mechanisms. RPM is popular, as is (Nowadays at least) Gentoo's ebuild system. Packages will make things a lot easier for your users.
***
Option 2
You want a Linux compatible OS that you control, and are happy with the GPL.
Fork Linux. There's nothing stopping you taking the Linux source and using it as the basis for your own work so long as you abide by the terms of the GPL. You'd just have to offer something significantly innovative to persuade people to use your kernel and not the official Linux kernel.
***
Option 3[/i]
Ok, let's say you didn't want to just make a Linux distro, or use the current Linux as a base, but a whole new OS that's compatible with Linux.
First off ignore the Linux part of the equasion. Make it POSIX compatible first and then concentrate on handling the minor idiosyncrasies of Linux. Some of the BSD's already run Linux applications in an emulation layer (Often faster than Linux does).
As for the rest, you're stuck learning the same things as the rest of us. How to boot your particular system, hardware programming and OS control algorithms.