Tutorial: Adding Additional Hard Drives in Linux - page 2

The Theory Behind Hard Drive Management

For
example, your friend gave you a hard drive which was formatted in MS
Windows system or even Linux, and there are some important files on
this drive you want to keep.

First of all, obviously, we need to connect the hard drive
physically to our PC, which for this example will be Master on Secondary interface. In this
case, the disk name in the system will be hdc. After starting Linux,
it is necessary
to check whether Linux found the new device. For this, you can use
the following command:

So, we have found device hdc in our list. Everything seems to
be okay. If you did not see the device in this list, you would
need to check again all steps of physically connecting the
hard drive to the PC.

Let's now take a look at what partitions we have available on the drive:

It's easy to understand that in this example we have three partitions
on our hard drive, and two of them (the first and fifth) are filled
with some sort of data. Also, the first partition is a primary partition of the Linux system,
and the fifth is a logical disk of Windows FAT32. The first partition is a bootable (as shown be the '*'
symbol in the Boot column).

Now we need to attach these partitions to our file
system. Such an operation of connecting partitions (to be more exact - connecting file systems) in Linux
is called mounting and, as such, we use the command 'mount' to handle this. There is also a reverse
operation known as unmounting, which we can start with the command 'umount'.

When you mount a partition in Linux, you need to associate it
with a directory somethere in the file system. This is called
creating a mount point. Usually you will want to create these
mount point directories for each partition, such as:

# mkdir /mnt/hdc1
# mkdir /mnt/hdc5

Of course, you can use pre-existing directories. We just need to remember a couple of rules:

In the Linux system, it is a usual (though not necessary)
practice to group all mount points in one place, except in the
cases when mounting system partitions (like
/usr, /home, /var, etc.);

The directory used as the mount point should be empty,
or else its contents will be unavailable until the partition is unmounted.

Now, let's use the command 'mount' and attach some partitions:

# mount /dev/hdc1 /mnt/hdc1
# mount /dev/hdc5 /mnt/hdc5

Here /dev/hdc1 and /dev/hdc5 are the device names, and /mnt/hdc1 and
/mnt/hdc5 are the mount points. (It goes without saying, that
the directory names for the mount points don't have to mirror
the partition names exactly.

Now, when changing to the directory to either /mnt/hdc1 or
/mnt/hdc5, we can see contents of partitions.

If you are mounting a partition that uses a different
filesystem than the one you're working in, it's necessary to
mention the type of file system using the key -t of the mount
command. If you have already mounted the partition, do
not forget to unmount the partition with the command 'umount' before
using the -t key to establish the type of filesytem used on
the "foreign" partition:

# umount /mnt/hdc5
# mount -t vfat /dev/hdc5 /mnt/hdc5

The most common values of key -t are:

msdos - FAT12 and FAT16

vfat - FAT16 with long file name support, FAT32

ext2 - primary Linux file system;

ext3 - compataible with ext2 file system with log support

reiserfs - new Linux file system with log support

A full list of supported file systems (more than 30) can be
found in the man pages of the mount command.

Some readers, after following all of the above operations, may
note that instead of certain lagnage symbols appearing in the
file names of a FAT file-system partition, all they get are
question marks. A prime example of this are f.e. Russian
symbols within filenames on a FAT file system.

This doesn't mean that Linux won't support
the Russian language in file names. Actually, Linux supports a lot of
national code pages--we just need to establish exactly which one we
want to use. This is done with the key -o.

After unmounting the partition in question, use these
commands. For FAT partitions created with Windows 98 and/or Windows NT:

The difference here is in the additional argument
uni_xlate. We need that argument because Windows ME/2000/XP uses Unicode in file names.

So, now we have everything set up for Russian file names. You
can use the iocharset variable for your own language needs
with the preceeding commands.

For FAT partitions it is also nice to use the arguments uid
and quiet. This is very important because FAT doesn't have any services to separate or deny access to
files.

The argument uid=user defines the owner of a mounted file system
(user) who will have all rights to write/create new files on disk. The
argument quiet hides all error messages, which will occur because it's
impossible to change file owner and file access rights once a file is copied onto a FAT partition.