265 lines
11 KiB
Plaintext
265 lines
11 KiB
Plaintext
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.
|