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