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