Saturday, August 21, 2010

Getting started with Linux File System

via my friend Prateek Gupta ...

For those of you coming from windows background, the way the linux filesystem is laid out may seem confusing at first glance…. but that is where this article comes in !

The first thing you should know when working with linux, is that everything is treated as either a file or directory. Yep thats right, even hardware is considered a file by linux, and, speaking of hardware… all your hardware devices are located in the /dev directory, but more on that... later.

Another thing that confuses windows users, is the fact that linux dosen’t use drive letters to distinguish between different partitions and devices. that is to say in linux, the “root” of your filesystem is / whereas in windows it would most probably be C:\ . Drives in linux are “mounted” to directories where their data can then be accessed, so for instance, if you needed to use your thumbdrive, you would plug it into your computer, and then mount it using the “mount” command, which specifies the path to the device ( something like /dev/sdb or /dev/sdc ) and the directory to mount it to (usually /mnt or /media), then you can happily access your drive from the /mnt or /media folder.

Sounds strange right? well yes it does if you come from a windows environment, where the entire operating system is consolidated onto a single drive. However, with linux and the ability to mount devices as directories, it gives the end user much greater flexibility in splitting up their operating system over several drives or partitions.

To understand what I mean when I say that this approach in mounting drives grants flexibility, I must first explain the different folders in linux and what they store / this is the root folder, all other folders come under root.. think of it as C:\ in a Windows context.

/bin this folder contains all the user-essential binaries (programs) that are needed to administer and run your linux system… delete this folder and your system is broken.

/boot as the name suggests, this folder contains configuration files and other necessary files that are needed by the bootloader

/dev this folder contains device files (remember, these files represent physical devices, so be careful when working with them)

/etc this folder contains all the configuration files used by the system, you can also start and stop services (daemons ) from here

/home this folder contains the home folders of all the normal (non – root ) users on the system .. think of it as my documents in windows

/lib this folder contains software libraries

/media this is a mount point for removable devices… this is where you would usually mount your thumbdrives … etc

/mnt this is a temporary mount point

/opt this folder contains add on software (extra software)

/sbin this folder contains binaries that can only be run as the root user (”superuser”)

/tmp this folder contains temporary files that are erased upon reboot

/usr this folder and its subfolders contains user installed programs and utilities and libraries

/var this folder contains files that change alot (”Variable files”)

/root this folder contians the root user’s files

/proc this is a psuedo folder, that contains information about the linux kernel and hardware that is updated in realtime.

Now back to how mounting grants flexibility…

You see, how the different folders all contain parts of the operating system? Well we can actually mount a seperate hard drive for each of this folders. for example, your /home folder can be put on another harddrive than your / which means that you can easily recover your personal files if the harddrive on / fails because the harddrive mounted to your /home folder is seperate from the one that is mounted to your /

So there you have it, you now know a lttle bit more about the nuts and bolts of linux based operating systems.

* * * * *

4 comments: