FIXPARTS(8)                  (1.0.8)                  FIXPARTS(8)

          fixparts - MBR partition table repair utility

          fixparts device

          FixParts (aka fixparts) is a text-mode menu-driven program
          for repairing certain types of problems with Master Boot
          Record (MBR) partition tables. The program has three design
          goals, although a few additional features are supported, as

          *    It can remove stray GUID Partition Table (GPT) data,
               which can be left behind on a disk that was once used
               as a GPT disk but then incompletely converted to the
               more common (as of 2011) MBR form.

          *    It can repair mis-sized extended partitions -- either
               partitions that extend beyond the physical end of the
               disk or that overlap with nearby primary partitions.
               FixParts is designed in such a way that this type of
               repair occurs automatically, so if it's the only prob-
               lem with your disk, you can launch the program and then
               immediately save the partition table, making no manual
               changes, and the program will fix the problem.

          *    You can change primary partitions into logical parti-
               tions or vice-versa, within constraints imposed by the
               MBR data structures.

          Additional features include the ability to change partition
          type codes or boot/active flags, to delete partitions, and
          to recompute CHS values. With the possible exception of
          recomputing CHS values, these secondary features are better
          performed with fdisk, because fixparts' design means that
          it's likely to alter partition numbering even when such
          changes are not requested.

          The fixparts program employs a user interface similar to
          that of Linux's fdisk, but fixparts is much more special-
          ized. Most importantly, you can't create new partitions with
          fixparts, although you can change primary/logical assign-

     Page 1                  Roderick W. Smith       (printed 5/24/22)

     FIXPARTS(8)                  (1.0.8)                  FIXPARTS(8)

          In the MBR scheme, partitions come in three varieties:

               These partitions are defined in the first sector of the
               hard disk and are limited in number to four. Some OSes,
               such as Windows and FreeBSD, must boot from a primary

               Extended partitions are specialized primary partitions.
               They serve as holding areas for logical partitions.

               A disk can contain an arbitrary number of logical par-
               titions (fixparts, however, imposes a limit of 124 log-
               ical partitions). All the logical partitions reside
               inside a single extended partition, and are defined
               using a linked-list data structure. This fact means
               that every logical partition must be preceded by at
               least one sector of unallocated space to hold its
               defining data structure (an Extended Boot Record, or

          These distinctions mean that primary and logical partitions
          cannot be arbitrarily interspersed. A disk can contain one
          to three primary partitions, a block of one or more logical
          partitions, and one to three more primary partitions (for a
          total of three primary partitions, not counting the extended
          partition). Primary partitions may not be sandwiched between
          logical partitions, since this would mean placing a primary
          partition within an extended partition (which is just a spe-
          cific type of primary partition).

          Unlike most disk utilities, fixparts' user interface ignores
          extended partitions. Internally, the program discards the
          information on the original extended partition and, when you
          tell it to save its changes, it generates a new extended
          partition to contain the then-defined logical partitions.
          This is done because most of the repairs and manipulations
          the tool performs require generating a fresh extended parti-
          tion, so keeping the original in the user interface would
          only be a complication.

          Another unusual feature of fixparts' user interface is that
          partition numbers do not necessarily correlate with
          primary/logical status. In most utilities, partitions 1-4
          correspond to primary partitions, whereas partitions 5 and
          up are logical partitions. In fixparts, any partition number

     Page 2                  Roderick W. Smith       (printed 5/24/22)

     FIXPARTS(8)                  (1.0.8)                  FIXPARTS(8)

          may be assigned primary or logical status, so long as the
          rules for layout described earlier are obeyed. When the par-
          tition table is saved, partitions will be assigned appropri-
          ately and then tools such as the Linux kernel and fdisk will
          give them conventional numbers.

          When it first starts, fixparts performs a scan for GPT data.
          If the disk looks like a conventional GPT disk, fixparts
          refuses to run. If the disk appears to be a conventional MBR
          disk but GPT signatures are present in the GPT primary or
          secondary header areas, fixparts offers to delete this
          extraneous data. If you tell it to do so, the program imme-
          diately wipes the GPT header or headers. (If only one header
          was found, only that one header will be erased, to minimize
          the risk of damaging a boot loader or other data that might
          have overwritten just one of the GPT headers.)

          With the exception of optionally erasing leftover GPT data
          when it first starts, fixparts keeps all changes in memory
          until the user writes changes with the w command. Thus, you
          can adjust your partitions in the user interface and abort
          those changes by typing q to quit without saving changes.

          The fixparts utility supports no command-line options,
          except for specification of the target device.

          Most interactions with fixparts occur with its interactive
          text-mode menu. Specific functions are:

          a    Toggle the active/boot flag. This flag is required by
               some boot loaders and OSes.

          c    Recompute the cylinder/head/sector (CHS) values for all
               partitions. CHS addressing mode is largely obsolete,
               but some OSes and utilities complain if they don't like
               the CHS values. Note that fixparts' CHS values are
               likely to be incorrect on disks smaller than about 8
               GiB except on Linux.

          l    Change a partition's status to logical. This option
               will only work if the current partition layout supports
               such a change. Note that if changing a partition's sta-
               tus in this way is not currently possible, making some
               other change may make it possible. For instance, omit-
               ting a partition that precedes the target partition may
               enable converting a partition to logical form if there

     Page 3                  Roderick W. Smith       (printed 5/24/22)

     FIXPARTS(8)                  (1.0.8)                  FIXPARTS(8)

               had been no free sectors between the two partitions.

          o    Omit a partition. Once omitted, the partition will
               still appear in the fixparts partition list, but it
               will be flagged as omitted. You can subsequently con-
               vert it to primary or logical form with the r or l com-
               mands, respectively. When you save your changes with w,
               though, the partition will be lost.

          p    Display basic partition summary data. This includes
               partition's number, the boot/active flag's status,
               starting and ending sector numbers,
               primary/logical/omitted status, whether or not the par-
               tition may be converted to logical form, and the
               partition's MBR types code.

          q    Quit from the program without saving your changes.  Use
               this option if you just wanted to view information or
               if you make a mistake and want to back out of all your

          r    Change a partition's status to primary. This option
               will only work if the current partition layout supports
               such a change. Note that every partition can theoreti-
               cally become a primary partition, although in some con-
               figurations, making this change will require omitting
               some partitions.  If fixparts refuses to allow changing
               a partition to primary, you may need to convert other
               partitions to logical form or omit them entirely.

          s    Sort partition entries. This option orders partitions
               in the display to match their on-disk positions, which
               can make understanding the disk layout easier in some
               cases. This option has no effect on the ultimate order-
               ing of logical partitions, which are sorted before
               being saved. The order of primary partitions in the
               final saved partition table may be affected by this
               option. In both cases, as already noted, the partition
               numbers displayed by fixparts may not be the same as
               those used by the kernel or displayed by other parti-
               tioning tools.

          t    Change a partition's type code. You enter the type code
               using a one-byte hexadecimal number.

     Page 4                  Roderick W. Smith       (printed 5/24/22)

     FIXPARTS(8)                  (1.0.8)                  FIXPARTS(8)

          w    Write data. Use this command to save your changes and
               exit from the program.

          ?    Print the menu. Type this command (or any other unrec-
               ognized command) to see a summary of available options.

          Known bugs and limitations include:

          *    The program compiles correctly only on Linux, FreeBSD,
               Mac OS X, and Windows.  Linux versions for x86-64
               (64-bit), x86 (32-bit), and PowerPC (32-bit) have been
               tested, with the x86-64 version having seen the most
               testing. Under FreeBSD, 32-bit (x86) and 64-bit
               (x86-64) versions have been tested. Only 32-bit ver-
               sions for Mac OS X and Windows have been tested.

          *    The FreeBSD version of the program can't write changes
               to the partition table to a disk when existing parti-
               tions on that disk are mounted. (The same problem
               exists with many other FreeBSD utilities, such as gpt,
               fdisk, and dd.) This limitation can be overcome by typ-
               ing sysctl kern.geom.debugflags=16 at a shell prompt.

          *    The program can load only up to 128 partitions (4 pri-
               mary partitions and 124 logical partitions). This limit
               can be raised by changing the #define MAX_MBR_PARTS
               line in the basicmbr.h source code file and recompil-

          *    The program can read partitions only if the disk has
               correct LBA partition descriptors. These descriptors
               should be present on any disk over 8 GiB in size or on
               smaller disks partitioned with any but very ancient

          *    The program makes no effort to preserve partition num-
               bers. This can have consequences for boot loaders and
               for mounting filesystems via /etc/fstab. It may be nec-
               essary to edit configuration files or even to re-
               install your boot loader.

          *     The program may change the order of partitions in the
               partition table.

     Page 5                  Roderick W. Smith       (printed 5/24/22)

     FIXPARTS(8)                  (1.0.8)                  FIXPARTS(8)

          Primary author: Roderick W. Smith (


          * Yves Blusseau (

          * David Hubbard (

          * Justin Maggard (

          * Dwight Schauer (

          * Florian Zumbiehl (

          cfdisk(8), cgdisk(8), fdisk(8), mkfs(8), parted(8),
          sfdisk(8), gdisk(8), sgdisk(8).

          The fixparts command is part of the GPT fdisk package and is
          available from Rod Smith.

     Page 6                  Roderick W. Smith       (printed 5/24/22)