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