<?xml version="1.0"?>
<article id="index"><artheader><title>GNU/Linux Post-Installation Checklist</title><subtitle>Defying Murphy's Laws</subtitle><author><firstname></firstname><surname></surname><affiliation><orgname>                                <ulink url="http://members.tripod.com/~algolog/index.htm">Algologic Research ent Solutions</ulink>
                                </orgname><address format="linespecific">           		         <email>algolog (at) hd1.vsnl.net.in</email>
        		        </address></affiliation></author><revhistory><revision><revnumber>1.0</revnumber><date>2001-06-12</date><authorinitials></authorinitials><revremark>		Initial release using docbook sgml.
		</revremark></revision></revhistory><abstract><para>         This document provides a checklist for steps you should take
         immediately after installing GNU/Linux. These steps will save you
         a lot of bother if you encounter any problems later on. This
         document also includes a shell script for automating the post
         installation process. 
         </para></abstract></artheader><sect1 id="intro"><title>Introduction</title><para>     You have just completed installing your own Linux system. You
     have just made an upgrade to your existing Linux system. You are
     happy with the first few checkouts and usage experience.  You
     want to make sure you will enjoy this system in spite of any
     damage which may occur later because of any unexpected entfaux
     pasent.
   </para><para>     It is a good idea to keep a snapshot of the new system, so that
     you can be assured that in the event of any misfortune with your
     Linux installation, you can always recover without any permanent
     damage. This checklist will help you with precautionary steps
     you must take, as soon as you complete installation of Linux. It
     is a sequel to the <ulink url="http://www.linuxdoc.org/HOWTO/mini/Pre-Installation-Checklist/">GNU/Linux 
     pre-installation checklist</ulink>, and a companion to the official
     <ulink url="http://www.linuxdoc.org/HOWTO/Installation-HOWTO/">Linux Installation HOWTO</ulink>.
     This checklist also contains a <xref linkend="shellscript"></xref> which will 
     automate the process of making a snapshot of your system.
   </para><sect2 id="copyright"><title>Copyright Information</title><para>	This document is copyrighted (c) 2001
        <ulink url="http://members.tripod.com/~algolog/index.htm">Algologic Research ent Solutions</ulink>
        and is distributed under the terms of the Linux Documentation Project
	(LDP) license, stated below.
	</para><para>	Unless otherwise stated, Linux HOWTO documents are
	copyrighted by their respective authors. Linux HOWTO documents may
	be reproduced and distributed in whole or in part, in any medium
	physical or electronic, as long as this copyright notice is
	retained on all copies. Commercial redistribution is allowed and
	encouraged; however, the author would like to be notified of any
	such distributions.
	</para><para>	All translations, derivative works, or aggregate works
	incorporating any Linux HOWTO documents must be covered under this
	copyright notice. That is, you may not produce a derivative work
	from a HOWTO and impose additional restrictions on its
	distribution. Exceptions to these rules may be granted under
	certain conditions; please contact the Linux HOWTO coordinator at
	the address given below.
	</para><para>	In short, we wish to promote dissemination of this
	information through as many channels as possible. However, we do
	wish to retain copyright on the HOWTO documents, and would like to
	be notified of any plans to redistribute the HOWTOs.
	</para><para>	If you have any questions, please contact
	<email>linux-howto@metalab.unc.edu</email>
	</para></sect2><sect2 id="disclaimer"><title>Disclaimer</title><para>	No liability for the contents of this documents can be accepted.
	Use the concepts, examples and other content at your own risk.
	As this is a new edition of this document, there may be errors
	and inaccuracies, that may of course be damaging to your system.
	Proceed with caution, and although this is highly unlikely,
	the author(s) do not take any responsibility for that.
	</para><para>	All copyrights are held by their respective owners, unless
	specifically noted otherwise.  Use of a term in this document
	should not be regarded as affecting the validity of any trademark
	or service mark.
	</para><para>	Naming of particular products or brands should not be seen
	as endorsements.
	</para><para>	You are strongly recommended to make a backup of your system
	before major installation and continue to do so at regular intervals.
	</para></sect2><sect2 id="feedback"><title>Feedback</title><para>	 This document and the <xref linkend="shellscript"></xref> are
	 continuously updated.  Make sure you are referring to the
	 latest version of this document, by visiting the 
	 <ulink url="http://algolog.tripod.com/postlnx.htm">Linux
	 post-install site</ulink> frequently.
        Email <email>algolog@hd1.vsnl.net.in</email>  with your
        feedback and suggestions. 
        </para><note><title>Note</title><para>     We do NOT answer general queries on Linux. If you want
     professional (PAID) help with Linux -- <ulink url="http://algolog.tripod.com/tools.htm#linux">ask Algologic</ulink>. You may
     also visit our home page :  <ulink url="http://algolog.tripod.com/">Algologic Research ent Solutions</ulink>.
        </para></note></sect2></sect1><sect1 id="steps"><title>Post-Installation Steps</title><para>To enjoy your new Linux installation forever without any worries, it is
important to take a few simple precautions. You must do these as soon
as you complete installing Linux on your machine for the first time.</para><orderedlist numeration="arabic" inheritnum="ignore" continuation="restarts"><listitem><para>Create a
<ulink url="http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/">boot 
diskette</ulink> and a <emphasis>rescue diskette</emphasis>. 
Utilities for creating these diskettes are available along with
your Linux distribution.</para></listitem><listitem><para>If you are the paranoid type (like me), you
can make two copies of each of these diskettes. Diskettes are
notorious for failing when they are most needed.</para></listitem><listitem><para><emphasis>Test out your boot diskette</emphasis>.
Make sure you can boot into Linux using the boot diskette. Remember
Murphy's Laws may strike at you just when you least expect.</para></listitem><listitem><para>Checkout thoroughly your new system. Try all major packages.</para></listitem><listitem><para>Try out the X windows system, and the desktop, and
the windows manager, if you have installed these.</para></listitem><listitem><para>Try out the connection to your LAN, and to the Internet.</para></listitem><listitem><para>Create at least one entnon-rootent account, for
testing and debugging your installation. Perform ALL the above
checkouts once again, using the non-root account you created.</para></listitem><listitem><para>Join a local Linux Users Group (LUG). You must
<ulink url="http://www.linuxlinks.com/UserGroups/">find out if there is a LUG close by</ulink>. If there is none, start an
informal LUG yourself, in your neighbourhood, your campus, your city,
or your town.</para></listitem><listitem><para>Join one or more 
<ulink url="http://oslab.snu.ac.kr/~djshin/linux/mail-list/index.shtml">mailing
lists for Linux</ulink> updates and news. There are literally hundreds of
them.</para></listitem><listitem><para> Register yourself and your machine in the worldwide
<ulink url="http://counter.li.org/">Linux Users Counter</ulink>.</para></listitem><listitem><para><emphasis>And finally...</emphasis>Download the 
<xref linkend="shellscript"></xref> and run it. Make a safe copy (on a removable
medium) of the directory:  <filename moreinfo="none">/root/postinfo</filename> which
the script will create. You may also like to make a printout of the
summary report <filename moreinfo="none">/root/postinfo/summary</filename> created by
the shell script.</para></listitem><listitem><para>You must run this shell script: as soon as you have
installed Linux for the first time, and after every major revision or
upgrade to your Linux system. You can also set up the script as a
cron job, so that it runs itself periodically and automatically. This
will avoid you a lost of hassles later, in case something gets messed
up later.</para></listitem></orderedlist></sect1><sect1 id="shellscript"><title>Shell script</title><para>The shell script (shivalik Ver. 1.0) is a convenient way to make
backups of essential files and information. After downloading the
script:</para><itemizedlist><listitem><para>Make sure that you have logged in as entrootent</para></listitem><listitem><para>Save the script in a directory with entrootent permissions, 
say <filename moreinfo="none">/root/myscript</filename> </para></listitem><listitem><para>Change to that directory i.e. <command moreinfo="none">cd /root/myscript</command>
use gunzip to unzip the script i.e <command moreinfo="none">gunzip ./shivalik.gz</command></para></listitem><listitem><para><note><title>IMPORTANT</title><para>You must read the warning given at the end of the
script. Proceed with the next steps, only if you agree to the
conditions specified in the warning...</para></note></para></listitem><listitem><para>To execute the script: You must make the script executable (by root
only) <command moreinfo="none">chmod 700 ./shivalik</command></para></listitem><listitem><para>Verify that the paths of the various files which are to be saved, are
correct and conform to your installation.</para></listitem><listitem><para>You can execute the script correctly only if you are entrootent (many
of the files being saved need root permissions).</para></listitem></itemizedlist><para>     Now you can execute (run) the above script (remember you must be
     entrootent, to do this) -- type <command moreinfo="none">./shivalik</command></para><para>     The script is profusely documented. It does not modify (or
     delete) any of your files or directories. It creates a
     well-protected backup of some essential files and information.
     The entire script is available for you to browse and understand
     its working. Feel free to go through the script and add any
     additional features, or files which you wish to be backed up.
     You may also send your feedback to the author of this
     script (<email>algolog@hd1.vsnl.net.in</email>).</para><para>     Remember, the <command moreinfo="none">shivalik</command> script is not a tool
     for complete backup and recovery. Ideally, the best thing to do
     would be to make a verbatim copy of your entire Linux
     installation along with all files and directories. This is not
     always possible, necessary, or advisable. The next best thing
     would be to take a backup of the most essential information and
     files. The <command moreinfo="none">shivalik</command> script achieves this for
     you. The script creates a directory called
     <filename moreinfo="none">/root/postinfo/</filename>, and stores all essential
     information (and files) there. To be absolutely prepared for any
     eventuality, you must copy the entire
     <filename moreinfo="none">/root/postinfo/</filename> on a removable medium, as
     soon as the script is executed.</para><para><emphasis>Recovery and Repair:</emphasis> In the
     event of any problems later, you can reconstruct the
     damaged files by copying the files you have backed up in the
     <filename moreinfo="none">/root/postinfo/</filename> directory. It is as simple
     as that.</para><para>     The structure of the <filename moreinfo="none">/root/postinfo/</filename> directory,
     and files found within, will be as follows:</para><variablelist><varlistentry><term><filename moreinfo="none">/root/postinfo/summary</filename></term><listitem><para>Contains a summary report of the status of your system (memory,
partitions, mount points, disk usage). This file also has the list of
files which have been saved. It also contains admin info like date
and time of backup, shivalik version number etc.</para></listitem></varlistentry><varlistentry><term><filename moreinfo="none">/root/postinfo/postinfo.tar.gz</filename></term><listitem><para>Contains a copy of the earlier postinfo (if any).  This is a fall
back to a fall back!</para></listitem></varlistentry><varlistentry><term><filename moreinfo="none">/root/postinfo/snapshot.gz</filename></term><listitem><para>Contains a gzipped structured listing of <emphasis>ALL</emphasis>
files and directories of your Linux system (the directories "tree").
You can unzip this file and use any plain text editor to know the
location of any file. Of course, you cannot retrieve the contents of
that file unless you had saved it explicitly elsewhere.</para></listitem></varlistentry><varlistentry><term><filename moreinfo="none">/root/postinfo/shivalik</filename></term><listitem><para>This is a copy of the shivalik script which was used for making the
post install backup. At the time of recovery after an incident, you
can always examine this script to know how the backup was done
earlier. You will always have a consistent copy of the script and the
files created by the script.</para></listitem></varlistentry><varlistentry><term><filename moreinfo="none">/root/postinfo/etcfiles/</filename></term><listitem><para>This <emphasis>subdirectory</emphasis> contains a copy of many
essential files from the <filename moreinfo="none">/etc/</filename> directory of your
Linux installation. It also contains copies of the various
configuration files stored in the <filename moreinfo="none">/etc/</filename>
directory.</para></listitem></varlistentry><varlistentry><term><filename moreinfo="none">/root/postinfo/otherfiles/</filename></term><listitem><para>This <emphasis>subdirectory</emphasis> contains a copy of some
essential files (those which are not in the
<filename moreinfo="none">/etc/</filename> directory) of your Linux installation. If
you want, you can add any other files here, and get it saved
automatically with others.</para></listitem></varlistentry></variablelist><sect2 id="script"><title>The script...</title><para><programlisting format="linespecific">#-----------------------------------------------
#           shivalik  \(Ver. 1.0\)
#Please read the WARNING section of this script first

#This script collects post installation information
#this can also be run occasionally to collect all useful
#information about your Linux installation, in one place
#The output will be written to /root/postinfo/
#a summary report will be written in /root/postinfo/summary

#For usage and related information, please consult:
#http://algolog.tripod.com/postlnx.htm
# ----------------------------------------------

clear
echo
echo "-----------------------------------------------------------"
echo This is the output of Partha\'s shivalik script \(Ver.1.0\)
echo You must be \"root\", for this script to work correctly
echo You must also read and accept the terms and warnings given
echo in the WARNINGS section of this script
echo "-----------------------------------------------------------"
echo
echo "### STEP 0 ### Preparation work"
echo First we create the /root/postinfo/ directory if does not exist already
test ! -d /root/postinfo entent mkdir /root/postinfo

echo Saving current version of all postinfo files
echo But first we delete the earlier version i.e. current-1 version
test -e /root/postinfo/oldpostinfo* entent  rm /root/postinfo/oldpostinfo.tar.gz
#the oldpostinfo file is made temporarily in /root
#it will be moved to /root/postinfo
tar -zcvf /root/oldpostinfo.tar.gz /root/postinfo/*

#check if above tar succeeded
if
test -s /root/oldpostinfo.tar.gz
then 
echo old postinfo saved in /root/oldpostinfo.tar.gz
ls -l /root/oldpostinfo*
else
echo Could not save oldpostinfo
echo Abandoning shivalik script
exit
fi


#now delete all the current postinfofiles
rm -rf /root/postinfo/*
#and start a new summary file
echo  shivalik \(Ver. 1.0\) ent /root/postinfo/summary
echo -n "Report created on: " entent /root/postinfo/summary
date -R entent /root/postinfo/summary
echo And now, move the oldpostinfo file to /root/postinfo/ directory
mv /root/oldpostinfo.tar.gz /root/postinfo
#

#copy the shivalik script
echo charity begins at home
echo We make a copy of the shivalik script
echo We make a copy of the shivalik script entent /root/postinfo/summary
echo in /root/postinfo/ entent /root/postinfo/summary
cp ./shivalik /root/postinfo/shivalik

#taking stock
echo
echo Contents of /root/postinfo at the end of STEP-0
ls -AlR /root/postinfo
echo End of "### STEP 0 ###
echo
#
#
echo
echo "### STEP 1 ### Make a snapshot of the system"
echo entent /root/postinfo/summary
echo "### STEP 1 ### A snapshot of all the files and directories" entent  /root/postinfo/summary
echo The first step is to take stock of your computer contents
echo This is going to take several minutes
echo So, go and fetch your coffee mug !
ls -AlRH / entent /root/postinfo/snapshot
rm -f /root/postinfo/snapshot.gz
gzip /root/postinfo/snapshot
echo snapshot created
echo An exhaustive listing of all files has been made and entent /root/postinfo/summary
echo stored in /root/postinfo/snapshot.gz entent /root/postinfo/summary
ls -l /root/postinfo/snapshot.gz entent /root/postinfo/summary

# taking stock at the end of this step
echo
echo Contents of /root/postinfo at the end of this STEP
ls -l /root/postinfo
echo End of "### STEP 1 ###
echo
#
#
echo

echo "### STEP 2 ### Vital statistics"
echo entent /root/postinfo/summary
echo "### STEP 2 ### Vital statistics" entent /root/postinfo/summary

echo Collecting vital statistics

echo .....about memory
echo "---- cat /proc/meminfo ---------" entent /root/postinfo/summary
cat /proc/meminfo entent /root/postinfo/summary

echo .....about partitions and mountpoints
echo "---- cat /proc/partitions---------" entent /root/postinfo/summary
cat /proc/partitions entent /root/postinfo/summary

echo .....about diskspace used
echo "---- df ---------" entent /root/postinfo/summary
df entent /root/postinfo/summary

echo .....about modules
echo "---- cat /proc/modules ---------" entent /root/postinfo/summary
cat /proc/modules entent /root/postinfo/summary

# taking stock at the end of this step

echo
echo Contents of /root/postinfo at the end of STEP-2
ls -AlR /root/postinfo
echo End of "### STEP 2 ###
echo
#
#
echo
echo "### STEP 3 ### Now we save some important files from /etc "
echo This section may need some customising, depending on the
echo installation you have done, and the distribution you have used, 
echo and the options you have chosen during installation.

echo entent /root/postinfo/summary
echo "### STEP 3 ### Now we save some important files from /etc" entent  /root/postinfo/summary
test ! -d /root/postinfo/etcfiles entent mkdir /root/postinfo/etcfiles

echo ..... saving XF86Config -- your XWindows config file
cp /etc/XF86Config /root/postinfo/etcfiles
echo "cp /etc/XF86Config /root/postinfo/" entent /root/postinfo/summary

echo ..... saving /etc/fstab file
cp /etc/fstab  /root/postinfo/etcfiles
echo "cp /etc/fstab /root/postinfo/" entent /root/postinfo/summary

echo ..... saving /etc/profile file
cp /etc/profile  /root/postinfo/etcfiles
echo "cp /etc/profile /root/postinfo/" entent /root/postinfo/summary

echo ..... saving /etc/profile.local file
cp /etc/profile.local  /root/postinfo/etcfiles
echo "cp /etc/profile.local /root/postinfo/" entent /root/postinfo/summary

echo ".... saving /etc/*conf files"
cp /etc/*conf /root/postinfo/etcfiles

echo ".... saving /etc/*config files"
cp /etc/*config /root/postinfo/etcfiles

echo the following files from /etc have been copied to  /root/postinfo/etcfiles entent /root/postinfo/summary
echo "/etc/*conf" entent /root/postinfo/summary
echo "/etc/*config" entent /root/postinfo/summary

# taking stock at the end of this step
echo
echo Contents of /root/postinfo at the end of this STEP-3
ls -AlR /root/postinfo
echo End of "### STEP 3 ###
echo
#
#

echo
echo "### STEP 4 ### Now we save some other important files"
echo This section may need some customising, depending on the
echo installation you have done, and the distribution you have used,
echo and the options you have chosen for the installation
echo The following stuff is  designed for SuSe  7.1

echo "### STEP 4 ### Now we save some other important files" entent  /root/postinfo/summary
echo in /root/postinfo/otherfiles entent /root/postinfo/summary
echo You can add any other files to backed up, here
test ! -d /root/postinfo/otherfiles entent mkdir /root/postinfo/otherfiles
ls -l /root/postinfo/

echo ..... saving /etc/init.d/boot.local --
cp /etc/init.d/boot.local /root/postinfo/otherfiles
echo "cp /etc/init.d/boot.local /root/postinfo/otherfiles" entent  /root/postinfo/summary

echo ..... saving /etc/init.d/halt.local --
cp /etc/init.d/halt.local /root/postinfo/otherfiles
echo "cp /etc/init.d/halt.local /root/postinfo/otherfiles" entent  /root/postinfo/summary

# taking stock at the end of this step
echo
echo Contents of /root/postinfo at the end of this STEP-4
ls -AlR /root/postinfo
echo End of "### STEP 4 ###
echo

echo
echo "### STEP 999 ### Wrap up, clean up"
echo entent /root/postinfo/summary

echo "### STEP 999 ### Wrap up, clean up, sum up" entent  /root/postinfo/summary
echo summing up, cleaning up
# for security reasons we make /root/postinfo inaccessible to
# and invisible to non-root
chmod 700 /root/postinfo
chmod 700 /root/postinfo/etcfiles
chmod 700 /root/postinfo/otherfiles
chmod 700 /root/postinfo/*
chmod 700 /root/postinfo/etcfiles/*
chmod 700 /root/postinfo/otherfiles/*
echo This is the contents of /root/postinfo entent /root/postinfo/summary
ls -AlR /root/postinfo entent /root/postinfo/summary
echo "###### THE END #####" entent /root/postinfo/summary



# taking stock at the end of this step
echo
echo Contents of /root/postinfo at the end of this STEP-999
ls -AlR /root/postinfo
echo End of "### STEP 999 ###"
echo
echo "###### THE END #####"
echo IMPORTANT: You must now copy all the files in /root/postinfo
echo to a safe location, preferably on a different drive or on
echo a removable backup medium.
echo " "
echo You will find a summary report of this procedure, in
echo /root/postinfo/summary
echo You will find the earlier version of summary \(if any\)
echo inside /root/postinfo/oldpostinfo.tar.gz
echo " "

#
echo "
#---------------------------------------------------------
#               WARNING  WARNING WARNING
#                shivalik (ver. 1.0)
# This script is being made accessible to you without any
# warranties or assurances about its performance or
# usability for any purpose. Be informed that you are using
# this script out of your own initiative and willingness,
# and at your own risk and peril.
# You will find the latest version of this script, and related
# information at: http://algolog.tripod.com/postlnx.htm
# Copyrights and all rights reserved by: 
# Dr. S. Parthasarathy (algolog@hd1.vsnl.net.in)
#--------------------------------------------------------
"</programlisting></para></sect2></sect1></article>

