blob: 24e867cc6c98246b115d16e1857075f386c948e0 [file] [log] [blame]
srs5694d8eed462012-12-15 01:55:21 -050010.8.6 (?/??/2012):
2------------------
3
4- Added a new check to the verification code.
5
6- Added partition type code for Sony system partition
7 (F4019732-066E-4E12-8273-346C5641494F). I'm not entirely clear what this
8 is used for, but it's appearing on some new Sony computers.
9
10- Tweaked hybrid MBR creation options to fix a problem that caused the main
11 0xEE MBR partition to NOT be created if the user told gdisk to NOT place
12 it at the start of the disk AND IF fewer than three partitions are
13 hybridize AND IF the user opted to create a second protective partition.
14
15- Changed default build options for Mac OS X to *NOT* use libicu,
16 since it seems to have broken somewhere along the line. It still
17 works on Linux, though.
18
19- Added partition type codes for VMWare ESX (FB00, FB01, and FC00).
20
srs56944307ef22012-05-30 12:30:48 -0400210.8.5 (5/30/2012):
srs5694fa3868e2012-03-28 01:45:57 -040022------------------
23
srs56944307ef22012-05-30 12:30:48 -040024- Changed code that writes the partition table so that a disk sync
25 operation occurs even if one or more write operations failed (but not if
26 they all failed). This is intended to work around a bug that a user
27 reported on a Windows system on which the write of the protective MBR
28 failed, although everything else worked. (I suspect anti-virus software
29 may have been blocking write access to the MBR.)
30
srs5694fa3868e2012-03-28 01:45:57 -040031- Added type codes for Midnight BSD (0xA580 - 0xA585). I used these codes
32 because Midnight BSD uses the same 0xA5 type code as FreeBSD on MBR
33 disks, so I'm starting Midnight BSD's numbering halfway through the
34 0xA5## range.
35
srs5694a6297b82012-03-25 16:13:16 -0400360.8.4 (3/25/2012):
37------------------
38
39- REALLY fixed Ctrl+D problems! Now gdisk terminates upon receiving a
40 Ctrl+D. In all previous versions, it could lock itself into a CPU-hogging
41 loop if launched via "sudo" from a terminal window that was then closed
42 or if Ctrl+D was pressed at certain input prompts (for a partition name
43 or sector number, for instance).
44
srs569434882942012-03-23 12:49:15 -0400450.8.3 (3/23/2012):
srs5694e842bc12012-02-03 11:27:05 -050046------------------
47
srs569434882942012-03-23 12:49:15 -040048- Fixed compilation problem on GCC 4.7.
49
50- Improved handling of Ctrl+D on some systems.
51
52- Added disk's name to message stating that a disk write was successful.
53
54- Fixed bug that caused creation of >2TiB partitions on 32-bit systems to
55 be truncated in sgdisk.
srs5694e842bc12012-02-03 11:27:05 -050056
570.8.2 (1/22/2012):
srs5694dcebe572012-01-22 15:03:42 -050058------------------
srs56940541b562011-12-18 16:35:25 -050059
srs5694706e5122012-01-21 13:47:24 -050060- Adjusted the code to support a number of partitions that's not a multiple
61 of the number of partition table entries that fits in a sector (normally
62 4 per sector). The program still rounds up, when necessary, when resizing
63 the partition table manually, but not when loading a partition table that
64 contains a peculiar number of partitions. This helps prevent spurious
65 error messages about CRC problems when loading some Solaris partition
66 tables.
67
srs5694e69e6802012-01-20 22:37:12 -050068- Fixed bugs relating to the handling of empty partitions; Solaris's ZFS
69 tools create weird empty partitions that are legal but that gdisk wasn't
70 handling properly. (Specifically, they sometimes have non-zero end
71 points; gdisk assumed empty partitions had end points of 0.)
72
srs56940541b562011-12-18 16:35:25 -050073- Fixed a bug that caused an infinite loop of input prompts if the user
74 pressed Ctrl+D.
75
76- Changed gdisk's first-sector input operation to specify a sector number
77 that's properly aligned as the default value. This eliminates the need
78 to alter that value and notify the user of the change when the user
79 hits "Enter" for the default value as the first partition on an empty
80 disk (as well as in some other situations).
81
srs569423d8d542011-10-01 18:40:10 -0400820.8.1 (10/1/2011):
srs5694d1b11e82011-09-18 21:12:28 -040083------------------
84
srs569423d8d542011-10-01 18:40:10 -040085- Fixed bug that could cause FixParts to keep a partition's assignment
86 as logical when FixPart could not actually do so. This could happen
87 when there are no gaps between two logical partitions. Some partitioning
88 tools can create such configurations, but FixParts can't. Such
89 configurations are extremely rare. I've only encountered them when
90 logical partitions are out of order.
91
92- Added code to detect infinite loops of logical partitions when reading
93 MBR data. When detected, the program now stops reading after the first
94 loop, so no duplicates appear in the partition list.
95
96- Fixed bug in partition overlap detection in MBR code.
97
srs5694d1b11e82011-09-18 21:12:28 -040098- Changed GPT reading code to use the size encoded in GPT headers to
99 determine how much of the header to use in computing a CRC, with the
100 restriction that the size be equal to or less than the disk's sector
101 size. This should work around problems with libefi in ZFS, which sets the
srs569423d8d542011-10-01 18:40:10 -0400102 header size to 512 rather than the more common 92. A caveat: If the
103 disk's sector size is larger than the GPTHeader data structure size (512
104 bytes), then the rest of the sector's contents are ignored and replaced
105 with 0 values. This could produce false positives on CRC checks on disks
106 with over-512-byte sector sizes if the header sector is padded with
107 something other than 0 values.
srs5694d1b11e82011-09-18 21:12:28 -0400108
109- Fixed bug in new (as of 0.8.0) check that main and backup partition
110 tables are identical on big-endian (PowerPC, etc.) hardware.
111
srs5694a17fe692011-09-10 20:30:20 -04001120.8.0 (9/10/2011):
113------------------
114
115- Added new return option for sgdisk: 8, which means that a replication
116 operation (-R or --replicate) failed. Note that other operations on
117 the same command line might still have succeeded.
118
119- Added gdisk_test.sh shell script, contributed by Guillaume Delacour.
120 This script tests some common gdisk and sgdisk operations to be sure
121 they're working correctly.
122
123- Enable sgdisk's -l (--load-backup) and -o (--clear) options to work
124 even on disks that are damaged. Most other options will still be ignored,
125 though, so if you suspect a disk may be bad and want to use one of these
126 options, you should do so on a line by itself, followed by a separate
127 command to perform other actions (such as adding new partitions).
128
129- Added check for mis-matched primary and backup partition tables.
130 A mismatch is reported as a CRC error.
131
132- Added Apple Core Storage partition type code (hex code AF05, GUID
133 53746F72-6167-11AA-AA11-00306543ECAC).
134
135- Added cgdisk program to the family. This program is a rough workalike
136 to cfdisk, much as gdisk is a rough workalike to fdisk. See the cgdisk
137 man page or http://www.rodsbooks.com/gdisk/cgdisk-walkthrough.html for
138 details about its operation.
139
140- Fixed bug that caused CHS end point for protective MBR to be set to
141 0xfeffff rather than the spec-mandated 0xffffff on disks over ~8GB. This
142 is a very minor bug, since not much cares about this, and most other GPT
143 tools get it wrong in the same way, too.
144
srs569400b6d7a2011-06-26 22:40:06 -04001450.7.2 (6/26/2011):
srs56946aae2a92011-06-10 01:16:51 -0400146------------------
147
srs569400b6d7a2011-06-26 22:40:06 -0400148- The Windows version now (finally!) generates proper GUIDs rather than a
149 purely random number. This fixes a bug that caused Windows 7 to crash
150 when converting a disk from MBR format (but, oddly, not when creating a
151 fresh partition table or doing various other things).
152
153- Added a warning when an MBR partition is discarded because it's too
154 big for the disk.
155
156- Changed warning to Windows users about the dangers of converting to GPT
157 so that it appears only on disks that aren't already in GPT form.
158
159- Fixed bug that caused bogus "3" values to pad the ends of partition names
160 on some disks (particularly those created by Microsoft's disk
161 partitioning tools).
162
163- Made compilation without Unicode support possible (see README file)
164
165- Made default filesystem type code OS-dependent (based on the compilation
166 platform).
167
168- Added new Linux-only filesystem partition type GUID code,
169 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (8300 entry code). Also changed name
170 of the EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (0700 entry code) to
171 "Microsoft basic data").
172
srs56946aae2a92011-06-10 01:16:51 -0400173- Fixed a bug that caused an incorrect code to be set for active/bootable
174 partitions when generating a hybrid MBR.
175
176- Enable entry of hex codes that begin with "0x" for both GPT and MBR
177 partitions.
178
179- Fixed bug that caused the boot loader code to be lost when creating a
180 hybrid MBR.
181
182- Fixed bug in sector input code that could produce improper values
183 if the user inputs ridiculously large "+" values.
184
srs5694699941e2011-03-21 21:33:57 -04001850.7.1 (3/21/2011):
186------------------
187
188- Added support for proper UTF-16LE partition names rather than the
189 "shortcut" that properly encoded only ASCII names. This support works
190 only in Linux, FreeBSD, and OS X, though, at least for the moment.
191 Although it's possible to compile this support into Windows when using
192 Visual C++, it doesn't seem to work properly. Since using this feature
193 would require distributing the ICU libraries with the Windows binary,
194 thus bloating the binary package's size to no effect, I've disabled it in
195 my standard Windows build, at least for now.
196
197- Added check to fixparts to keep it from operating on devices that
198 lack an existing MBR signature. (In 0.7.0, it could write an empty
199 MBR data structure to a device on which it was mistakenly launched.)
srs5694d3ba7a62011-03-13 11:51:34 -0400200
srs5694815fb652011-03-18 12:35:56 -0400201- Fixed bug that caused the protective MBR to not be written when
202 restoring a backup of the GPT data.
203
srs56945a608532011-03-17 13:53:01 -0400204- Fixed bug that caused second protective MBR partition, when created
205 as part of a hybrid MBR, to always be of type 0xEE, even when the
206 user specified something else.
207
srs5694c2f6e0c2011-03-16 02:42:33 -0400208- Integrated a number of code cleanups contributed by Florian Zumbiehl.
srs5694d3ba7a62011-03-13 11:51:34 -0400209
srs5694bf8950c2011-03-12 01:23:12 -05002100.7.0 (3/11/2011):
srs569464cbd172011-03-01 22:03:54 -0500211------------------
212
srs5694bf8950c2011-03-12 01:23:12 -0500213- Fixed bug that caused some types of logical partitions to be misread.
214
215- Created FixParts program, to fix problems on MBR-partitioned disks.
216 Although this program is part of the GPT fdisk family, it is NOT used on
217 GPT disks.
218
219- Completely redid the GPT-to-MBR code, used both for converting to MBR
220 form and for creating hybrid MBRs.
221
222- Fixed a bug that caused gdisk to "forget" some partitions if there were
223 numbering gaps when a conversion to MBR was aborted.
224
225- Improved CHS value creation on small (<~8GB) disks for protective MBR
226 and when creating hybrid MBRs or converting to MBR format. Linux-only,
227 for the moment; other platforms still produce bad CHS values on sub-~8GB
228 disks (but few OSes care these days).
229
srs569464cbd172011-03-01 22:03:54 -0500230- Enhanced disk replication features ('u' on the experts' menu in gdisk; -R
231 or --replicate in sgdisk). It's now possible to replicate the partition
232 table from a larger to a smaller disk, so long as all the partitions fit
233 on the smaller disk. In sgdisk, the secondary GPT data are moved
234 automatically if disk sizes don't match. In gdisk, the secondary GPT data
235 are moved automatically if the target disk is smaller than the source
236 disk; if the target disk is larger than the source disk, the user is
237 given the option of making this adjustment.
238
239- Fixed --load-backup (-l) option to sgdisk, which was broken.
240
241- Changed largest drive that's not given a minimum 4 KiB alignment even
242 when smaller alignment is detected on the disk to 300 GB.
243
srs5694bf8950c2011-03-12 01:23:12 -0500244- Fixed bug that prevented aborting a partition table backup ('u' on the
srs569464cbd172011-03-01 22:03:54 -0500245 experts' menu) by hitting the Enter key for the device filename.
246
srs5694bf8950c2011-03-12 01:23:12 -0500247- Implemented a number of code cleanups provided by Florian Zumbiehl.
srs569464cbd172011-03-01 22:03:54 -0500248
srs5694df9d3632011-01-08 18:33:24 -05002490.6.14 (1/8/2011):
250------------------
251
252- Made small change to the way the start sector is interpreted if you use a
253 "+" specification, as in "+2G" to locate a partition 2 GiB into the
254 default range. This change makes adjustments for sector alignment less
255 likely.
256
257- Modified sgdisk's -n (--new) option to work with relative start and end
258 values (which the man page incorrectly stated it already did). Values of
259 0 for the start and end sectors refer to the first and last available
260 sectors in the largest free block, and a partition number of 0 refers to
261 the first available partition.
262
263- Added ChromeOS GUID values to list of recognized partition type GUIDs.
264 7F00 = ChromeOS kernel, 7501 = ChromeOS root, 7502 = ChromeOS reserved.
265 Untested on actual ChromeOS system.
266
267- Tweaked APM detection to look for APM signature even if an MBR
268 signature has already been found. Helps in diagnosis of cases
269 in which an MBR has overwritten an APM disk.
270
srs5694058d4a52010-10-12 12:42:47 -04002710.6.13 (10/12/2010):
272--------------------
273
274- Added notification about nonexistent partitions to hybrid MBR creation
275 in gdisk.
276
277- Fixed bug in GPT-to-MBR conversion that could sometimes enable creation
278 of an extended partition that overlaps a preceding partition.
279
280- Fixed bug in GPT-to-MBR conversion that prevented creation of an MBR
281 table with logical partitions if there were four or fewer partitions.
282
srs56940873e9d2010-10-07 13:00:45 -04002830.6.12 (10/7/2010):
284-------------------
285
286- Adjusted alignment code to use 1 MiB alignment by default for drives with
287 other than 512-byte sector sizes. (Previous versions increased this --
288 for instance, to 4 MiB for drives with 2048-byte logical sector size.)
289
290- Entry of non-hexadecimal value for partition type code now causes
291 re-prompting for a new value, fixing a recently-introduced minor bug.
292
293- Fixed bug in sector entry using K/M/G/T/P suffixes on disks with
294 other-than-512-byte sector numbers.
295
296- Added "P" (PiB, pebibyte) suffix to suffixes accepted in entering
297 partition sizes.
298
299- Fixed bug that caused sgdisk to segfault if fed the (invalid)
300 "-A show" parameter. Now it terminates with a complaint about an invalid
301 partition number 0.
302
303- Removed warning when running on big-endian hardware, since this
304 support has been present for quite a while with no bug reports.
305
srs5694ab4b0432010-09-25 20:39:52 -04003060.6.11 (9/25/2010):
307-------------------
308
309- Added -F (--first-aligned-in-largest) option to sgdisk. This option is a
310 variant on -f (--first-in-largest); it returns the number of the first
311 sector that will be used in the largest free area, given the current
312 alignment value (set via -a/--set-alignment).
srs5694659eaf12010-08-23 11:26:12 -0400313
srs56945a081752010-09-24 20:39:41 -0400314- Streamlined GUID code entry in gdisk; it no longer offers the option
315 to enter GUIDs in separate segments.
srs569482f3f0b2010-09-22 10:50:24 -0400316
srs5694327129e2010-09-22 01:07:31 -0400317- The -t option to sgdisk now accepts GUID values as well as the
318 sgdisk/gdisk-specific two-byte hex codes.
319
320- Added check that the protective 0xEE MBR partition begins on sector 1
321 to the verify function. If it doesn't, a warning message is displayed,
322 but it doesn't count as an error.
323
324- Added check for overlapping MBR partitions to verify function (gdisk "v"
325 function on all menus; sgdisk -v/--verify function). Also warns about
326 multiple MBR 0xEE partitions (causes problems in some OSes).
327
328- Added check to GPT-to-MBR and hybrid MBR creation options to prevent
329 creation of disks with duplicate partitions. When told to create a disk
330 with duplicates, sgdisk now aborts with the error message "Problem
331 creating MBR!" When attempting to create a hybrid MBR with duplicates,
332 gdisk silently drops duplicate partitions, leaving fewer than requested.
333 Creating duplicates should not be possible in sgdisk when converting to
334 MBR form.
srs5694659eaf12010-08-23 11:26:12 -0400335
srs56949ddc14b2010-08-22 22:44:42 -04003360.6.10 (8/22/2010):
337-------------------
srs5694f9312b02010-07-06 15:39:51 -0400338
srs56949ddc14b2010-08-22 22:44:42 -0400339- Enable disk-wipe (-z and -Z) and verification (-v) operations in
340 sgdisk even if the disk is badly damaged.
341
342- Added support for setting attributes in sgdisk (-A/--attributes option)
343 in sgdisk.
344
345- Fixed bug that created backwards attribute field values (bit #2 was
346 entered as bit #61, etc.).
347
348- Fixed bug that caused creation of hybrid MBR to wipe out the MBR's boot
349 code.
350
351- Added ability to save partition table from one device to another (gdisk:
352 'u' on experts' menu; sgdisk: -R or --replicate option).
353
354- Fixed inaccessible -C/--recompute-chs option in sgdisk.
srs5694f9312b02010-07-06 15:39:51 -0400355
srs569461768bc2010-07-04 01:54:00 -04003560.6.9 (7/4/2010):
357------------------
358
359- Fixed minor error in sgdisk man page (--largest-new option requires
360 a partition number).
361
362- Fixed major bug in hybrid MBR creation, which caused incorrect
363 protective partition end point settings and occasionally other
364 problems.
365
srs56940e197dc2010-05-23 13:06:10 -04003660.6.8 (5/23/2010):
367------------------
368
srs569461768bc2010-07-04 01:54:00 -0400369- Added tests to see if the file to be opened is a directory, character
370 device, FIFO, or socket; program now terminates if any of these
371 conditions is met. (Linux/FreeBSD/OS X only.) Thanks to Justin Maggard
372 for this patch.
srs56940e197dc2010-05-23 13:06:10 -0400373
374- Added 'f' option on gdisk's experts' menu (-G/--randomize-guids in
375 sgdisk). This option randomizes the disk's GUID and all partitions'
376 GUIDs. Intended for use after cloning a disk with a utility that copies
377 the GUIDs intact (such as a raw dd copy) if you want each disk copy to
378 have its own set of GUIDs.
379
380- Added -u/--partition-guid and -U/--disk-guid options to sgdisk. These are
381 the equivalents of the 'g' and 'c' options, respectively, on the gdisk
382 experts' menu: They enable adjusting an individual partition's GUID or a
383 disk's GUID. The GUID may be either a fully specified GUID value or 'R'
384 or 'r' to set a random GUID value.
385
386- Fixed compile problem for FreeBSD (its math library lacks a log2()
387 function). Also created separate Makefile.freebsd with a couple of
388 FreeBSD-specific options.
389
390- Added -N (--largest-new) command to sgdisk. This command creates a single
391 partition that fills the largest single unpartitioned block of space on
392 the disk.
393
394- Fixed sgdisk man page error: the --change-name option was incorrectly
395 listed as --change.
396
397- Added 'h' option to gdisk experts' menu (-C or --recompute-chs in sgdisk)
398 to recompute all protective/hybrid MBR CHS values. This option is
399 intended to work around a bug in at least one BIOS that prevents the
400 computer from booting when the GPT-mandated (but technically illegal)
401 0xFFFFFF CHS value is used as the end point for a protective MBR. The
402 recomputed values will be legal (e.g., 0xFEFFFF instead of 0xFFFFFF),
403 but incorrect in GPT terms, and will therefore enable at least one
404 BIOS to boot with a GPT disk. See http://www.rodsbooks.com/gdisk/bios.html
405 for all I know about BIOS/GPT incompatibilities.
406
4070.6.7 (5/1/2010):
408-----------------
409
410- Undid earlier change, with version 0.6.4, that wiped the MBR boot loader
411 when doing MBR-to-GPT conversions. I've now become skeptical that MBR
412 boot loaders were causing any real problems on GPT disks, so I'm going
413 back to the philosophy of leaving as much alone as possible.
414
415- Fixed bug that caused incorrect reporting of free space on 0-size disks
416 (e.g., files of 0 length passed as disk images).
417
418- Fixed bug that caused segfault on some invalid disks
419
420- Fixed bug that caused incorrect partition numbers to be displayed for
421 some verify problems.
422
423
4240.6.6 (3/21/2010):
425-----------------
426
427- Added support for the "no block IO protocol" (referred to as "hide from
428 EFI" in GPT fdisk) and "legacy BIOS bootable" attribute bits. See Table
429 19 of the UEFI 2.3 specification (p. 153) for details.
430
431- Changed the sequence in which GPT data structures are written to disk;
432 backups are now written first, followed by the main structures. This is
433 as recommended in the UEFI 2.3 specification, since it's safer in the
434 extremely unlikely event that a RAID array's size is increased and
435 there's a power outage mid-write. (If the main structures are written
436 first in this case, they'll point to data that's not yet been written;
437 but by writing the backups first, the old main structures will still
438 point to the valid old backup structures.)
439
440- Protective MBRs now have disk signatures of 0x00000000, to better
441 conform with GPT as described in the UEFI 2.3 specification.
442
443- Added alignment information to the summary data produced by the
444 'p' main-menu option in gdisk or the -p option to sgdisk.
445
446- More alignment changes: GPT fdisk now attempts to determine the alignment
447 value based on alignment of current partitions, if any are defined. If no
448 partitions are defined, a default value of 2048 is set. If the computed
449 value is less than 8 on drives over about 596GiB, it's reset to 8, since
450 the drive might be a WD Advanced Format unit that requires an 8-sector
451 (or larger power-of-2) alignment value for best performance. The
452 2048-sector default provides better alignment in some RAID
453 configurations.
454
455- Changed behavior when a backup restore fails. Previously, GPT fdisk
456 would create a fresh blank set of partitions. Now it does so only
457 if the failure occurs when interpreting the backup's contents; if the
458 user typed the wrong filename, the in-memory data structures aren't
459 touched.
460
461
4620.6.5 (3/7/2010):
463-----------------
464
465- Added tests to verify ('v') function and to pre-save checks to look for
466 partitions that end before they begin or that are too big for their
467 disks.
468
469- Fixed a bug that could cause spurious data to appear in a grown partition
470 table.
471
472- Added ability to convert some or all partitions to logical partitions in
473 GPT-to-MBR conversion. This feature is limited by the fact that at least
474 one free sector must exist immediately prior to each logical partition,
475 so it won't do much good if partitions are crammed together. It should be
476 possible to convert back to MBR any disk that started that way, provided
477 no partitions were added or resized when the disk was in GPT form; and
478 disks that were partitioned with Apple's Disk Utility or other tools that
479 insert unpartitioned space should also be convertible. CAUTION: THE
480 LOGICAL PARTITION CREATION FEATURE DOESN'T TRY TO ALIGN PARTITIONS OR
481 PARTITION HEADER DATA TO CYLINDER BOUNDARIES! It's conceivable that some
482 older OSes or utilities will object to these disks, although Linux, OS X,
483 Windows Vista, and Windows 7 all seem happy with them.
484
485- Fixed bug that caused creation of 0-length file if an incorrect device
486 filename was typed.
487
488- The gdisk program now prompts for a device filename if it's called with
489 no options. This enables gdisk to do something useful if it's launched by
490 double-clicking its icon in a GUI environment.
491
492- Added workaround for bug in some versions of MinGW that caused the
493 program to garble input sector numbers.
494
495- The Windows version now works on disks with over-512-byte sectors.
496 Tested on a magneto-optical (MO) drive with 2048-byte sectors.
497
498- Added -D (--display-alignment) option to sgdisk, to display sector
499 alignment value (by default, 1 for sub-800GiB disks and 8 for disks
500 over that size).
501
502- Fixed bug in computation of CHS geometries for protective MBR. This is
503 non-critical, since most modern utilities ignore the CHS geometries.
504 Concerned users can use the 'n' option on the experts' menu to build new
505 protective MBRs with the new algorithm, if desired. (Note that GNU
506 Parted, at least, gets this wrong, too.)
507
508- Fixed memory-allocation bug when reading GPT disks with partition tables
509 with over 128 entries; could cause program to crash on startup.
510
5110.6.4-2 (2/20/2010):
512--------------------
513
514Note: Neither of the following changes affects actual program code, so I've
515left the version number in the program at 0.6.4.
516
517- Altered Makefile to pass user's compiler and linker environment
518 variables through.
519
520- Added #include to gpttext.cc to enable it to compile on the latest
521 GCC versions (it was failing on at least some 4.4.x compilers).
522
5230.6.4 (2/19/2010):
524-------------------
525
526- Added -m (--gpttombr) option to sgdisk, enabling conversion of GPT
527 disks to MBR format, with a limit of four partitions total, and of course
528 without overcoming the 2TiB limit.
529
530- Added -h (--hybrid) option to sgdisk, enabling creation of hybrid
531 MBRs. Fewer options are available in sgdisk than in gdisk, though,
532 in order to keep the user interface manageable.
533
534- Fixed off-by-one bug in specification of partition when using the
535 -T (--transform-bsd) option in sgdisk.
536
537- Changed the code to create a new MBR unique disk signature whenever a new
538 protective MBR is generated (when doing an MBR-to-GPT conversion, when
539 using the 'n' option on the experts' menu, or when using the 'o' option
540 on the main menu, for example). Previous versions attempted to preserve
541 the existing MBR disk signature in most cases, but this resulted in
542 values of 0x00000000 whenever an empty disk was partitioned, and often in
543 other cases, too. Better to risk changing this value too often than to
544 leave multiple disks with 0x00000000 values, I think.
545
546- Added transpose ('t' on experts' menu in gdisk; or -r or --transpose in
547 sgdisk) command to enable fine-tuning partition order without doing a
548 full sort.
549
550- Added code to clear the MBR boot loader when doing an MBR-to-GPT
551 conversion. (This was already done in full-disk BSD-to-GPT conversions.)
552 This is done because I've seen a few problem reports that make me think
553 some MBR boot loaders freak out and hang the system when they encounter
554 GPT disks, and/or they attempt to load a second-stage boot loader stored
555 in what is now GPT territory, causing a system hang. Since MBR boot
556 loaders don't work on GPT disks anyhow (even GRUB needs to be
557 reinstalled), this new wiping behavior shouldn't cause any problems, and
558 may prevent a few.
559
560- Fixed bug in Windows version that prevented saving backup files.
561
562- Fixed bug that caused second and subsequent partition numbers in
563 prompts in hybrid MBR conversion procedure to be displayed in
564 hexadecimal.
565
566- Fixed very obscure potential bug in hybrid MBR/GPT synchronization when
567 deleting partitions; code wasn't matching partition lengths correctly,
568 which would only affect partitions that start at the same point but have
569 different lengths in MBR vs. GPT.
570
571- Fixed bug in the -E option to sgdisk; it was actually returning the
572 last free sector, not the last free sector in the largest free block.
573
574- Fixed bug in -t option to sgdisk; it was corrupting partition type
575 codes.
576
577- Fixed minor alignment bug in partition summary list ('p' from any menu)
578 when partition sizes are between 1000 and 1024 units.
579
580- Backup restore function ('l' on recovery & transformation menu) now
581 accepts both backups generated by GPT fdisk and backups created by a
582 direct copy (via dd, etc.) of the MBR, main GPT header, and main GPT
583 partition table, in that order. ("dd if=/dev/sda of=backup.gpt bs=512
584 count=34" will do this on Linux for a disk with a typical-sized GPT table
585 of 128 entries.)
586
5870.6.3 (2/3/2010):
588------------------
589
590- Fixed serious data corruption bug on big-endian (PowerPC and similar)
591 systems.
592
593- Changed several GPT fdisk Solaris type codes to correct a duplicate
594
595- Corrected error in GPT fdisk type codes for NetBSD LFS and NetBSD RAID;
596 they were identical, but I've now changed NetBSD RAID to A906, which
597 is unique.
598
599- Added GUID for IBM General Parallel File System (GPFS) partition type
600 code. Somewhat arbitrarily set it to use the 7501 number (MBR code 0x75
601 is used by IBM PC/IX, so it's at least the right company, by my loose
602 numbering rules....).
603
604- Improved GUID generation. Prior versions generated completely random
605 numbers for GUIDs. This works, but is technically a violation of the
606 spec. Unix versions now employ libuuid to generate GUIDs in a more
607 correct way. The Windows version still generates random numbers, though.
608
609- Turned PartTypes class into a derived class of GUIDData, and renamed
610 it to PartType.
611
612- Created new GUIDData class, to replace the original GUIDData struct.
613
6140.6.2 (1/29/2010):
615------------------
616
617- The change-type ('t' on main menu) option now changes the partition's
618 name *IF* the current name is the generic one for the partition type.
619 If the current name is not the generic name, it is NOT changed.
620
621- Fixed bug that caused new protective MBR to not be created when the
622 MBR was invalid and the GPT was damaged and the user opts to try to
623 use the GPT data.
624
625- Enabled default partition type code of 0700 when creating partitions
626 or changing their type codes. (Type 0700, Linux/Windows data, is set if
627 the user hits the Enter key alone.)
628
629- Fixed bug in sort ('s' on main menu) option that caused partition
630 numbers to begin at more than 1 if the original partition list had
631 too many empty partitions before the last one defined.
632
633- Improved code to determine which partition table to load in case of
634 CRC mismatches between the partition tables and the stored CRC values
635 in the headers.
636
637- Compiles using MinGW (http://www.mingw.org) to create a Windows binary.
638
639- Moved all disk I/O functions to the new DiskIO class. This helps with the
640 Windows port; it uses diskio-windows.cc for Windows-specific code,
641 diskio-unix.cc for the Linux, FreeBSD, and OS X code, and diskio.cc for
642 cross-platform disk I/O code.
643
644- Changed BSD disklabel detection code to be more correct (I think).
645 This change has no effect on my test disks, but I hope it'll work
646 better on disks with sector sizes other than 512 or 2048.
647
6480.6.1 (1/20/2010):
649------------------
650
651- Fixed bug that returned incorrect disk size on 32-bit versions of
652 FreeBSD.
653
654- Fixed bug that prevented FreeBSD version from working on disk image
655 files.
656
657- Fixed bug that caused BSD disklabel conversion to fail.
658
6590.6.0 (1/15/2010):
660------------------
661
662- Fixed bug that caused the convert to MBR function to fail.
663
664- Added support for disks with other than 512-byte sectors.
665
666- Created embryonic sgdisk program.
667
668- Fixed bug that caused relative sector numbers entered by users (e.g,
669 "+128M") to be misinterpreted as from the start of the range rather than
670 from the default value.
671
6720.5.3 (1/4/2010):
673-----------------
674
675- Fixed bug in display of GUIDs when compiled with some versions of GCC.
676
677- Eliminated warnings caused by additional checks in latest versions of
678 GCC. These warnings were harmless, but to eliminate them I've added
679 more error checking on disk I/O.
680
681- Eliminated unnecessary warnings about potential data loss if the program
682 was launched with the -l option or if writes aren't possible.
683
684- Added code to set the partition boundary value based on the physical
685 sector size. (FindAlignment() function.) This function, however, works
686 only on Linux, and then only if the BLKPBSZGET ioctl is defined. This
687 ioctl is new in kernel 2.6.32 or thereabouts.
688
6890.5.2 (12/31/2009):
690-------------------
691
692- Modified partition creation function to begin partitions on 8-sector
693 boundaries by default. This improves performance on the new Western
694 Digital Advanced Format drives. The new 'd' and 'l' options on the
695 experts' menu display and change, respectively, the boundary size.
696
697- Tweaked code to produce fewer warnings on the latest versions of
698 GCC.
699
7000.5.1:
701------
702
703- Made some minor edits to the man page.
704
705- Incorporated RPM .spec file changes contributed by Scott Collier
706 (boodle11@gmail.com).
707
708- Changed method of locating and loading backup GPT data, to use the
709 main header's pointer, if it's valid, rather than seeking to the
710 end of the disk.
711
712- Added 'e' option (relocate backup GPT data structures) to the experts'
713 menu.
714
715- Fixed bug that prevented recovery of partitions in case of partially
716 damaged GPT data (bad main and good backup or bad backup and good
717 main header, for instance).
718
7190.5.0:
720------
721
722- Added GPT-to-MBR conversion function. It's very limited, but potentially
723 useful in some cases.
724
725- Fixed bug that caused incorrect file sizes to be reported on 32-bit
726 Linux, thus causing problems when editing partition tables in disk images
727 or when loading GPT backup files.
728
729- Fixed bug that caused bogus CRC error reports when loading backup GPT
730 data.
731
732- Reorganized menus. There are now three: the main menu, the experts' menu,
733 and the recovery & transformation menu. The last of these has most of the
734 items that had been on the earlier versions' experts' menu.
735
736- Added ability to re-load the MBR and generate a fresh GPT from it. This
737 is normally identical to quitting and re-running the program, but it
738 could be handy if, say, the GPT partitions on a hybrid configuration are
739 badly messed up; this will enable using the hybridized partitions as the
740 starting point for a new GPT setup.
741
742- The program now generates CHS values for hybrid and GPT-to-MBR conversion
743 MBRs. For the moment, the assumption is the maximum number of heads and
744 sectors per track (255 and 63, respectively), although the bulk of the
745 code supports other values -- it'd just be awkward to enter the data in
746 the user interface.
747
748- Fixed minor display bug that caused number of sectors on the disk to be
749 shown as 0 on large disks when running 32-bit binaries.
750
751- Reverted 0.4.2's zap (destroy GPT) changes, since I don't want to wipe
752 out a valid MBR if the user created that MBR over an older GPT without
753 first properly wiping out the GPT, and the user now wants to wipe out
754 the GPT.
755
756- Reformatted and edited the man page. Aside from edits related to the
757 preceding program changes, I've altered the markup slightly and trimmed
758 much of the more tutorial information from the man page to better
759 conform to typical terse man page style.
760
7610.4.2:
762------
763
764- Code cleanup.
765
766- Fixed very small formatting bug in display of hex code when a match isn't
767 found when converting from an MBR/gdisk hex code to a GUID type code.
768
769- Added the ability to work on disk image files (raw files for virtual
770 machines, backup images, etc.). The program assumes that all such disk
771 image files have 512-byte sectors.
772
773- Added verification prompt to 'o' main-menu option to avoid accidental
774 erasures of all partitions.
775
776- The "destroy GPT data structures" option ('z' on the experts' menu) now
777 also destroys all EFI GPT (0xEE) partitions in the MBR.
778
779- Added an extra warning to the "destroy GPT data structures" option if an APM
780 or BSD disklabel was detected on the disk.
781
782- Added a buffer flush after destroying GPT data structures, to get the OS
783 to read the new (empty or MBR-only) partition table.
784
785- Fixed bug that allowed entry of nonexistent partition numbers when creating
786 a hybrid MBR.
787
7880.4.1:
789------
790
791- Code cleanup/re-organization
792
793- Partition creation function ('n' on main menu) now uses the start of the
794 largest available chunk of free space rather than the first available
795 sector as the default starting sector number. This should enable easier
796 partition creation if there are small bits of free space on the disk.
797
798- You can now specify the end point of a partition by using a minus sign,
799 in which case the end point is the default value minus the specified
800 size. For instance, "-200M" creates a partition that ends 200MiB before
801 the default end point.
802
803- You can now specify the start point of a partition by using a plus or
804 minus sign, in which case the start point is the specified distance from
805 the start (+) or end (-) of free space. This is exactly the same as the
806 new rules for entry of the end point, except that the default value is
807 set differently.
808
809- Deleting a partition now checks for a matching hybrid MBR partition, and
810 if one is found, it's deleted. Any empty space that then surrounds the
811 0xEE (EFI GPT) MBR partitions is then added to the nearby 0xEE partition.
812 If no non-0xEE partitions are left, a fresh protective MBR is generated.
813
814- Added hybrid MBR consistency check to the verify ('v') option and to
815 pre-write checks. If non-0xEE/non-0x00 MBR partitions without
816 corresponding GPT partitions are found, the user is warned. This finding
817 does NOT prevent writing the partition table, though.
818
819- Added non-destructive write test when opening the device file, in order
820 to detect the problem with FreeBSD being unable to write to disks with
821 mounted partitions (or other potential problems).
822
8230.4.0:
824------
825
826- Added support for BSD disklabels. The program can now convert disks that
827 use "raw" disklabels, with the caveat that the first partition will
828 almost certainly need to be deleted because it'll overlap the main GPT
829 header; and convert disklabels contained within a GPT (or a former MBR,
830 converted to GPT) partition. In the latter case, the 'b' main menu option
831 is used.
832
833- Added support for compiling on FreeBSD.
834
835- Fixed bug that could cause crashes or incomplete sorts when sorting
836 the partition table.
837
838- New partitions, including converted ones, now take on the name of the
839 partition type as a default name.
840
841- Reorganized some code; created a separate C++ class for GPT partitions
842 (GPTPart), which replaced a struct and enabled moving code from the
843 bloated GPTData class into GPTPart.
844
845- Fixed a bug that produced spurious warnings about unknown sector sizes
846 when loading a backup file.
847
8480.3.5:
849------
850
851Note: This version was not officially publicly released; I wanted to test
852the big-endian support while developing 0.4.0.
853
854- Tweaked the disk type identification code to warn users to re-sync their
855 hybrid MBRs when one is detected.
856
857- Tweaked MBR-reading code to ignore 0xEE (EFI GPT) partitions. This will
858 only have an effect on a poorly partitioned MBR disk that contains an
859 inappropriate EFI GPT partition, or when attempting to recover a
860 corrupted disk by using the hybrid MBR for data recovery.
861
862- Added big-endian (PowerPC, etc.) support!
863
864- Added code to identify and warn of the presence of an Apple Partition
865 Map (APM) on the disk.
866
867- Enabled MBR conversion code to handle multiple logical partitions.
868
8690.3.4:
870------
871
872- Fixed bug that enabled (possibly accidental) entry of MBR type codes of
873 0x00 in GPTData::MakeHybrid(). The fix also enables entry of default
874 type code by pressing the Enter key when prompted. Applied a similar
875 fix to the entry of the type code for the second protective partition,
876 if one is used.
877
878- Fixed a typo: "sectors" was spelled "sectprs" in one spot!
879
880- Fixed bug that caused default entry for end sector to be refused if an
881 initial value using a plus sign (e.g., "+20G") was also refused.
882
8830.3.3:
884------
885
886- Gave users control over the way MBR partitions are assigned to slots in a
887 hybrid MBR setup; the original method (putting the 0xEE partition after
888 the real partitions) works well for non-boot disks, but both GRUB and
889 GRUB2 become confused by this type of setup, so it needs changing.
890
891- Changed "blocks" to "sectors" in GPT and MBR table displays.
892
893- Added "Boot" column to MBR table display; shows an asterisk (*) when the
894 partition's status is bootable.
895
8960.3.2:
897------
898
899- Changed __DARWIN_UNIX03 to __APPLE__ as code to enable MacOS X support.
900
901- Added the ability to create a hybrid MBR ('h' on experts' menu). This was
902 motivated by my discovery that Windows 7 remains brain-dead when it comes
903 to the ability to boot from a GPT disk, at least on BIOS-based machines.
904
905- Added 'z' option to experts' menu, to destroy GPT data structures and
906 exit. The intent is to use this feature to enable subsequent partitioning
907 of the disk using fdisk or other GPT-unaware tools. (GNU Parted will wipe
908 the GPT data structures itself when you create a new MBR ["msdos
909 disklabel," in Parted parlance], so using Parted is another option.)
910
911- Slightly altered the effect of the 'o' command on the main menu. It now
912 blanks out the protective MBR, as well as the GPT data.
913
9140.3.1:
915------
916
917- Added Mac OS X support, provided as a patch by David Hubbard
918 (david.c.hubbard@gmail.com).
919
920- Fixed bug in disksize() function on Mac OS. (Possibly dependent on the
921 kernel and/or GCC version.) The disk size, of type uint64_t, was not
922 being passed correctly, so I reorganized the function to return it as
923 the function's return value rather than as a parameter. This seems to
924 work OK on my Mac OS test system and on both 32- and 64-bit Linux
925 systems.
926
927- Fixed off-by-one bug in GPTData::FindLastAvailable().
928
929- Fixed bug that caused display of options after a disk-write error.
930
931- Fixed several incorrect MacOS X partition type GUIDs, thanks to Yves
932 Blusseau (1otnwmz02@sneakemail.com).
933
9340.3.0:
935------
936
937- Changed version number to 0.3.0, reflecting the fact that I've received
938 no significant bug reports and so am elevating the program to "beta"
939 status. This change also entailed altering the warning the program
940 displays when saving partition table changes.
941
942- Fixed minor bug in CHS geometry of the protective MBR's type EE partition
943 (was producing 0x000200 as the start value, but should be 0x000100).
944 Should be a non-critical bug since the protective MBR partition
945 definition is only there to keep MBR-only disk utilities from messing
946 with the disk.
947
948- Added ability to enter GUIDs as single massive strings rather than in
949 chunks.
950
9510.2.2:
952------
953
954- Added #include directives required to compile the program using GCC
955 4.4.0.
956
9570.2.1:
958------
959
960- Fixed partition numbering problem in reports of partition overlaps in
961 verification function.
962
963- Fixed 1-sector partition size problem when creating new partitions
964 (partitions were 1 sector too big when using the +size option).
965
966- Changed BytesToSI() to display values in bytes without decimal points
967 (e.g., "512 bytes" rather than "512.0 bytes").
968
969- Added GPTData class member functions to retrieve GPT data structure
970 locations on disk; used in my internal-use-only GPT-wiping program.
971
972- Eliminated the "a reboot is recommended" notice after writing the
973 partition table.
974
975- Added notice after sorting the partition table to the effect that
976 editing /etc/fstab and/or the boot loader files may be required.
977
978- Fixed bug in MBR-reading function that caused 0x0f (Win95 LBA) and 0x85
979 (Linux extended) extended partitions to not be read.
980
981- Fixed bug in GetLastSector() (in support.cc) that would have prevented
982 correct user entry of over-32-bit sector numbers on 32-bit systems.
983
984- Made some changes/corrections to the partition type list in
985 parttypes.cc. Most of these were based on newly-discovered MBR type
986 codes for Apple (Mac OS X) filesystems.
987
988- General code cleanup (setting explicit casts, etc.)
989
9900.2.0:
991------
992
993- Initial semi-public release