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.
