Top 10 Downloads
  Last 15 New Files
  Web Links
  Last 15 New Tips
  NLM Programming
  Admins Club

SUPLA System
Internet of Things

Installation and Administration

Polish Forum SUSE

Who's Online

 There are currently,
4 guest(s)
that is (are) online.

Technical Information

Back to List of Categories

Technical Information about
  A Little YaST Magic
  A Slideshow for Your KDE Wallpaper
  Add Novell Support to Your Firefox Search Engine
  Adding To The Panels In Gnome.
  Akregator - RSS News Reader
  An Introduction to WBEM and OpenWBEM in SUSE LINUX
  Authenticating SUSE LINUX to eDirectory via LDAP
  Basic Mounting Differences between Windows and Linux
  Beginner's Guide to Using Novell SUSE LINUX's Build Utility
  Browsing Files
  Card Readers on SUSE LINUX 9.2 Professional?
  Changing the Default Browser in Gnome
  Developing Perl CGI scripts on SUSE LINUX
  Do I Have Permission?
  Double SYNC -- Using RSYNC Simultaneously With and Without Branch Office for Data Backup
  Dumb Question: Mounting Linux CDs
  Easy Command-Line Introduction
  Easy Way to Debug SSL Connections
  Enabling an Interactive Startup in Novell/SUSE LINUX
  Exploring MySQL 4.1 and PHP 5 on SUSE LINUX
  Extend Your Panels Using Gnome Drawers.
  Firefox Speed Tip
  Fix Java Errors With ConsoleOne On Linux
  Fix Your Mouse Wheel...
  Gimp -- Closing In on Photoshop...
  Gimp Tips Part 1: Resizing Images
  Gimp Tips Part 2: Rounding Corners
  Gimp Tips Part 3: Fading Photography Edges
  Gimp Tips Part 4: Selective Colorization
  Gimp Tips Part 5: Plugins a Plenty - Adding Light
  Gimp Tips Part 6: Using The Clone Tool
  Google Auto-fill Replica for Linux
  How a Corrupted USB Drive Was Saved by GNU/Linux
  How to Implement Login Scripts into a Pure Linux Environment
  How to install and connect an External Modem on a Linux PC
  How to Install the Novell Client for Linux on SUSE Linux 10.0
  How to launch applications at login in Gnome
  How to Remote Control Linux
  How to setup a Linux application to automatically startup when you login.
  How to share Files and Printers Between Linux and MS Windows with Samba
  How to uninstall the Novell Client for Linux
  How to upgrade the Novell Client for Linux
  How to use SMB without turning off the firewall
  How's the Weather?
  HTML Development Tools in Linux
  Informative Bash Prompt
  Install and Use QEMU on SUSE 9.2
  Install Linux Frequently, Without the Hassle
  Installing Apache, PHP, and MySQL on SUSE LINUX Professional
  Installing RPM Files
  Integrating Novell Linux Desktop into a Novell NetWare network
  Introduction to Oracle 10g R1 ( on SUSE LINUX Professional 9.3
  iPrint Printers on Novell Linux Desktop
  Linux Scheduling Priorities Explained
  Make a Misbehaving Program Quit
  Manually Mounting a USB Flash Drive in Linux
  Migrating To Linux, Advantages Over Windows 9.x And XP
  Minimize Your Maximizing with Multiple Desktops
  Mounting NetWare Volumes On NLD Illustrated
  Move Your /home to Another Computer
  Mozilla Mail Review
  Need a Backup?
  Novell Client Settings with Windows Terminal Server
  Novell Linux Desktop Equivalents of Windows Software - New and Improved
  Novell Linux Desktop System Upgrade How-To
  Partitioning Hard Drive for Linux Install
  Perform Remote SuSE Installations With Virtual Network Computing
  Quick Intro to Klipper
  Quick Shortcuts in The Gimp
  Reset Your Lost Root Password
  Resizing Your Gnome / KDE Panels
  Runlevels in SUSE LINUX
  Running Existing Win32 Applications on SUSE LINUX
  Service Command in /etc/init.d/
  Setting Shortcut Keys
  Setting up a Linux NFS Install Source for Your LAN
  Should I choose Novell Linux Desktop or SUSE LINUX Professional as my desktop?
  Starting Services From the Command Line On SuSE LINUX
  Sticky Notes for Gnome
  SUSE LINUX 9.3 Professional Review
  Sync Up The Taskbar and the Desktop in Gnome
  System Upgrade How-To
  Taking Screenshots in Linux
  The Basics of Messaging in the Cross-Platform GroupWise Client
  The Novell Client for Linux (beta).
  Transparent Panels in Gnome
  Trick Out Your KDE Desktop
  Understanding the YAST Software Module Options
  Updating Your Software with Red Carpet
  Using dsbk on Linux and Unix
  Using iFolder to Synchronize Firefox Bookmarks
  Using Multiple Swap Partitions In 2.4
  Using openSSH to Securely Access Remote Systems
  What FTP client should I use on Linux?
  What Is Logical Volume Management?
  What is so great about Firefox?
  Which Graphic Formats For What?
  Windows Shortcuts for Firefox Tabs on Linux
  Windows to Linux: A Beginner's Guide
  Windows Users Can Feel at Home Exploring Files in Linux
  WLAN interface as the Default
  Work With User Selection Icons In KDM
  YAST Online Update De-Mystified

Technical Information
 Install Linux Frequently, Without the Hassle

Printer-friendly version

Posted: 23 Mar 2005


With RPM-based Linux distributions, version-to-version upgrades often don't work very well.  A fresh installation may be the better choice.  One may be reluctant to do this, because of the potential loss of data, preferences, configuration, and third-party applications.  Also, if you don't like the newly installed system, the thought of reinstalling the old system to switch back to it is not a pleasant thought either.

This document describes a means of reinstalling Linux frequently, while minimizing the effort needed to become productive on a new system.  It also allows you to instantly and effortlessly rollback to a previous Linux OS if you aren't happy with a newly installed system.  Some possible applications of these suggestions include trying a new Linux distribution, or staying up-to-date with the latest beta release of your favorite Linux distribution.

1. Introduction

If a little extra care is taken when first installing Linux on a system, it can require far less maintenance over the lifetime of the system. This document presents suggestions for using partitions and symbolic links to your advantage to minimize the effort required to test-drive a new Linux distribution.

1.1. Assumptions

The rest of this document makes the following assumptions:

  • The system has a single hard disk: /dev/hda
  • Windows is installed on /dev/hda1
  • Your hard disk is sufficiently large, relative to your needs, that you can leave at least one 5 to 10 GB partition unused at any given time
  • You know how to install Linux, including repartitioning

    If your system differs from this, you'll need to make appropriate adjustments to the examples that follow.  For example, if you do not have windows installed, the swap partition can be /dev/hda1 instead of /dev/hda2.  If you actually think you can find a use for the entirety of your modern, huge hard disk, this document is not for you.

    2. Partitioning

    2.1. Swap

    Use /dev/hda2 for the Linux swap partition.  It is usually recommended to have a swap partition 2x the size of physical RAM.  So, if you have 1GB RAM, make a 2GB swap partition.

    2.2. Root Partitions

    You'll want at least two root partitions so you can install a new version of the distribution, a different distribution, or a new build (or example, the next beta) without losing the Linux system you currently use.  This way you can always instantly rollback to the previous system without loosing any data.  Depending on the size of your hard disk, you'll probably want to make these partitions 5 to 10 GB each. 

    2.3. Data Partition

    Create one more Linux partition consuming the remainder of the hard disk.  This is where data will be stored so that it will not be lost when the OS is reinstalled onto one or the root partitions, and so that multiple systems can share the same data.

    2.4. Variations

    You can have other partitions if you like.  Perhaps you want to have a separate partition for VMWare images.  This isn't really necessary though since everything can be lumped under the Data partition, and symbolic links can be used if you want things to appear to be somewhere else.  If you want to share data between Linux and Windows, you may need an extra FAT32 partition.  Linux can read from NTFS volumes, but not write to them (last time the author checked).  By having an extra FAT32 partition (drive D: on Windows), you can put data on this partition and access it from either Windows or Linux. 

    2.5. Partition Table Summary

    Once finished partitioning, your partition table might look like this (output of fdisk -l /dev/hda):
         Device   Start     End      Blocks   Id  System
      /dev/hda1       1   xxxxx    18000000    7  HPFS/NTFS
      /dev/hda2   xxxxx   xxxxx     2000000   82  Linux swap
      /dev/hda3   xxxxx   xxxxx    10000000   83  Linux       <-- root 1
      /dev/hda4   xxxxx   xxxxx    50000000    5  Extended
      /dev/hda5   xxxxx   xxxxx     2000000    c  W95 FAT32 (LBA)
      /dev/hda6   xxxxx   xxxxx    10000000   83  Linux       <-- root 2
      /dev/hda7   xxxxx   xxxxx    10000000   83  Linux       <-- root 3
      /dev/hda8   xxxxx   xxxxx    28000000   83  Linux       <-- data
    If you don't have Windows installed, it might look like this:
         Device   Start     End      Blocks   Id  System
      /dev/hda1       1   xxxxx     2000000   82  Linux swap
      /dev/hda2   xxxxx   xxxxx    10000000   83  Linux       <-- root 1
      /dev/hda3   xxxxx   xxxxx    10000000   83  Linux       <-- root 2
      /dev/hda4   xxxxx   xxxxx    68000000    5  Extended
      /dev/hda5   xxxxx   xxxxx    10000000   83  Linux       <-- root 3
      /dev/hda6   xxxxx   xxxxx    58000000   83  Linux       <-- data

    3. Installing The First Instance of Linux

    Once the partition table has been prepared as described above, you are ready to install the first Linux system. 

    3.1. Install Target

    Install into the first root partition.  If you want, you can also select the data partition at this point, and specify the mount point of /data.  This doesn't need to be done at install time.  You can format and mount this partition after the system is installed if you prefer.  If you select the data partition during the install, it will be formatted and mounted, but it will remain empty.

    3.2. Bootloader Location

    When installing the first system, you'll need to install GRUB into the Master Boot Record (MBR).  This is probably the default.  Note that this is the only time you will install the bootloader into the MBR.  Every Linux install hereafter you will need to take care to install GRUB into the boot sector of the root partition, not the MBR. 

    3.3. Mount the Data Partition

    Once the first Linux system is installed, ensure that the data partition is mounted at /data.  If this wasn't taken care of during the install, format the data partition now.  Mount it and put it in /etc/fstab so that it will be automatically mounted at boot-time.

    4. Fixing the Bootloader

    You need to move the bootloader files to the data partition, since this partition won't be formatted again, but our Linux root partition will eventually be reformatted and reinstalled.  The MBR needs to point to GRUB files that won't be destroyed during future reinstalls.

    4.1. Move Bootloader Files

    Create a directory /data/boot.  Copy the files stage1, stage2, and menu.lst from /boot/grub to /data/boot:
      cp /boot/grub/{stage1,stage2,menu.lst} /data/boot/
    Now launch the GRUB shell (type grub) and enter the following command:
      install (hd0,7)/boot/stage1 d (hd0) (hd0,7)/boot/stage2 (hd0,7)/boot/menu.lst
    You may have to adjust this command based on which partition is /data. Note that GRUB partitions are zero indexed, so /dev/hda6 is (hd0,5), and /dev/hda8 is (hd0,7).  Within the GRUB shell, type help install for more information.

    4.2. Install GRUB in the Boot Sector of the Root Partition

    Now, assuming the root partition is /dev/hda3, type:
      grub-install /dev/hda3
    You may be confused why you installed GRUB into both the MBR, and the boot sector of the root partition.  In the next step, you'll configure the bootloader in the MBR to "chain" to the various Linux systems.

    4.3. Edit the Boot Menu

    Edit /data/boot/menu.lst.  The only menu items should be a series of "chainloader" directives, and possibly an item to launch future network installs without a CD.  For example:
      title  Windows XP
      chainloader (hd0,0)+1
      title Linux on hda3 
      chainloader (hd0,2)+1
      title Linux on hda6 
      chainloader (hd0,5)+1
      title Linux on hda7 
      chainloader (hd0,6)+1
      title   Install
      root    (hd0,7)
      kernel  /boot/linux.inst install=ftp://<your_net_install_path> vga=791
      initrd  /boot/initrd.inst

    4.4. Booting the Linux OS

    Now when you boot the system you will see a menu containing Windows (possibly), several Linux systems, and possibly an install option.  When you select a Linux system, you are faced with another GRUB menu.  This is the only drawback of this system -- there is an extra delay in the boot process because the first GRUB menu leads to another GRUB menu.  This problem can be minimized by decreasing the delay in the second GRUB menu (the GRUB menu for each Linux system).

    5. Home Directory Maintenance

    One might ask, "Why not just make /home a separate partition, instead of making a separate /data partition?" The answer is simple, though unfortunate.  There are user-specific configuration items stored in "dotfiles" (filenames starting with '.') in each user's home directory.  For example, all KDE preferences are stored under the directory $HOME/.kde/.  These files are often not backward compatible between versions of applications.  The preference files in $HOME/.kde/ for KDE 3.2 are probably not compatible with KDE 3.3.  This is even more true for Desktop preference files between different Linux distributions. 

    5.1. Setup the Data Partition

    While logged in as root, create a directory under /data for each user, and chown the directory to that user. 
      mkdir /data/djones
      chown djones /data/djones
    You may also want to chmod the directory to mode 700 to give it greater protection.  Now log in as the non-root user, and create a directory /data/djones/.etc.  Move selected dotfiles from $HOME to this directory.  For example, .ssh, .vmware, and .vslick. 
      mv $HOME/{.ssh,.vmware,.vslick} /data/djones/.etc/
    If these dotfiles don't exist yet, create empty directories in /data/djones/.etc/ instead of moving existing directories there. The idea is to select dotfiles which are known to maintain the same format and syntax between versions of the application, and which are painful to lose (such as .ssh).  Through experience you will learn which dotfiles can safely be used across multiple versions of multiple distributions. 

    5.2. Symlinking to the Data Partition

    As the non-root user, create a symbolic link from $HOME to the data partition, and then symlink the dotfiles back to $HOME:
      ln -s /data/djones $HOME/data
      cd $HOME
      ln -s data/.etc/.[a-z]* . 
    You may need to remove the corresponding existing dotfiles from $HOME before doing this.

    5.3. Using the Customized Home Directory

    Put files that you want to be persistent across reinstalls under $HOME/data.

    6. Installing More Linux Systems

    Now you can install more Linux systems.  For example, you may want to install a different Linux distribution in root 2 (/dev/hda6), and root 3 (/dev/hda7). 

    6.1. Bootloader Location

    The most important thing to remember while preparing to install a new Linux OS is to install the bootloader into the boot sector of the root partition, not the MBR.  The default is probably the MBR, so you'll have to change this setting.

    6.2. Mounting the Data Partition

    You can either mount the data partition under /data during the install, or after the install.  If done during the install, make sure you deselect the format flag.  Perhaps it is better just to do a single-partition install, then manually add /data to /etc/fstab and mount it once the install is complete.

    6.3. Creating the Symbolic Links

    Now repeat step 5.2 to create symbolic links from $HOME to /data.

    7. Practical Use

    Now that you have taken these initial steps, you can reinstall your system, or install additional systems quite easily.  The time needed to get a new system in a usable state is minimized, and your data files are always available to any system. 

    7.1. Beta Snapshots

    This system is particularly useful for beta snapshots.  For example, perhaps you have been running SUSE 9.2 for some time. SUSE 9.3 beta1 becomes available.  You would like to try it.   Perhaps it is sufficiently stable to replace SUSE 9.2 as your main Linux OS, but perhaps not.  This system lets you try SUSE 9.3, while reserving the option to immediately rollback to your old SUSE 9.2 system.  If you have been using SUSE 9.2 on root 1, simply install SUSE 9.3 beta1 on root 2.  If you try it for a while, and decide it is usable, continue using it.  All of your data is present.  After you are comfortable running 9.3 beta1, you can install something else (perhaps SUSE 9.3 beta2) onto root 1.  You need not worry about reformatting and reinstalling root 1, because the only thing on /dev/hda3 is the base system.  All of your data is on the data partition.

    8. Other Hints

    8.1. Third-party Applications

    To maximize the efficiency of this system, make sure to install all third-party applications under $HOME/data.  For example, you might install Visual Slickedit into $HOME/data/vslick.  If you also symlink $HOME/.vslick to $HOME/data/.etc/.vslick, Visual Slickedit will be immediately usable when a new Linux OS is installed, with all of your preferences and projects preserved.

    8.1. Make the Most of Symbolic Links

    You might want to create symbolic links for other items in $HOME. For example, a symlink from $HOME/Documents to $HOME/data/Documents may be useful since many file dialogs default to $HOME/Documents.  You may also want to have multiple dot-files in $HOME/data/.etc for different versions of window managers.  For example, for a SUSE 9.2 system, you might have a symlink from $HOME/.kde to $HOME/data/.etc/.kde-3.3.  Then, when you install SUSE 9.3 beta1, create a symlink from $HOME/.kde to $HOME/data/.etc/.kde-3.4.  This way you can dual boot SUSE 9.2 and SUSE 9.3 and each system has its own set of preferences for KDE.  You should only have to set up KDE once for all of the betas and RCs for SUSE 9.3, since the minor KDE changes between betas and RCs are likely to be backward compatible with the configuration files.

    9. Summary

    If the steps of this document are followed, it is easy to reinstall a new Linux system without risk, and you can quickly become productive on the new Linux OS.

  • Since 2003

    Portal posiada akceptację firmy Novell Polska
    Wszystkie materiały dotyczące produktów firmy Novell umieszczono za zgodą Novell Polska
    Portal has been accepted by the Novell Polska
    All materials concerning products of Novell firm are placed with Novell Polska consent.
    NetWare is a registered trademark of Novell Inc. in the United States and other countries.
    Windows is a trademark or a registered trademark of Microsoft Corporation in the United States and other countries.
    Sybase is a registered trademark of Sybase Inc. in the United States of America.
    Other company and product names are trademarks or registered trademarks of their respective owners.