docs: remove obsolete READMEs for (s)fdisk
This commit is contained in:
parent
b73cc3902b
commit
2ceaf42a2d
|
@ -1,581 +0,0 @@
|
||||||
`fdisk': the Linux partition table editor
|
|
||||||
=========================================
|
|
||||||
|
|
||||||
`fdisk' is the Linux partition table editor. In this section we
|
|
||||||
examine this utility and try to describe it thoroughly enough so that
|
|
||||||
anyone can use it.
|
|
||||||
|
|
||||||
* Contents:
|
|
||||||
|
|
||||||
* Disks and how they are described.
|
|
||||||
* Dividing up your disk.
|
|
||||||
* The `fdisk' command.
|
|
||||||
* Deleting and adding partitions.
|
|
||||||
* Active flags and system types.
|
|
||||||
* Extra commands for experts.
|
|
||||||
* Warnings for `fdisk' users.
|
|
||||||
|
|
||||||
|
|
||||||
Disks and how they are described
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
A typical disk consists physically of one or more circular objects
|
|
||||||
called "platters", which rotate about a central axis. Devices called
|
|
||||||
"heads" move to specified places on the disk surface to read or write
|
|
||||||
information. There is usually one head on each side of every platter,
|
|
||||||
and all these heads are attached to a comb-like controller arm which
|
|
||||||
moves all of them at the same time, either closer to the center of the
|
|
||||||
disk, or closer to the outer edge.
|
|
||||||
|
|
||||||
Suppose the arm is in one position, putting an area of the disk
|
|
||||||
surface within reach of one or another of the heads. This total area,
|
|
||||||
everything that is accessible without moving the arm, is called a
|
|
||||||
"cylinder". (A cylinder is a barrel-shaped cross section of a disk,
|
|
||||||
consisting of a circular strip from each side of each platter.) The
|
|
||||||
part of a cylinder that one head can read or write without moving is
|
|
||||||
called a "track".
|
|
||||||
|
|
||||||
Each track is divided into several pie-shaped slices called
|
|
||||||
"sectors", which are the smallest parts of the disk which can be read
|
|
||||||
or written at a time. The sectors on one disk are usually all the same
|
|
||||||
size.
|
|
||||||
|
|
||||||
In fact, there are not always two heads to every platter, there are
|
|
||||||
some disks which do not have the same amount of data in every cylinder,
|
|
||||||
and there may be disks which do not have the same amount of data in
|
|
||||||
every sector. These features are usually hidden on PCs by the
|
|
||||||
controller card or the BIOS, which map the physical geometry of a disk
|
|
||||||
onto a logical geometry, which is what is actually used to access the
|
|
||||||
disk.
|
|
||||||
|
|
||||||
The numbers which describe the "geometry" of a disk are
|
|
||||||
|
|
||||||
1. The number of cylinders it contains.
|
|
||||||
|
|
||||||
2. The number of tracks per cylinder, which is the number of heads.
|
|
||||||
|
|
||||||
3. The number of sectors per track.
|
|
||||||
|
|
||||||
4. The number of bytes per sector.
|
|
||||||
|
|
||||||
These numbers vary from disk to disk, but a typical PC disk might
|
|
||||||
have about 1000 cylinders, half a dozen heads, and 15 or 20 sectors per
|
|
||||||
track, with each sector containing 512 bytes or characters; such a disk
|
|
||||||
contains 40 to 60 megabytes of data. A "double density" floppy disk
|
|
||||||
contains 40 cylinders, with 2 heads (2 tracks per cylinder), and with 9
|
|
||||||
sectors per track; such a disk contains 360 kilobytes, or 360 * 1024
|
|
||||||
characters. A "high density" 3.5 inch floppy contains 80 cylinders,
|
|
||||||
with 2 heads and 18 sectors per track, or 1.44 megabytes, or 1440 *
|
|
||||||
1024 characters.
|
|
||||||
|
|
||||||
The exact size of a track or cylinder in bytes varies from one disk
|
|
||||||
to another. This `fdisk' for Linux deals mainly with cylinders, since
|
|
||||||
this is the best unit to use when allocating space for partitions. It
|
|
||||||
reports partition sizes in "blocks" of 1024 bytes, or 2 sectors, since
|
|
||||||
`mkswap' and the various `mkfs' programs require this number. A block
|
|
||||||
is the smallest amount of space which can be set aside for a file in
|
|
||||||
the current file systems.
|
|
||||||
|
|
||||||
An operating system, such as Linux or DOS or OS/2, may use a disk in
|
|
||||||
any way that it wishes, but if two operating systems share the same
|
|
||||||
disk, they must agree on who owns what, or else one will interfere with
|
|
||||||
the other (that is, by damaging the other's files). A "partition" is a
|
|
||||||
section of a hard disk which is handled as a unit by all operating
|
|
||||||
systems which can access the disk. The standard way to define
|
|
||||||
partitions (for the moment) is the "partition table", a list of
|
|
||||||
information which is stored in parts of the disk that don't belong to
|
|
||||||
any of the systems using the disk. The beginning of the partition
|
|
||||||
table is stored in the disk's primary boot sector, and the rest is
|
|
||||||
stored in a chain of sectors scattered throughout the disk.
|
|
||||||
|
|
||||||
The first sector on the disk is called the "primary boot block" or
|
|
||||||
"primary boot sector" because (1) it comes first, before other, similar
|
|
||||||
sectors; (2) it tells where the other, similar sectors are found, so
|
|
||||||
that it is logically `prior' to them; and (3) it usually contains code
|
|
||||||
which is executed when the system boots up. This sector contains a
|
|
||||||
table describing at most four partitions. These areas are called
|
|
||||||
"primary partitions".
|
|
||||||
|
|
||||||
The partition table in the primary boot sector may also describe at
|
|
||||||
most one "extended partition". This is a large area of the disk,
|
|
||||||
usually containing all the space which is not in any primary partition.
|
|
||||||
Within this space we can set aside other areas which are called
|
|
||||||
"logical partitions", because they look almost exactly like primary
|
|
||||||
partitions. In fact, the main difference between them is that we can
|
|
||||||
boot from primary partitions, while we cannot boot from logical
|
|
||||||
partitions. This happens because the address of a primary partition is
|
|
||||||
in a fixed place, whereas the address of a secondary partition is not,
|
|
||||||
so we require a more complicated process to discover it, one which is
|
|
||||||
too difficult for most primary boot programs.
|
|
||||||
|
|
||||||
|
|
||||||
Dividing up your disk
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
It is a good idea to plan ahead before you start creating partitions
|
|
||||||
on your disk. If you set aside a partition for some purpose, it is not
|
|
||||||
easy to change its size: you must backup all the data from the partition,
|
|
||||||
whether to floppies, to another partition, to another hard disk, or
|
|
||||||
somewhere else; then you must edit the table which describes this
|
|
||||||
partition, so changing its size; then you must reboot and initialize
|
|
||||||
the new partition, formatting it, for example, under DOS, or running
|
|
||||||
`mkfs' under Linux; finally you can copy all the data back. It is
|
|
||||||
possible, if you have several partitions, to copy data back and forth
|
|
||||||
between them while you change their sizes, but this is a bit risky and
|
|
||||||
time consuming. It is better to plan ahead what you will need, since
|
|
||||||
it is hard to change it afterwards.
|
|
||||||
|
|
||||||
Many people with large disks and recent versions of DOS have their
|
|
||||||
entire file system on one large partition. They usually ask, `Isn't
|
|
||||||
there any way I can reformat my disk without copying everything off?'
|
|
||||||
There is no way to do it using standard DOS utilities, and there is no
|
|
||||||
truly safe way to do it using commercial software, because, if you make
|
|
||||||
a mistake, you will lose the entire contents of your disk. If you are
|
|
||||||
going to back up your disk anyway, you might as well copy the data back
|
|
||||||
safely. The Linux FAQ contains references to tools and procedures
|
|
||||||
which will allow you to do this, if you dare.
|
|
||||||
|
|
||||||
DOS and Linux both allow you to access several partitions on a
|
|
||||||
single disk; on DOS these are treated as if they were separate disks or
|
|
||||||
drives, and under Linux they are treated as different "devices".
|
|
||||||
|
|
||||||
You can have up to 64 partitions on a single IDE disk, or up to 16
|
|
||||||
partitions on a single SCSI disk, at least as far as Linux is
|
|
||||||
concerned; in practice you will rarely want so many. The maximum size
|
|
||||||
of a Linux file system on a single partition depends on the type of
|
|
||||||
file system you use. Minix file systems (version 1) are limited to 64
|
|
||||||
megabytes. You may have all of your Linux files in a single partition,
|
|
||||||
or you may have two, three, or more Linux file systems. Similarly you
|
|
||||||
may have one or more DOS partitions. If you have several small
|
|
||||||
partitions, you run much less risk of losing all your files if your
|
|
||||||
disk gets corrupted. On the other hand, you may run out of space on a
|
|
||||||
small partition more easily.
|
|
||||||
|
|
||||||
Under DOS, you must refer to each partition by a separate drive
|
|
||||||
letter, but all partitions are automatically accessible. Under Linux
|
|
||||||
only the root partition is automatically accessible, but once we mount
|
|
||||||
another partition, it is indistinguishable from the rest of the file
|
|
||||||
system. Disks are usually mounted by a command in one of the system
|
|
||||||
startup files, `/etc/rc', so you need not worry about having to do it
|
|
||||||
yourself whenever you boot the system. But even ordinary users may
|
|
||||||
be allowed to mount removable hard disks and floppy disks.
|
|
||||||
|
|
||||||
Linux requires at least one partition, which is the `root' of the
|
|
||||||
file system. You may prefer to have a separate partition for `/usr',
|
|
||||||
which contains most of the executable files, or for `/home', which
|
|
||||||
contains most of your private files. You may also wish to set aside a
|
|
||||||
partition to use for swap space, depending on the amount of memory your
|
|
||||||
PC has. You will certainly need swap space if you have less than 4 MB
|
|
||||||
of RAM and wish to compile anything substantial. You can reserve swap
|
|
||||||
space in a file, but you need a partition big enough to hold it, and
|
|
||||||
this will probably be less efficient than having a partition devoted to
|
|
||||||
swap.
|
|
||||||
|
|
||||||
Are you going to boot Linux from the hard disk, or will you boot
|
|
||||||
from a floppy? Some boot programs place severe restrictions on where
|
|
||||||
the boot partition can be. LILO is more relaxed about this, but does
|
|
||||||
require either the Master Boot Record on your first hard disk, or the
|
|
||||||
boot record on one of the first four partitions on your first hard disk.
|
|
||||||
|
|
||||||
If you have an extended partition with logical partitions in it, you
|
|
||||||
can have only three primary partitions containing data.
|
|
||||||
|
|
||||||
|
|
||||||
The `fdisk' command
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Every operating system, whether DOS, OS/2, or Linux, should provide
|
|
||||||
its own utility for editing hard disk partition tables. At least four
|
|
||||||
of these utilities have been called `fdisk', for `Fixed DISK setup
|
|
||||||
program', where `fixed' means `not removable'. I believe the first PC
|
|
||||||
program named `fdisk' came from Microsoft in about 1985; before that
|
|
||||||
time disks were too small to divide into separate sections.
|
|
||||||
|
|
||||||
Every operating system has its own peculiarities. Normally you
|
|
||||||
should set up a partition for the use of one operating system by using
|
|
||||||
its own `fdisk' program. Do not use the Linux `fdisk' to create
|
|
||||||
partitions for DOS or for any system other than Linux; otherwise you
|
|
||||||
may have problems.
|
|
||||||
|
|
||||||
An `fdisk' program performs two functions: it reports how the disk is
|
|
||||||
configured, and it changes that configuration by adding or deleting
|
|
||||||
partitions. Most `fdisk' programs can also change other information in
|
|
||||||
partition tables.
|
|
||||||
|
|
||||||
This `fdisk' for Linux operates on one hard disk at a time. If you
|
|
||||||
give the command
|
|
||||||
|
|
||||||
fdisk
|
|
||||||
|
|
||||||
it reports on, and is able to change, `/dev/hda', the first hard
|
|
||||||
disk. (If you have no `/dev/hda', `fdisk' uses `/dev/sda' as the
|
|
||||||
default device.) To look at or change the second hard disk, `/dev/hdb',
|
|
||||||
give the command
|
|
||||||
|
|
||||||
fdisk /dev/hdb
|
|
||||||
|
|
||||||
To look at or change the first SCSI disk, give the command
|
|
||||||
|
|
||||||
fdisk /dev/sda
|
|
||||||
|
|
||||||
There are some special forms of the `fdisk' command. One of them,
|
|
||||||
suggested by Jim Winstead, simply lists all partitions on all available
|
|
||||||
disks:
|
|
||||||
|
|
||||||
fdisk -l (where `l' is a letter, not the digit `1')
|
|
||||||
|
|
||||||
The option `-v' is provided to list the current version of the
|
|
||||||
`fdisk' command. Finally, there is an option `-s' which is not really
|
|
||||||
intended for interactive use. It causes fdisk to print the size of a
|
|
||||||
partition in blocks of 1024 bytes as follows:
|
|
||||||
|
|
||||||
fdisk -s /dev/hda7
|
|
||||||
39934
|
|
||||||
|
|
||||||
Because this is intended to be used by `mkfs' and `mkswap' programs,
|
|
||||||
it does not return the size of extended partitions or of partitions
|
|
||||||
whose system type code is less than 10 (hexadecimal a). If you start
|
|
||||||
`fdisk' without using one of these special options, it responds by
|
|
||||||
asking for a command:
|
|
||||||
|
|
||||||
Command (m for help): _
|
|
||||||
|
|
||||||
Each `fdisk' command consists of a single letter, which must be
|
|
||||||
followed by <RETURN> before it is obeyed. Upper and lower case are not
|
|
||||||
distinguished. Anything you type after the first character is ignored.
|
|
||||||
Give the command `m', and you should see this menu:
|
|
||||||
Command action
|
|
||||||
a toggle a bootable flag
|
|
||||||
d delete a partition
|
|
||||||
l list known partition types
|
|
||||||
m print this menu
|
|
||||||
n add a new partition
|
|
||||||
p print the partition table
|
|
||||||
q quit without saving changes
|
|
||||||
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): _
|
|
||||||
|
|
||||||
The simplest commands are Print, Verify, and Quit. On a small disk, the
|
|
||||||
Print command might produce a display like this one:
|
|
||||||
|
|
||||||
Disk /dev/hda: 5 heads, 17 sectors, 977 cylinders
|
|
||||||
Units = cylinders of 85 * 512 bytes
|
|
||||||
|
|
||||||
Device Boot Begin Start End Blocks Id System
|
|
||||||
/dev/hda1 * 1 1 236 10021+ 1 DOS 12-bit FAT
|
|
||||||
/dev/hda2 837 837 977 5992+ 5 Extended
|
|
||||||
/dev/hda3 * 237 237 836 25500 83 Linux native
|
|
||||||
/dev/hda5 837 837 936 4249+ 82 Linux swap
|
|
||||||
/dev/hda6 942 942 977 1522 1 DOS 12-bit FAT
|
|
||||||
|
|
||||||
There are 5 partitions reported; `/dev/hda4' does not appear because
|
|
||||||
it is not allocated. Partitions 1 and 3 are flagged as bootable. The
|
|
||||||
size of each partition is reported in 1 kilobyte blocks; hence the
|
|
||||||
primary Linux partition, partition 3, is 25 1/2 megabytes in size. The
|
|
||||||
`+' after three of the sizes warns that these partitions contain an odd
|
|
||||||
number of sectors: Linux normally allocates filespace in 1 kilobyte
|
|
||||||
blocks, so the extra sector in partition 5 is wasted. Id numbers are
|
|
||||||
reported in hexadecimal and explained in English.
|
|
||||||
|
|
||||||
The display/entry units may be either cylinders or sectors. The
|
|
||||||
default is cylinders, but changing the units makes the print command
|
|
||||||
display the following table for the system reported above:
|
|
||||||
|
|
||||||
Disk /dev/hda: 5 heads, 17 sectors, 977 cylinders
|
|
||||||
Units = sectors of 1 * 512 bytes
|
|
||||||
|
|
||||||
Device Boot Begin Start End Blocks Id System
|
|
||||||
/dev/hda1 * 1 17 20059 10021+ 1 DOS 12-bit FAT
|
|
||||||
/dev/hda2 71060 71060 83044 5992+ 5 Extended
|
|
||||||
/dev/hda3 * 20060 20060 71059 25500 83 Linux native
|
|
||||||
/dev/hda5 71061 71061 79559 4249+ 82 Linux swap
|
|
||||||
/dev/hda6 79985 80001 83044 1522 1 DOS 12-bit FAT
|
|
||||||
|
|
||||||
The start of data in both DOS partitions is 16 sectors after the
|
|
||||||
beginning of the partition: this is one reason why you should use DOS's
|
|
||||||
own `FDISK' to create DOS partitions. Changing the units to sectors
|
|
||||||
also affects the way in which the new partition command asks for the
|
|
||||||
beginning and end of a new partition.
|
|
||||||
|
|
||||||
*Warning*: it is dangerous to create a new partition when the
|
|
||||||
display/entry units are sectors.
|
|
||||||
|
|
||||||
The Verify command is useful because
|
|
||||||
|
|
||||||
1. It warns you if anything is wrong. *Always* do a Verify command
|
|
||||||
to check your work before writing any changes to disk.
|
|
||||||
|
|
||||||
2. It reports how many unallocated sectors there are on the disk.
|
|
||||||
|
|
||||||
The Quit command is also useful. `fdisk' does not actually change
|
|
||||||
any data on your disk unless you give a Write command. If you are
|
|
||||||
unhappy about any changes you may have made, give the Quit command, and
|
|
||||||
your disk will remain as it was before you ran `fdisk'. You can also
|
|
||||||
interrupt `fdisk' with `CTRL-C'.
|
|
||||||
|
|
||||||
|
|
||||||
Deleting and adding partitions
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
Deleting a partition is simple. Give the Delete command by typing
|
|
||||||
`d'. `fdisk' asks:
|
|
||||||
|
|
||||||
Partition number (1-6): _
|
|
||||||
|
|
||||||
Once you get this far, you must either delete a partition or
|
|
||||||
interrupt the program with `CTRL-C' (or whatever your current interrupt
|
|
||||||
character is). Note:
|
|
||||||
|
|
||||||
1. You may delete a nonexistent partition. You will get a warning
|
|
||||||
message.
|
|
||||||
|
|
||||||
2. You may delete an extended partition. This has the side effect of
|
|
||||||
deleting all partitions greater than or equal to 5.
|
|
||||||
|
|
||||||
3. You may delete a logical partition. In that case, all partitions
|
|
||||||
above it are renumbered at once. For example, if you delete
|
|
||||||
partition 5, then partition 6 becomes known as partition 5, and
|
|
||||||
partition 7 as partition 6.
|
|
||||||
|
|
||||||
Adding a partition is just a bit more complicated. Give the New
|
|
||||||
command by typing `n'. `fdisk' allows you to
|
|
||||||
|
|
||||||
1. Create a primary partition, if there is a free slot in the primary
|
|
||||||
partition table.
|
|
||||||
|
|
||||||
2. Create an extended partition if there is a free slot in the
|
|
||||||
primary partition table, and if there is no extended partition.
|
|
||||||
|
|
||||||
3. Create a logical partition if an extended partition exists.
|
|
||||||
|
|
||||||
If more than one of these actions is possible, you will be asked to
|
|
||||||
select Primary, Extended, or Logical, depending on what is currently
|
|
||||||
permissible. Before you create a primary or an extended partition, you
|
|
||||||
are asked what slot it is to have in the table (1-4).
|
|
||||||
|
|
||||||
You may not add a primary or an extended partition if the selected
|
|
||||||
slot in the primary partition table is already occupied: in that case
|
|
||||||
you simply return to the main menu. You are not allowed to add a new
|
|
||||||
primary partition unless there are sectors available outside the
|
|
||||||
extended partition. You are not allowed to add a new logical partition
|
|
||||||
unless there are sectors available inside the extended partition.
|
|
||||||
|
|
||||||
If space is available, you are prompted for the first cylinder:
|
|
||||||
|
|
||||||
First cylinder ([237]-977): _
|
|
||||||
|
|
||||||
The limits are the lowest and the highest cylinders in which sectors
|
|
||||||
are available in the appropriate part of the disk. The square-bracketed
|
|
||||||
number is what you'll get if you simply press enter. Not all numbers in
|
|
||||||
this range are necessarily available: they may fall inside an existing
|
|
||||||
partition. If you select a cylinder which is already in use, you are
|
|
||||||
told off and prompted again for the first cylinder. After selecting the
|
|
||||||
first cylinder, you are prompted again:
|
|
||||||
|
|
||||||
Last cylinder or +size or +sizeM or +sizeK (237-[836]): _
|
|
||||||
|
|
||||||
The limits are the cylinder you have chosen as the first cylinder,
|
|
||||||
and the highest cylinder which contains a legitimate upper boundary for
|
|
||||||
the new partition. The square-bracketed number is what you'll get if
|
|
||||||
you simply press enter. In other words, all numbers in the given range are
|
|
||||||
legitimate, unlike those in the first range of cylinders. You may also
|
|
||||||
specify the size of a partition in megabytes, kilobytes, or in the
|
|
||||||
current units (cylinders or sectors). A plus sign `+' indicates that
|
|
||||||
your answer is a size rather than a boundary, and the suffix `m' or `k'
|
|
||||||
(upper or lower case) indicates that the size is not given in units of
|
|
||||||
sectors or cylinders, but in megabytes or kilobytes respectively. Thus
|
|
||||||
possible answers to the last cylinder request above are
|
|
||||||
|
|
||||||
700
|
|
||||||
Make cylinder 700 the last cylinder in the partition.
|
|
||||||
|
|
||||||
+300
|
|
||||||
Make cylinder 237 + 300 = 537 the last cylinder in the partition.
|
|
||||||
|
|
||||||
+15m
|
|
||||||
Make the partition at least 15 megabytes in size.
|
|
||||||
|
|
||||||
+12500k
|
|
||||||
Make the partition at least 12,500 kilobytes in size.
|
|
||||||
|
|
||||||
If you specify a size which is too large or an end which is out of
|
|
||||||
range, fdisk complains and repeats the prompt.
|
|
||||||
|
|
||||||
Adding or deleting partitions has no effect unless you subsequently
|
|
||||||
give the Write command. Please remember to give the Verify command
|
|
||||||
first, just before giving the Write command: this is a safety
|
|
||||||
precaution. After giving the Write command, you will see this message:
|
|
||||||
|
|
||||||
The partition table has been altered!
|
|
||||||
Calling ioctl() to re-read partition table.
|
|
||||||
Syncing disks.
|
|
||||||
|
|
||||||
If there are no further messages, the kernel has successfully copied
|
|
||||||
the information from the partition table into its own internal table.
|
|
||||||
But sometimes you will see a message like this one:
|
|
||||||
|
|
||||||
Re-read table failed with error 16: Device or resource busy.
|
|
||||||
Reboot your system to ensure the partition table is updated.
|
|
||||||
|
|
||||||
In this case, depending on what you have changed in the partition
|
|
||||||
table, it may be dangerous to continue working without rebooting,
|
|
||||||
since you may lose or corrupt your data.
|
|
||||||
|
|
||||||
|
|
||||||
Here are some important things to note:
|
|
||||||
|
|
||||||
1. Before you reboot, you *may* run `fdisk' again, either to manage
|
|
||||||
another disk, or to make additional changes to the same disk, or
|
|
||||||
just to check that the changes have been made as you expected.
|
|
||||||
This is true even after you receive the message warning you to
|
|
||||||
reboot.
|
|
||||||
|
|
||||||
2. It is not a good idea to run any of the programs `mkfs', `mkswap',
|
|
||||||
`mount', or `swapon' if you have received the warning message but
|
|
||||||
have not rebooted. In this case it is dangerous to run any program,
|
|
||||||
but these in particular may cause serious damage to the data on your
|
|
||||||
disk, including the partition tables themselves.
|
|
||||||
|
|
||||||
|
|
||||||
Active flags and system types
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
The active flag is a bit in the partition table entry which marks a
|
|
||||||
partition as bootable. This is important to some primary boot sector
|
|
||||||
programs, which will not boot from an unflagged partition. Other such
|
|
||||||
programs do not allow more than one partition to be flagged. Some,
|
|
||||||
like LILO, ignore the flags completely. I prefer to flag all bootable
|
|
||||||
partitions as active so that they stand out on the menu which `fdisk'
|
|
||||||
lists. Fdisk prints a star after the name of a partition's device file
|
|
||||||
if its active flag is set.
|
|
||||||
|
|
||||||
The Active command changes, or toggles, a partition's active flag.
|
|
||||||
Give the Active command, and select a partition by number. If it was
|
|
||||||
marked inactive, it will be flagged as active; if it was flagged as
|
|
||||||
active, it will be marked inactive. You may set the active flag on an
|
|
||||||
extended or logical partition, though the meaning of such a flag is by
|
|
||||||
no means clear. This can be used to install LILO as a secondary boot
|
|
||||||
loader to boot a Linux which lives on a second hard disk.
|
|
||||||
|
|
||||||
The Type command changes the ID number which describes what type a
|
|
||||||
partition is. `fdisk' currently recognises 30 system IDs, in the sense
|
|
||||||
that it prints a string for each of them, but it allows you to change
|
|
||||||
any system ID to any other, with the following exceptions: you may not
|
|
||||||
change any partition to or from the type Extended, and you may not
|
|
||||||
change a partition whose type is Empty (0) to any other type. You may,
|
|
||||||
however, change the type of any data partition to 0, which is
|
|
||||||
equivalent to deleting it.
|
|
||||||
|
|
||||||
The new system ID or type code is a hexadecimal number. There are
|
|
||||||
two ways of listing the numbers which `fdisk' recognises: use the List
|
|
||||||
command, which prints the list, or use the Type command, which, when it
|
|
||||||
prompts you for the code, says
|
|
||||||
|
|
||||||
Hex code (type L to list codes): _
|
|
||||||
|
|
||||||
where the upper case `L' is used for clarity. The codes printed are:
|
|
||||||
Some of these numbers are a trifle uncertain. By default `fdisk' uses
|
|
||||||
a type of 83. It used to use 81, the type code used by the MINIX
|
|
||||||
`fdisk'. It seemed prudent to change the default since (a) many Linux
|
|
||||||
`minix' file systems are no longer compatible with MINIX, (b) the ext2
|
|
||||||
file system, a native Linux file system, is fairly stable, as is the
|
|
||||||
Xia file system, and (c) the number 81 causes problems with DR-DOS.
|
|
||||||
Linux does not usually care what values you use for type codes, but
|
|
||||||
other systems, in particular DOS, OS/2, and DR-DOS, may.
|
|
||||||
|
|
||||||
The value of 82 for Linux swap partitions is my own invention, and
|
|
||||||
is intended to give some recognisable distinction to the partitions
|
|
||||||
when the values are displayed in hexadecimal.
|
|
||||||
|
|
||||||
New active flags and new system type codes are not written to the
|
|
||||||
disk until you exit from `fdisk' with the Write command, as described
|
|
||||||
above, in the section on deleting and adding partitions.
|
|
||||||
|
|
||||||
|
|
||||||
Extra commands for experts
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
The eXtra command `x' puts `fdisk' into `expert' mode, in which a
|
|
||||||
slightly different set of commands is available. The Active, Delete,
|
|
||||||
List, New, Type, Verify, and `eXpert' commands are not available in
|
|
||||||
expert mode. The commands Write and Quit are available as in ordinary
|
|
||||||
mode, the Print command is available, but produces output in a slightly
|
|
||||||
different format, and of course the Menu command prints the expert
|
|
||||||
menu. There are several new commands.
|
|
||||||
|
|
||||||
1. The Return command brings you back to the main menu.
|
|
||||||
|
|
||||||
2. The Extended command prints the list of table entries which point
|
|
||||||
to other tables. Ordinary users do not need this information.
|
|
||||||
The data is shown as it is stored. The same format is used for
|
|
||||||
the expert Print command.
|
|
||||||
|
|
||||||
3. The dangerous Begin command allows you to move the start of data
|
|
||||||
in a partition away from its beginning. Other systems create
|
|
||||||
partitions with this format, and it is sometimes useful to be able
|
|
||||||
to reproduce it.
|
|
||||||
|
|
||||||
4. The slightly dangerous Cylinders command allows you to change the
|
|
||||||
available number of cylinders. For SCSI disk owners, note that we
|
|
||||||
require not the actual number of physical cylinders, but the
|
|
||||||
number of logical cylinders used by DOS and other operating
|
|
||||||
systems.
|
|
||||||
|
|
||||||
5. The extremely dangerous Heads and Sectors commands allow you to
|
|
||||||
change the number of heads and sectors. It should not be
|
|
||||||
necessary to use these commands unless you have a SCSI disk, whose
|
|
||||||
geometry Linux is not always able to determine. SCSI disk owners
|
|
||||||
note that we need not the actual number of heads or of sectors per
|
|
||||||
track, but the number believed to exist by DOS and other operating
|
|
||||||
systems. *Warning*: If you set either of these numbers to a bad
|
|
||||||
value, you may lose all data on your disk.
|
|
||||||
|
|
||||||
Always, after giving any of the commands Begin, Cylinder, Heads, or
|
|
||||||
Sectors, you should Return to the main menu and give the Verify command.
|
|
||||||
|
|
||||||
|
|
||||||
Warnings for `fdisk' users
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
In general, you should not use this `fdisk' program to create
|
|
||||||
partitions for other operating systems, only for Linux. Nor should you
|
|
||||||
use `fdisk' commands from other operating systems to create partitions
|
|
||||||
for Linux.
|
|
||||||
|
|
||||||
DR-DOS 5.0 and 6.0 are reported to have difficulties with partition
|
|
||||||
ID codes of 80 or more. The Linux `fdisk' used to set the system type
|
|
||||||
of new partitions to hexadecimal 81. DR-DOS seems to confuse this with
|
|
||||||
hexadecimal 1, a DOS code. The values 82 for swap and 83 for file
|
|
||||||
systems should not cause problems with DR-DOS. If they do, you may use
|
|
||||||
the `fdisk' command `t' to change the system code of any Linux
|
|
||||||
partitions to some number less than hexadecimal 80; I suggest 42 and 43
|
|
||||||
for the moment.
|
|
||||||
|
|
||||||
Partitioning a hard disk may destroy data which is on that disk if you
|
|
||||||
are not careful. Go slowly, write down a description of the partition
|
|
||||||
tables before you changed them, and always verify before you write.
|
|
||||||
|
|
||||||
Most operating systems and utilities expect that all partitions begin and
|
|
||||||
end at cylinder boundaries. This version of `fdisk' does so by default,
|
|
||||||
but you can use it to create partitions which begin or end anywhere.
|
|
||||||
This does not normally affect Linux, but it is very dangerous, as other
|
|
||||||
operating systems (including DOS) may try to `correct' the partition
|
|
||||||
boundaries.
|
|
||||||
|
|
||||||
It is dangerous to create a new partition when the display/entry
|
|
||||||
units are sectors.
|
|
||||||
|
|
||||||
The Verify command warns you if anything is wrong. *Always* give a
|
|
||||||
Verify command before writing any changes to disk.
|
|
||||||
|
|
||||||
If you set the disk geometry (tracks per cylinder, or sectors per
|
|
||||||
track) to an incorrect value, you may lose all data on your disk.
|
|
||||||
|
|
||||||
Do create BSD/SUN and/or IRIX/SGI disk labels only when you are sure
|
|
||||||
that you want them. Both features are intended to allow you READing
|
|
||||||
those labels and prevent unintentional formatting of these disks.
|
|
|
@ -1,264 +0,0 @@
|
||||||
Examples of the use of sfdisk 3.0 (to partition a disk)
|
|
||||||
Input lines have fields <start>,<size>,<type>... - see sfdisk.8.
|
|
||||||
Usually no <start> is given, and input lines start with a comma.
|
|
||||||
|
|
||||||
Before doing anything with a disk, make sure it is not in use;
|
|
||||||
unmount all its file systems, and say swapoff to its swap partitions.
|
|
||||||
(The final BLKRRPART ioctl will fail if anything else still uses
|
|
||||||
the disk, and you will have to reboot. It is easier to first make
|
|
||||||
sure that nothing uses the disk, e.g., by testing:
|
|
||||||
% umount /dev/sdb1
|
|
||||||
% sfdisk -R /dev/sdb
|
|
||||||
BLKRRPART: Device or resource busy
|
|
||||||
* Device busy for revalidation (usage=2)
|
|
||||||
% swapoff /dev/sdb3
|
|
||||||
% sfdisk -R /dev/sdb
|
|
||||||
* sdb: sdb1 < sdb5 sdb6 > sdb3
|
|
||||||
%
|
|
||||||
Note that the starred messages are kernel messages, that may be
|
|
||||||
logged somewhere, or written to some other console.
|
|
||||||
In sfdisk 3.01 sfdisk automatically does this check, unless told not to.)
|
|
||||||
|
|
||||||
1. One big partition:
|
|
||||||
sfdisk /dev/hda << EOF
|
|
||||||
;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
(If there was garbage on the disk before, you may get error messages
|
|
||||||
like: `ERROR: sector 0 does not have an msdos signature'
|
|
||||||
and `/dev/hda: unrecognized partition'. This does not matter
|
|
||||||
if you write an entirely fresh partition table anyway.)
|
|
||||||
|
|
||||||
The output will be:
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
Old situation:
|
|
||||||
...
|
|
||||||
New situation:
|
|
||||||
Units = cylinders of 208896 bytes, blocks of 1024 bytes, counting from 0
|
|
||||||
|
|
||||||
Device Boot Start End #cyls #blocks Id System
|
|
||||||
/dev/hda1 0+ 1023 1024- 208895+ 83 Linux native
|
|
||||||
Successfully wrote the new partition table
|
|
||||||
hda: hda1
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
Writing and rereading the partition table takes a few seconds -
|
|
||||||
don't be alarmed if nothing happens for six seconds or so.
|
|
||||||
|
|
||||||
|
|
||||||
2. Three primary partitions: two of size 50MB and the rest:
|
|
||||||
sfdisk /dev/hda -uM << EOF
|
|
||||||
,50
|
|
||||||
,50
|
|
||||||
;
|
|
||||||
EOF
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
New situation:
|
|
||||||
Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
|
|
||||||
|
|
||||||
Device Boot Start End MB #blocks Id System
|
|
||||||
/dev/hda1 0+ 50- 51- 51203+ 83 Linux native
|
|
||||||
/dev/hda2 50+ 100- 51- 51204 83 Linux native
|
|
||||||
/dev/hda3 100+ 203 104- 106488 83 Linux native
|
|
||||||
Successfully wrote the new partition table
|
|
||||||
hda: hda1 hda2 hda3
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
/dev/hda1 is one block (in fact only half a block) shorter than
|
|
||||||
/dev/hda2 because its start had to be shifted away from zero in
|
|
||||||
order to leave room for the Master Boot Record (MBR).
|
|
||||||
|
|
||||||
|
|
||||||
3. A 1MB OS2 Boot Manager partition, a 50MB DOS partition,
|
|
||||||
and three extended partitions (DOS D:, Linux swap, Linux):
|
|
||||||
sfdisk /dev/hda -uM << EOF
|
|
||||||
,1,a
|
|
||||||
,50,6
|
|
||||||
,,E
|
|
||||||
;
|
|
||||||
,20,4
|
|
||||||
,16,S
|
|
||||||
;
|
|
||||||
EOF
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
Device Boot Start End MB #blocks Id System
|
|
||||||
/dev/hda1 0+ 1- 2- 1223+ a OS/2 Boot Manager
|
|
||||||
/dev/hda2 1+ 51- 51- 51204 6 DOS 16-bit FAT >=32M
|
|
||||||
/dev/hda3 51+ 203 153- 156468 5 Extended
|
|
||||||
/dev/hda4 0 - 0 0 0 Empty
|
|
||||||
/dev/hda5 51+ 71- 21- 20603+ 4 DOS 16-bit FAT <32M
|
|
||||||
/dev/hda6 71+ 87- 17- 16523+ 82 Linux swap
|
|
||||||
/dev/hda7 87+ 203 117- 119339+ 83 Linux native
|
|
||||||
Successfully wrote the new partition table
|
|
||||||
hda: hda1 hda2 hda3 < hda5 hda6 hda7 >
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
All these rounded numbers look better in cylinder units:
|
|
||||||
% sfdisk -l /dev/hda
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
Device Boot Start End #cyls #blocks Id System
|
|
||||||
/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager
|
|
||||||
/dev/hda2 6 256 251 51204 6 DOS 16-bit FAT >=32M
|
|
||||||
/dev/hda3 257 1023 767 156468 5 Extended
|
|
||||||
/dev/hda4 0 - 0 0 0 Empty
|
|
||||||
/dev/hda5 257+ 357 101- 20603+ 4 DOS 16-bit FAT <32M
|
|
||||||
/dev/hda6 358+ 438 81- 16523+ 82 Linux swap
|
|
||||||
/dev/hda7 439+ 1023 585- 119339+ 83 Linux native
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
But still - why does /dev/hda5 not start on a cylinder boundary?
|
|
||||||
Because it is contained in an extended partition that does.
|
|
||||||
Of the chain of extended partitions, usually only the first is
|
|
||||||
shown. (The others have no name under Linux anyway.) But
|
|
||||||
these additional extended partitions can be made visible:
|
|
||||||
% sfdisk -l -x /dev/hda
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
Device Boot Start End #cyls #blocks Id System
|
|
||||||
/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager
|
|
||||||
/dev/hda2 6 256 251 51204 6 DOS 16-bit FAT >=32M
|
|
||||||
/dev/hda3 257 1023 767 156468 5 Extended
|
|
||||||
/dev/hda4 0 - 0 0 0 Empty
|
|
||||||
|
|
||||||
/dev/hda5 257+ 357 101- 20603+ 4 DOS 16-bit FAT <32M
|
|
||||||
- 358 1023 666 135864 5 Extended
|
|
||||||
- 257 256 0 0 0 Empty
|
|
||||||
- 257 256 0 0 0 Empty
|
|
||||||
|
|
||||||
/dev/hda6 358+ 438 81- 16523+ 82 Linux swap
|
|
||||||
- 439 1023 585 119340 5 Extended
|
|
||||||
- 358 357 0 0 0 Empty
|
|
||||||
- 358 357 0 0 0 Empty
|
|
||||||
|
|
||||||
/dev/hda7 439+ 1023 585- 119339+ 83 Linux native
|
|
||||||
- 439 438 0 0 0 Empty
|
|
||||||
- 439 438 0 0 0 Empty
|
|
||||||
- 439 438 0 0 0 Empty
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
Why the empty 4th input line? The description of the extended partitions
|
|
||||||
starts after that of the four primary partitions.
|
|
||||||
You force an empty partition with a ",0" input line, but here all
|
|
||||||
space was divided already, so the fourth partition became empty
|
|
||||||
automatically.
|
|
||||||
|
|
||||||
How did I know about 4,6,a,E,S? Well, E,S,L stand for Extended,
|
|
||||||
Swap and Linux. The other values are hexadecimal and come from
|
|
||||||
the table:
|
|
||||||
% sfdisk -T
|
|
||||||
Id Name
|
|
||||||
|
|
||||||
0 Empty
|
|
||||||
1 DOS 12-bit FAT
|
|
||||||
2 XENIX root
|
|
||||||
3 XENIX usr
|
|
||||||
4 DOS 16-bit FAT <32M
|
|
||||||
5 Extended
|
|
||||||
6 DOS 16-bit FAT >=32M
|
|
||||||
7 OS/2 HPFS or QNX or Advanced UNIX
|
|
||||||
8 AIX data
|
|
||||||
9 AIX boot or Coherent
|
|
||||||
a OS/2 Boot Manager
|
|
||||||
...
|
|
||||||
|
|
||||||
|
|
||||||
4. Preserving the sectors changed by sfdisk.
|
|
||||||
% sfdisk -O save-hdd-partition-sectors /dev/hda
|
|
||||||
...
|
|
||||||
will write the sectors overwritten by sfdisk to file.
|
|
||||||
If you notice that you trashed some partition, you may
|
|
||||||
be able to restore things by
|
|
||||||
% sfdisk -I save-hdd-partition-sectors /dev/hda
|
|
||||||
%
|
|
||||||
|
|
||||||
5. Preserving some old partitions.
|
|
||||||
% sfdisk -N2 /dev/hda
|
|
||||||
...
|
|
||||||
will only change the partition /dev/hda2, and leave the rest
|
|
||||||
unchanged. The most obvious application is to change an Id:
|
|
||||||
% sfdisk -N7 /dev/hda
|
|
||||||
,,63
|
|
||||||
%
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
Old situation:
|
|
||||||
|
|
||||||
Device Boot Start End #cyls #blocks Id System
|
|
||||||
/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager
|
|
||||||
...
|
|
||||||
/dev/hda6 358+ 438 81- 16523+ 82 Linux swap
|
|
||||||
/dev/hda7 439+ 1023 585- 119339+ 83 Linux native
|
|
||||||
|
|
||||||
New situation:
|
|
||||||
|
|
||||||
Device Boot Start End #cyls #blocks Id System
|
|
||||||
/dev/hda1 0+ 5 6- 1223+ a OS/2 Boot Manager
|
|
||||||
...
|
|
||||||
/dev/hda6 358+ 438 81- 16523+ 82 Linux swap
|
|
||||||
/dev/hda7 439+ 1023 585- 119339+ 63 GNU HURD
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
Note that changing a logical partition into an empty partition
|
|
||||||
will decrease the number of all subsequent logical partitions.
|
|
||||||
|
|
||||||
6. Deleting a partition.
|
|
||||||
At first I thought of having an option -X# for deleting partitions,
|
|
||||||
but there are several ways in which a partition can be deleted, and
|
|
||||||
it is probably better to handle this just as a general change.
|
|
||||||
% sfdisk -d /dev/hda > ohda
|
|
||||||
will write the current tables on the file `ohda'.
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
% cat ohda
|
|
||||||
# partition table of /dev/hda
|
|
||||||
unit: sectors
|
|
||||||
|
|
||||||
/dev/hda1 : start= 1, size= 40799, Id= 5
|
|
||||||
/dev/hda2 : start= 40800, size= 40800, Id=83
|
|
||||||
/dev/hda3 : start= 81600, size= 336192, Id=83
|
|
||||||
/dev/hda4 : start= 0, size= 0, Id= 0
|
|
||||||
/dev/hda5 : start= 2, size= 40798, Id=83
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
In order to delete the partition on /dev/hda3, edit this file
|
|
||||||
and feed the result to sfdisk again.
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
% emacs ohda
|
|
||||||
% cat ohda
|
|
||||||
# partition table of /dev/hda
|
|
||||||
unit: sectors
|
|
||||||
|
|
||||||
/dev/hda1 : start= 1, size= 40799, Id= 5
|
|
||||||
/dev/hda2 : start= 40800, size= 40800, Id=83
|
|
||||||
/dev/hda3 : start= 0, size= 0, Id= 0
|
|
||||||
/dev/hda4 : start= 0, size= 0, Id= 0
|
|
||||||
/dev/hda5 : start= 2, size= 40798, Id=83
|
|
||||||
% sfdisk /dev/hda < ohda
|
|
||||||
Old situation:
|
|
||||||
Units = cylinders of 208896 bytes, blocks of 1024 bytes, counting from 0
|
|
||||||
|
|
||||||
Device Boot Start End #cyls #blocks Id System
|
|
||||||
/dev/hda1 0+ 99 100- 20399+ 5 Extended
|
|
||||||
/dev/hda2 100 199 100 20400 83 Linux native
|
|
||||||
/dev/hda3 200 1023 824 168096 83 Linux native
|
|
||||||
/dev/hda4 0 - 0 0 0 Empty
|
|
||||||
/dev/hda5 0+ 99 100- 20399 83 Linux native
|
|
||||||
New situation:
|
|
||||||
Units = sectors of 512 bytes, counting from 0
|
|
||||||
|
|
||||||
Device Boot Start End #sectors Id System
|
|
||||||
/dev/hda1 1 40799 40799 5 Extended
|
|
||||||
/dev/hda2 40800 81599 40800 83 Linux native
|
|
||||||
/dev/hda3 0 - 0 0 Empty
|
|
||||||
/dev/hda4 0 - 0 0 Empty
|
|
||||||
/dev/hda5 2 40799 40798 83 Linux native
|
|
||||||
Successfully wrote the new partition table
|
|
||||||
% sfdisk -l -V /dev/hda
|
|
||||||
|
|
||||||
Disk /dev/hda: 12 heads, 34 sectors, 1024 cylinders
|
|
||||||
Units = cylinders of 208896 bytes, blocks of 1024 bytes, counting from 0
|
|
||||||
|
|
||||||
Device Boot Start End #cyls #blocks Id System
|
|
||||||
/dev/hda1 0+ 99 100- 20399+ 5 Extended
|
|
||||||
/dev/hda2 100 199 100 20400 83 Linux native
|
|
||||||
/dev/hda3 0 - 0 0 0 Empty
|
|
||||||
/dev/hda4 0 - 0 0 0 Empty
|
|
||||||
/dev/hda5 0+ 99 100- 20399 83 Linux native
|
|
||||||
/dev/hda: OK
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
This is a good way of making changes: dump the current status
|
|
||||||
to file, edit the file, and feed it to sfdisk.
|
|
||||||
Preserving the file on some other disk could be useful:
|
|
||||||
if ever the MBR gets thrashed it can be used to restore
|
|
||||||
the old situation.
|
|
Loading…
Reference in New Issue