• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
11.0.6 (?/??/2020):
2------------------
3
4- Fixed bug that could cause segfault if GPT header claimed partition
5  entries are oversized.
6
71.0.5 (2/17/2020):
8------------------
9
10- Fixed typos and minor formatting issues in man pages
11
12- Changed number of columns in type code output ("sgdisk -L" and equivalents
13  in gdisk and cgdisk) from 3 to 2, since some descriptions are long enough
14  that they're ambiguous with three columns.
15
16- Makefile change: Add $(LDLIBS) support to enable clean static builds (for
17  libintl).
18
19- You can now put the 0xEE partition last in a hybrid MBR using sgdisk.
20  (Previously, this was possible with gdisk but not with sgdisk.) See the
21  sgdisk man page for details.
22
23- Added numerous type codes for Container Linux, Veracrypt, and
24  Freedesktop.org's Discoverable Partitions Specification
25
26- Partition type name searches are now case-insensitive.
27
28- It's now possible to quit out of partition type name searches by typing
29  "q".
30
31- When changing a partition type code, the default is now the current
32  type code, not a platform-specific type code.
33
34- The UEFI GPT fdisk project
35  (https://sourceforge.net/projects/uefigptfdisk/) hasn't been updated since
36  2016, and is now broken; binaries don't compile with modern GCC
37  toolchains, and even when dropping back to Ubuntu 14.04, which worked for
38  GPT fdisk 1.0.4, the resulting binary hangs on launch. Therefore, I'm
39  dropping support for the EFI build of gdisk, at least unless and until
40  UEFI GPT fdisk is fixed.
41
42- Apple no longer supports building i386 or "fat" binaries in XCode (or if
43  they do, they're making it hard), so I've removed that support. GPT fdisk
44  macOS binaries are now x86-64 only. Similarly, building now seems to
45  require macOS 10.9 or later, so that's now the minimum macOS version. I've
46  also re-built my Mac build environment and tweaked Makefile.mac
47  appropriately.
48
491.0.4 (7/5/2018):
50-----------------
51
52- Added some explicit copy constructors and made some other tweaks to avoid
53  compiler warnings.
54
55- The macOS binary for sgdisk is now a pure 64-bit build; I'm no longer
56  supporting 32-bit builds of sgdisk. The gdisk and cgdisk binaries remain
57  "fat" 32-/64-bit builds. The reason for dropping the 32-bit support from
58  sgdisk is that I've re-built my macOS development system, and I had
59  trouble building a "fat" binary with the fresh install of the popt
60  libraries upon which sgdisk relies. 32-bit support for the other binaries
61  is now officially deprecated, too.
62
63- Added search feature to partition type list functions ("L" on main menu of
64  gdisk and "L" when entered in response to the "Hex code or GUID" prompt in
65  gdisk and sgdisk). This feature filters the partition type list to those
66  which include the search term in their GPT fdisk descriptions. For
67  instance, typing "Linux" shows only partitions with "Linux" in their
68  descriptions. Note that the search/filter is case-sensitive. If <Enter> is
69  pressed, no filter is applied.
70
71- Change to Makefile.mac to use standard libncurses rather than a 3rd-party
72  version; should help with cgdisk compatibility.
73
74- Minor bug fix in alignment of internal data structures.
75
76- Minor bug fix in handling of damaged disks. Also, GPT fdisk now reports
77  more information on what data structures are damaged when a damaged disk
78  is detected.
79
80- Added type code for Apple APFS (7C3457EF-0000-11AA-AA11-00306543ECAC,
81  0xaf0a).
82
83- Added type code for Atari TOS basic data (0xa200,
84  734E5AFE-F61A-11E6-BC64-92361F002671).
85
86- Added type codes for Linux dm-crypt (0x8308,
87  7FFEC5C9-2D00-49B7-8941-3EA10A5586B7) and LUKS (0x8309,
88  CA7D7CCB-63ED-4C53-861C-1742536059CC) partitions.
89
90- Added 18 Ceph partition type codes.
91
92- Added 52 (yes, 52!) Android partition type codes.
93
94- Changed "Creating new GPT entries" message to read "Creating new
95  GPT entries in memory" because the latter is clearer, particularly when
96  using sgdisk with a non-destructive option, like "-p".
97
981.0.3 (7/27/2017):
99------------------
100
101- Fixed a major bug that caused invalid partition tables to be generated
102  when creating a new partition table (that is, partitioning a blank disk or
103  converting from MBR).
104
1051.0.2 (7/26/2017):
106------------------
107
108- On Linux, the p/-p/--print command now shows the disk's model name, as
109  reported in /sys/block/sda/device/model (or equivalent filenames for other
110  disks). This feature does not yet work on other platforms, on which the
111  model name line is omitted from the output. This line is also not shown
112  when accessing disk image files, even on Linux.
113
114- GPT fdisk can now report both the physical and logical sector sizes of
115  disks, but only on 2.6.32 and later Linux kernels. The verify feature now
116  uses the larger of the set alignment and physical/logical block sizes for
117  testing alignment, and setting alignment to something other than an exact
118  multiple of the ratio of the physical to logical block size results in a
119  warning.
120
121- Addition of new verification checks, mostly (but not exclusively) related
122  to the new j/-j/--move-main-table option.
123
124- Added new option: 'j' on the experts' menu in gdisk;
125  '-j/--move-main-table={sector}' in sgdisk. This option enables relocating
126  the main partition table from sector 2 (the default location) to somewhere
127  else on the disk. The main reason I know of to do this is if the disk is
128  to be used with a system-on-chip (SoC) computer, some of which require the
129  boot loader to be located at sector 2. If you pass this option the default
130  value of 2, it has the effect of reducing the padding placed between the
131  main partition table and the first usable sector value created by the
132  Linux fdisk tool.
133
134- Updated man pages with new recommendations for ESP and BIOS Boot Partition
135  sizes.
136
137- Added four type codes (AF06 through AF09) for Apple SoftRAID (Status,
138  Scratch, Volume, and Cache).
139
140- Added two type codes for the Open Network Install Environment (ONIE):
141  0xe100 (7412F7D5-A156-4B13-81DC-867174929325) and 0xe101
142  (D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149).
143
144- Added thirteen type codes for Android partitions (0xa000 through
145  0xa00c).
146
147- Added type code for QNX6 (aka QNX Power-Safe) filesystem: 0xb300, for
148  CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1.
149
150- Removed stray debug message ("REALLY setting name!") from sgdisk,
151  when setting new name via -c option.
152
1531.0.1 (10/18/2015):
154-------------------
155
156- Created uninstall-fixparts and uninstall-gdisk scripts for OS X. As the
157  names imply, these scripts remove the files installed by the fixparts and
158  gdisk packages, respectively.
159
160- Fixed bug that caused -N/--largest-new option to sgdisk to fail when
161  fed a "0" option.
162
163- Fixed bug that caused input glitches in EFI version of gdisk.
164
165- Fixed bug that caused sgdisk to not return an appropriate error code
166  when it encountered a write error when saving changes.
167
168- Fixed bug that caused cgdisk's "Info" display to under-report the
169  partition's size by one sector.
170
171- OS X 10.11 includes new security features that prevent GPT fdisk from
172  working unless these features are disabled. To do so, you must boot to a
173  Recovery HD system, open a Terminal, type "csrutil disable", and reboot
174  into the normal system. You can re-enable the security features by
175  repeating the process, but specify "enable" rather than "disable". I've
176  added a message pointing users to a Web page explaining how to disable
177  this feature when gdisk detects that it can't write to the disk under OS
178  X. If you know of a way around this (including code changes to gdisk),
179  please contact me.
180
181- I've updated the OS X installation location from the Unix-standard
182  /usr/sbin (and related locations for documentation) to /usr/local/bin
183  (and related locations for documentation). This is Just Plain Crazy from
184  a Unix point of view, but Apple has to be Apple and do things just a
185  little bit differently.
186
187- I've updated my OS X environment to OS X 10.11 and LLVM 7.0.0. This has
188  also meant installing fresh versions of popt and ncurses from MacPorts,
189  which may require upgrading popt to get sgdisk working on some systems.
190  (gdisk, cgdisk, and fixparts should continue to work normally on all
191  systems.) The OS X binaries are now "fat" (32- and 64-bit) versions,
192  which should have no noticeable effect unless you have a Mac with broken
193  32-bit support, in which case the binaries will now work.
194
195- Changed the default name of 0xab00 partitions from "Apple boot" to
196  "Recovery HD", since the latter is the name that Apple gives these
197  partitions. Also, I discovered through painful experience that OS X
198  flakes out and won't boot if the name is something other than "Recovery
199  HD", so it really has to have the right name!
200
201- Changed the OpenBSD type codes (0xa600 and 0xa601): 0xa600 is now
202  824CC7A0-36A8-11E3-890A-952519AD3F61 (OpenBSD disklabel) and 0xa601 is
203  now gone. Previously, 0xa600 was 516E7CB4-6ECF-11D6-8FF8-00022D09712B, a
204  duplicate of the FreeBSD disklabel, and 0xa601 was
205  824CC7A0-36A8-11E3-890A-952519AD3F61. OpenBSD is now officially
206  supporting 824CC7A0-36A8-11E3-890A-952519AD3F61 as a disklabel type,
207  though. It's unclear what, if anything, OpenBSD will use for
208  non-disklabel type codes at the moment.
209
210- Added GUID 0311FC50-01CA-4725-AD77-9ADBB20ACE98 (0xbc00) for
211  Acronis Secure Zone backup partitions.
212
213- Fixed bug that caused random crashes on ppc64el systems (and perhaps
214  others).
215
216- Added GUID C91818F9-8025-47AF-89D2-F030D7000C2C (0x3900) for Plan 9.
217
218- Added GUID 69DAD710-2CE4-4E3C-B16C-21A1D49ABED3 (0x8307) for 32-bit ARM
219  Linux root (/) partition, as per the Freedesktop.org Discoverable
220  Partition Spec
221  (http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/).
222
223- Edited man pages to clarify that default alignment is to 1MiB boundaries;
224  this translates to 2048 sectors on disks with 512-byte sectors, but it
225  will be something else on disks with other sector sizes.
226
227- Changed behavior of -z/--zap and -Z/--zap-all options to sgdisk so that
228  if a subsequent command causes changes, they'll be written to disk.
229  Previously, doing something like "sgdisk --zap-all --clear /dev/sdd"
230  would wipe the disk but not create a partition table; to create a blank
231  table you'd need to do "sgdisk --zap-all --clear --mbrtogpt /dev/sdd",
232  which is a bit odd and counter-intuitive, to the point of arguably being
233  a bug.
234
2351.0.0 (3/16/2015):
236------------------
237
238- I'm now building a binary package of gdisk_x64.efi, using the UEFI GPT
239  fdisk package.
240
241- Added partition type for OpenBSD data
242  (824CC7A0-36A8-11E3-890A-952519AD3F61/0xa601). Also mapped 0xa600 to the
243  FreeBSD disklabel type code (516E7CB4-6ECF-11D6-8FF8-00022D09712B). I'm
244  not sure that's 100% correct, but since I can't find references to an
245  OpenBSD disklabel GPT type code, it seems the best choice at the moment.
246
247- Added partition type for Windows Storage Spaces
248  (E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D/0x4202)
249
250- Added -O/--print-mbr option to sgdisk, enabling easier display of MBR
251  data structures without invoking gdisk.
252
253- Updated warning message: "EBR describes a logical partition" now reads
254  "EBR points to an EBR," which is more technically correct.
255
256- Altered warning displayed when run from Windows on non-GPT disk, because
257  Windows on UEFI-based systems is becoming more common.
258
259- Fixed spurious "1" return value in gdisk.
260
261- Small code changes to support compilation as EFI application with the
262  UEFI GPT fdisk library
263  (http://sourceforge.net/projects/uefigptfdisk/?source=directory)
264
265- Added new partition type codes for Ceph
266  (https://github.com/ceph/ceph/blob/9bcc42a3e6b08521694b5c0228b2c6ed7b3d312e/src/ceph-disk#L76-L81):
267  4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D/0xf800 (Ceph OSD),
268  4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D/0xf801 (Ceph dm-crypt OSD),
269  45B0969E-9B03-4F30-B4C6-B4B80CEFF106/0xf802 (Ceph journal),
270  45B0969E-9B03-4F30-B4C6-5EC00CEFF106/0xf803 (Ceph dm-crypt journal),
271  89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE/0xf804 (Ceph disk in creation), and
272  89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE/0xf805 (Ceph dm-crypt disk in
273  creation)
274
275- Added new partition type codes from
276  http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/:
277  44479540-F297-41B2-9AF7-D131D5F0458A/0x8303 (Linux / on x86),
278  4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709/0x8304 (Linux / on x86-64),
279  B921B045-1DF0-41C3-AF44-4C6F280D3FAE/0x8305 (Linux / on 64-bit ARM),
280  3B8F8425-20E0-4F3B-907F-1A25A76F98E8/0x8306 (Linux /srv).
281
2820.8.10 (3/2/2014):
283------------------
284
285- Added feature to sgdisk's -A/--attributes, -c/--change-name,
286  -t/--typecode, and -u/--partition-guid commands: If a -n/--new option
287  with "0" as the partition number precedes these options on the command
288  line, passin "0" as the partition number to the following options causes
289  them to use the newly-created partition. For instance, "sgdisk -n
290  0:0:+550M -t 0:EF00 /dev/sda" creates a new partition with a type code of
291  EF00. (Previous versions would ignore the "-t 0:EF00" option.)
292
293- Fixed bug that caused incorrect partition number to be displayed by
294  sgdisk in error messages when the user specified a non-existent partition
295  for inclusion in a hybrid MBR or conversion to a conventional MBR.
296
297- Fixed new (in 0.8.9) bug that caused a failure to create more than one
298  hybridized partition when creating a hybrid MBR.
299
300- Fixed bug that caused gdisk and sgdisk to create hybridized partitions
301  that ended at or above the 2^32 sector point with incorrect end values.
302  The behavior now varies between gdisk and sgdisk: gdisk now creates
303  hybrid partitions that begin below 2^32 sectors and that are smaller than
304  2^32 sectors, since this is technically legal; but gdisk displays a
305  warning, because some OSes (such as DOS, Windows XP, OS/2, and BeOS)
306  misbehave with such partitions. AFAIK, only Linux, FreeBSD, and Windows 7
307  work properly with such partitions. Because of this fact and because
308  sgdisk is a more automated tool, it's stricter in how it handles things:
309  It refuses to create a hybrid partition if the original ends at or above
310  the 2^32 sector mark.
311
3120.8.9 (2/17/2014):
313------------------
314
315- Removed dependency on libicu for UTF-16 support.
316
317- Fixed spurious "0xEE partition doesn't start on sector 1" warning in
318  FixParts (and perhaps in other programs under some circumstances).
319
320- Added GPT regeneration command to GPT-destruction options ('z' in gdisk,
321  -z and -Z options to sgdisk). This is done to avoid wiping out data
322  mid-disk that might not be backup GPT data structures, which could
323  otherwise occur if a RAID array was resized in certain ways.
324
325- Added check for an oversized 0xEE protective partition. The program now
326  auto-repairs this condition on loading if the GPT data seem otherwise
327  valid. This is done because I've been receiving reports of some disks
328  (possibly from some OEM Windows 8 loads) that violate the GPT spec in
329  this way, and gdisk was reporting write errors when saving data.
330
331- If the GPT data seem to be damaged in some way or if the disk seems to
332  be a hybrid MBR and if the MBR partition(s) don't fit on the disk, the
333  verify (v) function now warns of this condition, and writing the disk if
334  it exists also displays a more specific error message about the problem.
335
336- Added new type codes (3000, 7412F7D5-A156-4B13-81DC-867174929325 and
337  3001, D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149) for Open Network Install
338  Environment (ONIE) boot and config partitions, respectively.
339
340- Added new type ccde (ED01, BFBFAFE7-A34F-448A-9A5B-6213EB736C22), for
341  Lenovo's ESP-like partition.
342
3430.8.8 (10/14/2013):
344-------------------
345
346- Fixed bug that could cause segfault when passing an invalid partition
347  number to sgdisk's -i/--info command.
348
349- Added new type code: 933AC7E1-2EB4-4F13-B844-0E14E2AEF915, or gdisk code
350  8302, for Linux /home partitions. This type code is used by recent
351  versions of systemd to permit /home to be auto-mounted; see
352  http://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html
353  for details.
354
355- Added new type code: 9E1A2D38-C612-4316-AA26-8B49521E5A8B, or gdisk code
356  4100, for PowerPC PReP (PowerPC reference platform) boot.
357
358- The number of partition type codes has grown large enough that it fills
359  an 80x24 display. I've therefore added a pause (with a prompt to hit
360  <Enter>) to display more items after showing 21 lines in gdisk or after
361  the screen has nearly filled with entries in cgdisk. There's no such
362  pause/prompt in sgdisk, though.
363
364- Fine-tuned verification ('v') check for 0xEE partition that doesn't begin
365  on sector 1: Previously, a disk with multiple 0xEE partitions would
366  always trigger this warning. Now, the warning occurs only if NONE of the
367  0xEE partitions begins on sector 1.
368
369- Fixed hybrid MBR creation on disks larger than 2TiB: Previously, if one
370  opted to create an extra partition to cover unused space following
371  hybridized partitions, gdisk would hang.
372
373- Added check for an active/bootable 0xEE protective partition to the
374  verify ('v') function. If found, this is not counted as an error, but
375  it is called out to the user, since it can cause some EFIs (such as
376  VirtualBox's EFI) to ignore the disk.
377
3780.8.7 (7/8/2013):
379-----------------
380
381- Modified Mac version so that it can work on /dev/rdisk* devices as well
382  as /dev/disk* devices. The result is that, when using the /dev/rdisk*
383  devices, the partition table can sometimes be re-read without removing
384  the disk or rebooting.
385
386- Added "-a" option to cgdisk to use a ">" symbol to the left of the
387  selected partition rather than ncurses highlighting.
388
389- Modified "converting MBR to GPT" message to clarify that the conversion
390  is being held in memory, since some people have mistakenly assumed that a
391  "gdisk -l" operation will change an MBR disk to a GPT disk without
392  prompting.
393
394- Added partition type code for freedesktop.org's proposed $BOOT partition
395  (bc13c2ff-59e6-4262-a352-b275fd6f7172; GPT fdisk type code EA00)
396
397- Adjusted alignment code when using -n or -N in sgdisk to keep the
398  requested partition size (if specified using +###{MGT} terminology)
399  as the requested value rather than relative to the requested start
400  point. This gives you the requested partition size rather than be
401  slightly smaller if sgdisk needs to adjust the start point up a bit and
402  it prevents gaps from appearing between partitions if several are created
403  in succession using automatic placement of the start point.
404
405- Fixed small bugs in gdisk_test.sh script.
406
407- Removed stray debug message that would appear when reading MBR disks.
408
409- Added partition type code for Intel Rapid Start partition (GUID
410  D3BFE2DE-3DAF-11DF-BA40-E3A556D89593, code 8400), used by systems that
411  implement Intel's Rapid Start technology. See
412  http://blog.adios.tw/2012/10/funtoo-linux-and-intel-rapid-start.html or
413  http://mjg59.dreamwidth.org/26022.html.
414
415- Added partition type code for Haiku BFS (GUID
416  42465331-3BA3-10F1-802A-4861696B7521; code EB00).
417
4180.8.6 (1/9/2013):
419-----------------
420
421- Fixed a bug that could cause sgdisk to crash when passing a partition
422  number of 0 to the -t option.
423
424- Added support for building under Solaris.
425
426- Added a new check to the verification code.
427
428- Added partition type code for Sony system partition
429  (F4019732-066E-4E12-8273-346C5641494F). I'm not entirely clear what this
430  is used for, but it's appearing on some new Sony computers.
431
432- Tweaked hybrid MBR creation options to fix a problem that caused the main
433  0xEE MBR partition to NOT be created if the user told gdisk to NOT place
434  it at the start of the disk AND IF fewer than three partitions are
435  hybridize AND IF the user opted to create a second protective partition.
436
437- Changed default build options for Mac OS X to *NOT* use libicu,
438  since it seems to have broken somewhere along the line. It still
439  works on Linux, though.
440
441- Added partition type codes for VMWare ESX (FB00, FB01, and FC00).
442
4430.8.5 (5/30/2012):
444------------------
445
446- Changed code that writes the partition table so that a disk sync
447  operation occurs even if one or more write operations failed (but not if
448  they all failed). This is intended to work around a bug that a user
449  reported on a Windows system on which the write of the protective MBR
450  failed, although everything else worked. (I suspect anti-virus software
451  may have been blocking write access to the MBR.)
452
453- Added type codes for Midnight BSD (0xA580 - 0xA585). I used these codes
454  because Midnight BSD uses the same 0xA5 type code as FreeBSD on MBR
455  disks, so I'm starting Midnight BSD's numbering halfway through the
456  0xA5## range.
457
4580.8.4 (3/25/2012):
459------------------
460
461- REALLY fixed Ctrl+D problems! Now gdisk terminates upon receiving a
462  Ctrl+D. In all previous versions, it could lock itself into a CPU-hogging
463  loop if launched via "sudo" from a terminal window that was then closed
464  or if Ctrl+D was pressed at certain input prompts (for a partition name
465  or sector number, for instance).
466
4670.8.3 (3/23/2012):
468------------------
469
470- Fixed compilation problem on GCC 4.7.
471
472- Improved handling of Ctrl+D on some systems.
473
474- Added disk's name to message stating that a disk write was successful.
475
476- Fixed bug that caused creation of >2TiB partitions on 32-bit systems to
477  be truncated in sgdisk.
478
4790.8.2 (1/22/2012):
480------------------
481
482- Adjusted the code to support a number of partitions that's not a multiple
483  of the number of partition table entries that fits in a sector (normally
484  4 per sector). The program still rounds up, when necessary, when resizing
485  the partition table manually, but not when loading a partition table that
486  contains a peculiar number of partitions. This helps prevent spurious
487  error messages about CRC problems when loading some Solaris partition
488  tables.
489
490- Fixed bugs relating to the handling of empty partitions; Solaris's ZFS
491  tools create weird empty partitions that are legal but that gdisk wasn't
492  handling properly. (Specifically, they sometimes have non-zero end
493  points; gdisk assumed empty partitions had end points of 0.)
494
495- Fixed a bug that caused an infinite loop of input prompts if the user
496  pressed Ctrl+D.
497
498- Changed gdisk's first-sector input operation to specify a sector number
499  that's properly aligned as the default value. This eliminates the need
500  to alter that value and notify the user of the change when the user
501  hits "Enter" for the default value as the first partition on an empty
502  disk (as well as in some other situations).
503
5040.8.1 (10/1/2011):
505------------------
506
507- Fixed bug that could cause FixParts to keep a partition's assignment
508  as logical when FixPart could not actually do so. This could happen
509  when there are no gaps between two logical partitions. Some partitioning
510  tools can create such configurations, but FixParts can't. Such
511  configurations are extremely rare. I've only encountered them when
512  logical partitions are out of order.
513
514- Added code to detect infinite loops of logical partitions when reading
515  MBR data. When detected, the program now stops reading after the first
516  loop, so no duplicates appear in the partition list.
517
518- Fixed bug in partition overlap detection in MBR code.
519
520- Changed GPT reading code to use the size encoded in GPT headers to
521  determine how much of the header to use in computing a CRC, with the
522  restriction that the size be equal to or less than the disk's sector
523  size. This should work around problems with libefi in ZFS, which sets the
524  header size to 512 rather than the more common 92. A caveat: If the
525  disk's sector size is larger than the GPTHeader data structure size (512
526  bytes), then the rest of the sector's contents are ignored and replaced
527  with 0 values. This could produce false positives on CRC checks on disks
528  with over-512-byte sector sizes if the header sector is padded with
529  something other than 0 values.
530
531- Fixed bug in new (as of 0.8.0) check that main and backup partition
532  tables are identical on big-endian (PowerPC, etc.) hardware.
533
5340.8.0 (9/10/2011):
535------------------
536
537- Added new return option for sgdisk: 8, which means that a replication
538  operation (-R or --replicate) failed. Note that other operations on
539  the same command line might still have succeeded.
540
541- Added gdisk_test.sh shell script, contributed by Guillaume Delacour.
542  This script tests some common gdisk and sgdisk operations to be sure
543  they're working correctly.
544
545- Enable sgdisk's -l (--load-backup) and -o (--clear) options to work
546  even on disks that are damaged. Most other options will still be ignored,
547  though, so if you suspect a disk may be bad and want to use one of these
548  options, you should do so on a line by itself, followed by a separate
549  command to perform other actions (such as adding new partitions).
550
551- Added check for mis-matched primary and backup partition tables.
552  A mismatch is reported as a CRC error.
553
554- Added Apple Core Storage partition type code (hex code AF05, GUID
555  53746F72-6167-11AA-AA11-00306543ECAC).
556
557- Added cgdisk program to the family. This program is a rough workalike
558  to cfdisk, much as gdisk is a rough workalike to fdisk. See the cgdisk
559  man page or http://www.rodsbooks.com/gdisk/cgdisk-walkthrough.html for
560  details about its operation.
561
562- Fixed bug that caused CHS end point for protective MBR to be set to
563  0xfeffff rather than the spec-mandated 0xffffff on disks over ~8GB. This
564  is a very minor bug, since not much cares about this, and most other GPT
565  tools get it wrong in the same way, too.
566
5670.7.2 (6/26/2011):
568------------------
569
570- The Windows version now (finally!) generates proper GUIDs rather than a
571  purely random number. This fixes a bug that caused Windows 7 to crash
572  when converting a disk from MBR format (but, oddly, not when creating a
573  fresh partition table or doing various other things).
574
575- Added a warning when an MBR partition is discarded because it's too
576  big for the disk.
577
578- Changed warning to Windows users about the dangers of converting to GPT
579  so that it appears only on disks that aren't already in GPT form.
580
581- Fixed bug that caused bogus "3" values to pad the ends of partition names
582  on some disks (particularly those created by Microsoft's disk
583  partitioning tools).
584
585- Made compilation without Unicode support possible (see README file)
586
587- Made default filesystem type code OS-dependent (based on the compilation
588  platform).
589
590- Added new Linux-only filesystem partition type GUID code,
591  0FC63DAF-8483-4772-8E79-3D69D8477DE4 (8300 entry code). Also changed name
592  of the EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (0700 entry code) to
593  "Microsoft basic data").
594
595- Fixed a bug that caused an incorrect code to be set for active/bootable
596  partitions when generating a hybrid MBR.
597
598- Enable entry of hex codes that begin with "0x" for both GPT and MBR
599  partitions.
600
601- Fixed bug that caused the boot loader code to be lost when creating a
602  hybrid MBR.
603
604- Fixed bug in sector input code that could produce improper values
605  if the user inputs ridiculously large "+" values.
606
6070.7.1 (3/21/2011):
608------------------
609
610- Added support for proper UTF-16LE partition names rather than the
611  "shortcut" that properly encoded only ASCII names. This support works
612  only in Linux, FreeBSD, and OS X, though, at least for the moment.
613  Although it's possible to compile this support into Windows when using
614  Visual C++, it doesn't seem to work properly. Since using this feature
615  would require distributing the ICU libraries with the Windows binary,
616  thus bloating the binary package's size to no effect, I've disabled it in
617  my standard Windows build, at least for now.
618
619- Added check to fixparts to keep it from operating on devices that
620  lack an existing MBR signature. (In 0.7.0, it could write an empty
621  MBR data structure to a device on which it was mistakenly launched.)
622
623- Fixed bug that caused the protective MBR to not be written when
624  restoring a backup of the GPT data.
625
626- Fixed bug that caused second protective MBR partition, when created
627  as part of a hybrid MBR, to always be of type 0xEE, even when the
628  user specified something else.
629
630- Integrated a number of code cleanups contributed by Florian Zumbiehl.
631
6320.7.0 (3/11/2011):
633------------------
634
635- Fixed bug that caused some types of logical partitions to be misread.
636
637- Created FixParts program, to fix problems on MBR-partitioned disks.
638  Although this program is part of the GPT fdisk family, it is NOT used on
639  GPT disks.
640
641- Completely redid the GPT-to-MBR code, used both for converting to MBR
642  form and for creating hybrid MBRs.
643
644- Fixed a bug that caused gdisk to "forget" some partitions if there were
645  numbering gaps when a conversion to MBR was aborted.
646
647- Improved CHS value creation on small (<~8GB) disks for protective MBR
648  and when creating hybrid MBRs or converting to MBR format. Linux-only,
649  for the moment; other platforms still produce bad CHS values on sub-~8GB
650  disks (but few OSes care these days).
651
652- Enhanced disk replication features ('u' on the experts' menu in gdisk; -R
653  or --replicate in sgdisk). It's now possible to replicate the partition
654  table from a larger to a smaller disk, so long as all the partitions fit
655  on the smaller disk. In sgdisk, the secondary GPT data are moved
656  automatically if disk sizes don't match. In gdisk, the secondary GPT data
657  are moved automatically if the target disk is smaller than the source
658  disk; if the target disk is larger than the source disk, the user is
659  given the option of making this adjustment.
660
661- Fixed --load-backup (-l) option to sgdisk, which was broken.
662
663- Changed largest drive that's not given a minimum 4 KiB alignment even
664  when smaller alignment is detected on the disk to 300 GB.
665
666- Fixed bug that prevented aborting a partition table backup ('u' on the
667  experts' menu) by hitting the Enter key for the device filename.
668
669- Implemented a number of code cleanups provided by Florian Zumbiehl.
670
6710.6.14 (1/8/2011):
672------------------
673
674- Made small change to the way the start sector is interpreted if you use a
675  "+" specification, as in "+2G" to locate a partition 2 GiB into the
676  default range. This change makes adjustments for sector alignment less
677  likely.
678
679- Modified sgdisk's -n (--new) option to work with relative start and end
680  values (which the man page incorrectly stated it already did). Values of
681  0 for the start and end sectors refer to the first and last available
682  sectors in the largest free block, and a partition number of 0 refers to
683  the first available partition.
684
685- Added ChromeOS GUID values to list of recognized partition type GUIDs.
686  7F00 = ChromeOS kernel, 7501 = ChromeOS root, 7502 = ChromeOS reserved.
687  Untested on actual ChromeOS system.
688
689- Tweaked APM detection to look for APM signature even if an MBR
690  signature has already been found. Helps in diagnosis of cases
691  in which an MBR has overwritten an APM disk.
692
6930.6.13 (10/12/2010):
694--------------------
695
696- Added notification about nonexistent partitions to hybrid MBR creation
697  in gdisk.
698
699- Fixed bug in GPT-to-MBR conversion that could sometimes enable creation
700  of an extended partition that overlaps a preceding partition.
701
702- Fixed bug in GPT-to-MBR conversion that prevented creation of an MBR
703  table with logical partitions if there were four or fewer partitions.
704
7050.6.12 (10/7/2010):
706-------------------
707
708- Adjusted alignment code to use 1 MiB alignment by default for drives with
709  other than 512-byte sector sizes. (Previous versions increased this --
710  for instance, to 4 MiB for drives with 2048-byte logical sector size.)
711
712- Entry of non-hexadecimal value for partition type code now causes
713  re-prompting for a new value, fixing a recently-introduced minor bug.
714
715- Fixed bug in sector entry using K/M/G/T/P suffixes on disks with
716  other-than-512-byte sector numbers.
717
718- Added "P" (PiB, pebibyte) suffix to suffixes accepted in entering
719  partition sizes.
720
721- Fixed bug that caused sgdisk to segfault if fed the (invalid)
722  "-A show" parameter. Now it terminates with a complaint about an invalid
723  partition number 0.
724
725- Removed warning when running on big-endian hardware, since this
726  support has been present for quite a while with no bug reports.
727
7280.6.11 (9/25/2010):
729-------------------
730
731- Added -F (--first-aligned-in-largest) option to sgdisk. This option is a
732  variant on -f (--first-in-largest); it returns the number of the first
733  sector that will be used in the largest free area, given the current
734  alignment value (set via -a/--set-alignment).
735
736- Streamlined GUID code entry in gdisk; it no longer offers the option
737  to enter GUIDs in separate segments.
738
739- The -t option to sgdisk now accepts GUID values as well as the
740  sgdisk/gdisk-specific two-byte hex codes.
741
742- Added check that the protective 0xEE MBR partition begins on sector 1
743  to the verify function. If it doesn't, a warning message is displayed,
744  but it doesn't count as an error.
745
746- Added check for overlapping MBR partitions to verify function (gdisk "v"
747  function on all menus; sgdisk -v/--verify function). Also warns about
748  multiple MBR 0xEE partitions (causes problems in some OSes).
749
750- Added check to GPT-to-MBR and hybrid MBR creation options to prevent
751  creation of disks with duplicate partitions. When told to create a disk
752  with duplicates, sgdisk now aborts with the error message "Problem
753  creating MBR!" When attempting to create a hybrid MBR with duplicates,
754  gdisk silently drops duplicate partitions, leaving fewer than requested.
755  Creating duplicates should not be possible in sgdisk when converting to
756  MBR form.
757
7580.6.10 (8/22/2010):
759-------------------
760
761- Enable disk-wipe (-z and -Z) and verification (-v) operations in
762  sgdisk even if the disk is badly damaged.
763
764- Added support for setting attributes in sgdisk (-A/--attributes option)
765  in sgdisk.
766
767- Fixed bug that created backwards attribute field values (bit #2 was
768  entered as bit #61, etc.).
769
770- Fixed bug that caused creation of hybrid MBR to wipe out the MBR's boot
771  code.
772
773- Added ability to save partition table from one device to another (gdisk:
774  'u' on experts' menu; sgdisk: -R or --replicate option).
775
776- Fixed inaccessible -C/--recompute-chs option in sgdisk.
777
7780.6.9 (7/4/2010):
779------------------
780
781- Fixed minor error in sgdisk man page (--largest-new option requires
782  a partition number).
783
784- Fixed major bug in hybrid MBR creation, which caused incorrect
785  protective partition end point settings and occasionally other
786  problems.
787
7880.6.8 (5/23/2010):
789------------------
790
791- Added tests to see if the file to be opened is a directory, character
792  device, FIFO, or socket; program now terminates if any of these
793  conditions is met. (Linux/FreeBSD/OS X only.) Thanks to  Justin Maggard
794  for this patch.
795
796- Added 'f' option on gdisk's experts' menu (-G/--randomize-guids in
797  sgdisk). This option randomizes the disk's GUID and all partitions'
798  GUIDs. Intended for use after cloning a disk with a utility that copies
799  the GUIDs intact (such as a raw dd copy) if you want each disk copy to
800  have its own set of GUIDs.
801
802- Added -u/--partition-guid and -U/--disk-guid options to sgdisk. These are
803  the equivalents of the 'g' and 'c' options, respectively, on the gdisk
804  experts' menu: They enable adjusting an individual partition's GUID or a
805  disk's GUID. The GUID may be either a fully specified GUID value or 'R'
806  or 'r' to set a random GUID value.
807
808- Fixed compile problem for FreeBSD (its math library lacks a log2()
809  function). Also created separate Makefile.freebsd with a couple of
810  FreeBSD-specific options.
811
812- Added -N (--largest-new) command to sgdisk. This command creates a single
813  partition that fills the largest single unpartitioned block of space on
814  the disk.
815
816- Fixed sgdisk man page error: the --change-name option was incorrectly
817  listed as --change.
818
819- Added 'h' option to gdisk experts' menu (-C or --recompute-chs in sgdisk)
820  to recompute all protective/hybrid MBR CHS values. This option is
821  intended to work around a bug in at least one BIOS that prevents the
822  computer from booting when the GPT-mandated (but technically illegal)
823  0xFFFFFF CHS value is used as the end point for a protective MBR. The
824  recomputed values will be legal (e.g., 0xFEFFFF instead of 0xFFFFFF),
825  but incorrect in GPT terms, and will therefore enable at least one
826  BIOS to boot with a GPT disk. See http://www.rodsbooks.com/gdisk/bios.html
827  for all I know about BIOS/GPT incompatibilities.
828
8290.6.7 (5/1/2010):
830-----------------
831
832- Undid earlier change, with version 0.6.4, that wiped the MBR boot loader
833  when doing MBR-to-GPT conversions. I've now become skeptical that MBR
834  boot loaders were causing any real problems on GPT disks, so I'm going
835  back to the philosophy of leaving as much alone as possible.
836
837- Fixed bug that caused incorrect reporting of free space on 0-size disks
838  (e.g., files of 0 length passed as disk images).
839
840- Fixed bug that caused segfault on some invalid disks
841
842- Fixed bug that caused incorrect partition numbers to be displayed for
843  some verify problems.
844
845
8460.6.6 (3/21/2010):
847-----------------
848
849- Added support for the "no block IO protocol" (referred to as "hide from
850  EFI" in GPT fdisk) and "legacy BIOS bootable" attribute bits. See Table
851  19 of the UEFI 2.3 specification (p. 153) for details.
852
853- Changed the sequence in which GPT data structures are written to disk;
854  backups are now written first, followed by the main structures. This is
855  as recommended in the UEFI 2.3 specification, since it's safer in the
856  extremely unlikely event that a RAID array's size is increased and
857  there's a power outage mid-write. (If the main structures are written
858  first in this case, they'll point to data that's not yet been written;
859  but by writing the backups first, the old main structures will still
860  point to the valid old backup structures.)
861
862- Protective MBRs now have disk signatures of 0x00000000, to better
863  conform with GPT as described in the UEFI 2.3 specification.
864
865- Added alignment information to the summary data produced by the
866  'p' main-menu option in gdisk or the -p option to sgdisk.
867
868- More alignment changes: GPT fdisk now attempts to determine the alignment
869  value based on alignment of current partitions, if any are defined. If no
870  partitions are defined, a default value of 2048 is set. If the computed
871  value is less than 8 on drives over about 596GiB, it's reset to 8, since
872  the drive might be a WD Advanced Format unit that requires an 8-sector
873  (or larger power-of-2) alignment value for best performance. The
874  2048-sector default provides better alignment in some RAID
875  configurations.
876
877- Changed behavior when a backup restore fails. Previously, GPT fdisk
878  would create a fresh blank set of partitions. Now it does so only
879  if the failure occurs when interpreting the backup's contents; if the
880  user typed the wrong filename, the in-memory data structures aren't
881  touched.
882
883
8840.6.5 (3/7/2010):
885-----------------
886
887- Added tests to verify ('v') function and to pre-save checks to look for
888  partitions that end before they begin or that are too big for their
889  disks.
890
891- Fixed a bug that could cause spurious data to appear in a grown partition
892  table.
893
894- Added ability to convert some or all partitions to logical partitions in
895  GPT-to-MBR conversion. This feature is limited by the fact that at least
896  one free sector must exist immediately prior to each logical partition,
897  so it won't do much good if partitions are crammed together. It should be
898  possible to convert back to MBR any disk that started that way, provided
899  no partitions were added or resized when the disk was in GPT form; and
900  disks that were partitioned with Apple's Disk Utility or other tools that
901  insert unpartitioned space should also be convertible. CAUTION: THE
902  LOGICAL PARTITION CREATION FEATURE DOESN'T TRY TO ALIGN PARTITIONS OR
903  PARTITION HEADER DATA TO CYLINDER BOUNDARIES! It's conceivable that some
904  older OSes or utilities will object to these disks, although Linux, OS X,
905  Windows Vista, and Windows 7 all seem happy with them.
906
907- Fixed bug that caused creation of 0-length file if an incorrect device
908  filename was typed.
909
910- The gdisk program now prompts for a device filename if it's called with
911  no options. This enables gdisk to do something useful if it's launched by
912  double-clicking its icon in a GUI environment.
913
914- Added workaround for bug in some versions of MinGW that caused the
915  program to garble input sector numbers.
916
917- The Windows version now works on disks with over-512-byte sectors.
918  Tested on a magneto-optical (MO) drive with 2048-byte sectors.
919
920- Added -D (--display-alignment) option to sgdisk, to display sector
921  alignment value (by default, 1 for sub-800GiB disks and 8 for disks
922  over that size).
923
924- Fixed bug in computation of CHS geometries for protective MBR. This is
925  non-critical, since most modern utilities ignore the CHS geometries.
926  Concerned users can use the 'n' option on the experts' menu to build new
927  protective MBRs with the new algorithm, if desired. (Note that GNU
928  Parted, at least, gets this wrong, too.)
929
930- Fixed memory-allocation bug when reading GPT disks with partition tables
931  with over 128 entries; could cause program to crash on startup.
932
9330.6.4-2 (2/20/2010):
934--------------------
935
936Note: Neither of the following changes affects actual program code, so I've
937left the version number in the program at 0.6.4.
938
939- Altered Makefile to pass user's compiler and linker environment
940  variables through.
941
942- Added #include to gpttext.cc to enable it to compile on the latest
943  GCC versions (it was failing on at least some 4.4.x compilers).
944
9450.6.4 (2/19/2010):
946-------------------
947
948- Added -m (--gpttombr) option to sgdisk, enabling conversion of GPT
949  disks to MBR format, with a limit of four partitions total, and of course
950  without overcoming the 2TiB limit.
951
952- Added -h (--hybrid) option to sgdisk, enabling creation of hybrid
953  MBRs. Fewer options are available in sgdisk than in gdisk, though,
954  in order to keep the user interface manageable.
955
956- Fixed off-by-one bug in specification of partition when using the
957  -T (--transform-bsd) option in sgdisk.
958
959- Changed the code to create a new MBR unique disk signature whenever a new
960  protective MBR is generated (when doing an MBR-to-GPT conversion, when
961  using the 'n' option on the experts' menu, or when using the 'o' option
962  on the main menu, for example). Previous versions attempted to preserve
963  the existing MBR disk signature in most cases, but this resulted in
964  values of 0x00000000 whenever an empty disk was partitioned, and often in
965  other cases, too. Better to risk changing this value too often than to
966  leave multiple disks with 0x00000000 values, I think.
967
968- Added transpose ('t' on experts' menu in gdisk; or -r or --transpose in
969  sgdisk) command to enable fine-tuning partition order without doing a
970  full sort.
971
972- Added code to clear the MBR boot loader when doing an MBR-to-GPT
973  conversion. (This was already done in full-disk BSD-to-GPT conversions.)
974  This is done because I've seen a few problem reports that make me think
975  some MBR boot loaders freak out and hang the system when they encounter
976  GPT disks, and/or they attempt to load a second-stage boot loader stored
977  in what is now GPT territory, causing a system hang. Since MBR boot
978  loaders don't work on GPT disks anyhow (even GRUB needs to be
979  reinstalled), this new wiping behavior shouldn't cause any problems, and
980  may prevent a few.
981
982- Fixed bug in Windows version that prevented saving backup files.
983
984- Fixed bug that caused second and subsequent partition numbers in
985  prompts in hybrid MBR conversion procedure to be displayed in
986  hexadecimal.
987
988- Fixed very obscure potential bug in hybrid MBR/GPT synchronization when
989  deleting partitions; code wasn't matching partition lengths correctly,
990  which would only affect partitions that start at the same point but have
991  different lengths in MBR vs. GPT.
992
993- Fixed bug in the -E option to sgdisk; it was actually returning the
994  last free sector, not the last free sector in the largest free block.
995
996- Fixed bug in -t option to sgdisk; it was corrupting partition type
997  codes.
998
999- Fixed minor alignment bug in partition summary list ('p' from any menu)
1000  when partition sizes are between 1000 and 1024 units.
1001
1002- Backup restore function ('l' on recovery & transformation menu) now
1003  accepts both backups generated by GPT fdisk and backups created by a
1004  direct copy (via dd, etc.) of the MBR, main GPT header, and main GPT
1005  partition table, in that order. ("dd if=/dev/sda of=backup.gpt bs=512
1006  count=34" will do this on Linux for a disk with a typical-sized GPT table
1007  of 128 entries.)
1008
10090.6.3 (2/3/2010):
1010------------------
1011
1012- Fixed serious data corruption bug on big-endian (PowerPC and similar)
1013  systems.
1014
1015- Changed several GPT fdisk Solaris type codes to correct a duplicate
1016
1017- Corrected error in GPT fdisk type codes for NetBSD LFS and NetBSD RAID;
1018  they were identical, but I've now changed NetBSD RAID to A906, which
1019  is unique.
1020
1021- Added GUID for IBM General Parallel File System (GPFS) partition type
1022  code. Somewhat arbitrarily set it to use the 7501 number (MBR code 0x75
1023  is used by IBM PC/IX, so it's at least the right company, by my loose
1024  numbering rules....).
1025
1026- Improved GUID generation. Prior versions generated completely random
1027  numbers for GUIDs. This works, but is technically a violation of the
1028  spec. Unix versions now employ libuuid to generate GUIDs in a more
1029  correct way. The Windows version still generates random numbers, though.
1030
1031- Turned PartTypes class into a derived class of GUIDData, and renamed
1032  it to PartType.
1033
1034- Created new GUIDData class, to replace the original GUIDData struct.
1035
10360.6.2 (1/29/2010):
1037------------------
1038
1039- The change-type ('t' on main menu) option now changes the partition's
1040  name *IF* the current name is the generic one for the partition type.
1041  If the current name is not the generic name, it is NOT changed.
1042
1043- Fixed bug that caused new protective MBR to not be created when the
1044  MBR was invalid and the GPT was damaged and the user opts to try to
1045  use the GPT data.
1046
1047- Enabled default partition type code of 0700 when creating partitions
1048  or changing their type codes. (Type 0700, Linux/Windows data, is set if
1049  the user hits the Enter key alone.)
1050
1051- Fixed bug in sort ('s' on main menu) option that caused partition
1052  numbers to begin at more than 1 if the original partition list had
1053  too many empty partitions before the last one defined.
1054
1055- Improved code to determine which partition table to load in case of
1056  CRC mismatches between the partition tables and the stored CRC values
1057  in the headers.
1058
1059- Compiles using MinGW (http://www.mingw.org) to create a Windows binary.
1060
1061- Moved all disk I/O functions to the new DiskIO class. This helps with the
1062  Windows port; it uses diskio-windows.cc for Windows-specific code,
1063  diskio-unix.cc for the Linux, FreeBSD, and OS X code, and diskio.cc for
1064  cross-platform disk I/O code.
1065
1066- Changed BSD disklabel detection code to be more correct (I think).
1067  This change has no effect on my test disks, but I hope it'll work
1068  better on disks with sector sizes other than 512 or 2048.
1069
10700.6.1 (1/20/2010):
1071------------------
1072
1073- Fixed bug that returned incorrect disk size on 32-bit versions of
1074  FreeBSD.
1075
1076- Fixed bug that prevented FreeBSD version from working on disk image
1077  files.
1078
1079- Fixed bug that caused BSD disklabel conversion to fail.
1080
10810.6.0 (1/15/2010):
1082------------------
1083
1084- Fixed bug that caused the convert to MBR function to fail.
1085
1086- Added support for disks with other than 512-byte sectors.
1087
1088- Created embryonic sgdisk program.
1089
1090- Fixed bug that caused relative sector numbers entered by users (e.g,
1091  "+128M") to be misinterpreted as from the start of the range rather than
1092  from the default value.
1093
10940.5.3 (1/4/2010):
1095-----------------
1096
1097- Fixed bug in display of GUIDs when compiled with some versions of GCC.
1098
1099- Eliminated warnings caused by additional checks in latest versions of
1100  GCC. These warnings were harmless, but to eliminate them I've added
1101  more error checking on disk I/O.
1102
1103- Eliminated unnecessary warnings about potential data loss if the program
1104  was launched with the -l option or if writes aren't possible.
1105
1106- Added code to set the partition boundary value based on the physical
1107  sector size. (FindAlignment() function.) This function, however, works
1108  only on Linux, and then only if the BLKPBSZGET ioctl is defined. This
1109  ioctl is new in kernel 2.6.32 or thereabouts.
1110
11110.5.2 (12/31/2009):
1112-------------------
1113
1114- Modified partition creation function to begin partitions on 8-sector
1115  boundaries by default. This improves performance on the new Western
1116  Digital Advanced Format drives. The new 'd' and 'l' options on the
1117  experts' menu display and change, respectively, the boundary size.
1118
1119- Tweaked code to produce fewer warnings on the latest versions of
1120  GCC.
1121
11220.5.1:
1123------
1124
1125- Made some minor edits to the man page.
1126
1127- Incorporated RPM .spec file changes contributed by Scott Collier
1128  (boodle11@gmail.com).
1129
1130- Changed method of locating and loading backup GPT data, to use the
1131  main header's pointer, if it's valid, rather than seeking to the
1132  end of the disk.
1133
1134- Added 'e' option (relocate backup GPT data structures) to the experts'
1135  menu.
1136
1137- Fixed bug that prevented recovery of partitions in case of partially
1138  damaged GPT data (bad main and good backup or bad backup and good
1139  main header, for instance).
1140
11410.5.0:
1142------
1143
1144- Added GPT-to-MBR conversion function. It's very limited, but potentially
1145  useful in some cases.
1146
1147- Fixed bug that caused incorrect file sizes to be reported on 32-bit
1148  Linux, thus causing problems when editing partition tables in disk images
1149  or when loading GPT backup files.
1150
1151- Fixed bug that caused bogus CRC error reports when loading backup GPT
1152  data.
1153
1154- Reorganized menus. There are now three: the main menu, the experts' menu,
1155  and the recovery & transformation menu. The last of these has most of the
1156  items that had been on the earlier versions' experts' menu.
1157
1158- Added ability to re-load the MBR and generate a fresh GPT from it. This
1159  is normally identical to quitting and re-running the program, but it
1160  could be handy if, say, the GPT partitions on a hybrid configuration are
1161  badly messed up; this will enable using the hybridized partitions as the
1162  starting point for a new GPT setup.
1163
1164- The program now generates CHS values for hybrid and GPT-to-MBR conversion
1165  MBRs. For the moment, the assumption is the maximum number of heads and
1166  sectors per track (255 and 63, respectively), although the bulk of the
1167  code supports other values -- it'd just be awkward to enter the data in
1168  the user interface.
1169
1170- Fixed minor display bug that caused number of sectors on the disk to be
1171  shown as 0 on large disks when running 32-bit binaries.
1172
1173- Reverted 0.4.2's zap (destroy GPT) changes, since I don't want to wipe
1174  out a valid MBR if the user created that MBR over an older GPT without
1175  first properly wiping out the GPT, and the user now wants to wipe out
1176  the GPT.
1177
1178- Reformatted and edited the man page. Aside from edits related to the
1179  preceding program changes, I've altered the markup slightly and trimmed
1180  much of the more tutorial information from the man page to better
1181  conform to typical terse man page style.
1182
11830.4.2:
1184------
1185
1186- Code cleanup.
1187
1188- Fixed very small formatting bug in display of hex code when a match isn't
1189  found when converting from an MBR/gdisk hex code to a GUID type code.
1190
1191- Added the ability to work on disk image files (raw files for virtual
1192  machines, backup images, etc.). The program assumes that all such disk
1193  image files have 512-byte sectors.
1194
1195- Added verification prompt to 'o' main-menu option to avoid accidental
1196  erasures of all partitions.
1197
1198- The "destroy GPT data structures" option ('z' on the experts' menu) now
1199  also destroys all EFI GPT (0xEE) partitions in the MBR.
1200
1201- Added an extra warning to the "destroy GPT data structures" option if an APM
1202  or BSD disklabel was detected on the disk.
1203
1204- Added a buffer flush after destroying GPT data structures, to get the OS
1205  to read the new (empty or MBR-only) partition table.
1206
1207- Fixed bug that allowed entry of nonexistent partition numbers when creating
1208  a hybrid MBR.
1209
12100.4.1:
1211------
1212
1213- Code cleanup/re-organization
1214
1215- Partition creation function ('n' on main menu) now uses the start of the
1216  largest available chunk of free space rather than the first available
1217  sector as the default starting sector number. This should enable easier
1218  partition creation if there are small bits of free space on the disk.
1219
1220- You can now specify the end point of a partition by using a minus sign,
1221  in which case the end point is the default value minus the specified
1222  size. For instance, "-200M" creates a partition that ends 200MiB before
1223  the default end point.
1224
1225- You can now specify the start point of a partition by using a plus or
1226  minus sign, in which case the start point is the specified distance from
1227  the start (+) or end (-) of free space. This is exactly the same as the
1228  new rules for entry of the end point, except that the default value is
1229  set differently.
1230
1231- Deleting a partition now checks for a matching hybrid MBR partition, and
1232  if one is found, it's deleted. Any empty space that then surrounds the
1233  0xEE (EFI GPT) MBR partitions is then added to the nearby 0xEE partition.
1234  If no non-0xEE partitions are left, a fresh protective MBR is generated.
1235
1236- Added hybrid MBR consistency check to the verify ('v') option and to
1237  pre-write checks. If non-0xEE/non-0x00 MBR partitions without
1238  corresponding GPT partitions are found, the user is warned. This finding
1239  does NOT prevent writing the partition table, though.
1240
1241- Added non-destructive write test when opening the device file, in order
1242  to detect the problem with FreeBSD being unable to write to disks with
1243  mounted partitions (or other potential problems).
1244
12450.4.0:
1246------
1247
1248- Added support for BSD disklabels. The program can now convert disks that
1249  use "raw" disklabels, with the caveat that the first partition will
1250  almost certainly need to be deleted because it'll overlap the main GPT
1251  header; and convert disklabels contained within a GPT (or a former MBR,
1252  converted to GPT) partition. In the latter case, the 'b' main menu option
1253  is used.
1254
1255- Added support for compiling on FreeBSD.
1256
1257- Fixed bug that could cause crashes or incomplete sorts when sorting
1258  the partition table.
1259
1260- New partitions, including converted ones, now take on the name of the
1261  partition type as a default name.
1262
1263- Reorganized some code; created a separate C++ class for GPT partitions
1264  (GPTPart), which replaced a struct and enabled moving code from the
1265  bloated GPTData class into GPTPart.
1266
1267- Fixed a bug that produced spurious warnings about unknown sector sizes
1268  when loading a backup file.
1269
12700.3.5:
1271------
1272
1273Note: This version was not officially publicly released; I wanted to test
1274the big-endian support while developing 0.4.0.
1275
1276- Tweaked the disk type identification code to warn users to re-sync their
1277  hybrid MBRs when one is detected.
1278
1279- Tweaked MBR-reading code to ignore 0xEE (EFI GPT) partitions. This will
1280  only have an effect on a poorly partitioned MBR disk that contains an
1281  inappropriate EFI GPT partition, or when attempting to recover a
1282  corrupted disk by using the hybrid MBR for data recovery.
1283
1284- Added big-endian (PowerPC, etc.) support!
1285
1286- Added code to identify and warn of the presence of an Apple Partition
1287  Map (APM) on the disk.
1288
1289- Enabled MBR conversion code to handle multiple logical partitions.
1290
12910.3.4:
1292------
1293
1294- Fixed bug that enabled (possibly accidental) entry of MBR type codes of
1295  0x00 in GPTData::MakeHybrid(). The fix also enables entry of default
1296  type code by pressing the Enter key when prompted. Applied a similar
1297  fix to the entry of the type code for the second protective partition,
1298  if one is used.
1299
1300- Fixed a typo: "sectors" was spelled "sectprs" in one spot!
1301
1302- Fixed bug that caused default entry for end sector to be refused if an
1303  initial value using a plus sign (e.g., "+20G") was also refused.
1304
13050.3.3:
1306------
1307
1308- Gave users control over the way MBR partitions are assigned to slots in a
1309  hybrid MBR setup; the original method (putting the 0xEE partition after
1310  the real partitions) works well for non-boot disks, but both GRUB and
1311  GRUB2 become confused by this type of setup, so it needs changing.
1312
1313- Changed "blocks" to "sectors" in GPT and MBR table displays.
1314
1315- Added "Boot" column to MBR table display; shows an asterisk (*) when the
1316  partition's status is bootable.
1317
13180.3.2:
1319------
1320
1321- Changed __DARWIN_UNIX03 to __APPLE__ as code to enable MacOS X support.
1322
1323- Added the ability to create a hybrid MBR ('h' on experts' menu). This was
1324  motivated by my discovery that Windows 7 remains brain-dead when it comes
1325  to the ability to boot from a GPT disk, at least on BIOS-based machines.
1326
1327- Added 'z' option to experts' menu, to destroy GPT data structures and
1328  exit. The intent is to use this feature to enable subsequent partitioning
1329  of the disk using fdisk or other GPT-unaware tools. (GNU Parted will wipe
1330  the GPT data structures itself when you create a new MBR ["msdos
1331  disklabel," in Parted parlance], so using Parted is another option.)
1332
1333- Slightly altered the effect of the 'o' command on the main menu. It now
1334  blanks out the protective MBR, as well as the GPT data.
1335
13360.3.1:
1337------
1338
1339- Added Mac OS X support, provided as a patch by David Hubbard
1340  (david.c.hubbard@gmail.com).
1341
1342- Fixed bug in disksize() function on Mac OS. (Possibly dependent on the
1343  kernel and/or GCC version.) The disk size, of type uint64_t, was not
1344  being passed correctly, so I reorganized the function to return it as
1345  the function's return value rather than as a parameter. This seems to
1346  work OK on my Mac OS test system and on both 32- and 64-bit Linux
1347  systems.
1348
1349- Fixed off-by-one bug in GPTData::FindLastAvailable().
1350
1351- Fixed bug that caused display of options after a disk-write error.
1352
1353- Fixed several incorrect MacOS X partition type GUIDs, thanks to Yves
1354  Blusseau (1otnwmz02@sneakemail.com).
1355
13560.3.0:
1357------
1358
1359- Changed version number to 0.3.0, reflecting the fact that I've received
1360  no significant bug reports and so am elevating the program to "beta"
1361  status. This change also entailed altering the warning the program
1362  displays when saving partition table changes.
1363
1364- Fixed minor bug in CHS geometry of the protective MBR's type EE partition
1365  (was producing 0x000200 as the start value, but should be 0x000100).
1366  Should be a non-critical bug since the protective MBR partition
1367  definition is only there to keep MBR-only disk utilities from messing
1368  with the disk.
1369
1370- Added ability to enter GUIDs as single massive strings rather than in
1371  chunks.
1372
13730.2.2:
1374------
1375
1376- Added #include directives required to compile the program using GCC
1377  4.4.0.
1378
13790.2.1:
1380------
1381
1382- Fixed partition numbering problem in reports of partition overlaps in
1383  verification function.
1384
1385- Fixed 1-sector partition size problem when creating new partitions
1386  (partitions were 1 sector too big when using the +size option).
1387
1388- Changed BytesToSI() to display values in bytes without decimal points
1389  (e.g., "512 bytes" rather than "512.0 bytes").
1390
1391- Added GPTData class member functions to retrieve GPT data structure
1392  locations on disk; used in my internal-use-only GPT-wiping program.
1393
1394- Eliminated the "a reboot is recommended" notice after writing the
1395  partition table.
1396
1397- Added notice after sorting the partition table to the effect that
1398  editing /etc/fstab and/or the boot loader files may be required.
1399
1400- Fixed bug in MBR-reading function that caused 0x0f (Win95 LBA) and 0x85
1401  (Linux extended) extended partitions to not be read.
1402
1403- Fixed bug in GetLastSector() (in support.cc) that would have prevented
1404  correct user entry of over-32-bit sector numbers on 32-bit systems.
1405
1406- Made some changes/corrections to the partition type list in
1407  parttypes.cc. Most of these were based on newly-discovered MBR type
1408  codes for Apple (Mac OS X) filesystems.
1409
1410- General code cleanup (setting explicit casts, etc.)
1411
14120.2.0:
1413------
1414
1415- Initial semi-public release
1416