old-www/LDP/LG/issue87/sunil.html

478 lines
21 KiB
HTML
Raw Permalink Blame History

<!--startcut ==============================================-->
<!-- *** BEGIN HTML header *** -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD>
<title>I Built a Custom Debian CD from Knoppix LG #87</title>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000">
<!-- *** END HTML header *** -->
<!-- *** BEGIN navbar *** -->
<IMG ALT="" SRC="../gx/navbar/left.jpg" WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="bottom"><A HREF="ramankutty.html"><IMG ALT="[ Prev ]" SRC="../gx/navbar/prev.jpg" WIDTH="16" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="index.html"><IMG ALT="[ Table of Contents ]" SRC="../gx/navbar/toc.jpg" WIDTH="220" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../index.html"><IMG ALT="[ Front Page ]" SRC="../gx/navbar/frontpage.jpg" WIDTH="137" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue87/sunil.html"><IMG ALT="[ Talkback ]" SRC="../gx/navbar/talkback.jpg" WIDTH="121" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../lg_faq.html"><IMG ALT="[ FAQ ]" SRC="./../gx/navbar/faq.jpg"WIDTH="62" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="vinayak.html"><IMG ALT="[ Next ]" SRC="../gx/navbar/next.jpg" WIDTH="15" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><IMG ALT="" SRC="../gx/navbar/right.jpg" WIDTH="15" HEIGHT="45" ALIGN="bottom">
<!-- *** END navbar *** -->
<!--endcut ============================================================-->
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">I Built a Custom Debian CD from Knoppix</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/sunil.html">Sunil Thomas Thonikuzhiyil</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<html>
<h3>Introduction</h3>
<p> <20> <20> <a href=http://knopper.net/knoppix>Knoppix </a> is a live cd distribution based on debian GNU/Linux.It contains a large number of applications which can come in handy even on minimal hardware.Knoppix supports alarge number of graphics cards sound cards scsi and USB devices.It can be used as a Linux demo, educational cd, rescue system or adapted and used as a platform for commercial product demo. It is not necesary to install anything to hard disk
There is an installation program which can install the entire cd to a hard disk, if you like. It means that you have a full fledged debian installation in 20 minutes. This document describes how I built a custom live cd from knoppix. My primary motivation to build this cd was to include some of my favorite applications which are missing from stock knoppix CD. <20>If you find any errors in this document please drop me a mail <a href=mailto:sunil_tt@yahoo.com>here </a>
</p>
<h3> Requirements</h3>
<h4> a) Software</h4>
<p> To start with you have to download knoppix image from knoppix site. There is a release every one<6E> or two week. There are 2 images: German and English. I did my setup based on 31-10-2002-EN release. </p>
<p> <20><>If you already have an image you can try to rsync it to the most recent version as below. However don't expect much bandwidth saving since the knoppix image is compressed. If you have a knoppix cdrom create an image by <20>
#dd if=/dev/cdrom of=knoppix.iso)</p>
<p> Rename the Knoppix iso image to reflect the current release name.<br>
<EFBFBD> Example<br>
<20> I have downloaded
KNOPPIX_V3.1-23-10-2002-EN.iso<br>
<20> I want to update it to <20><>KNOPPIX_V3.1-31-10-2002-EN.iso<br>
<20> Rename KNOPPIX_V3.1-23-10-2002-EN.iso
to <20>KNOPPIX_V3.1-31-10-2002-EN.iso<br>
<20>Then <br>
<20>rsync -P --stats ftp.leo.org::Knoppix/KNOPPIX_V3.1-31-10-2002-EN.iso<73>
.<br>
( you can use any other rsync site of knoppix. Always check the site for latest release) </p>
<h4> b) Hardware </h4>
<p> A Computer with tons of free hard disk space and memory. I did this on a Pentium 3 950MHZ machine with 128 mb RAM. </p>
<hr>
<h3> <b>Initial setup<br></b></h3>
<p><EFBFBD>Make a lot of<6F> disk space free<65> You need a lot of real estate for
re-mastering KNOPPIX<49> CD<br>
<20> <20>I made two fresh partitions<6E> on my 20 GB Hard disk<br>
<20> <20> <20> <20> <20> <20>hda2 with 2GB <20>for swap<br>
<20> <20> <20> <20> <20><> hda3 with 5 GB for re-mastering work ( you can also <20>use an existing Linux partition if it has sufficient <20>free space) </p>
<p> <20>Now boot the machine with Knoppix cd ( You can also do the
re-mastering after a <20>hard disk install of knoppix . A how to for hard disk
install<EFBFBD> can be found <a href=http://www.freenet.org.nz/misc/knoppix-install.html> here </a> ) </p>
<p> <20> <20>At boot prompt press enter. Knoppix now boots into GUI. The default is KDE . You<6F> can change it at boot prompt if you want . I did re-mastering <20>while booted to KDE. It is assumed that you are somewhat familiar with Knoppix.
<EFBFBD>Read <20>Knoppix cheat codes on the CD <20>for more information on booting. </p>
<h4> a) Configure networking from the KDE menu </h4>
<EFBFBD> Click on <br>
K/Knoppix/network-Internet/Network-card-configuration <br>
<p> <20> <20> I am connected to a Lan and I configured IP address, netmask, name
server and gateway This step is very important since you have to get the custom stuff to be installed from else where</p>
<h4>b) Setup partitions </h4>
<p> Open a root shell from KDE menu<6E> (K/Knoppix/Root-shell) <20>You will get <20># prompt</p>
<p> Run cfdisk </p>
<p> Next you have to make the necessary <20>partitions . I <20>created two partitions
hda2 with 2 GB and <20>hda3 with 5 GB</p>
<p> Make the 2GB<47> partitions type as swap <20>( /hda2 in my case) </p>
<p> Make the 5 GB partitions type as Linux native( ext2) <20>(hda3 here)<br>
Save the modified partition information </p>
<p> Quit cfdisk </p>
<p> <20>For creating compressed file system we need a lot of swap space .
I created the swap with <br>
<20># mkswap /dev/hda2<br>
<20># swapon /dev/hda2<61> <20> <20> <20> <20> <20> <20> <20> </p>
( it is also possible to use a swap file ) <br>
<p> Create an ext2 file system on the 5GB partition <br>
<20> #<23>mke2fs /dev/hda3 </p>
<p> Mount the 5GB<47> partition to the Knoppix file system <br>
# mount /dev/hda3 /mnt/hda3 </p>
<p> The basic setup for re-mastering is ready </p>
<hr>
<h3><b>Installing and Removing Software</b></h3>
<p> The knoppix CD<43> is organized somewhat like the figure below ( Correct me if I am wrong. it may<61> look different when you look at it from windows or another Linux distro)<br>
<pre>
/--demos
|--talks
|--index.html
|--autorun.bat
|--autorun.inf
|--knoppix.ico
|--KNOPPIX
|--KNOPPIX
|--boot.img
|--background.gif
|- (Some more files here)
</pre>
<p> <20>The file KNOPPIX in <20>/KNOPPIX <20>directory on the cd is approxiamtley
700MB. The file contains a <a
href="http://www.knopper.net/download/knoppix/cloop.README">compressed image
</a>of the file system. We have to modify this file alone and can leave
the rest of <20>the cd intact (unless you want to modify boot image startup
files etc).</p>
<h4> a) Copy Knoppix file system to hard disk </h4>
When Knoppix CD is booted compressed image file is mounted at /KNOPPIX
You have to copy it to your target partition.I did a<br>
# cp -Rp <20>/KNOPPIX <20><> /mnt/hda3/<2F> <br>
( -R option is for recursive copying -p is for preserving ownership time stamp etc) This places all the files you need to make a custom cd on your hard disk <20>at /mnt/hda3/KNOPPIX/ directory . Take a look at it </p>
<h4> b) Chroot </h4>
<p> <20>You have to install/uninstall software under this tree<65>( if you don't have networking copy your sources to <20>(say)<29> /mnt/hda3/KNOPPIX/root/ <20>and if you have debs copy them to<74> /mnt/hda3/KNOPPIX/var/cache/apt/archives)<br>
Now we are going to change the root of the file system to /mn/hda3/KNOPPIX <br>
#chroot /mnt/hda3/KNOPPIX </p>
<p> you will get back # prompt ( If you get /dev/null <20>permission denied message here just press control C)<br>
<20>You<6F> are at <20> / ( chrooted to /mnt/hda3/KNOPPIX) </p>
<p> Next mount the proc file system <br>
#mount -t proc /proc proc <20> <20><br>
<h4> c) Setup networking </h4>
Add to<74> /etc/resolv.conf <br>
nameserver ip-of-ur-nameserver </p>
<i> <20>( I had a curious problem /etc/resolv.conf was a symlink to /etc/dhcp/resolv.conf. Ping did not work. I removed the symlink and created a /etc/resolv.conf afresh and it worked. Make sure that you restore the symlink <20>once you are
finished) </i>
<p> Verify your ip address now with ifconfig. (It should be same as what you have out side chroot) Then try<72> ping google.com. If you<6F> can ping google.com your network setup<75> is ok under chroot.Do an apt get update<74> </p>
<h4> d) Install/Uninstall </h4>
<p> You can install /uninstall whatever software you<6F> need using apt. Since the original Cd has a lot of software installed it may not be an easy
task.The following is a partial list of packages I removed </p>
<h4><b><EFBFBD>Games</b> </h4>
falconseye-data<br>
rocks-n-diamonds<br>
amor<br>
nethack-x11<br>
gnome-games-locale<br>
xboard<br>
gnocatan-client<br>
imaze<br>
kmahjongg<br>
gnome-gnibbles<br>
freeciv-gtk<br>
ktuberling<br>
gnocatan-help<br>
ksirtet<br>
gnome-gnobots2<br>
jumpnbump<br>
ksnake<br>
xgalaga<br>
lskat<br>
katomic<br>
kshisen<br>
konquest<br>
chromium<br>
ktux<br>
moon-buggy<br>
kmoon<br>
ksame<br>
gnuchess<br>
ktron<br>
frozen-bubblekjumpingcube<br>
fortune-mod<br>
kodo<br>
gnocatan-ai<br>
gnocatan-server-console<br>
gnocatan-server-data<br>
nethack<br>
821<br>
fortunes<br>
searchandrescue<br>
xbill<br>
kspaceduel<br>
libkdegames<br>
tipptrainer-data-dexconq<br>
gcompris<br>
gnome-chess<br>
tuxracer-data<br>
abuse-frabs<br>
gnome-gnotski<br>
frotz<br>
kblackbox<br>
gnome-games<br>
gnome-gtali<br>
gnome-iagno<br>
gnome-stones<br>
gnocatan-server-gtk<br>
lxdoom-x11<br>
maelstrom<br>
kabalone<br>
gnome-gnotravex<br>
fortunes-min<br>
chromium-data<br>
kdegames<br>
pingus-data<br>
task-kde-games<br>
stax<br>
gnome-card-games<br>
xtris<br>
xtux<br>
kjezz<br>
lxdoom<br>
<h4><b>Non -free</b><br></h4>
x3270<br>
xanim festlex-oald<br>
netscape-java-477<br>
j2re1.3<br>
3270-common<br>
tgif<br>
giflib-bin<br>
frotz xfractint<br>
giflib3g communicator-smotif-477<br>
netscape-base-477<br>
maelstrom communicator-base-477<br>
gimp1.2-nonfree<br>
acroread<br>
lha<br>
unarj<br>
xsnow<br>
<h4> <b>Misc <20></b> </h4>
tetex-base <br>
tetex-extra <br>
j2re1.3 <20><br>
lyx<br>
acroread <br>
qcad<br>
rocks-n-diamonds<64><br>
kde-i18n-da <br>
kde-i18n-it <br>
kde-i18n-de<br>
kde-i18n-fr<br>
kde-i18n-ru<br>
kde-i18n-nl<br>
kde-i18n-ja<br>
kde-i18n-es<65><br>
kde-i18n-cs <br>
kde-i18n-pl <br>
kde-i18n-tr<br>
xfonts-intl-chinese<br>
kword<br>
kpresenter<br>
abiword-gtk<br>
karbon <br>
kchart<br>
kformula<br>
kivio <br>
koffice-libs <br>
kontour <br>
koshell<br>
kspread <br>
<p><EFBFBD>I copied the above list to a file ( say kicklist)
<20>then did <br>
<20><><EFBFBD> #dpkg -P `cat kicklist` <20><br>
It removed all files listed (notice the back quote
above )</p>
<p>If you are looking for big installed packages <br>
<20><><EFBFBD> <20> # <20>dpkg-awk "Status: .* installed$" -- Package Installed-Size| awk
'{print $2}' | egrep -v '^$' | xargs -n2 echo | perl -pe 's/(\S+)\s(\S+)/$2
$1/' | sort -rg<br>
<20> will list the <20>packages <20>with size in descending order.<br>
</p>
<p> Finally run deborphan to check if there are any orphaned packages<br>
#deborphan &gt; /tmp/orphanlist<br>
#dpkg -P `cat /tmp/orphanlist`<br>
# rm /tmp/orphanlist<73> </p>
<p> An alternate method is to use<73> synaptic and add/remove packages from GUI.
Synaptic is good graphical front end to apt </p>
<p> For this do <br>
# apt-get install synaptic <br>
You have to export DISPLAY environment variable for synaptic to work properly <br>
#DISPLAY=myip:0.0 <20> <20>( replace my ip with your actual IP) <br>
#export DISPLAY <br>
#synaptic </p>
<p> It will start synaptic <br>
Enjoy apt through synaptic
</p>
<p> Once you are finished with synaptic you can re master the cd. If you are <20>working from a hard disk install of knoppix <20>and want synaptic to work, look in/etc/X11/xinit/xserverrc <20>and see that -nolisten tcp is removed.Also do xhost + as a non root user) </p>
<p> Unmount proc <20>( This is very <b>important</b>) <br>
<20>#umount /proc </p>
<p>Press control D to leave chrooted environment<p>
<h3><b>Further Customization</b> <20></h3>
<b> 1<> Installing applications compiled from source </b>
<EFBFBD> <p><EFBFBD>Download the software source inside chroot environment. Compile and install as usual . If it is an X11 application export display before you test<br>
I use checkininstall <a href="asic-linux.com.mx/%7Eizto/checkinstall/">asic-linux.com.mx/~izto/checkinstall/</a> to install and maintain home brew debs<br>
Remember to remove the sources once you are finished (it will take up space on your CD). </p>
<b> 2) <20>Changing user settings</b>
<EFBFBD> <20><p> It is possible to set password for users. Just set it under chrooted
environment </p>
<b> 3) Changing backgrounds </b>
<p> /usr/local/lib/knoppix.gif is the default background image in X </p>
<b> 4) Modifying Boot Screen <20></b>
<p><EFBFBD>The Knoppix Cd uses <a href="http://syslinux.zytor.com/">syslinux</a> to boot. If you want to change the boot screen/messages do the
following. Make a temporary directory on your hard disk (I did mkdir
/mnt/hda3/image)<br>
<20>Copy the boot.img<6D> file from <20>Knoppix <20>directory of your knoppix cd<63><br>
<20><><EFBFBD> <20><> #cp /KNOPPIX/boot.img /mnt/hda3<br>
<20>Mount the image as follows<br>
<20> <20> <20> #<23>mount -t msdos -o loop <20> /mnt/hda3/boot.img <20>/mnt/hda3/image<br>
<20> Now look in the image directory you created. There are a number of interesting <20>files in this directory </p>
<20><> <20>a) Boot logo <br>
logo.16 is the image displayed on boot screen. <20>It is
encoded in a special format. For replacing it grab a 640*400 <20>16 color image. I downloaded an image from gnu.org.<2E>Convert the image to a png file ( call it logo.png)<29> <br>
<pre>
<20><> #pngtopnm &lt;logo.png &gt;logo.pnm<br>
<20> <20><><EFBFBD> #ppmtolss16 &lt;logo.pnm &gt;logo.16<br>
<20><><EFBFBD> # cp logo.16 /mnt/hda3/image/logo.16
</pre>
<p><EFBFBD> (Keep the size of the final log.16 around 50 k). Unmount image directory. Copy the boot.img to a floppy<br>
<20><> #dd if=boot.img of=/dev/fd0<br>
Boot the machine from the floppy you have made.
If it boots up properly you are done </p>
<20>b) <20>syslinux.cfg <br>
<EFBFBD> By modifying syslinux.cfg you can change a number of parameters passwd on to the kernel. Read the man pages of syslinux for more details<br><EFBFBD>
<b> 5)Modifying<6E> kernel <20>( ****Untested<65> ****)</b>
<EFBFBD><EFBFBD> <20> <20> <20><p> Make a <20>new custom kernel using kernel package . Keep the kernal
size small. Copy the kernal to and modules to boot.img file. replace /lib/modules/2.4.19-xfs<66> with <20>modules of your new kernel<br>
<20><> Replace files in<69> /boot <20>
</p>
<b> 6)Changing default GUI to Gnome/ icewm </b></br>
<20>Changing default gui to something else is quite easy<br>
<20> Under the chrooted environment <20>open the file <br>
<20><><EFBFBD><EFBFBD> /etc/init.d/knoppix-autoconfig </p>
<p> <20> Look for the following lines<br>
---------------------------------------<br>
<p>#Also read desired desktop, if any </p>
<p>DESKTOP="$(getbootparam desktop 2&gt;/dev/null)"</p>
<p># Allow only supported windowmanagers </p>
<p>case "$DESKTOP" in gnome|kde|larswm|xfce|windowmaker|wmaker|icewm|fluxbox|twm)
;; *)
</p>
<p><EFBFBD> DESKTOP="KDE"; ;; esac<br>
-------- <20> <20> <20>^^ <20> --------------------------------------<br>
</p>
<p><EFBFBD> Change the KDE above to gnome and that is all<6C> </p>
<b> <20>7) <20>Remove any temporary files<65> </b><br>
<20><><EFBFBD> a) <20> Look in /root <20>for hidden files such as .bash_history .viminfo<br>
<20> <20> b) <20> Nuke all deb files in <20>/var/cache/apt/archives<65><br>
<20><><EFBFBD> <20>c) <20>Run the knoppix.clean script <20> ( Be careful and run
it only from <20>chrooted environmant) </p>
<p><EFBFBD>(* link to the script goes here*) <20><> <20><><EFBFBD></p>
<h3><u><b>Re mastering the CD</b></u> </h3>
<b>a)Make an ISO image</b>
<p> <20>1)<29> Make a new directory on /mnt/hda3<br>
<20><> I called it NewCd<br>
<20><> <20>Copy Everything except Compressed image file(KNOPPIX) from
knoppix cd (look at /cdrom). You can safely delete the directories demos and <20>talks <br>
<EFBFBD> 2) Create the compressed Image<br>
<20> <20>#mkisofs -R <20> /mnt/hda3/KNOPPIX<49> |<7C> create_compressed_fs - <20> 65536 <20>&gt; /mnt/hda3/NewCD/KNOPPIX/KNOPPIX <20><></p>
<p><EFBFBD>3) Recreate the bootable CD <br>
<20>#cd /mnt/hda3 </p>
<p><EFBFBD>#mkisofs -r -J -b KNOPPIX/boot.img -c KNOPPIX/boot.cat <20> -o myknoppix.iso <20>NewCd </p>
<b>b)Testing the image </b>
<p> Create a boot floppy <br>
# dd if=/mnt/hda3/KNOPPIX/boot.img of=/dev/fd0<64> <br>
Copy the compressed file you created to a directory /KNOPPIX on any partition. The boot floppy i will look for /KNOPPIX/KNOPPIX<49>on hard disk partitions.This makes your testing easy. Once you are satisfied with your image burn
itto a CD <20> </p>
<h3><b>FAQ </b> </h3>
<p> <20>1) How do I <20>stop konquerer at startup<br>
<20> To stop konquerers you <20>have to modify<br>
<EFBFBD> <20> <20> <20> /etc/X11/Xsession.d/45xsession<br>
<EFBFBD><EFBFBD><EFBFBD> Look for the following lines </p>
<p>-------------------------------------------<br>
if [ -e "$INDEXFILE" ]; then<br>
cat &gt;&gt; $HOME/Desktop/KNOPPIX.desktop &lt;&lt;EOF<br>
[Desktop Entry]<br>
Name=KNOPPIX<br>
Exec=kfmclient openProfile webbrowsing $INDEXFILE<br>
Type=Application<br>
Icon=html<br>
Terminal=0<br>
EOF<br>
ln $HOME/Desktop/KNOPPIX.desktop $HOME/.kde/Autostart/showindex.desktop<br>
fi</p>
-----------------------------------------<2D><br>
<p> <20>It makes an autostart file. Comment it <20>out </p>
<p> 2) I have booted knoppix cd and mounted a hard disk how do i copy something via scp to the hard disk<br>
<20><><EFBFBD> <20> Open a <20>shell <br>
<20><><EFBFBD> <20> set a password for user knoppix<br>
<20><><EFBFBD> <20> start ssh <20>(/etc/init.d/ssh start)<br>
<20><><EFBFBD> <20> Then copy with scp</p>
<p><EFBFBD>3 I am at $ prompt I want to su<br>
<20><><EFBFBD> <20><>Do <20>sudo <20>passwd <br>
<20><><EFBFBD> <20> set a <20>root password<br>
<20><><EFBFBD> <20><>then su
</p>
<p><EFBFBD>4) default text mode boots up in frame buffer and characters are very small
how do I fix it<br>
<20> <20> <20>Mount boot.img<br>
<20><><EFBFBD> <20>look for syslinux.cfg<br>
<20><><EFBFBD> <20>under <20>Default <20>vmlinuz<br>
<20><><EFBFBD> <20>change VGA=791 to VGA=normal </p>
<p> 5 )My keyboard lay out is<69> German. <20>How do i change it to English<br>
<20>Open KDE control center select system -&gt;keyboard and change
it to US English </p>
<h3> References</h3>
<20> <20> <20> I have adapted lot of material from the following links. Also #knoppix
on irc.freenode.net is a good source of information <br>
1)<a href=http://home.bellsouth.net/p/PWP-tech2k>Tech2k home page </a><br>
<b>Ken Burk</b> helped me a lot on irc to improve this document . His site has excellent information which you can always rely on.<2E>His kix remastering page is also very good<br>
2) <a href=http://knoppix.net> Knoppix.net </a><br>
<EFBFBD> The unofficial knoppix site is a great <20>source <20>of information. Lots of new stuff regarding re-mastering appear there regularly <br>
3) <a href= http://www.linuxtag.org/forum/> Knoppix forum </a> at linuxtag<br>
This site mixture of German and English . Very good source
on Knoppix </p>
<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I work as consultant information technology at the Kerala Legislative
Assembly Trivandrum India. I have been hooked on Linux since 1996. I have a
Masters in Computer Science from Cochin University. I am interested in all
sorts of operating systems. In my free time I love to listen to Indian
classical music.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Sunil Thomas Thonikuzhiyil.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 87 of <i>Linux Gazette</i>, February 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<!--startcut ==========================================================-->
<CENTER>
<!-- *** BEGIN navbar *** -->
<IMG ALT="" SRC="../gx/navbar/left.jpg" WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="bottom"><A HREF="ramankutty.html"><IMG ALT="[ Prev ]" SRC="../gx/navbar/prev.jpg" WIDTH="16" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="index.html"><IMG ALT="[ Table of Contents ]" SRC="../gx/navbar/toc.jpg" WIDTH="220" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../index.html"><IMG ALT="[ Front Page ]" SRC="../gx/navbar/frontpage.jpg" WIDTH="137" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue87/sunil.html"><IMG ALT="[ Talkback ]" SRC="../gx/navbar/talkback.jpg" WIDTH="121" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../lg_faq.html"><IMG ALT="[ FAQ ]" SRC="./../gx/navbar/faq.jpg"WIDTH="62" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="vinayak.html"><IMG ALT="[ Next ]" SRC="../gx/navbar/next.jpg" WIDTH="15" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><IMG ALT="" SRC="../gx/navbar/right.jpg" WIDTH="15" HEIGHT="45" ALIGN="bottom">
<!-- *** END navbar *** -->
</CENTER>
</BODY></HTML>
<!--endcut ============================================================-->