This question is the consequence of the thought: What OS related M.Tceh Project is there in which one can add his own functionality at Kernel level. For example can I rewrite the system call or add my own system call to the OS.
First, get a Linux distribution (e.g., Slackware), which makes it easy to recompile the kernel and contains the full, readily compilable kernel source tree.
Second, learn how to compile the kernel using the make command (start by reading the README file in the top folder of the Linux source tree), with default settings and install your custom kernel.
Third, learn how to set up your system to boot with multiple kernel configurations, to make sure that you always have a fallback option in case you created a kernel that is a dud.
Fourth, play with kernel configuration parameters a little just to get a sense of what it takes to modify/recompile the kernel.
Fifth, look at the kernel patches that were issued since the kernel version that is in your distribution. These will give you a bird's eye view of how the kernel is modified by its maintainers to fix issues.
By this time, presumably you will have gained enough confidence to a) know what you are doing, and b) formulate some project ideas of your own, such as fixing a bug that you ran across, enhancing a driver, or modifying an API.
An OS is more than the kernel, as it comprises a number of utilities and scripts, including an init (or bootstrap) system. For example, GNU/Linux is an OS and Linux is its kernel; until recently, System V init was the initialization system. In *nix systems, it is normally very hard to even think of a function which has not yet been implemented (consider the "rev" command, for example). Hasty additions, such as systemd, risk to be inappropriate and controversial.
Projects involving specific, new equipment may require an embedded system; that is, an OS and some applications dedicated to a given (type of) device. Such projects are much more likely to require kernel programming. Even Linux for mobile devices, although smartphones may be considered not-so-new nowadays, doesn't seem to be so settled after all.
Besides booting a different kernel for real, one may want to run it under Xen or similar virtual environments --which is yet another relatively new area of that kind.
Lets cut to the chase: to modify a function call, get the kernel sources, find it/modify it, recompile, and you are done. THIS will give you a highly non-portable/customized kernel. Then follow instructions of booting the new kernel (see suggestions by V.T. Toth). If you want your modifications to be available to others, and be part of the linux community, then first it needs to be submitted for review, approved, then issued as a patch (see Rivalino's suggestion). This last one is a real pain, due to the fact that linux supports so many hardware architectures, etc.
changing linux kernel involves two things: Downloading the source code, compiling the kernel.
Here when you compile the kernel for first time it will take time. I have attached link to start compiling kernel and install it. Now-a-days its quiet easy. So you can change any module compile the kernel and install it and test it. link to linux source is attached.
If you are adding new module into linux kernel then my advice will be rather then directly adding it to linux distribution and then compiling and installing kernel all the time to test, it is more advisable to add as a .ko module and when it is finalized you can propose it to add to linux kernel permanently. that way you will save a lot of time. Good luck.