Tag: system

Learn How To Install Software In Linux and Unix Distros

By Eddison Sherry

many Linux distrosFor a Linux enthusiast there are a variety of distributions (distros) or otherwise called flavors available in the internet. These distros vary mostly in the package management system they use to install software and also in their philosophy. Although the basis is same, it is the differences in handling the power that the kernel (Core program of the operating system) delivers that makes them distinct from each other. A newbie can easily get confused with the concepts in Linux, thanks to Microsoft which serves as an introductory course to using a computer the way you want it. In this article we will check what all options are catered for a normal user in installing software.

Red Hat LinuxMainly the distros can be categorized on the basis of package management system into three viz, .rpm based (redhat package manager), .deb based and the source based. The first category.rpm has its basis on Red Hat operating system or extensive usage of their code. openSUSE, fedora, Mandriva are a few to mention in this class.

Debian Linux

The next class is.deb or Debian based distros. Multitude of distros are available in this too most prominent one being Ubuntu.


ThGentoo Linuxe third category uses the source code for its primary operations Gentoo linux being one among them. Many distros provide additional front end programs to make it easier for the user to add or remove libraries or software’s to the system which may be either GUI based or command based.

yum package managerNow we will have a look at a few conceptually best package managers used by the distros. Red Hat has Yum (Yellowdog Updater Modified) package manager for the convenience of the user. It was originally developed to manage Red Hat Linux systems at Duke University’s Physics department.

Synaptic Package ManagerUbuntu has the synaptic package manager which uses the underlying apt(Advanced Packaging Tool) to gather and install software. Gentoo uses portage as its software installer but is a bit different in behavior from other package managers in that it deals with source code and compiles and installs for the specific machine on which it is running. These package managers install software from any recorded media like CD or DVD or from internet servers called repositories maintained by distributions and communities associated with its development. All these software managers resolve dependencies between packages while installing a software or library. Dependencies arise when a software might be compatible with a particular implementation of a library file where as another software we are trying to install might need a different underlying implementation of the same concept. When the two such conflicting software’s needs to coexist then the library file preferences need to be sorted out. Software’s usually depend on many libraries and hence the automatic management of dependencies is a welcome move as far as the huge Linux users community across the globe is considered as it would alleviate the problems in managing the system.

There is ample scope if you are a nerd or a geek to have your own way of tweaking the system and this is what fancies the computer addicts to use this powerful operating system. To conclude let us assume that the competition in the field gives rise to wonderful Linux based operating systems easily manageable and gives a new dimension to computing capabilities of the new generation.

Eddison Sherry had been working in Linux and other Unix flavours for long years. He had been writing blogs and article on the Linux Storage, Linux Commands and Linux Server Administration. If you are working on Linux or Unix Server its best to have a look on his blogs at Linux Technical Forum.

Tags: , , , , , , , , , , , , , ,

How to Start Your Career in System Programming

By Raghu Bharadwaj

If you are a fresher and are really looking for a personally and professionally satisfying career in embedded systems or system level programming then these are the exact skills that you need to get hold of

Skill guide for System/Embedded/Real Time Programmers

•Effectively programming using Data Structures

•Application of C for System programming purposes

•Complete understanding of any Operating System (Linux, most widely used here)

•OS customization skills, Device Drivers, Embedded Drivers

•OS building for target hardware

•Network programming

•C++ for Embedded and Real Time programming

•Understanding finer aspects of Real Time OS designs

•Programming for Multicore architectures

•Above all true passion for hard core programming

The above guide is purely indicative and is based on the current and expected future skill requirements. However these are the skills which are going to stay for a very long time. I call them “skills forever”. Most of these skills are age old and are proven effective time and again with minor modifications to meet moving requirements.

How to master these skills

Here I recommend three proven ways to master these skills

1. Self Learning

Go out and do it on your own, this is the mantra of self-learning, definitely, the most satisfying path of all the. With so much open information available self-learning is definitely recommended. A decade back may be it would have been ill advised, due to lack of information available through Internet, books and so on, but the current situation only augments the use of it.

Pros & Cons

This is indeed the most satisfying of all paths. Information is readily available and it is only left to you to explore and deduce the right information. Now students willing to walk this path should be very selective in choosing information as there are every possibility that he/she may end up with heavy unwanted or even misleading information and most importantly taking much of his time. To sum it up I would say that in this path the learning curve i.e. the time taken to learn is more compared to all other kinds of learning.

Sources for this style of learning are: internet, books, practical experimentation, technical forums, seminars and so on.

2. Mentoring/Professional Training Course

To put it in a single sentence, “Look for a mentor/trainer who can extend his expertise and help you build your skills in the smartest and shortest way”. Definitely the most widely preferred channel of learning and also the most confusing, thanks to the ever growing number of training organizations offering a wide variety of courses. I certainly am not against this trend but I would only like to caution students on being very selective while choosing these organizations for building their skills.

Let us look at some of the common training programs available for Embedded/System software development

There are a growing number of institutions offering specialized training courses on this domain. Most of these institutions offer a similar line of course contents with minor deviations. However most of them do talk about:

•Programming with C and Data Structures

•Programming with C++

•Linux/Unix Essentials

•Some part of Linux Drivers

•Micro-controllers and Programming them

•Embedded Systems Concepts


Now if you compare this with the above mentioned Skill guide, surely most of the training organizations need to drastically improve their contents to cater the exact skill requirements of the students and mind you most of these institutions are delivering these courses just at the knowledge gaining level. So be extremely selective in choosing your training courses. This is a highly recommended source of learning as there are plenty of options to choose from, obviously with a bit of scrutiny.

3. On Job Training

Definitely the most preferred method of learning. This gives the student a great opportunity to be in the company of experts and also in the most conducive learning environment. The student who enters this course would develop his/her skills in a way which is most desired by his/her employer. This could help in building both generic as well as specific skills. However there is a good chance of being very specific in the skills gained and this may hamper his overall generic outlook.

Now it’s your turn to choose

So the choices are open, rate your skills and choose any path or even try to come up with something of your own. Just remember that, our expertise can always be availed and we will be more than happy to help you.

Raghu Bharadwaj is a lead trainer in the area of Linux System Programming, including Linux Device Drivers, Kernel Programming, Embedded Linux, RTOS and Network Programming etc. To know more about his online and campus based training programs visit http://www.techveda.org.

Tags: ,

Understanding the Linux File System
By Brandon Sherwood

The way Linux organizes its files on the hard drive is vastly different from how Windows handles this task. New Linux users coming from Windows sometime have a hard time maneuvering though directories or come with notions that Linux should manage its files in the same vain as Windows.

This article was written to help new users get a grasp on moving through directories on their new installation. One key point to make is Windows deals with “drives” as in your C: drive or D: drive, Linux deals with something called ‘mount points’. These are locations where other hard drives, CD/DVD burners, etc… connect to the root partition. Don’t worry it will all make sense latter on.

It All Begins With Root: /

The root directory known simply as ‘/’ is the starting point. Without getting to technical, the root directory acts like the ‘C: Drive’ in Windows. A Linux system can not fully boot without a root partition, in the same way as deleting your C:WINDOWS folder will make your Windows computer inoperable.

It’s In: /bin

The /bin folder holds important system programs. The ‘bin’ is short for ‘binary’. Some of the popular programs: date, less, more, cat, dmesg. These programs are essential in order to start and have a complete operating system. While you may never use one of these programs personally, the system relies on some of them.

Where Everything Starts: /boot

As the name implies, /boot is where the crucial files reside, mainly the kernel. Without the kernel, you don’t have a system. Another crucial program located in /boot is the bootloader. Just like Linux needs the kernel to function. The bootloader is there to actually locate the kernel and begin running it.

Every Device Is A File: /dev

In Linux, every device is a file. What this means is, when you connect a hard drive to your system it gets a ‘device file’ that allows the system to interact with it. When the kernel locates a new hard drive it is assigned a file like “/dev/sda”. The /dev part is the directory and the ‘sda’ part is the file that connects to the hardware. So if you wanted to format your whole drive you could type in the command ‘dd if=/dev/null of=/dev/sda’. This would copy /dev/null into your hard drive. /dev/null is a “bit bucket”. Meaning that everything that gets sent to it gets deleted.

Configuration-ness: /etc

Linux, being a customizable system keeps all the programs config’ files in this directory. Most programs come with a sensible and secure default behavior. But what happens if you want to change it? The /etc holds a slew of text files for you to open and customize how your programs operate. An important note to make is /etc manages global defaults. What this means is if you change a file this directory, it will affect the whole system.

The Shared Libraries: /lib

The /lib directory is a way to keep all software libraries in one central location. Most (if not all) files here have a file extension of ‘.so’ to let you know they are ‘shared object’ files. These files are code that can be used by multiple programs. This helps prevent a problem known as ‘software bloat’. Windows also has these files; they are called ‘Dynamically Linked Libraries’ or DLL for short. As a regular Linux end user, you will most likely never have to change anything in this folder. Depending on how you install software on your computer, you might come across a ‘missing shared object’ problem if your software “depends” on another program to function. The Windows equivalent is ‘DLL hell’.

When You Don’t Shut Down Correctly: /lost+found

This directory is used when the user does not shut down the system correctly (turning it off when the system is still up and running). Upon the next boot, the system will try and correct itself by scanning the hard drive for corrupt files and try to correct any problems that arise. If anything is found, it will be placed in the /lost+found directory for the systems administrator (you!) to see and look over.

Where The ‘Mount Points’ Live: /mnt and /media

The /mnt and /media directories are for ‘attaching’ other devices to the root directory. In Windows, when you insert a USB thumbstick, you will see the system gives it a drive letter (E:). Depending on which Linux distribution you use, the device will either ‘auto mount’ or the user has to mount the device manually. Most newer, newbie friendly distros will auto mount the device and place it in one of these directories. You will be able to browse the files within your thumbstick at /mnt/usb or /media/usb. Each distribution is different, so my example could not exactly match your results.

/media is the newcomer to the Linux scene. Most older distributions exclusively used /mnt to manage these devices, but /media is gaining ground as the default location to mount devices. Linux allows you to mount any device anywhere (as long as you have the permissions). So it is completely feasible to mount one device under ‘/bin/mount’ or ‘/var/log’. This is usually not a good idea and the /mnt and /media directories where put in place to make this easier.

The ‘Optional’ Directory: /opt

This is where users can install software if no other suitable location can be used. Most software from major Linux distributions have ‘software repositories’ which allow users to easily add and remove tons of programs. But what happens when you need a program that isn’t in the repository? In order to separate repository software packages from ‘external’ packages, sometimes the best way to install them is putting them in /opt. This practice is rarely used though and each distribution is different. Some will place the popular KDE into /opt, while other distributions won’t.

My personal rule of thumb is to use /opt when the software you are installing defaults to this directory (The Google Earth program does this) or I am installing a program that I didn’t get in the software repository.

The Kernel’s Directory:/proc and /sys

Both of these directories hold a wealth of information about the status of your system. Files like ‘/proc/cpuinfo’ contain information about your CPU (speed, vendor, cache size). The /proc directory is slowly being faded out in favor of /sys.

You Were Here And Now Your Gone: /tmp

The /tmp directory is short for ‘temporary’. So with that in mind, I am sure you can deduce why this directory is used. You got it, to manage temporary files. Programs can generate a lot of ‘junk output’ or need to write to a file to handle a task; but the file can be deleted once the task is completed. This directory provides a central location to do this and not fill your other directories with these files.

Where The Programs Live: /usr

The /usr directory is a monster. Articles could be written just to explain it all. But to keep things short and sweet, the /usr is where all of your ‘secondary’ programs are stored. Granted you love your music player, but it’s not crucial to your operating system actually functioning. So instead of putting all the executables in /bin, we break it up a bit. We place crucial system programs in /bin and non-critical programs into /usr/bin. The /usr directory could be seen as the Windows equivalent as C:Program Files .

The Not So Temporary Files: /var

/var (for varying or variable) acts like /tmp in the sense that the files located are ‘temporary’ but less ‘temporary’ then those in /tmp. What this really means is the /tmp directory will most likely be deleted every time the system reboots, while the files in /var will not. /var is a place to keep ‘persistent’ files. An example would be log files. Most system administrators wouldn’t want to delete their log files on every reboot, but the files could be removed or ‘shrunk’ to a more manageable level at the administrators whim.

Another example would be ‘/var/mail’ directory. It contains the mail being sent to users on the system. Some users will have hundreds of messages, while other users will have a few or none. The directory is growing and shrinking depending on the usage by the users. So in order to keep the disk usage under manageable levels, we place this activity under /var. On large systems, the system administrator will use a separate hard drive and ‘mount’ the hard drive at /var. This allows the frequent disk access to remain on one hard drive and keep the overall system speedy.


Well I hoped that this article has better acquainted you to how files are stored on a Linux system. If I left anything out (or for general praise), please feel free to comment on the article.

Brandon Sherwood

http://www.newbtopro.com – Howto’s and Tutorials

Tags: , , , ,
Back to top