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