diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2012-11-02 20:15:39 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2012-11-02 20:15:39 +0400 |
commit | b13154de3eca5ba28fbb4854d916cd0be5febeed (patch) | |
tree | 30f2e9e89ab71a2df837076ac68c3ba770230294 /fdisks/sfdisk.8 | |
download | util-linux-upstream/2.22.tar.gz |
Imported Upstream version 2.22upstream/2.22upstream
Diffstat (limited to 'fdisks/sfdisk.8')
-rw-r--r-- | fdisks/sfdisk.8 | 603 |
1 files changed, 603 insertions, 0 deletions
diff --git a/fdisks/sfdisk.8 b/fdisks/sfdisk.8 new file mode 100644 index 0000000..32907e3 --- /dev/null +++ b/fdisks/sfdisk.8 @@ -0,0 +1,603 @@ +.\" Copyright 1995 Andries E. Brouwer (aeb@cwi.nl) +.\" May be distributed under the GNU General Public License +.\" The `DOS 6.x Warning' was taken from the old fdisk.8, which says +.\" -- Copyright 1992, 1993 Rickard E. Faith (faith@cs.unc.edu) +.\" -- May be distributed under the GNU General Public License +.\" The `DRDOS Warning' was taken from a net post by Stephen Tweedie. +.\" +.TH SFDISK 8 "August 2011" "util-linux" "System Administration" +.SH NAME +sfdisk \- partition table manipulator for Linux +.SH SYNOPSIS +.B sfdisk +.RI [ options ] +.I device +.br +.B sfdisk \-s +.RI [ partition ] +.SH DESCRIPTION +.B sfdisk +has four (main) uses: list the size of a partition, list the partitions +on a device, check the partitions on a device, and \- very dangerous \- +repartition a device. + +.B sfdisk +doesn't understand the GUID Partition Table (GPT) format and it is not +designed for large partitions. In these cases use the more advanced GNU +.BR parted (8). + +Note that +.B sfdisk +does not align partitions to block device I/O limits. This functionality is +provided by +.BR fdisk (8). + +.SS "List sizes" +.BI "sfdisk \-s " partition +gives the size of +.I partition +in blocks. This may be useful in connection with programs like +.BR mkswap (8). +Here +.I partition +is usually something like +.I /dev/hda1 +or +.IR /dev/sdb12 , +but may also be an entire disk, like +.IR /dev/xda . + +.RS +.nf +.if t .ft CW +% sfdisk \-s /dev/hda9 +81599 +.if t .ft R +.fi +.RE + +If the partition argument is omitted, +.B sfdisk +will list the sizes of all disks, and the total: + +.RS +.nf +.if t .ft CW +% sfdisk \-s +/dev/hda: 208896 +/dev/hdb: 1025136 +/dev/hdc: 1031063 +/dev/sda: 8877895 +/dev/sdb: 1758927 +total: 12901917 blocks +.if t .ft R +.fi +.RE + +.SS "List partitions" +The second type of invocation: +.BI "sfdisk \-l " device +will list the partitions on the specified device. If the +.I device +argument is omitted, the partitions on all hard disks are listed. + +.RS +.nf +.if t .ft CW +% sfdisk \-l /dev/hdc + +Disk /dev/hdc: 16 heads, 63 sectors, 2045 cylinders +Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0 + + Device Boot Start End #cyls #blocks Id System +/dev/hdc1 0+ 406 407\- 205096+ 83 Linux native +/dev/hdc2 407 813 407 205128 83 Linux native +/dev/hdc3 814 2044 1231 620424 83 Linux native +/dev/hdc4 0 \- 0 0 0 Empty +.if t .ft R +.fi +.RE + +The trailing \- and + signs indicate that rounding has taken place, +and that the actual value is slightly less or more. To see the +exact values, ask for a listing with sectors as unit (\fB\-u S\fR). + +.SS "Check partitions" +The third type of invocation: +.BI "sfdisk \-V " device +will apply various consistency checks to the partition tables on +.IR device . +It prints `OK' or complains. The \fB\-V\fR option can be used +together with \fB\-l\fR. In a shell script one might use +.BI "sfdisk \-V \-q " device +which only returns a status. + +.SS "Create partitions" +The fourth type of invocation: +.BI "sfdisk " device +will cause +.B sfdisk +to read the specification for the desired partitioning of +.I device +from standard input, and then to change the partition tables +on that disk. Thus it is possible to use +.B sfdisk +from a shell script. When +.B sfdisk +determines that its standard input is a terminal, it will be +conversational; otherwise it will abort on any error. +.LP +BE EXTREMELY CAREFUL - ONE TYPING MISTAKE AND ALL YOUR DATA IS LOST +.LP +As a precaution, one can save the sectors changed by +.BR sfdisk : + +.RS +.nf +.if t .ft CW +% sfdisk /dev/hdd \-O hdd-partition-sectors.save +\&... +.if t .ft R +.fi +.RE + +.LP +Then, if you discover that you did something stupid before anything +else has been written to disk, it may be possible to recover +the old situation with: + +.RS +.nf +.if t .ft CW +% sfdisk /dev/hdd \-I hdd-partition-sectors.save +.if t .ft R +.fi +.RE + +.LP +(This is not the same as saving the old partition table: +a readable version of the old partition table can be saved +using the \fB\-d\fR option. However, if you create logical partitions, +the sectors describing them are located somewhere on disk, +possibly on sectors that were not part of the partition table +before. Thus, the information the \fB\-O\fR option saves +is not a binary version of the output of \fB\-d\fR.) + +There are many options. + +.SH OPTIONS +.TP +.BR \-v ", " \-\-version +Print version number of +.B sfdisk +and exit immediately. +.TP +.BR \-h ", " \-\-help +Print a usage message and exit immediately. +.TP +.BR \-T ", " \-\-list\-types +Print the recognized types (system Id's). +.TP +.BR \-s ", " \-\-show\-size +List the size of a partition. +.TP +.BR \-g ", " \-\-show\-geometry +List the kernel's idea of the geometry of the indicated disk(s). +.TP +.BR \-G ", " \-\-show\-pt\-geometry +List the geometry of the indicated disks guessed by looking at +the partition table. +.TP +.BR \-l ", " \-\-list +List the partitions of a device. +.TP +.BR \-d ", " \-\-dump +Dump the partitions of a device in a format that is usable as input +to /fBsfdisk/fR. For example, +.br +.nf +.if t .ft CW + % sfdisk -d /dev/hda > hda.out + % sfdisk /dev/hda < hda.out +.if t .ft R +.fi +will correct the bad last extended partition that the OS/2 +fdisk creates. +.TP +.BR \-V ", " \-\-verify +Test whether partitions seem correct. (See the third invocation type above.) +.TP +.BR \-i ", " \-\-increment +Number cylinders etc. starting from 1 instead of 0. +.TP +.BI \-N " number" +Change only the single partition indicated. For example: +.nf +.if t .ft CW + % sfdisk /dev/hdb \-N5 + ,,,* +.if t .ft R +.fi +will make the fifth partition on /dev/hdb bootable (`active') +and change nothing else. (Probably this fifth partition +is called /dev/hdb5, but you are free to call it something else, +like `/my_equipment/disks/2/5' or so). +.TP +.BR \-A ", " \-\-activate " \fInumber\fR" +Make the indicated partition(s) active, and all others inactive. +.TP +.BR \-c ", " \-\-id " \fInumber\fR [\fIId\fR]" +If no \fIId\fR argument given: print the partition Id of the indicated +partition. If an \fIId\fR argument is present: change the type (Id) of +the indicated partition to the given value. +This option has two longer forms, \fB\-\-print\-id\fR and \fB\-\-change\-id\fR. +For example: +.br +.nf +.if t .ft CW + % sfdisk --print-id /dev/hdb 5 + 6 + % sfdisk --change-id /dev/hdb 5 83 + OK +.if t .ft R +.fi +first reports that /dev/hdb5 has Id 6, and then changes that into 83. +.TP +.BR \-u ", " \-\-unit " \fIletter\fR" +Interpret the input and show the output in the units specified by +.IR letter . +This \fIletter\fR can be one of S, C, B or M, meaning Sectors, Cylinders, +Blocks and Megabytes, respectively. The default is +cylinders, at least when the geometry is known. +.TP +.BR \-x ", " \-\-show\-extended +Also list non-primary extended partitions on output, +and expect descriptors for them on input. +.TP +.BR \-C ", " \-\-cylinders " \fIcylinders\fR" +Specify the number of cylinders, possibly overriding what the kernel thinks. +.TP +.BR \-H ", " \-\-heads " \fIheads\fR" +Specify the number of heads, possibly overriding what the kernel thinks. +.TP +.BR \-S ", " \-\-sectors " \fIsectors\fR" +Specify the number of sectors, possibly overriding what the kernel thinks. +.TP +.BR \-f ", " \-\-force +Do what I say, even if it is stupid. +.TP +.BR \-q ", " \-\-quiet +Suppress warning messages. +.TP +.BR \-L ", " \-\-Linux +Do not complain about things irrelevant for Linux. +.TP +.BR \-D ", " \-\-DOS +For DOS-compatibility: waste a little space. +(More precisely: if a partition cannot contain sector 0, +e.g. because that is the MBR of the device, or contains +the partition table of an extended partition, then +.B sfdisk +would make it start the next sector. However, when this +option is given it skips to the start of the next track, +wasting for example 33 sectors (in case of 34 sectors/track), +just like certain versions of DOS do.) +Certain Disk Managers and boot loaders (such as OSBS, but not +LILO or the OS/2 Boot Manager) also live in this empty space, +so maybe you want this option if you use one. +.TP +.BR \-E ", " \-\-DOS\-extended +Take the starting sector numbers of "inner" extended partitions +to be relative to the starting cylinder boundary of the outer one +(like some versions of DOS do), rather than relative to the actual +starting sector (like Linux does). +(The fact that there is a difference here means that one should +always let extended partitions start at cylinder boundaries if +DOS and Linux should interpret the partition table in the same way. +Of course one can only know where cylinder boundaries are when +one knows what geometry DOS will use for this disk.) +.TP +.BR \-\-IBM ", " \-\-leave\-last +Certain IBM diagnostic programs assume that they can use the +last cylinder on a disk for disk-testing purposes. If you think +you might ever run such programs, use this option to tell +.B sfdisk +that it should not allocate the last cylinder. +Sometimes the last cylinder contains a bad sector table. +.TP +.B \-n +Go through all the motions, but do not actually write to disk. +.TP +.BR \-R ", " \-\-re-read +Only execute the BLKRRPART ioctl (to make the kernel re-read +the partition table). This can be useful for checking in advance +that the final BLKRRPART will be successful, and also when you +changed the partition table `by hand' (e.g., using dd from a backup). +If the kernel complains (`device busy for revalidation (usage = 2)') +then something still uses the device, and you still have to unmount +some file system, or say swapoff to some swap partition. +.TP +.B \-\-no\-reread +When starting a repartitioning of a disk, \fBsfdisk\fR checks that this disk +is not mounted, or in use as a swap device, and refuses to continue +if it is. This option suppresses the test. (On the other hand, the \fB\-f\fR +option would force \fBsfdisk\fR to continue even when this test fails.) +.TP +.B \-\-in\-order +Caution, see warning section. To be documented. +.TP +.B \-\-not\-in\-order +Caution, see warning section. To be documented. +.TP +.B \-\-inside\-outer +Caution, see warning section. Chaining order. +.TP +.B \-\-not\-inside\-outer +Caution, see warning section. Chaining order. +.TP +.B \-\-nested +Caution, see warning section. Every partition is contained in the +surrounding partitions and is disjoint from all others. +.TP +.B \-\-chained +Caution, see warning section. Every data partition is contained in +the surrounding partitions and disjoint from all others, but +extended partitions may lie outside (insofar as allowed by +all_logicals_inside_outermost_extended). +.TP +.B \-\-onesector +Caution, see warning section. All data partitions are mutually +disjoint; extended partitions each use one sector only (except +perhaps for the outermost one). +.TP +.BI \-O " file" +Just before writing the new partition, output the sectors +that are going to be overwritten to +.I file +(where hopefully +.I file +resides on another disk, or on a floppy). +.TP +.BI \-I " file" +After destroying your filesystems with an unfortunate +.B sfdisk +command, you would have been able to restore the old situation +if only you had preserved it using the \fB\-O\fR flag. + +.SH THEORY +Block 0 of a disk (the Master Boot Record) contains among +other things four partition descriptors. The partitions +described here are called +.I primary +partitions. +.LP +A partition descriptor has 6 fields: +.br +.nf +.RS +struct partition { + unsigned char bootable; /* 0 or 0x80 */ + hsc begin_hsc; + unsigned char id; + hsc end_hsc; + unsigned int starting_sector; + unsigned int nr_of_sectors; +} +.RE +.fi +.LP +The two hsc fields indicate head, sector and cylinder of the +begin and the end of the partition. Since each hsc field only +takes 3 bytes, only 24 bits are available, which does not +suffice for big disks (say > 8GB). In fact, due to the wasteful +representation (that uses a byte for the number of heads, which +is typically 16), problems already start with 0.5GB. +However Linux does not use these fields, and problems can arise +only at boot time, before Linux has been started. For more +details, see the +.B lilo +documentation. +.LP +Each partition has a type, its `Id', and if this type is 5 or f +.IR "" "(`" "extended partition" "')" +the starting sector of the partition +again contains 4 partition descriptors. MSDOS only uses the +first two of these: the first one an actual data partition, +and the second one again an extended partition (or empty). +In this way one gets a chain of extended partitions. +Other operating systems have slightly different conventions. +Linux also accepts type 85 as equivalent to 5 and f - this can be +useful if one wants to have extended partitions under Linux past +the 1024 cylinder boundary, without DOS FDISK hanging. +(If there is no good reason, you should just use 5, which is +understood by other systems.) +.LP +Partitions that are not primary or extended are called +.IR logical . +Often, one cannot boot from logical partitions (because the +process of finding them is more involved than just looking +at the MBR). +Note that of an extended partition only the Id and the start +are used. There are various conventions about what to write +in the other fields. One should not try to use extended partitions +for data storage or swap. + +.SH "INPUT FORMAT" +.B sfdisk +reads lines of the form +.br +.RS +<start> <size> <id> <bootable> <c,h,s> <c,h,s> +.RE +where each line fills one partition descriptor. +.LP +Fields are separated by whitespace, or comma or semicolon possibly +followed by whitespace; initial and trailing whitespace is ignored. +Numbers can be octal, decimal or hexadecimal, decimal is default. +When a field is absent or empty, a default value is used. +.LP +The <c,h,s> parts can (and probably should) be omitted - +.B sfdisk +computes them from <start> and <size> and the disk geometry +as given by the kernel or specified using the \-H, \-S, \-C flags. +.LP +Bootable is specified as [*|\-], with as default not-bootable. +(The value of this field is irrelevant for Linux - when Linux +runs it has been booted already - but might play a role for +certain boot loaders and for other operating systems. +For example, when there are several primary DOS partitions, +DOS assigns C: to the first among these that is bootable.) +.LP +Id is given in hex, without the 0x prefix, or is [E|S|L|X], where +L (LINUX_NATIVE (83)) is the default, S is LINUX_SWAP (82), E +is EXTENDED_PARTITION (5), and X is LINUX_EXTENDED (85). +.LP +The default value of start is the first nonassigned sector/cylinder/... +.LP +The default value of size is as much as possible (until next +partition or end-of-disk). +.LP +However, for the four partitions inside an extended partition, +the defaults are: Linux partition, Extended partition, Empty, Empty. +.LP +But when the \-N option (change a single partition only) is given, +the default for each field is its previous value. +.LP +A '+' can be specified instead of a number for size, which means +as much as possible. This is useful with the \-N option. +.SH EXAMPLE +The command +.RS +.nf +.if t .ft CW +sfdisk /dev/hdc << EOF +0,407 +,407 +; +; +EOF +.if t .ft R +.fi +.RE +will partition /dev/hdc just as indicated above. + +The command +.RS +.nf +.if t .ft CW +sfdisk /dev/hdb << EOF +,3,L +,60,L +,19,S +,,E +,130,L +,130,L +,130,L +,,L +EOF +.if t .ft R +.fi +.RE +will partition /dev/hdb into two Linux partitions of 3 and 60 +cylinders, a swap space of 19 cylinders, and an extended partition +covering the rest. Inside the extended partition there are four +Linux logical partitions, three of 130 cylinders and one +covering the rest. + +With the \-x option, the number of input lines must be a multiple of 4: +you have to list the two empty partitions that you never want +using two blank lines. Without the \-x option, you give one line +for the partitions inside a extended partition, instead of four, +and terminate with end-of-file (^D). +(And +.B sfdisk +will assume that your input line represents the first of four, +that the second one is extended, and the 3rd and 4th are empty.) +.SH "CAUTION WARNINGS" + +The options marked with caution in the manual page are dangerous. +For example not all functionality is completely implemented, +which can be a reason for unexpected results. +.SH "DOS 6.x WARNING" + +The DOS 6.x FORMAT command looks for some information in the first +sector of the data area of the partition, and treats this information +as more reliable than the information in the partition table. DOS +FORMAT expects DOS FDISK to clear the first 512 bytes of the data area +of a partition whenever a size change occurs. DOS FORMAT will look at +this extra information even if the /U flag is given -- we consider +this a bug in DOS FORMAT and DOS FDISK. +.LP +The bottom line is that if you use sfdisk to change the size of a +DOS partition table entry, then you must also use +.B dd +to zero the first 512 bytes of that partition before using DOS FORMAT to +format the partition. For example, if you were using sfdisk to make a DOS +partition table entry for /dev/hda1, then (after exiting sfdisk and +rebooting Linux so that the partition table information is valid) you +would use the command "dd if=/dev/zero of=/dev/hda1 bs=512 count=1" to zero +the first 512 bytes of the partition. +.B BE EXTREMELY CAREFUL +if you use the +.B dd +command, since a small typo can make all of the data on your disk useless. + +For best results, you should always use an OS-specific partition table +program. For example, you should make DOS partitions with the DOS FDISK +program and Linux partitions with the Linux sfdisk program. + +.SH "DRDOS WARNINGS" + +Stephen Tweedie reported (930515): `Most reports of superblock +corruption turn out to be due to bad partitioning, with one filesystem +overrunning the start of the next and corrupting its superblock. +I have even had this problem with the supposedly-reliable DRDOS. This +was quite possibly due to DRDOS-6.0's FDISK command. Unless I created +a blank track or cylinder between the DRDOS partition and the +immediately following one, DRDOS would happily stamp all over the +start of the next partition. Mind you, as long as I keep a little +free disk space after any DRDOS partition, I don't have any other +problems with the two coexisting on the one drive.' + +A. V. Le Blanc writes in README.efdisk: `Dr. DOS 5.0 and 6.0 has been +reported to have problems cooperating with Linux, and with this version +of efdisk in particular. This efdisk sets the system type +to hexadecimal 81. Dr. DOS seems to confuse +this with hexadecimal 1, a DOS code. If you use Dr. DOS, use the +efdisk command 't' to change the system code of any Linux partitions +to some number less than hexadecimal 80; I suggest 41 and 42 for +the moment.' + +A. V. Le Blanc writes in his README.fdisk: `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.' + +In fact, it seems that only 4 bits are significant for the DRDOS FDISK, +so that for example 11 and 21 are listed as DOS 2.0. However, DRDOS +itself seems to use the full byte. I have not been able to reproduce +any corruption with DRDOS or its fdisk. + +.SH BUGS +There are too many options. +.LP +There is no support for non-DOS partition types. + +.\" .SH AUTHOR +.\" A. E. Brouwer (aeb@cwi.nl) +.\" +.SH "SEE ALSO" +.BR cfdisk (8), +.BR fdisk (8), +.BR mkfs (8), +.BR parted (8), +.BR partprobe (8), +.BR kpartx (8) +.SH AVAILABILITY +The sfdisk command is part of the util-linux package and is available from +ftp://ftp.kernel.org/pub/linux/utils/util-linux/. |