While it’s not every day that you need to add a new hard drive to your computer, the task does not have to be complicated. Use this guide to help you install a new hard drive with an existing Ubuntu system, and partition it for use. Before beginning, you need to consider for what you will be using the hard drive.
Will the drive be used only with Ubuntu?
Will the drive need to be accessible from both Ubuntu and Windows?
How do you want to divide the free space? As a single partition, or as several?
This guide goes over procedures for a single partition drive install only. Multiple partition drive installations are not very hard, and you may very well figure it out by using this guide; however, make sure you add an entry in /etc/fstab for each partition, not just the drive.
A Note about File Systems:
Drives that are going to be used only under Ubuntu should be formatted using the ext3/ext4 file system (depending on which version of Ubuntu you use and whether you need Linux backwards compatibility). For sharing between Ubuntu and Windows, FAT32 is often the recommended file system, although NTFS works quite well too. If you are new to file systems and partitioning, please do some preliminary research on the two before you attempt this procedure.
Determine Drive Information
We assume that the hard drive is physically installed and detected by the BIOS.
To determine the path that your system has assigned to the new hard drive, open a terminal and run:
sudo lshw -C disk
This should produce output similar to this sample:
description: ATA Disk
physical id: 0
bus info: email@example.com
logical name: /dev/sdb
Be sure to note the “logical name” entry, as it will be used several times throughout this guide.
Partition The Disk
If you have already formatted the drive and it contains data, skip this step and move on to “Mount Point.” If the drive is still blank and unformatted, then you have two options: formatting the drive using the command line, or installing GParted for a graphical approach. Decide whether you want the drive to contain one single partition, or if you want to divide the space up between two or more partitions.
Partitioning Using GParted
If System > Administration > GNOME Partition Editor (or ‘Partition Editor’) is not available, install “GParted” using “sudo apt-get install gparted” from the command line, “Add/Remove Software” (or “Add/Remove…”) from the Applications menu, or “Synaptic Package Manager” from the System > Administration menu. Open GParted and let’s get started.
Always use gksu or gksudo for graphical applications like gparted and sudo for command line applications, like apt-get.
In the top-right corner of the window, choose your new hard drive from the drop-down list, referring back to the “logical name” from earlier. The window should refresh and show you a representation of the new drive. Assuming that the drive has yet to have been used, a white bar will run across the window. Use these steps to partition the drive with a single partition…
1) Right-click on the white bar and choose “New.”
2) For “New Size” the number should be the maximum allowable, to fill the entire disk.
3) Choose “Primary Partition”
4) Now decide on a filesystem. Use “ext3” if the drive will only be used with Ubuntu. For file-sharing between Ubuntu and Windows, you should use “fat32.” If you are unsure, search around the wiki and forums for advice.
5) Now click Add to compute the partition. The graphical display should update to show a new partition covering the entire disk.
6) To finish, click “Apply,” or Edit > Apply. The disk will then be partitioned and formatted. You may now close GParted.
Command Line Partitioning
You’ll be using “fdisk” to accomplish this. Refer back to the logical name you noted from earlier. For illustration, I’ll use /dev/sdb, and assume that you want a single partition on the disk, occupying all the free space.
If the number of cylinders in the disk is larger than 1024 (and large hard drives always have more), it could, in certain setups, cause problems with:
software that runs at boot time (e.g., old versions of LILO)
booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)
Otherwise, this will not negatively affect you.
1) Initiate fdisk with the following command:
sudo fdisk /dev/sdb
2) Fdisk will display the following menu:
Command (m for help): m <enter>
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help):
3) We want to add a new partition. Type “n” and press enter.
p primary partition (1-4)
4) We want a primary partition. Enter “p” and enter.
Partition number (1-4):
5) Since this will be the only partition on the drive, number 1. Enter “1” and enter.
Command (m for help):
If it asks about the first cylinder, just type “1” and enter. (We are making 1 partition to use the whole disk, so it should start at the beginning.)
6) Now that the partition is entered, choose option “w” to write the partition table to the disk. Type “w” and enter.
The partition table has been altered!
7) If all went well, you now have a properly partitioned hard drive that’s ready to be formatted. Since this is the first partition, Linux will recognize it as /dev/sdb1, while the disk that the partition is on is still /dev/sdb.
Command Line Formatting
To format the new partition as ext3 file system (best for use under Ubuntu):
sudo mkfs -t ext3 /dev/sdb1
To format the new partition as fat32 file system (best for use under Ubuntu & Windows):
sudo mkfs -t fat32 /dev/sdb1
As always, substitute “/dev/sdb1” with your own partition’s path.
Modify Reserved Space (Optional)
When formatting the drive as ext2/ext3, 5% of the drive’s total space is reserved for the super-user (root) so that the operating system can still write to the disk even if it is full. However, for disks that only contain data, this is not necessary.
NOTE: You may run this command on a fat32 file system, but it will do nothing; therefore, I highly recommend not running it.
You can adjust the percentage of reserved space with the “tune2fs” command, like this:
sudo tune2fs -m 1 /dev/sdb1
This example reserves 1% of space – change this number if you wish.
Using this command does not change any existing data on the drive. You can use it on a drive which already contains data.
Create A Mount Point
Now that the drive is partitioned and formatted, you need to choose a mount point. This will be the location from which you will access the drive in the future. I would recommend using a mount point with “/media”, as it is the default used by Ubuntu. For this example, we’ll use the path “/media/mynewdrive”
sudo mkdir /media/mynewdrive
Now we are ready to mount the drive to the mount point.
Mount The Drive
You can choose to have the drive mounted automatically each time you boot the computer, or manually only when you need to use it.
Automatic Mount At Boot
Note: Ubuntu now recommends to use UUID instead, see the instructions here:https://help.ubuntu.com/community/UsingUUID
You’ll need to edit /etc/fstab:
gksu gedit /etc/fstab
or in terminal:
sudo nano -Bw /etc/fstab
Add this line to the end (for ext3 file system):
/dev/sdb1 /media/mynewdrive ext3 defaults 0 2
Add this line to the end (for fat32 file system):
/dev/sdb1 /media/mynewdrive vfat defaults 0 2
The defaults part may allow you to read, but not write. To write other partition and FAT specific options must be used. If gnome nautilus is being used, use the right-click, mount method, from computer folder. Then launch the mount command from terminal, no options. The last entry should be the FAT drive and and look something like:
/dev/sda5 on /media/mynewdrive type vfat (rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8,umask=077,flush)
All of the parts between the parenthesis are the mount options and should replace “defaults” in the fstab file. The “2” at the end instructs your system to run a quick file system check on the hard drive at every boot. Changing it to “0” will skip this. Run ‘man fstab’ for more info here.
You can now run “sudo mount -a” (or reboot the computer) to have the changes take effect.
If you want to allow a normal user to create files on this drive, you can either give this user ownership of the top directory of the drive filesystem: (replace USERNAME with the username)
sudo chown -R USERNAME:USERNAME /media/mynewdrive
or in a more flexible way, practical if you have several users, allow for instance the users in the plugdev group (usually those who are meant to be able to mount removable disks, desktop users) to create files and sub-directories on the disk:
sudo chgrp plugdev /media/mynewdrive
sudo chmod g+w /media/mynewdrive
sudo chmod +t /media/mynewdrive
The last “chmod +t” adds the sticky bit, so that people can only delete their own files and sub-directories in a directory, even if they have write permissions to it (see man chmod).
Alternatively, you may want to manually mount the drive every time you need it.
For manual mounting, use the following command:
sudo mount /dev/sdb1 /media/mynewdrive
When you are finished with the drive, you can unmount it using:
sudo umount /media/mynewdrive