Thursday, November 3, 2011

Typical Linux boot process

These days lot of people interest in Linux OS. but some of them don't know about boot process of Linux OS.so that i try to give you brief idea of boot process in Linux.I think thats better help for you.


The following are the 6 high level stages of a typical Linux boot process.

1. BIOS

  • BIOS stands for Basic Input/Output System
  • Performs some system integrity checks
  • Searches, loads, and executes the boot loader program.
  • It looks for boot loader in floppy, cd-rom, or hard drive. You can press a key (typically F12 of F2, but it depends on your system) during the BIOS startup to change the boot sequence.
  • Once the boot loader program is detected and loaded into the memory, BIOS gives the control to it.
  • So, in simple terms BIOS loads and executes the MBR boot loader.

2. MBR

  • MBR stands for Master Boot Record.
  • It is located in the 1st sector of the bootable disk. Typically /dev/hda, or /dev/sda
  • MBR is less than 512 bytes in size. This has three components 1) primary boot loader info in 1st 446 bytes 2) partition table info in next 64 bytes 3) mbr validation check in last 2 bytes.
  • It contains information about GRUB (or LILO in old systems).
  • So, in simple terms MBR loads and executes the GRUB boot loader.

3. GRUB

  • GRUB stands for Grand Unified Bootloader.
  • If you have multiple kernel images installed on your system, you can choose which one to be executed.
  • GRUB displays a splash screen, waits for few seconds, if you don’t enter anything, it loads the default kernel image as specified in the grub configuration file.
  • GRUB has the knowledge of the filesystem (the older Linux loader LILO didn’t understand filesystem).
  • Grub configuration file is /boot/grub/grub.conf (/etc/grub.conf is a link to this). The following is sample grub.conf of CentOS.
  • #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz
    hiddenmenu title
    CentOS (2.6.18-194.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-194.el5PAE
    ro root=LABEL=/
    initrd /boot/initrd-2.6.18-194.el5PAE.img
  • As you notice from the above info, it contains kernel and initrd image.
  • So, in simple terms GRUB just loads and executes Kernel and initrd images.

4. Kernel

  • Mounts the root file system as specified in the “root=” in grub.conf
  • Kernel executes the /sbin/init program
  • Since init was the 1st program to be executed by Linux Kernel, it has the process id (PID) of 1. Do a ‘ps -ef | grep init’ and check the pid.
  • initrd stands for Initial RAM Disk.
  • initrd is used by kernel as temporary root file system until kernel is booted and the real root file system is mounted. It also contains necessary drivers compiled inside, which helps it to access the hard drive partitions, and other hardware.

5. Init

  • Looks at the /etc/inittab file to decide the Linux run level.
  • Following are the available run levels
    • 0 – halt
    • 1 – Single user mode
    • 2 – Multiuser, without NFS
    • 3 – Full multiuser mode
    • 4 – unused
    • 5 – X11
    • 6 – reboot
  • Init identifies the default initlevel from /etc/inittab and uses that to load all appropriate program.
  • Execute ‘grep initdefault /etc/inittab’ on your system to identify the default run level
  • If you want to get into trouble, you can set the default run level to 0 or 6. Since you know what 0 and 6 means, probably you might not do that.
  • Typically you would set the default run level to either 3 or 5.

6. Runlevel programs

  • When the Linux system is booting up, you might see various services getting started. For example, it might say “starting sendmail …. OK”. Those are the runlevel programs, executed from the run level directory as defined by your run level.
  • Depending on your default init level setting, the system will execute the programs from one of the following directories.
    • Run level 0 – /etc/rc.d/rc0.d/
    • Run level 1 – /etc/rc.d/rc1.d/
    • Run level 2 – /etc/rc.d/rc2.d/
    • Run level 3 – /etc/rc.d/rc3.d/
    • Run level 4 – /etc/rc.d/rc4.d/
    • Run level 5 – /etc/rc.d/rc5.d/
    • Run level 6 – /etc/rc.d/rc6.d/
  • Please note that there are also symbolic links available for these directory under /etc directly. So, /etc/rc0.d is linked to /etc/rc.d/rc0.d.
  • Under the /etc/rc.d/rc*.d/ direcotiries, you would see programs that start with S and K.
  • Programs starts with S are used during startup. S for startup.
  • Programs starts with K are used during shutdown. K for kill.
  • There are numbers right next to S and K in the program names. Those are the sequence number in which the programs should be started or killed.
  • For example, S12syslog is to start the syslog deamon, which has the sequence number of 12. S80sendmail is to start the sendmail daemon, which has the sequence number of 80. So, syslog program will be started before sendmail.

Tuesday, November 1, 2011

configure Phpmyadmin

PhpMyAdmin is a nice database management and administration tool, it is easy to install it, but some people are having problems making it work under apache, that’s because it needs configuration. if you want to more know about Lamp installation you can use my past blogs.

Just in case you haven’t installed phpMyAdmin yet, type the following line in the Terminal:
apt-get install phpmyadmin

To set up under Apache all you need to do is include the following line in /etc/apache2/apache2.conf, first type the following command to open up this file:
gksudo gedit /etc/apache2/apache2.conf

Add the following line of code inside apache2.conf:
Include /etc/phpmyadmin/apache.conf

Now restart Apache:
sudo /etc/init.d/apache2 restart

Point your browser to: http://domain/phpmyadmin, you should be able to see the phpMyAdmin landing page now

get some fun with phpmyadmin.....:)

Wednesday, August 10, 2011

SSH login without password


First log in on A as user a and generate a pair of authentication keys. Do not enter a passphrase:

a@A:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa):
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
Now use ssh to create a directory ~/.ssh as user b on B. (The directory may already exist, which is fine):

a@A:~> ssh b@B mkdir -p .ssh
b@B's password:
Finally append a's new public key to b@B:.ssh/authorized_keys and enter b's password one last time:

a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
b@B's password:
From now on you can log into B as b from A as a without password:

a@A:~> ssh b@B hostname
B

Thursday, August 4, 2011

differential backup

when you run following command first you get full backup files.then other all running times you can get only updates...

tar -cz -g snapshot_file -f $dest/$archive_file $backup_files

changing destination is more important .using that you can get only updates for this backups..

:)

Tuesday, July 26, 2011

how to get backup in Linux server

for this problem i use shell script to get incremental and daily backups.In this cause i use cron tab for run that script at that time.

shell script 1 - daily backup(test.sh)


####################################



echo "Starting to get incremental backup"
date=`date +%Y%m%d`
rsync --delete -avh /home/kasun/Desktop/new /home/kasun/Desktop/back-$date

Long listing of files in $dest to check file sizes.
ls -lh $dest

echo "Full Backups_done.." | mail -s "incremental Done at kasun " kasunmanduraeng@gmail.com
sendmail -q
##############################################

test2.sh....full backup

###############################################
# What to backup.
backup_files="/home/kasun/Desktop/new"

# Where to backup to.
dest="/home/kasun/Desktop/test"

# Create archive filename.
day=$(date +%Y%m%d)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"
day1=$(date +%d)
yday1=$((day1-1))
date1=$(date +%Y%m)


remove="$hostname-$date1$yday1.tgz"
# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date
echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files ###daily back up
#remove after 2 days backups

echo $dest/$archive_file $backup_files
rm $dest/$remove

# Print end status message.
echo
echo "Backup finished"
date


echo "Full Backups_done.." | mail -s "daily full Done at kasun " kasunmanduraeng@gmail.com
sendmail -q
##################################

after getting back receive notification mail.


Edit cron tab........

in command line type..


crontab -e

then edit crontab(you can edit /etc/crontab also)

00 00 * * * root /root/test.sh ##every hour ur incremental backup process running
00 00 00 * * root /root/test2.sh## every day for bacup running

Friday, April 8, 2011

shell scripts for CGI with Linux

program name:- test.sh , directory:/var/www/cgi-bin

#!/bin/sh
# test.sh
# Environment Variable
echo Content-Type: text/plain ; charset=ISO-8859-1
echo
pwd
ls -l
exit

save and run in web browser (http://localhost/cgi-bin/test3.sh) .out put show in following image
enjoy with CGI programing

Friday, April 1, 2011

Install and configure gns3 in linux(fedora)

First we'll have to install dependencies

[user@kasun ~]$ su

Password: (Type in your root password here)

[root@kasun /]# yum install python python-devel xorg-x11-proto-devel libXext-devel

[root@kasun /]# yum install gcc-c++

Now we'll download and install Qt4

[root@kasun /]#cd /tmp

[root@kasun tmp#wget http://ftp.uludag.org.tr/pub/source/2009/qt-x11-opensource-src-4.5.1.tar.gz

[root@kasun tmp]#tar xzf qt-x11-opensource-src-4.5.1.tar.gz

[root@kasun tmp]# cd qt-x11-opensource-src-4.5.1

[root@kasun qt-x11-opensource-src-4.5.1]#./configure -nomake examples -nomake demos -qt-gif -no-exceptions -debug -qt3support

[root@kasun qt-x11-opensource-src-4.5.1]#gmake <====This might take 2-3 hrs.

[root@kasun qt-x11-opensource-src-4.5.1]#gmake install <====Another 30 mins or so

[root@kasun qt-x11-opensource-src-4.5.1]#PATH=/usr/local/Trolltech/Qt-4.5.1/bin:$PATH

[root@kasun qt-x11-opensource-src-4.5.1]#export PATH


Next we'll install SIP

[root@kasun qt-x11-opensource-src-4.5.1]#cd ..

[root@kasun tmp]#wget http://ftp.uludag.org.tr/pub/source/2009/sip-4.8.1.tar.gz

[root@kasun tmp]#tar xzf sip-4.8.1.tar.gz

[root@kasun tmp]#cd sip-4.8.1

[root@kasun sip-4.8.1]#python configure.py

[root@kasun sip-4.8.1]#make

[root@kasun sip-4.8.1]#make install


Next we'll Install PyQt4

[root@kasun sip-4.8.1]#cd ..

[root@kasun tmp]#wget http://ftp.uludag.org.tr/pub/source/2009/PyQt-x11-gpl-4.5.2.tar.gz

[root@kasun tmp]#tar xzf PyQt-x11-gpl-4.5.2.tar.gz

[root@kasun tmp]#cd PyQt-x11-gpl-4.5.2

[root@kasun PyQt-x11-gpl-4.5.2]#python configure.py

[root@kasun PyQt-x11-gpl-4.5.2]#make <=== more time

[root@kasun PyQt-x11-gpl-4.5.2]#make install


We are done with compiling part, now lets download GNS3 source files

[root@kasun tmp]#cd /opt

[root@kasun opt]#wget http://space.dl.sourceforge.net/project/gns-3/GNS3/0.7.2/GNS3-0.7.2-src.tar.bz2

[root@kasun opt]#tar -xjvf GNS3-0.7.2-src.tar.bz2 && rm GNS3-0.7.2-src.tar.bz2

[root@kasun opt]#mv GNS3-0.7.2-src /opt/GNS3


Create the following directories:
These directories will be used by GNS3 – such as projects – where your working projects will be stored, cache, temp, IOS images, etc.

[root@kasun opt]#cd /opt/GNS3
[root@kasun GNS3]#mkdir Dynamips
[root@kasun GNS3]#mkdir IOS
[root@kasun GNS3]#mkdir Project
[root@kasun GNS3]#mkdir Cache
[root@kasun GNS3]#mkdir tmp
[root@kasun GNS3]#chmod o+rw -R ./Project
[root@kasun GNS3]#chmod o+rw -R ./tmp
[root@kasun GNS3]#chmod o+rw -R ./IOS

Download binary of dynamips and make it executable

[root@kasun GNS3]#cd Dynamips

[root@kasun Dynamips ]#wget http://www.ipflow.utc.fr/dynamips/dynamips-0.2.8-RC2-x86.bin

[root@kasun Dynamips ]#chmod +x ./dynamips-0.2.8-RC2-x86.bin



You can create a desktop shortcut by right-clicking on the desktop and select “Create Launcher..”, Name it GNS3 and in the command section type in

python "/opt/GNS3/gns3"

Double click to open GNS3 and we will edit the default settings. If you don’t want to use desktop icons you can create a launcher from your programs menu by right clicking on the Main Menu, selecting Edit Menu. Select New Item on the right and you will be presented with the same window where you type in the above. From there you can move the launcher into any menu section of your choice.

Fire up GNS3

* Go to edit | preferences and in the ‘Terminal command:’ section type in:
gnome-terminal -t %d -e 'telnet %h %p' > /dev/null 2>&1 &


* Under ‘Paths’ change the ‘Project directory:’ to
/opt/GNS3/Project
and the ‘IOS/PIX directory:’ to
/opt/GNS3/IOS

* Click on Dynamips tab on the left
For the ‘Executable path:’ type in
/opt/GNS3/Dynamips/dynamips-0.2.8-RC2-x86.bin

* Change the ‘Working directory:’ to
/opt/GNS3/tmp
Click on the Capture tab on the left

* For the ‘Working directory for capture files:’ change it to
/opt/GNS3/Project


woooow now you can rock with GNS 3 .....