Monday, 21 March 2011

6 Stages of Linux Boot Process (Startup Sequence)

Press the power button on your system, and after few moments you see the Linux login prompt.

Have you ever wondered what happens behind the scenes from the time you press the power button until the Linux login prompt appears?

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
o 0 – halt
o 1 – Single user mode
o 2 – Multiuser, without NFS
o 3 – Full multiuser mode
o 4 – unused
o 5 – X11
o 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.
o Run level 0 – /etc/rc.d/rc0.d/
o Run level 1 – /etc/rc.d/rc1.d/
o Run level 2 – /etc/rc.d/rc2.d/
o Run level 3 – /etc/rc.d/rc3.d/
o Run level 4 – /etc/rc.d/rc4.d/
o Run level 5 – /etc/rc.d/rc5.d/
o 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.

There you have it. That is what happens during the Linux boot process.

6 Examples to Backup Linux Using dd Command (Including Disk to Disk)


Data loss will be costly. At the very least, critical data loss will have a financial impact on companies of all sizes. In some cases, it can cost your job. I’ve seen cases where sysadmins learned this in the hard way.


This article provides 6 practical examples on using dd command to backup the Linux system. dd is a powerful UNIX utility, which is used by the Linux kernel makefiles to make boot images. It can also be used to copy data. Only superuser can execute dd command.

Warning: While using dd command, if you are not careful, and if you don’t know what you are doing, you will lose your data!

Example 1. Backup Entire Harddisk

To backup an entire copy of a hard disk to another hard disk connected to the same system, execute the dd command as shown below. In this dd command example, the UNIX device name of the source hard disk is /dev/hda, and device name of the target hard disk is /dev/hdb.

# dd if=/dev/sda of=/dev/sdb



* “if” represents inputfile, and “of” represents output file. So the exact copy of /dev/sda will be available in /dev/sdb.
* If there are any errors, the above command will fail. If you give the parameter “conv=noerror” then it will continue to copy if there are read errors.
* Input file and output file should be mentioned very carefully, if you mention source device in the target and vice versa, you might loss all your data.

In the copy of hard drive to hard drive using dd command given below, sync option allows you to copy everything using synchronized I/O.

# dd if=/dev/sda of=/dev/sdb conv=noerror,sync



Example 2. Create an Image of a Hard Disk

Instead of taking a backup of the hard disk, you can create an image file of the hard disk and save it in other storage devices.There are many advantages to backing up your data to a disk image, one being the ease of use. This method is typically faster than other types of backups, enabling you to quickly restore data following an unexpected catastrophe.

# dd if=/dev/hda of=~/hdadisk.img



The above creates the image of a harddisk /dev/hda. Refer our earlier article How to view initrd.image for more details.

Example 3. Restore using Hard Disk Image

To restore a hard disk with the image file of an another hard disk, use the following dd command example.

# dd if=hdadisk.img of=/dev/hdb



The image file hdadisk.img file, is the image of a /dev/hda, so the above command will restore the image of /dev/hda to /dev/hdb.

Example 4. Creating a Floppy Image
Using dd command, you can create a copy of the floppy image very quickly. In input file, give the floppy device location, and in the output file, give the name of your floppy image file as shown below.

# dd if=/dev/fd0 of=myfloppy.img



Example 5. Backup a Partition

You can use the device name of a partition in the input file, and in the output either you can specify your target path or image file as shown in the dd command example below.

# dd if=/dev/hda1 of=~/partition1.img



Example 6. CDROM Backup

dd command allows you to create an iso file from a source file. So we can insert the CD and enter dd command to create an iso file of a CD content.

# dd if=/dev/cdrom of=tgsservice.iso bs=2048



dd command reads one block of input and process it and writes it into an output file. You can specify the block size for input and output file. In the above dd command example, the parameter “bs” specifies the block size for the both the input and output file. So dd uses 2048bytes as a block size in the above command.

Note: If CD is auto mounted, before creating an iso image using dd command, its always good if you unmount the CD device to avoid any unnecessary access to the CD ROM.

Saturday, 19 March 2011

Linux Boot up process


There are six steps to boot a Linux system and those are follows;
BIOS
Master Boot Record (MBR)
LILO or GRUB
Kernel
init
Run Level



 The basic stages of the boot process of LINUX Operating System for an x86 system:

1. The system BIOS checks the system and launches the boot loader on the MBR [ MBR stands for Master Boot Record, which occupy 512 Bytes only.]
2. The boot loader loads itself into memory and launches the boot loader from the /boot/ partition.
3. Then boot loader loads the kernel into memory, which in turn loads any necessary modules and mounts the root partition read-only.
4. Then the kernel transfers control of the boot process to the /sbin/init program.
5. Then the /sbin/init program loads all services and user-space tools, and mounts all partitions listed in /etc/fstab file.
6. Then the user is presented with a login screen to get login into system
.
Note:- MBR contains machine code instructions for booting the machine, called a boot loader along with the partition table.

Note that boot loader do not load more than one Operating System at a same time, even if the machine is “multi-boot” system.

Little Detail Look in Boot Process.

The GRUB has the advantage of being able to read ext2 and ext3 partitions and then load its configuration file from /boot/grub/grub.conf — at boot time.

The Kernal is a core of Linux. It loads into RAM, at the time of machine boots, and it runs until the computer is shutdown.

The initramfs is used by the Linux kernel to load different drivers and modules necessary to boot the system.
After it once the kernel and the initramfs image(s) are loaded into memory, the boot loader hands control of the boot process to the kernel.

Now when the kernel is loaded, it will immediately initializes and configures the system's memory and configures the various hardware which are attached to the system, which includes processors, storage devices and some others.

And kernel then creates a root device, mounts the root partition read-only, and frees any unused memory.

Now after it to set up the user environment, the kernel executes the /sbin/init program.

The /sbin/init program which is also called as “init” coordinates the rest of the boot process and configures the environment for the system user.

The init daemon is one of the most important Linux daemon. Because it creates the processes for the rest of the system.

Note :- Daemon—Daemon is the program which runs in the background.

When daemon command start, it will runs the /etc/rc.d/rc.sysinit script, which sets the environment path, starts swap, checks the file systems, and executes all other steps required for system initialization

The init program is usually kept in /bin directory, and some distributions of linux keeps it in /sbin. The configuration files are always kept in /etc.

The init daemon is executed when linux starts and stay active until linux system is get shut down.

When the init daemon is executed, it will reads instructions from the file /etc/inittab, which is primarily used to start getty processes for terminals and other processes required by the linux system.

While examining the /etc/inittab file, init searches for an entry labeled initdefault, which sets the default initial run level of the system.

If no initdefault level is defined in the /etc/inittab file, the system prompts for the level.

Runlevels are a state, or mode, defined by the services, which is listed in the SysV /etc/rc.d/rc.d/ directory, where is the number of the specific runlevel

The init daemon knows which processes are associated with each run level from information in the /etc/inittab file.

The Boot Loader GRUB

The Boot Loader is mainly used for following purpose,

[1] For selecting an Operating System from different option.
[2] For locating the kernel.
[3] When we need to identify the partition.

The GRand Unified Boot loader (GRUB) is the default bootloader for RedHat linux.
passwd,ubuntu,suse,centos,debain,slackware,mandrake,fedora,knopix
1. It is password protected boot loader.
2. We can easily edit GRUB during boot process.
3. We can change different parameter in GRUB configuration file, without making any permanent changes in it.linux how tos, linux-how-tos, linux-howto, useradd, adduser, ls, dir, pwd,
4. Another good advantage of GRUB is that, it supports Logical Block Addressing.
( LBA ) mode, so it can help system to findout the /boot files.

1. The main GRUB configuration file is /boot/grub/grub.conf, for it is also linked to /etc/grub.conf for convenience in use.

The main configuration file of GRUB. /boot/grub/grub.conf
# grub.conf generated by anaconda
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,5)
# kernel /vmlinuz-version ro root=/dev/hdc7
# initrd /initrd-version.img
#boot=/dev/hdc
default=0
timeout=5000
splashimage=(hd0,5)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
root (hd0,5)
kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet
initrd /initrd-2.6.11-1.1369_FC4.img
title Other
rootnoverify (hd0,0)
chainloader +1

The main GRUB VARIABLES
[1] password -- It is used to protect GRUB with use of –md5 encryption.
[2] default -- It will specifies the default operating system. E.g., if the default=0, then what ever the title in first line will boots automatically.
[3] timeout -- It shows the time before which GRUB starts.
[4] splashimage -- It shows the GURB’s image.
[5] title -- It will show the options of GRUB menu which you find on screen at
start time.
[6] root -- This root will indicates the partition with /boot files.
[7] kernel -- Linux kernel’s location.
[8] initrd -- Initial RAM disks’s location.
[9] rootnoverify -- It configures the root partition for GRUB, just like the root command, but it will does not mount the partition.
[10] chainloader -- It will loads the specified file as a chain loader.



VNC Server in Linux


Configure VNC Server in Linux
The server is the host machine that will be logged into. This could be a tower at work, or home, or your moms computer (because she is always calling asking for help). It allows you to log into the machine and use it as if you were sitting in front of it using it’s monitor and keyboard. It also allows privacy as any next to the host computer cannot see what you are doing.
Way to Install
1. Open the terminal.
2. If you are not logged in as root type ’su -’ and your root password.
3. Type ‘yum –y install vncservers.
4. Type ‘vi /etc/sysconfig/vncservers’ to edit our settings for the vnc. Here we need to change the username to whatever you like. I changed mine to root. It looked like this:
VNCSERVERS=”2:root”
VNCSERVERARGS[2]=”-geometry 1024×768 –depth 16″
What this does is it will allow “root” to log in on desktop “2″. vnc uses port 5900 by default. And each desktop will be assigned its own number added to the 5900. So in my example vnc will use port 5902.
5. Type ‘vncpasswd’ to set you session password.
6. Type ’service vncserver start’ to start the vnc server. If you want the server to start everytime you start you computer up type ‘chkconfig vncserver on’ and it will.
Your computer now has vnc server installed and configured.
7. Edit of xstartup file
vi /root/.vnc/xstartup
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
startx &
vnc Client in Linux.
The client machine is the machine that is going to connect to the host server you just set up.
The Install
1. Type ‘yum –y install vnc.
That is all there is too setting up the client.
Connect to the Server
1. Type vncviewer 192.168.0.2:2
2. Type ‘xxxxxxx’ where xxxxxxx is your password.
You should now be connected to you server. If you are in GUI you will see you server desktop, if you are in terminal you will have access to all the files on the computer (If you connected as root)
vnc Client in Windows.
The client machine is the machine that is going to connect to the host server you just set up.
The Install
1. Download http://skullbox.net/sd/vncclient.exe
2. Finish the setup
3. Open the TightvncViewer.
4. Type 192.168.0.2:2 and hit enter.
You should now see the desktop of you server.
You now have a Linux vnc server, a Linux vnc client and a Windows vnc client

Add/Delete partition in Linux


Step by Step procedure to Add or Delete the partition in Linux
Simple Add of Partition
Login as root
# df –h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3            7.0G  3.5G  3.1G  54% /
/dev/sda1            99M   13M   82M  14% /boot
/dev/sda4           7.0G  3.5G  3.1G  54% /usr
/dev/sda5           4.0G   113M   3.8G  8% /var
tmpfs                 501M     0  501M   0% /dev/shm
#fdisk –l               (To see the partition table)
# fdisk /dev/sda
n                           (Create new partition)
press enter       (cylinder space)
5000M              (Partition space)
P                           (Verify the partition)
w                           (Writing partition)
#partprobe
#mkfs.ext3 /dev/sda6
#e2label /dev/sda6 /test
#vi /etc/fstab (Set to start automatically after booting)
/dev /sda6  /data  ext3  defaults  0 0
#mount /dev/sda6 /test  (Mounting the partition)
#df –h
Now you can see your partition table
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3            7.0G  3.5G  3.1G  54% /
/dev/sda1             99M   13M   82M  14% /boot
/dev/sda4           7.0G  3.5G  3.1G  54% /usr
/dev/sda5             4.0G   113M   3.8G  8% /var
/dev/sda6            5.0G   113M   4.8G  3% /test – New partition
tmpfs                 501M     0  501M   0% /dev/shm
Simple Delete a partition:
Login as root
# df –h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3            7.0G  3.5G  3.1G  54% /
/dev/sda1             99M   13M   82M  14% /boot
/dev/sda4           7.0G  3.5G  3.1G  54% /usr
/dev/sda5             4.0G   113M   3.8G  8% /var
/dev/sda6            5.0G   113M   4.8G  3% /test   - the partition required to delete
tmpfs                 501M     0  501M   0% /dev/shm
Edit /etc/fstab configuration file
Comment “#”or delete mounting file of /dev/sda6
#vi /etc/fstab
#/dev/sda6  /test  ext3  defaults  0 0 (Here I gave comment “#”)
#umount /test                  (Unmount /test)
#fdisk –l
#fdisk /dev/sda
d                (delete the partition)
(1-6)   6   (Press which no of partition want to delete, here it is 6)
P
w
#partprobe
#fdisk –l
#df –h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3            7.0G  3.5G  3.1G  54% /
/dev/sda1            99M   13M   82M  14% /boot
/dev/sda4           7.0G  3.5G  3.1G  54% /usr
/dev/sda5           4.0G   113M   3.8G  8% /var
tmpfs                 501M     0  501M   0% /dev/shm
Done………….

MAKE PXE BOOT SERVER IN REDHAT LINUX


Software requirement;
dhcp-3.0.5-21.el5
tftp-0.49-2
syslinux-3.11-4
Installing and enabling tftp service
#yum –y install tftp-server
#vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
#service xinetd restart
Installing and configuring syslinux
#yum install syslinux
#mkdir /tftpboot
Copying necessary files into /tftpboot
#cp /usr/lib/syslinux/pxelinux.0 /tftpboot
#cp /usr/lib/syslinux/menu.c32 /tftpboot
#cp /usr/lib/syslinux/memdisk /tftpboot
#cp /usr/lib/syslinux/mboot.c32 /tftpboot
#cp /usr/lib/syslinux/chain.c32 /tftpboot
#mkdir /tftpboot/pxelinux.cfg
#mkdir -p /tftpboot/centos/5_2_32
#mkdir -p /tftpboot/redhat/5_3_32
#mkdir -p /tftpboot/redhat/5_4_64
Copy vmlinz and initrd.img from Disc-1 to each of its respective directory
Installing and configuring dhcp
#yum install dhcp
#vim /etc/dhcpd.conf
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.235 192.168.0.241;
default-lease-time 3600;
max-lease-time 4800;
option routers 192.168.0.3;
option domain-name-servers 192.168.0.203;
option subnet-mask 255.255.255.0;
option domain-name “swadesh.bbsr”;
option time-offset -8;
}
allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.0.212;
filename “/pxelinux.0″;
As per my setup, pxeserver ip address is 192.168.0.212
Restart DHCP Server
#service dhcpd restart
Configuring the MENU
This is the method by which one can do a PXE installation from a package and image archive served by a local web server, FTP server, or NFS server
As per my setup;
#vim /tftpboot/pxelinux.cfg/default
#/tftpboot/pxelinux.cfg/default:
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
MENU TITLE Welcome to PXE Installation of Swadesh Sampad
LABEL Redhat 5.3/32
MENU LABEL RHEL V.5.3 32-Bit
KERNEL linux/5_3_32/vmlinuz
APPEND ks initrd=linux/5_3_32/initrd.img ramdisk_size=100000 ksdevice=eth1 ip=dhcp url –url http://192.168.0.200/rhel53_32/
LABEL Redhat 5.4/64
MENU LABEL RHEL V.5.4 64-Bit Kickstart
kernel linux/5_4_64/vmlinuz
append ksdevice=eth0
initrd=linux/5_4_64/initrd.img console=ttyS0,9600n8
ramdisk_size=100000
ks=http://192.168.0.212/rhel_64_ks.cfg
LABEL CentOS NO 5.2/32
MENU LABEL CentOS V.5.2 32-bit
KERNEL centos/5_2_32/vmlinuz
APPEND ks initrd=centos/5_2_32/initrd.img ramdisk_size=100000 ksdevice=eth1 ip=dhcp url –url http://192.168.0.200/centos/
LABEL Ubuntu/32
MENU LABEL Ubuntu 32-bit
KERNEL ubuntu/dapper/i386/linux
APPEND ks initrd=ubuntu/dapper/i386/initrd.gz ramdisk_size=100000 ksdevice=eth1 ip=dhcp url –url http://192.168.0.204/ubuntu/ root=/dev/rd/0 rw –
Now our PXE server is ready. We can go to client box and boot from pxemethod by pressing F12 bottom.

Accessing Linux Partition Using Rescue Disk(VIDEO)


Friday, 18 March 2011

30 Things To Do When you are Bored and have a Computer


1.    Read technical blogs – There are several technical blogs out there, that produce high quality content everyday. There are 9600+ technology blogs listed in the technorati website. Browse thetechnology blog list and read the blogs that interests you. 
2.    Backup your laptop – You should do a full back-up of your laptop / desktop every month at a minimum. If not, do it now. Use rsnapshot for Unix and GFI free backup tool for Windows.
3.    Seriously! Don’t have a backup? Stop reading this article and backup you laptop now!
4.    De-clutter your laptop – Organize the files and directories in your laptop. If you have tons of sub-directories, it gets difficult to find the right sub-directory to store your file. I used to have tons of nested sub-directories before. Now, I have only 5 high level directory structure under my home directory. Use Windows Google Desktop on Linux Google Desktop software to search your files quickly.
5.    Social networking sites – Create an account for yourself on LinkedindeliciousStumble UponFacebookDiggTwitter. Even if you don’t post something on these sites, you can still browse their popular pages and read all the articles.
6.    Clear out all your emails. Process every email in your in-box and archive it. Don’t leave any emails unprocessed.
7.    Change passwords – When is the last time you’ve changed your on-line banking password (or) your primary email password? Make sure to create a yearly password routine and change all your online passwords to something unique and strong. Use multi-platformpassword manager to store all your password on your laptop securely. Follow the password best practices. Change passwords for at least few of your critical online accounts now!
8.    Plan your exercise schedule – If you are like me, you may be looking for motivation from all sources to exercise regularly. Create a simple exercise schedule (it could even be for 15 mins a day) and share it with your family and friends. Ask them to check on you regularly to make sure you are following your schedule on track. Explore sites like fitdaydailymile, anddailyplate will help you track and organize your fitness related stuff.
9.    Customize your home page portal. If you don’t have it, create one at either iGoogle ormyYahoo.
10.  Reconnect with friends and family – Send an email to an old friend, colleague, or family member with whom you might have lost touch.
11.  Pursue your dream job – If you are not happy with your current job, take time to think about what would be your dream job. Create a document and list down all the items that you don’t like about your current job and all the things that you would want in your dream job. Once you have a clear idea, search job sites like the ladders – where all the jobs are $100K+
12.  Read Wikipedia – Browse the Wikipedia technology portal for topics that interests you. Outline of computer science and list of information technology topics are a good place to start in Wikipedia. You can spend hours together reading these topics.
13.  Send a Thank You note to someone who did some nice things for you.
14.  Organize your photos online – Create an account for yourself on picasaweb, or flickrand organize all your pictures online.
15.  Browse YouTube – Go to youtube.com and search for linux, to view all linux related videos (or) Browse these technology channels on youtube — GoogleWindowsTechCrunch.
16.  Explore a Technical Hobby – It may be tweaking the Linux OS by building custom kernels, exploring ethical hacking, exploring amateur ham radio (or) any technical stuff that you were always interested to explore, but never got the time to do.
17.  Set Goals – Jan 1st is not the only time to set goals for the year. Take some time to think through and list out all the major personal projects you would like to complete this year. Create actionable tasks to get those projects completed. Getting Things Done: The Art of Stress-Free Productivity is an excellent resource that will help you to get organized and be productive.
18.  Write - If you are bored and don’t know what to do, start writing. This doesn’t need to be technical writing. When is the last time you’ve written a well thought out letter to someone who you love? Take the time to write a letter and send it in an email to your loved ones.
19.  Get Personal Finance in Order – Take time to review your current financial status, review bank balance, consolidate credit cards, sign-up for online bill pay, move money from low interest bank account to high interest bank account, research re-financing your home mortgage for lower rate.
20.  Use online Word, Excel, Powerpoint – I’ve moved almost all my local documents toGoogle documents. I can access my personal documents from any computer. No need to worry about backing up local documents on your laptop on an on-going basis, if all your documents are online. You can also share selective documents with your friends and family.
21.  Add items to your shopping wishlist – Take time to research on the electronic gadgets, or technical books that you wanted to purchase. Read some review and collect as much as information you need about the item before your purchase. Most importantly, create a wish-list in your favorite online shopping site and populate it with your favorite items or books you would like to purchase some day. I use amazon amazon wish-list.
22.  Defrag your hard-drive. If you are using Windows OS, defarg your hard-drive. Since we all use *nix, call your Windows friends and brag about how *nix doesn’t need defrag.
23.  Browse firefox add-on repository and play around with any add-on that you find interesting.
24.  Create check-list and routines. List out all the repetitive tasks that you perform. Create a routine for those tasks. See whether you can automate or delegate some of those repetitive tasks.
25.  Flip through the unix man page. Even for the commands you are very familiar with, check out the man page. When you do ‘man ls’, you might be surprised that you didn’t know few of the capabilities, even on simple command like ls.
26.  Virus Scan. If you are using Windows OS, run a virus-scan on your laptop. I prefer Spybot search and destory, which will protect your laptop from spyware.
27.  Delete unwanted program. On Linux, see whether you are running any unwanted services and disable them. If you have any unwanted packages installed, remove them. On windows, go to Add/Remove program, and see whether you can delete any unwanted programs from the system. This might give you both additional disk space and performance.
28.  Create online book catalog for all your books. Library Things lets you add 200 books to your catalog for free.
29.  Watch Funny Videos. If you are really bored and doesn’t want to do any work that requires brain power, simply watch these funny videos.
30.  Learn keyboard shortcuts for your favorite application. For example, gmail keyboard shortcutsfirefox keyboard shortcutsUbuntu keyboard shortcuts.