I found a nice tutorial in which the usage of Symlink is nicely covered..

Thanks to

Brass Cannon Consulting

The full story is here…

http://handsonhowto.com/older/ckernel.html

“Take a look in /usr/src — you should see a symlink called “linux” which in turn points to a directory such as “linux-2.4.3″. That would be excellent.

A “symbolic link” or symlink is just a shortcut, a sort of fake file that points to a real file somewhere else. It comes in handy when you want to refer to “the directory where the current Linux source is”, and not be stumped when “current” changes from 2.2.20 to 2.2.22. Remove the old symlink, create a new one, and presto! /usr/src/linux keeps the same meaning — “here’s the current Linux source directory” although it’s pointing to a different real directory.

So, we want to remove the symbolic link /usr/src/linux (assuming it IS just a symbolic link!) and re-create it pointing to a new directory, “linux-2.2.20″. Here’s how to do that:

kevin@bazooka:/usr/src: su -
Password:
[root@bazooka /root]# cd /usr/src
[root@bazooka src]# ls -l
total 12
drwxr-xr-x    7 root     root         4096 Jan 31 08:03 RPM/
lrwxrwxrwx    1 root     root           12 Jan 31 08:30 linux -> linux-2.4.3/
drwxr-xr-x   17 root     root         4096 Jan 31 08:25 linux-2.4.3/

Note the “arrow” in linux -> linux-2.4.3/ and that the first character in the line is a lower-case l — that’s how you know that “linux” is a link, and not a real directory. You will only see that in a long directory listing, ls -l. If “linux” is a real directory and not a symlink, you’ll want to rename it, not remove it. That would look something like this:

[root@bazooka src]# ls -l
total 0
drwxr-xr-x    7 root     root         4096 Jan 31 08:03 RPM/
drwxr-xr-x   17 root     root         4096 Jan 31 08:25 linux/
[root@bazooka src]# mv linux linux-2.4.3
[root@bazooka src]# ls -l
total 0
drwxr-xr-x    7 root     root         4096 Jan 31 08:03 RPM/
drwxr-xr-x   17 root     root         4096 Jan 31 08:25 linux-2.4.3/

Let’s go back to the original example now, where we have an existing linux symlink pointing to a linux-2.4.3 directory. (Remember, we are about to compile an older stable kernel, version 2.2.20, to support a commercial module that we can’t run under a 2.4 kernel.) Let’s begin by removing the /usr/src/linux symlink.

[root@bazooka src]# pwd
/usr/src
[root@bazooka src]# ls -l
total 12
drwxr-xr-x    7 root     root         4096 Jan 31 08:03 RPM/
lrwxrwxrwx    1 root     root           12 Jan 31 08:30 linux -> linux-2.4.3/
drwxr-xr-x   17 root     root         4096 Jan 31 08:25 linux-2.4.3/
[root@bazooka src]# rm linux
rm: remove `linux'? y
[root@bazooka src]# mkdir linux-2.2.20
[root@bazooka src]# ln -s linux-2.2.20 linux
[root@bazooka src]# ls -l
total 12
drwxr-xr-x    7 root     root         4096 Jan 31 08:03 RPM/
lrwxrwxrwx    1 root     root           12 Feb  5 13:45 linux -> linux-2.2.20/
drwxr-xr-x    2 root     root         4096 Feb  5 13:44 linux-2.2.20/
drwxr-xr-x   17 root     root         4096 Jan 31 08:25 linux-2.4.3/

Why do we care about this “linux” symlink so much? The Linux kernel sources are picked up from a “linux” directory when they are packaged into a “tar” archive file; when you unpack them, therefore, they expect to go back into a “linux” directory. If you only have a single “linux” directory, and you unpack them into /usr/src without doing the steps above, they will overwrite some of your existing source files, and leave you with a real mess. You’ll have old and new files all mixed together. In a situation like that, the only thing to do is remove the entire “linux” directory and start over. Using a symlink to point to the current version — and keeping each version in its own directory — makes it much easier to keep everything under control.