Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GPART(8)		     System Manager's Manual			GPART(8)

NAME
     gpart - guess PC-type hard disk partitions

SYNOPSIS
     gpart [options] device

     Options:  [-b  <backup  MBR>][-C c,h,s][-c][-d][-E][-e][-f] [-g][-h][-i][-K
     <last-sector>][-k <# of sectors>]	[-L]  [-l  <log  file>][-n  <increment>]
     [-q][-s <sector-size>] [-t <module-name>][-V][-v] [-W <device>][-w <module-
     name, weight>]

DESCRIPTION
     gpart  tries  to guess which partitions are on a hard disk.  If the primary
     partition table has been lost,  overwritten  or  destroyed  the  partitions
     still exist on the disk but the operating system cannot access them.

     gpart  ignores  the primary partition table and scans the disk (or disk im-
     age, file) sector after sector for several filesystem/partition  types.  It
     does  so  by  "asking" filesystem recognition modules if they think a given
     sequence of sectors resembles the beginning of a  filesystem  or  partition
     type.  Currently  the following filesystem types are known to gpart (listed
     by module names) :

     beos   BeOS filesystem type.

     bsddl  FreeBSD/NetBSD/386BSD disklabel sub-partitioning scheme used on  In-
	    tel platforms.

     ext2   Linux second extended filesystem.

     fat    MS-DOS FAT12/16/32 "filesystems".

     hpfs   IBM OS/2 High Performance filesystem.

     hmlvm  Linux LVM physical volumes (LVM by Heinz Mauelshagen).

     lswap  Linux swap partitions (versions 0 and 1).

     minix  The Minix operating system filesystem type.

     ntfs   MS Windows NT/2000 filesystem.

     qnx4   QNX 4.x filesystem.

     rfs    The Reiser filesystem (version 3.5.X, X > 11).

     s86dl  Sun  Solaris on Intel platforms uses a sub-partitioning scheme on PC
	    hard disks similar to the BSD disklabels.

     xfs    Silicon Graphic's journalling filesystem for Linux.

     More filesystem guessing modules can be added at runtime (see  the  -t  op-
     tion).  Please  consult  the gpart README file for detailed explanations on
     how to create guessing modules. All modules are accompanied by  a	guessing
     weight  factor  which  denotes how "educated" their guesses are compared to
     other modules. This weight can be changed if a certain module keeps on mis-
     identifying a partition.

     Naturally only partitions which have been formatted in some way can be rec-
     ognized. If the type of a partition entry in the primary partition table is
     changed from x to y while the filesystem is still of  type  x,  gpart  will
     also still guess a type x.

     No checks are performed whether a found filesystem is clean or even consis-
     tent/mountable,  so it is quite possible that gpart may identify partitions
     which existed prior to the current partitioning scheme of the  disk.  Espe-
     cially  on large disks old file system headers/superblocks may be present a
     long time until they are finally overwritten with user data.

     It should be stressed that gpart does a very heuristic job,  never  believe
     its  output  without any plausability checks. It can be easily right in its
     guesswork but it can also be terribly wrong. You have been warned.

     After having found a list of possible partition types, the list is  checked
     for  consistency. For example, a partition which overlaps with the previous
     one will be discarded. All remaining partitions are labelled  with  one  of
     the following attributes: "primary", "logical", "orphaned" or "invalid".

     A	partition  labelled "orphaned" is a logical partition which seems ok but
     is missed in the chain of logical partitions. This may occur if  a  logical
     partition	is deleted from the extended partition table without overwriting
     the actual disk space.

     An "invalid" partition is one that cannot be accepted  because  of  various
     reasons.  If  a  consistent  primary  partition  table  was created in this
     process it is printed and can be written to a file or device.

EXTENDED PARTITIONS
     If the disk/file to be examined consists of primary partitions only,  gpart
     has  quite a good chance to identify them. Extended partitions on the other
     hand can result in a lot of problems.

     Extended partitions are realized as a linked list of extended partition ta-
     bles, each of which include an entry pointing to a logical  partition.  The
     size  of  an extended partition depends on where the last logical partition
     ends. This means that extended partitions may include "holes",  unallocated
     disk  space  which  should  only be assigned to logical, not primary parti-
     tions.

     gpart tries to do its best to check a found chain of logical partitions but
     there are very many possible points of failure. If  "good"  fdisk	programs
     are  used	to create extended partitions, the resulting tables consist of a
     zeroed boot record and the four partition entries of  which  at  least  two
     should  be marked unused. Unfortunately e.g. the fdisk program shipped with
     Windows NT does not seem to zero out the boot record area so gpart  has  to
     be overly tolerant in recognizing extended partition tables. This tolerance
     may result in quite stupid guesses.

DISK TRANSFERS
     If  you  want  to investigate hard disks from other systems you should note
     down the geometry (number of cylinders, heads per cylinder and sectors  per
     head) used for that disk, and tell gpart about this geometry.

     Investigating  disks  from  machines  with  a different endianness than the
     scanning one has not been tested at all, and is currently not recommended.

LARGE DISKS
     gpart relies on the OS reporting the correct disk geometry.   Unfortunately
     sometimes	the  OS  may  report a geometry smaller the the actual one (e.g.
     disks with more than 1024 or 16384 cylinder).

     gpart checks if guessed partitions extend beyond the disk	size  and  marks
     those  "invalid",	but  may be mistaken in case the disk size is calculated
     from an incorrect geometry. For  instance	if  a  disk  with  the	geometry
     1028/255/63  should be scanned, and the OS reports 1024/255/63 gpart should
     be called like

	    gpart -C 1028,255,63 <other options> <device>

PRECAUTIONS
     gpart may be of some help when the primary partition table was lost or  de-
     stroyed but it can under no circumstances replace proper disk/partition ta-
     ble  backups.   To  save the master boot record (MBR) including the primary
     partition table to a file type

	    dd if=/dev/hda of=mbr bs=512 count=1

     exchanging /dev/hda with the block device name of	the  disk  in  question.
     This  should  be  done  for all disks in the system. To restore the primary
     partition table without overwriting the MBR type

	    dd if=mbr of=/dev/hda bs=1 count=64 skip=446 seek=446

     Warning: make sure that all parameters are typed as shown and that the disk
     device is correct. Failing to do so may result in severe filesystem corrup-
     tion. The saved file should be stored in a safe place like a floppy disk.

OPTIONS
     -b backupfile
	    If the guessed primary partition table seems consistent  and  should
	    be written (see the -W option) backup the current MBR into the spec-
	    ified file.

     -C c,h,s
	    Set the disk geometry (cylinders, heads, sectors) for the scan. This
	    is	useful if a disk should be scanned which was partitioned using a
	    different geometry, if the device is a disk-image  or  if  the  disk
	    geometry cannot be retrieved through the PCs BIOS. No spaces are al-
	    lowed between the numbers, unless all three are enclosed in quotes.

     -c     Check/compare  mode (implies the -q quiet option). After the scan is
	    done, the resulting primary partition table is compared to	the  ex-
	    isting  one.  The  return  code of gpart then contains the number of
	    differences (0 if they are identical except for the boot/active flag
	    which cannot be guessed). This option has no effect if -d  is  given
	    on the command line.

     -d     Do not start the guessing loop. Useful if the partition table should
	    be	printed  (in  combination  with  the -v option) without actually
	    scanning for partitions.

     -E     Do not try to identify extended partition tables. If there	are  ex-
	    tended partitions on the given device gpart will most certainly com-
	    plain  about  too  many primary partitions because there can be only
	    four primary partitions. Existing logical partitions will be  listed
	    as primary ones.

     -e     Do	not  skip  disk  read errors. If this option is given, and short
	    disk reads or general disk read errors (EIO) are encountered,  gpart
	    will exit. If not given, the program tries to continue.

     -f     Full  scan. When a possible partition is found, gpart normally skips
	    all sectors this entry seems to occupy and continues the  scan  from
	    the end of the last possible partition. The disk scan can take quite
	    a while if this option is given, be patient.

     -g     Do not try to get the disk geometry from the OS. If the device is no
	    block  or  character  device  but a plain file this option should be
	    supplied. If the file to be scanned is an image of a disk, the geom-
	    etry can be given by the -C option.

     -h     Show some help.

     -i     Run interactively. Each time a possible partition is identified  the
	    user is asked for confirmation.

     -K last sector
	    Scan  only	up  to the given sector or the end of the file or device
	    whichever comes first.

     -k sectors
	    Skip given number of sectors before the scan. Potentially useful  if
	    a partition is looked for at the end of a large disk.

     -L     List  available filesystem/partition type modules and their weights,
	    then exit.

     -l logfile
	    Log output to the given file (even if -q was supplied).

     -n increment
	    Scan increment: number of sectors or "s" for  single  sector  incre-
	    ment, "h" for an increment of sectors per head (depends on geometry)
	    or "c" for cylinder increment.

	    The increment also influences the condition where extended partition
	    tables  are searched: if the scan increment is "s" (i.e. 1) extended
	    partition tables are required to be on a  head  boundary,  otherwise
	    they must be on a cylinder boundary.

	    If	the  disk  geometry  could  not be retrieved and no geometry was
	    given on the command line, the default increment is one sector.

     -q     Quiet/no output mode. However if a logfile was specified (see -l op-
	    tion) all output is written to that file. This option overrides  the
	    -i interactive mode.

     -s sector size
	    Preset  medium sector size.  gpart tries to find out the sector size
	    but may fail in doing so. Probed sector sizes are 2^i, i=9..14  (512
	    to 16384 bytes). The default medium sector size is 512 bytes.

     -t module name
	    Plug in another guessing module. The module to be dynamically linked
	    in must be a shared object file named "gm_<modname>.so".

     -V     Show version number.

     -v     Be	verbose.  This	option	can be given more than once resulting in
	    quite a lot of information.

     -W device
	    Write partition table. If a consistent primary partition  table  has
	    been  guessed it can be written to the specified file or device. The
	    supplied device can be the same as the scanned one.

	    Additionally the guessed partition entries can be edited. No  checks
	    are performed on the entered values, thus the resulting table is al-
	    lowed to be highly inconsistent. Please beware.

	    Warning:  The  guessed  partition table should be checked very care-
	    fully before writing it back. You can always write the guessed  par-
	    tition  table  into  a plain file and write this into sector 0 using
	    dd(1) (see section PRECAUTIONS above).

     -w module name,weight
	    Put the given module at the head of the module chain  and  assign  a
	    new  weight  to that module. All modules are given an initial weight
	    of 1.0. Again no spaces are allowed.

     Default settings are "-n h".

EXAMPLES
     - To scan the first IDE hard disk under Linux using default settings type

	    gpart /dev/hda

     - To print the primary partition table  of  the  third  IDE  drive  without
     starting the scan loop in FreeBSD type

	    gpart -vvd /dev/ad2

     - If  lilo(8)  was installed in the master boot record (MBR) of a hard disk
     it saves the contents of the first sector in a file called  /boot/boot.<ma-
     jor/minor>. To list the partitions contained in such a file type e.g.

	    gpart -vdg /boot/boot.0300

     If  the partition table contains an extended partition, gpart will complain
     about invalid extended partition tables because the extended  entry  points
     to sectors not within that file.

     - Usually	the  first primary partition starts on the second head. If gpart
     cannot identify the first partition properly this	may  not  be  the  case.
     gpart  can  be told to start the scan directly from sector one of the disk,
     using the sector-wise scan mode:

	    gpart -k 1 -n s /dev/hdb

     - Suppose gpart identifies an NTFS partition as FAT on a certain  disk.  In
     this  situation  the  "ntfs"  module  should be made the first module to be
     probed and given a weight higher than the usual weight of 1.0:

	    gpart -w ntfs,1.5 /dev/hdb

     To list the available modules and their weights use the -L option.

     - After having checked the output of gpart at  least  thrice,  the  primary
     partition table can be written back to the device this way:

	    gpart -W /dev/sdc /dev/sdc

     This  of  course may be extremely dangerous to your health and social secu-
     rity, so beware.

     - A hard disk with 63 sectors per head is scanned in steps of  63	sectors.
     To perform the scan on every second head while skipping the first 1008 sec-
     tors type

	    gpart -k 1008 -n 126 /dev/sda

     - If you want to see how easily gpart can be mislead, and how many probable
     partition starts are on a disk, search the whole disk really sector by sec-
     tor, writing all output to a logfile:

	    gpart -vvfn s -ql /tmp/gpart.log /dev/sd2 &

     Usually  gpart will not be able to produce an educated guess of the primary
     partition table in this mode. The logfile however may contain enough  hints
     to manually reconstruct the partition table.

FILES
     /dev/*
	    Hard  disk	block  devices. The naming scheme of hard disk block de-
	    vices is OS dependent, consult your system manuals for more informa-
	    tion.

DIAGNOSTICS
     There are many error message types, all of them should be self-explanatory.
     Complain if they are not.

BUGS
     gpart is beta software, so expect buggy behaviour.

     -	gpart only accepts extended partition links with one logical  partition.
     There may be fdisk variants out there creating links with up to three logi-
     cal partition entries but these are not accepted.

TO DO
     - Support big-endian architectures.
     - Test on 64-bit architectures.
     - Look for boot manager partitions (e.g. OS/2 BM).
     - Think about reconstructing logical partition chains.

AUTHOR
     Please send bug reports, suggestions, comments etc. to

	    Michail Brzitwa <michail@brzitwa.de>

SEE ALSO
     fdisk(8).

Administration Tools		  January 2001				GPART(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gpart&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help