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