Linux Guide/Installing (advanced)

There are 4 ways of "installing" Linux:

  1. "no-install": a "Run-from-CD" LiveCD distribution. Everything runs from the CD and RAM, leaving the hard drive untouched -- completely avoiding the trickiest part of setting up Linux, "hard drive partitioning". After you take out the CD and reboot, everything is restored to the way it was before. (Many of these work just as well with USB flash drive as with CD)
  2. Linux on top of Windows: it's possible to keep windows applications running, and run Linux like any other application side-by-side with the Windows applications (this is an advantage compared to dual-booting, which shows either only Linux applications, or only Windows applications, and you have to reboot to get to the other one). andLinux, Portable Ubuntu, coLinux, Topologilinux, etc.
  3. There's a lot of information on setting up "Dual-boot" systems. This is not for beginners. (Experts generally don't do this either -- if they need 2 operating systems, they keep them on 2 physically separate hard drives, or better yet 2 physically separate computers).
  4. If you are certain there is nothing you want to keep on a computer's hard drive, you can completely erase the HD and install Linux only. This is the most fool-proof system -- Once the hard drive has been erased, the worst that can happen is erasing the hard drive again and having to start all over.
  5. This is rare now, but some distributions allow installation to any FAT32 partition even if it contains an installation of Windows. This just copies files containing the Linux and uses a Floppy or a Boot Loader to load. Wubi, etc.

Dual-booting or saving data Edit

Preliminary note Edit

You most likely do not need to do this as it is integrated into the installers

Generally installers have excellent partitioning tools so this is all part of the install. If not, or if you are not installing it is easiest to use a live CD distro that has GParted on it, such as ubuntu. GParted does not support LVM volumes used on more complicated partitioning setups, however fedoras installer for example and debians can install and partition LVM volumes.

Hard way Edit

To install Linux without erasing the contents of the hard drive requires a spare partition. One solution is to install an extra hard drive. However, one can also non-destructively resize an existing partition. A FAT-type volume can be resized with FIPS and an NTFS volume with ntfsresize. If using FIPS, the hard drive will need to be defragmented before the resizing, but defragmentation is a good idea no matter what the file system.

What size? Edit

You would be hard-pressed to fit a normal desktop Linux system in under 2GB. It's advisable to give Linux more space than that, however, because many, many applications are available for free for Linux, and especially with a high-speed Internet connection, one is likely to install quite a lot of them.

You should plan on leaving at least 20% of each of your hard drive partitions free at all times -- modern file systems (such as NTFS, ext3 and ReiserFS) try to keep fragmentation low on their own, but they need extra space to do it with.

Manual resizing Edit

Easiest way Edit

(NOTE: Most of this only applies if there is already a version of Microsoft Windows on the computer) The volume resizing is a safe process, but afterwards the hard drive must be repartitioned. An error here can destroy the data on the hard drive, so double-check all commands. A typical session with ntfsresize ("/dev/hda1" is the most likely name for the NTFS partition. In this case, it is 10 GB in size.):

paul@faust:/$ su

You must be root to run ntfsresize. Under Knoppix {what about other live CDs? Under Gentoo's LiveCD, you are already root, so the su will not prompt for a password. Anyone know about others? I'd assume no-password or already-root would cover most of them...}, you will not be asked for a password unless you had already set one.

faust:/# umount /dev/hda1

This step is only needed if hda1 is already mounted, which is unlikely. However, if it is not needed, it will only give an error message and not do anything.

faust:/# ntfsresize -i /dev/hda1
ntfsresize v1.9.0
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 10999992832 bytes (11000 MB)
Current device size: 11013617664 bytes (11014 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 4197 MB (38.2%)
Estimating smallest shrunken size supported ...
File feature         Last used at      By inode
$MFT               :      8223 MB             0
Multi-Record       :      3160 MB         14852
You might resize at 4196970496 bytes or 4197 MB (freeing 6803 MB).
Please make a test run using both the -n and -s options before real resizing!

ntfsresize, version 1.90 and later, will automatically move files (including ones that the Windows defragmenter can't) in order to resize the partition, so defragmentation is not necessary before resizing (it might be easier to defragment while the partition is larger, though, so its a good opportunity).

The next step does a test run of the resizing process. Here, the user decided to leave Windows with about 6GB of space.

faust:/# ntfsresize -n -s 6000M /dev/hda1
ntfsresize v1.9.0
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 10999992832 bytes (11000 MB)
Current device size: 11013617664 bytes (11014 MB)
New volume size    : 5999993344 bytes (6000 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 4197 MB (38.2%)
Needed relocations : 251614 (1031 MB)
Schedule chkdsk for NTFS consistency check at Windows boot time ...
Resetting $LogFile ... (this might take a while)
Relocating needed data ...
100.00 percent completed
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
The read-only test run ended successfully.

Now, write down the exact number of megabytes passed on the command line here (in this case, 6000). (The file system will probably not be resized to the exact size you specify, but ignore that — use what you entered.) You will need to resize the partition to the same size later.

Run ntfsresize with the same parameters, except leaving out the -n. This resizes the ntfs filesystem, but not the partition.

Splitting the partition is the only remaining task. Be sure to give it the hard drive (like "/dev/hda") as a parameter, rather than the partition ("/dev/hda1").

faust:/# cfdisk /dev/hda

If you don't have cfdisk, use fdisk instead. It has a less friendly interface, but it has exactly the same commands. Either way, no changes are made to the disk until you tell the program to (w)rite out the new partition table. If you accidentally write out the wrong partition structure, you should be able to save your data by replacing it with the correct one before doing anything to the affected partitions.

You need to

  • delete the current NTFS partition (this does not destroy the data on it)
  • (N.B. In the highly unlikely event that there was unpartitioned space before the NTFS partition, you need to create a partition filling it up. This is false -- you can create a partition beginning anywhere on the disk. You just need to write down what the starting cylinder was.)
  • create a new partition with the same size you passed to ntfsresize earlier at the beginning of the unpartitioned space that was created.
  • leave the remainder as free space. It will be filled with Linux's partitions, but some decisions need to be made first.

Partition recommendations Edit

  • /:
    • 5 GB
  • /boot:
    • Minimum 3 MB per kernel, recommended 100 MB.
    • It's recommended if you have multiple HDDs, most BIOSes don't like loading kernels from disk different than the one on which bootloader resides on.
  • swap partition or file = twice RAM size (Rule of thumb)
    • Using old linux kernels, swap partitions were faster than swap files; that's no longer the case.
  • /home
    • Whatever remains
    • This is where the bulk of your data will reside, you will want lots of room
    • It is a very good idea to avoid having / and /home on one partition, if you're into that sort of thing, you know.

Note: If you're an advanced user and want to have few Linux systems installed side-by-side, or different file systems for experimenting, configuring Logical Volume Manager may be a good idea.