GNU/Linux Post-Installation Checklist

Defying Murphy's Laws


[http://members.tripod.com/~algolog/index.htm] Algologic Research & Solutions

                     algolog (at) hd1.vsnl.net.in
                 
Revision History                                                             
Revision 1.0              2001-06-12               Revised by:               
Initial release using docbook sgml.                                          


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.

-----------------------------------------------------------------------------
Table of Contents
1. Introduction
    1.1. Copyright Information
    1.2. Disclaimer
    1.3. Feedback
   
   
2. Post-Installation Steps
3. Shell script
    3.1. The script...
   
   

1. Introduction

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
"faux pas".

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 GNU/Linux pre-installation checklist, and a
companion to the official [http://www.linuxdoc.org/HOWTO/Installation-HOWTO/]
Linux Installation HOWTO. This checklist also contains a Section 3 which will
automate the process of making a snapshot of your system.
-----------------------------------------------------------------------------

1.1. Copyright Information

This document is copyrighted (c) 2001 [http://members.tripod.com/~algolog/
index.htm] Algologic Research & Solutions and is distributed under the terms
of the Linux Documentation Project (LDP) license, stated below.

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.

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.

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.

If you have any questions, please contact <linux-howto@metalab.unc.edu>
-----------------------------------------------------------------------------

1.2. Disclaimer

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.

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.

Naming of particular products or brands should not be seen as endorsements.

You are strongly recommended to make a backup of your system before major
installation and continue to do so at regular intervals.
-----------------------------------------------------------------------------

1.3. Feedback

This document and the Section 3 are continuously updated. Make sure you are
referring to the latest version of this document, by visiting the Linux
post-install site frequently. Email <algolog@hd1.vsnl.net.in> with your
feedback and suggestions.

   
    Note: We do NOT answer general queries on Linux. If you want professional
    (PAID) help with Linux -- [http://algolog.tripod.com/tools.htm#linux] ask
    Algologic. You may also visit our home page : [http://algolog.tripod.com
    /] Algologic Research & Solutions.
   
-----------------------------------------------------------------------------
2. Post-Installation Steps

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.

 1. Create a boot diskette and a rescue diskette. Utilities for creating
    these diskettes are available along with your Linux distribution.
   
 2. 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.
   
 3. Test out your boot diskette. Make sure you can boot into Linux using the
    boot diskette. Remember Murphy's Laws may strike at you just when you
    least expect.
   
 4. Checkout thoroughly your new system. Try all major packages.
   
 5. Try out the X windows system, and the desktop, and the windows manager,
    if you have installed these.
   
 6. Try out the connection to your LAN, and to the Internet.
   
 7. Create at least one "non-root" account, for testing and debugging your
    installation. Perform ALL the above checkouts once again, using the
    non-root account you created.
   
 8. Join a local Linux Users Group (LUG). You must [http://www.linuxlinks.com
    /UserGroups/] find out if there is a LUG close by. If there is none,
    start an informal LUG yourself, in your neighbourhood, your campus, your
    city, or your town.
   
 9. Join one or more mailing lists for Linux updates and news. There are
    literally hundreds of them.
   
10. Register yourself and your machine in the worldwide [http://
    counter.li.org/] Linux Users Counter.
   
11. And finally...Download the Section 3 and run it. Make a safe copy (on a
    removable medium) of the directory: /root/postinfo which the script will
    create. You may also like to make a printout of the summary report /root/
    postinfo/summary created by the shell script.
   
12. 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.
   

-----------------------------------------------------------------------------
3. Shell script

The shell script (shivalik Ver. 1.0) is a convenient way to make backups of
essential files and information. After downloading the script:

  * Make sure that you have logged in as "root"
   
  * Save the script in a directory with "root" permissions, say /root/
    myscript
   
  * Change to that directory i.e. cd /root/myscript use gunzip to unzip the
    script i.e gunzip ./shivalik.gz
   
  * 
        IMPORTANT: 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...
       
   
  * To execute the script: You must make the script executable (by root only)
    chmod 700 ./shivalik
   
  * Verify that the paths of the various files which are to be saved, are
    correct and conform to your installation.
   
  * You can execute the script correctly only if you are "root" (many of the
    files being saved need root permissions).
   

Now you can execute (run) the above script (remember you must be "root", to
do this) -- type ./shivalik

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 (<
algolog@hd1.vsnl.net.in>).

Remember, the shivalik 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 shivalik script
achieves this for you. The script creates a directory called /root/postinfo/,
and stores all essential information (and files) there. To be absolutely
prepared for any eventuality, you must copy the entire /root/postinfo/ on a
removable medium, as soon as the script is executed.

Recovery and Repair: In the event of any problems later, you can reconstruct
the damaged files by copying the files you have backed up in the /root/
postinfo/ directory. It is as simple as that.

The structure of the /root/postinfo/ directory, and files found within, will
be as follows:

/root/postinfo/summary
    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.
   
/root/postinfo/postinfo.tar.gz
    Contains a copy of the earlier postinfo (if any). This is a fall back to
    a fall back!
   
/root/postinfo/snapshot.gz
    Contains a gzipped structured listing of ALL 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.
   
/root/postinfo/shivalik
    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.
   
/root/postinfo/etcfiles/
    This subdirectory contains a copy of many essential files from the /etc/
    directory of your Linux installation. It also contains copies of the
    various configuration files stored in the /etc/ directory.
   
/root/postinfo/otherfiles/
    This subdirectory contains a copy of some essential files (those which
    are not in the /etc/ directory) of your Linux installation. If you want,
    you can add any other files here, and get it saved automatically with
    others.
   

-----------------------------------------------------------------------------
3.1. The script...

#-----------------------------------------------                                                          
#           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 && 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* &&  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\) > /root/postinfo/summary                                                      
echo -n "Report created on: " >> /root/postinfo/summary                                                   
date -R >> /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 >> /root/postinfo/summary                                      
echo in /root/postinfo/ >> /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 >> /root/postinfo/summary                                                                            
echo "### STEP 1 ### A snapshot of all the files and directories" >>  /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 / >> /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 >> /root/postinfo/summary                       
echo stored in /root/postinfo/snapshot.gz >> /root/postinfo/summary                                       
ls -l /root/postinfo/snapshot.gz >> /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 >> /root/postinfo/summary                                                                            
echo "### STEP 2 ### Vital statistics" >> /root/postinfo/summary                                          
                                                                                                          
echo Collecting vital statistics                                                                          
                                                                                                          
echo .....about memory                                                                                    
echo "---- cat /proc/meminfo ---------" >> /root/postinfo/summary                                         
cat /proc/meminfo >> /root/postinfo/summary                                                               
                                                                                                          
echo .....about partitions and mountpoints                                                                
echo "---- cat /proc/partitions---------" >> /root/postinfo/summary                                       
cat /proc/partitions >> /root/postinfo/summary                                                            
                                                                                                          
echo .....about diskspace used                                                                            
echo "---- df ---------" >> /root/postinfo/summary                                                        
df >> /root/postinfo/summary                                                                              
                                                                                                          
echo .....about modules                                                                                   
echo "---- cat /proc/modules ---------" >> /root/postinfo/summary                                         
cat /proc/modules >> /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 >> /root/postinfo/summary                                                                            
echo "### STEP 3 ### Now we save some important files from /etc" >>  /root/postinfo/summary               
test ! -d /root/postinfo/etcfiles && mkdir /root/postinfo/etcfiles                                        
                                                                                                          
echo ..... saving XF86Config -- your XWindows config file                                                 
cp /etc/XF86Config /root/postinfo/etcfiles                                                                
echo "cp /etc/XF86Config /root/postinfo/" >> /root/postinfo/summary                                       
                                                                                                          
echo ..... saving /etc/fstab file                                                                         
cp /etc/fstab  /root/postinfo/etcfiles                                                                    
echo "cp /etc/fstab /root/postinfo/" >> /root/postinfo/summary                                            
                                                                                                          
echo ..... saving /etc/profile file                                                                       
cp /etc/profile  /root/postinfo/etcfiles                                                                  
echo "cp /etc/profile /root/postinfo/" >> /root/postinfo/summary                                          
                                                                                                          
echo ..... saving /etc/profile.local file                                                                 
cp /etc/profile.local  /root/postinfo/etcfiles                                                            
echo "cp /etc/profile.local /root/postinfo/" >> /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 >> /root/postinfo/summary 
echo "/etc/*conf" >> /root/postinfo/summary                                                               
echo "/etc/*config" >> /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" >>  /root/postinfo/summary                   
echo in /root/postinfo/otherfiles >> /root/postinfo/summary                                               
echo You can add any other files to backed up, here                                                       
test ! -d /root/postinfo/otherfiles && 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" >>  /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" >>  /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 >> /root/postinfo/summary                                                                            
                                                                                                          
echo "### STEP 999 ### Wrap up, clean up, sum up" >>  /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 >> /root/postinfo/summary                                     
ls -AlR /root/postinfo >> /root/postinfo/summary                                                          
echo "###### THE END #####" >> /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)                                                          
#--------------------------------------------------------                                                 
"                                                                                                         
