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