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