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