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