Easier Reinstalls

I typically reinstall my computer operating system every six months. The reasons for this are that it cleans out the system and reinstalls require me to be in front of the computer for a total of about ten minutes so it's painless. Notice I said "in front of the computer", the system does all of the work for me with some specially crafted bash scripts.

If you ever need to reinstall your Linux system, the best thing you can do right now is some homework. Write yourself some bash scripts that will automate much of the work for you. This way you won't have to spend so much time in front of the computer during the reinstall. I usually start the install process, go watch a movie, then run some bash scripts when the installer is done and grab a bite to eat while the scripts do the work for me. I don't even bother logging into xorg until all of the scripts are done. I simply log into tty1, run the system script and go back to my movie.

I keep most of my packages, documents, etc., on a second hard drive but these files could also be kept on cd/dvd, have the system script mount the volume and let the scripts pull in the needed files from the mount point.


System Script

The system script should contain commands that modify system settings and content. You'll notice that this script doesn't contain any apt-get commands. The reason for this is that I believe the superuser should be present and keep an eye on any software application packages that are installed or removed in case fine tuning needs to be done. Of course, others are free to run their systems as desired.

Keep in mind that this script is only an example to show that some of the needed work can automated without requiring you to be at the computer. My system script is much more detailed than the below script, you should edit your script as needed.


# check for admin rights; needed to run this script
if [ $UID != 0 ]

# make backups of important system files in case of mistakes
mkdir /etc/master_copies
cp /boot/grub/menu.lst /etc/fstab /etc/apt/sources.list /etc/sudoers /etc/X11/xorg.conf /etc/master_copies

# create directories needed for future use
mkdir /mnt/sdb1 /mnt/iso

# mount needed file systems
mount /dev/sdb1 /mnt/sdb1

# edit files as needed
cat /mnt/sdb1/system-files/fstab-entries >> /etc/fstab

# comment out ssh agent in Xsession.options
sed 's/use-ssh-agent/# use-ssh-agent/g' /etc/X11/Xsession.options

# add additional software sources
cat /mnt/sdb1/system-files/sources.list >> /etc/apt/sources.list

# install themes for system-wide use
dpkg -i /mnt/sdb1/packages/my-theme.deb /mnt/sdb1/packages/my-icons.deb
cp /mnt/sdb1/graphics/wallpapers/* /usr/share/backgrounds

# clean up the system
apt-get clean


That's it for the system script. When I return, the system should be ready for any apt-get commands I need to run. I can then verify the list of software to be installed, begin the installation and let the system does what it needs to do.

Making backups of important files is a vital step. I cannot tell you the number of times this step has saved my backside after making mistakes editing xorg.conf. I'm still not sure why most distros don't include a step like this in their installers, it would save a lot of time and frustration with new linux users. Retrieving a missing sources.list file is as easy as mounting the file system in a LiveCD and copying the file from master_copies to its original location.


User Script

This script should contain commands that modify only the settings and content in $HOME. Again, this script is only an example to show that some of the needed work can automated without requiring you to be at the computer. My user script is much more detailed than the below script, you should edit your script as needed.


# make sure we're in $HOME
cd $HOME

# make backups of important user files
mkdir .master_copies
cp some-file .master_copies

# copy needed files to $HOME
mkdir -p Documents
cp -r /mnt/sdb1/office-files/* Documents
cp -r /mnt/sdb1/settings/GNUstep .

# make needed symlinks
ln -s /dev/null .adobe
ln -s /dev/null .macromedia

# install themes
tar -xzf /mnt/sdb1/packages/infinity-theme.tar.gz .themes
tar -xzf /mnt/sdb1/packages/infinity-icons.tar.gz .icons
tar -xzf /mnt/sdb1/packages/myfonts.tar.gz .fonts

# tweak desired settings
gconftool-2 --type string --set /apps/metacity/general/theme "Infinity"
gconftool-2 --type string --set /desktop/gnome/interface/gtk_theme "Infinity"
gconftool-2 --type string --set /desktop/gnome/interface/font_name "MyFont 12"
gconftool-2 --type bool --set /apps/nautilus/desktop/home_icon_visible true
gconftool-2 --type bool --set /apps/nautilus/preferences/always_use_location_entry true
gconftool-2 --type integer --set /apps/panel/toplevels/bottom_panel_screen0/size 24
gconftool-2 --type integer --set /apps/panel/toplevels/top_panel_screen0/size 24

# done

That's it for the user script. The system reinstall should be complete and configured to my tastes and I can now reboot the system. Once the reboot is done, the system is ready for me to use and I spent a total of about ten minutes in front of the computer thanks to a couple of specially crafted bash scripts.

The gconftool-2 command comes in very handy here and can aid in setting up the system to meet the needs of the user. In fact, I don't even bother with the gconf-editor anymore unless I need to track down a key because this method is much faster than using the GUI. More information about gconftool-2 commands and switches can be found in:

man gconftool-2
Share this page:

Suggested articles

3 Comment(s)

Add comment


By: Anonymous

Under Windows regular re-installs are normal.

But under Linux the only time you need to re-install is if the hard drive takes a dump and destroys all your data.

I have several Debian Linux installs that have been running 5+ years and all I have to do is upgrade them regularly.

By: James

This is useful information but I am more interested in why you have to keep reinstalling every six months?  Unless you are installing a heap of software that you don't need then "cleaning out the system" doesn't make much sense (or perhaps your starting fresh with each Ubuntu release??)

I can understand if you enjoy reinstalling as it allows you to tinker with your system but some people new to Linux may get the wrong impression and would be good if you could clarify with a bit more detail as to why you reinstall.

Thanks for the scripts and tutorial anyway though.

You could always use Arch or Debian Sid and just run a rolling release distro :)

By: Álvaro Gomes da Silva


 Thanks for your script. That may considering provide us a example or your script just to see if is anything wrong.


Have a nice day!