11.0.9 (4/14/2022): 2------------------ 3 4- Removed stray debugging code that caused "partNum is {x}" to be printed 5 when changing a partition's name with sgdisk (-c/--change-name). 6 7- Added support for aligning partitions' end points, as well as their start 8 points. This support affects the default partition size when using 'n' in 9 gdisk; it affects the default partition size in cgdisk; and it's activated 10 by the new '-I' option in sgdisk. See the programs' respective man pages 11 for details. This feature is intended to help with LUKS2 encryption, which 12 reacts badly to partitions that are not sized as exact multiples of the 13 encryption block size. 14 15- Added check for too-small disks (most likely to be an issue when trying 16 to use a too-small disk image); program now aborts if this happens. 17 18- Added the ability to build sgdisk and cgdisk for Windows. 19 20- Added new type codes: 21 * FreeBSD nandfs (0xa506) 22 * Apple APFS Pre-Boot (0xaf0b) 23 * Apple APFS Recovery (0xaf0c) 24 * ChromeOS firmware (0x7f03) 25 * ChromeOS mini-OS (0x7f04) 26 * ChromeOS hibernate (0x7f05) 27 * U-Boot boot loader (0xb000) 28 * 27 (!) codes for Fuchsia (0xf100 to 0xf11a) 29 30- Fixed build problems with recent versions of ncurses. 31 32- Fixed bug that caused cgdisk to report incorrect partition attributes. 33 34- Consolidated Makefiles for Linux, FreeBSD, Solaris, macOS, and Windows 35 (32- and 64-bit). The old OS-specific Makefiles remain in case the new 36 consolidated Makefile has problems, but the old ones are deprecated. 37 (The Solaris support in the new Makefile is untested.) 38 391.0.8 (6/9/2021): 40----------------- 41 42- Fixed double byte swap operation on writes of partition name data on 43 big-endian systems; this is in addition to the double byte swap fix on 44 reading partition label data fixed in 1.0.7. (Thanks to Erik Larsson for 45 both fixes.) 46 47- Added feature to gdisk and sgdisk to enable swapping the byte order of 48 partition names, so as to correct disks already affected by the preceding 49 bug. This option is 'b' on the experts' menu in gdisk and 50 -b/--byte-swap-name in sgdisk. This seems advanced/obscure enough that I 51 don't want to clutter cgdisk's menu with this option, so I haven't added 52 it there. 53 54- Added type code for the Barebox boot loader (0xbb00; 55 4778ED65-BF42-45FA-9C5B-287A1DC4AAB1). 56 57- Trivial code cleanup. 58 591.0.7 (3/10/2021): 60------------------ 61 62- Fixed bug that caused spurious warnings about the partition table 63 header claiming an invalid size of partition entries when reading 64 some MBR disks. 65 66- Added ARM64 as an architecture for the Mac builds of gdisk and fixparts. 67 The official GPT fdisk binaries of these files for macOS are now 68 "universal" x86-64/ARM64 binaries, so they will run natively on the new M1 69 (ARM64) Macs. The sgdisk and cgdisk binaries, though, remain built only 70 for x86-64, because they rely on libraries that are not easily built in 71 "universal" form. 72 73- Fixed double byte swap operation on partition label data on big-endian 74 CPUs. This resulted in partition names becoming gibberish on such CPUs. 75 76- Added three new type codes: 77 - 0x0701 - Microsoft Storage Replica 78 - 0x0702 - ArcaOS Type 1 79 - 0x8401 - Storage Performance Development Kit (SPDK) block device 80 811.0.6 (1/13/2021): 82------------------ 83 84- Fixed bug that could cause segfault if GPT header claimed partition 85 entries are oversized. See: 86 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0256 87 88- Fixed bug that could cause a crash if a badly-formatted MBR disk was 89 read. See: 90 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-0308 91 92- Renamed the partition type "Freedesktop $BOOT" to "XBOOTLDR partition". 93 94- Added several more Freedesktop partition table type codes (0x8312 through 95 0x831C). 96 97- Fixed type code definition in diskio-unix.cc that prevented 32-bit builds 98 from correctly handling disks over 4 TiB in size. 99 100- Minor tweaks to get the software to compile on FreeBSD; that seems to have 101 fallen into disrepair. 102 1031.0.5 (2/17/2020): 104------------------ 105 106- Fixed typos and minor formatting issues in man pages 107 108- Changed number of columns in type code output ("sgdisk -L" and equivalents 109 in gdisk and cgdisk) from 3 to 2, since some descriptions are long enough 110 that they're ambiguous with three columns. 111 112- Makefile change: Add $(LDLIBS) support to enable clean static builds (for 113 libintl). 114 115- You can now put the 0xEE partition last in a hybrid MBR using sgdisk. 116 (Previously, this was possible with gdisk but not with sgdisk.) See the 117 sgdisk man page for details. 118 119- Added numerous type codes for Container Linux, Veracrypt, and 120 Freedesktop.org's Discoverable Partitions Specification 121 122- Partition type name searches are now case-insensitive. 123 124- It's now possible to quit out of partition type name searches by typing 125 "q". 126 127- When changing a partition type code, the default is now the current 128 type code, not a platform-specific type code. 129 130- The UEFI GPT fdisk project 131 (https://sourceforge.net/projects/uefigptfdisk/) hasn't been updated since 132 2016, and is now broken; binaries don't compile with modern GCC 133 toolchains, and even when dropping back to Ubuntu 14.04, which worked for 134 GPT fdisk 1.0.4, the resulting binary hangs on launch. Therefore, I'm 135 dropping support for the EFI build of gdisk, at least unless and until 136 UEFI GPT fdisk is fixed. 137 138- Apple no longer supports building i386 or "fat" binaries in XCode (or if 139 they do, they're making it hard), so I've removed that support. GPT fdisk 140 macOS binaries are now x86-64 only. Similarly, building now seems to 141 require macOS 10.9 or later, so that's now the minimum macOS version. I've 142 also re-built my Mac build environment and tweaked Makefile.mac 143 appropriately. 144 1451.0.4 (7/5/2018): 146----------------- 147 148- Added some explicit copy constructors and made some other tweaks to avoid 149 compiler warnings. 150 151- The macOS binary for sgdisk is now a pure 64-bit build; I'm no longer 152 supporting 32-bit builds of sgdisk. The gdisk and cgdisk binaries remain 153 "fat" 32-/64-bit builds. The reason for dropping the 32-bit support from 154 sgdisk is that I've re-built my macOS development system, and I had 155 trouble building a "fat" binary with the fresh install of the popt 156 libraries upon which sgdisk relies. 32-bit support for the other binaries 157 is now officially deprecated, too. 158 159- Added search feature to partition type list functions ("L" on main menu of 160 gdisk and "L" when entered in response to the "Hex code or GUID" prompt in 161 gdisk and sgdisk). This feature filters the partition type list to those 162 which include the search term in their GPT fdisk descriptions. For 163 instance, typing "Linux" shows only partitions with "Linux" in their 164 descriptions. Note that the search/filter is case-sensitive. If <Enter> is 165 pressed, no filter is applied. 166 167- Change to Makefile.mac to use standard libncurses rather than a 3rd-party 168 version; should help with cgdisk compatibility. 169 170- Minor bug fix in alignment of internal data structures. 171 172- Minor bug fix in handling of damaged disks. Also, GPT fdisk now reports 173 more information on what data structures are damaged when a damaged disk 174 is detected. 175 176- Added type code for Apple APFS (7C3457EF-0000-11AA-AA11-00306543ECAC, 177 0xaf0a). 178 179- Added type code for Atari TOS basic data (0xa200, 180 734E5AFE-F61A-11E6-BC64-92361F002671). 181 182- Added type codes for Linux dm-crypt (0x8308, 183 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7) and LUKS (0x8309, 184 CA7D7CCB-63ED-4C53-861C-1742536059CC) partitions. 185 186- Added 18 Ceph partition type codes. 187 188- Added 52 (yes, 52!) Android partition type codes. 189 190- Changed "Creating new GPT entries" message to read "Creating new 191 GPT entries in memory" because the latter is clearer, particularly when 192 using sgdisk with a non-destructive option, like "-p". 193 1941.0.3 (7/27/2017): 195------------------ 196 197- Fixed a major bug that caused invalid partition tables to be generated 198 when creating a new partition table (that is, partitioning a blank disk or 199 converting from MBR). 200 2011.0.2 (7/26/2017): 202------------------ 203 204- On Linux, the p/-p/--print command now shows the disk's model name, as 205 reported in /sys/block/sda/device/model (or equivalent filenames for other 206 disks). This feature does not yet work on other platforms, on which the 207 model name line is omitted from the output. This line is also not shown 208 when accessing disk image files, even on Linux. 209 210- GPT fdisk can now report both the physical and logical sector sizes of 211 disks, but only on 2.6.32 and later Linux kernels. The verify feature now 212 uses the larger of the set alignment and physical/logical block sizes for 213 testing alignment, and setting alignment to something other than an exact 214 multiple of the ratio of the physical to logical block size results in a 215 warning. 216 217- Addition of new verification checks, mostly (but not exclusively) related 218 to the new j/-j/--move-main-table option. 219 220- Added new option: 'j' on the experts' menu in gdisk; 221 '-j/--move-main-table={sector}' in sgdisk. This option enables relocating 222 the main partition table from sector 2 (the default location) to somewhere 223 else on the disk. The main reason I know of to do this is if the disk is 224 to be used with a system-on-chip (SoC) computer, some of which require the 225 boot loader to be located at sector 2. If you pass this option the default 226 value of 2, it has the effect of reducing the padding placed between the 227 main partition table and the first usable sector value created by the 228 Linux fdisk tool. 229 230- Updated man pages with new recommendations for ESP and BIOS Boot Partition 231 sizes. 232 233- Added four type codes (AF06 through AF09) for Apple SoftRAID (Status, 234 Scratch, Volume, and Cache). 235 236- Added two type codes for the Open Network Install Environment (ONIE): 237 0xe100 (7412F7D5-A156-4B13-81DC-867174929325) and 0xe101 238 (D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149). 239 240- Added thirteen type codes for Android partitions (0xa000 through 241 0xa00c). 242 243- Added type code for QNX6 (aka QNX Power-Safe) filesystem: 0xb300, for 244 CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1. 245 246- Removed stray debug message ("REALLY setting name!") from sgdisk, 247 when setting new name via -c option. 248 2491.0.1 (10/18/2015): 250------------------- 251 252- Created uninstall-fixparts and uninstall-gdisk scripts for OS X. As the 253 names imply, these scripts remove the files installed by the fixparts and 254 gdisk packages, respectively. 255 256- Fixed bug that caused -N/--largest-new option to sgdisk to fail when 257 fed a "0" option. 258 259- Fixed bug that caused input glitches in EFI version of gdisk. 260 261- Fixed bug that caused sgdisk to not return an appropriate error code 262 when it encountered a write error when saving changes. 263 264- Fixed bug that caused cgdisk's "Info" display to under-report the 265 partition's size by one sector. 266 267- OS X 10.11 includes new security features that prevent GPT fdisk from 268 working unless these features are disabled. To do so, you must boot to a 269 Recovery HD system, open a Terminal, type "csrutil disable", and reboot 270 into the normal system. You can re-enable the security features by 271 repeating the process, but specify "enable" rather than "disable". I've 272 added a message pointing users to a Web page explaining how to disable 273 this feature when gdisk detects that it can't write to the disk under OS 274 X. If you know of a way around this (including code changes to gdisk), 275 please contact me. 276 277- I've updated the OS X installation location from the Unix-standard 278 /usr/sbin (and related locations for documentation) to /usr/local/bin 279 (and related locations for documentation). This is Just Plain Crazy from 280 a Unix point of view, but Apple has to be Apple and do things just a 281 little bit differently. 282 283- I've updated my OS X environment to OS X 10.11 and LLVM 7.0.0. This has 284 also meant installing fresh versions of popt and ncurses from MacPorts, 285 which may require upgrading popt to get sgdisk working on some systems. 286 (gdisk, cgdisk, and fixparts should continue to work normally on all 287 systems.) The OS X binaries are now "fat" (32- and 64-bit) versions, 288 which should have no noticeable effect unless you have a Mac with broken 289 32-bit support, in which case the binaries will now work. 290 291- Changed the default name of 0xab00 partitions from "Apple boot" to 292 "Recovery HD", since the latter is the name that Apple gives these 293 partitions. Also, I discovered through painful experience that OS X 294 flakes out and won't boot if the name is something other than "Recovery 295 HD", so it really has to have the right name! 296 297- Changed the OpenBSD type codes (0xa600 and 0xa601): 0xa600 is now 298 824CC7A0-36A8-11E3-890A-952519AD3F61 (OpenBSD disklabel) and 0xa601 is 299 now gone. Previously, 0xa600 was 516E7CB4-6ECF-11D6-8FF8-00022D09712B, a 300 duplicate of the FreeBSD disklabel, and 0xa601 was 301 824CC7A0-36A8-11E3-890A-952519AD3F61. OpenBSD is now officially 302 supporting 824CC7A0-36A8-11E3-890A-952519AD3F61 as a disklabel type, 303 though. It's unclear what, if anything, OpenBSD will use for 304 non-disklabel type codes at the moment. 305 306- Added GUID 0311FC50-01CA-4725-AD77-9ADBB20ACE98 (0xbc00) for 307 Acronis Secure Zone backup partitions. 308 309- Fixed bug that caused random crashes on ppc64el systems (and perhaps 310 others). 311 312- Added GUID C91818F9-8025-47AF-89D2-F030D7000C2C (0x3900) for Plan 9. 313 314- Added GUID 69DAD710-2CE4-4E3C-B16C-21A1D49ABED3 (0x8307) for 32-bit ARM 315 Linux root (/) partition, as per the Freedesktop.org Discoverable 316 Partition Spec 317 (http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/). 318 319- Edited man pages to clarify that default alignment is to 1MiB boundaries; 320 this translates to 2048 sectors on disks with 512-byte sectors, but it 321 will be something else on disks with other sector sizes. 322 323- Changed behavior of -z/--zap and -Z/--zap-all options to sgdisk so that 324 if a subsequent command causes changes, they'll be written to disk. 325 Previously, doing something like "sgdisk --zap-all --clear /dev/sdd" 326 would wipe the disk but not create a partition table; to create a blank 327 table you'd need to do "sgdisk --zap-all --clear --mbrtogpt /dev/sdd", 328 which is a bit odd and counter-intuitive, to the point of arguably being 329 a bug. 330 3311.0.0 (3/16/2015): 332------------------ 333 334- I'm now building a binary package of gdisk_x64.efi, using the UEFI GPT 335 fdisk package. 336 337- Added partition type for OpenBSD data 338 (824CC7A0-36A8-11E3-890A-952519AD3F61/0xa601). Also mapped 0xa600 to the 339 FreeBSD disklabel type code (516E7CB4-6ECF-11D6-8FF8-00022D09712B). I'm 340 not sure that's 100% correct, but since I can't find references to an 341 OpenBSD disklabel GPT type code, it seems the best choice at the moment. 342 343- Added partition type for Windows Storage Spaces 344 (E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D/0x4202) 345 346- Added -O/--print-mbr option to sgdisk, enabling easier display of MBR 347 data structures without invoking gdisk. 348 349- Updated warning message: "EBR describes a logical partition" now reads 350 "EBR points to an EBR," which is more technically correct. 351 352- Altered warning displayed when run from Windows on non-GPT disk, because 353 Windows on UEFI-based systems is becoming more common. 354 355- Fixed spurious "1" return value in gdisk. 356 357- Small code changes to support compilation as EFI application with the 358 UEFI GPT fdisk library 359 (http://sourceforge.net/projects/uefigptfdisk/?source=directory) 360 361- Added new partition type codes for Ceph 362 (https://github.com/ceph/ceph/blob/9bcc42a3e6b08521694b5c0228b2c6ed7b3d312e/src/ceph-disk#L76-L81): 363 4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D/0xf800 (Ceph OSD), 364 4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D/0xf801 (Ceph dm-crypt OSD), 365 45B0969E-9B03-4F30-B4C6-B4B80CEFF106/0xf802 (Ceph journal), 366 45B0969E-9B03-4F30-B4C6-5EC00CEFF106/0xf803 (Ceph dm-crypt journal), 367 89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE/0xf804 (Ceph disk in creation), and 368 89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE/0xf805 (Ceph dm-crypt disk in 369 creation) 370 371- Added new partition type codes from 372 http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/: 373 44479540-F297-41B2-9AF7-D131D5F0458A/0x8303 (Linux / on x86), 374 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709/0x8304 (Linux / on x86-64), 375 B921B045-1DF0-41C3-AF44-4C6F280D3FAE/0x8305 (Linux / on 64-bit ARM), 376 3B8F8425-20E0-4F3B-907F-1A25A76F98E8/0x8306 (Linux /srv). 377 3780.8.10 (3/2/2014): 379------------------ 380 381- Added feature to sgdisk's -A/--attributes, -c/--change-name, 382 -t/--typecode, and -u/--partition-guid commands: If a -n/--new option 383 with "0" as the partition number precedes these options on the command 384 line, passin "0" as the partition number to the following options causes 385 them to use the newly-created partition. For instance, "sgdisk -n 386 0:0:+550M -t 0:EF00 /dev/sda" creates a new partition with a type code of 387 EF00. (Previous versions would ignore the "-t 0:EF00" option.) 388 389- Fixed bug that caused incorrect partition number to be displayed by 390 sgdisk in error messages when the user specified a non-existent partition 391 for inclusion in a hybrid MBR or conversion to a conventional MBR. 392 393- Fixed new (in 0.8.9) bug that caused a failure to create more than one 394 hybridized partition when creating a hybrid MBR. 395 396- Fixed bug that caused gdisk and sgdisk to create hybridized partitions 397 that ended at or above the 2^32 sector point with incorrect end values. 398 The behavior now varies between gdisk and sgdisk: gdisk now creates 399 hybrid partitions that begin below 2^32 sectors and that are smaller than 400 2^32 sectors, since this is technically legal; but gdisk displays a 401 warning, because some OSes (such as DOS, Windows XP, OS/2, and BeOS) 402 misbehave with such partitions. AFAIK, only Linux, FreeBSD, and Windows 7 403 work properly with such partitions. Because of this fact and because 404 sgdisk is a more automated tool, it's stricter in how it handles things: 405 It refuses to create a hybrid partition if the original ends at or above 406 the 2^32 sector mark. 407 4080.8.9 (2/17/2014): 409------------------ 410 411- Removed dependency on libicu for UTF-16 support. 412 413- Fixed spurious "0xEE partition doesn't start on sector 1" warning in 414 FixParts (and perhaps in other programs under some circumstances). 415 416- Added GPT regeneration command to GPT-destruction options ('z' in gdisk, 417 -z and -Z options to sgdisk). This is done to avoid wiping out data 418 mid-disk that might not be backup GPT data structures, which could 419 otherwise occur if a RAID array was resized in certain ways. 420 421- Added check for an oversized 0xEE protective partition. The program now 422 auto-repairs this condition on loading if the GPT data seem otherwise 423 valid. This is done because I've been receiving reports of some disks 424 (possibly from some OEM Windows 8 loads) that violate the GPT spec in 425 this way, and gdisk was reporting write errors when saving data. 426 427- If the GPT data seem to be damaged in some way or if the disk seems to 428 be a hybrid MBR and if the MBR partition(s) don't fit on the disk, the 429 verify (v) function now warns of this condition, and writing the disk if 430 it exists also displays a more specific error message about the problem. 431 432- Added new type codes (3000, 7412F7D5-A156-4B13-81DC-867174929325 and 433 3001, D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149) for Open Network Install 434 Environment (ONIE) boot and config partitions, respectively. 435 436- Added new type ccde (ED01, BFBFAFE7-A34F-448A-9A5B-6213EB736C22), for 437 Lenovo's ESP-like partition. 438 4390.8.8 (10/14/2013): 440------------------- 441 442- Fixed bug that could cause segfault when passing an invalid partition 443 number to sgdisk's -i/--info command. 444 445- Added new type code: 933AC7E1-2EB4-4F13-B844-0E14E2AEF915, or gdisk code 446 8302, for Linux /home partitions. This type code is used by recent 447 versions of systemd to permit /home to be auto-mounted; see 448 http://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html 449 for details. 450 451- Added new type code: 9E1A2D38-C612-4316-AA26-8B49521E5A8B, or gdisk code 452 4100, for PowerPC PReP (PowerPC reference platform) boot. 453 454- The number of partition type codes has grown large enough that it fills 455 an 80x24 display. I've therefore added a pause (with a prompt to hit 456 <Enter>) to display more items after showing 21 lines in gdisk or after 457 the screen has nearly filled with entries in cgdisk. There's no such 458 pause/prompt in sgdisk, though. 459 460- Fine-tuned verification ('v') check for 0xEE partition that doesn't begin 461 on sector 1: Previously, a disk with multiple 0xEE partitions would 462 always trigger this warning. Now, the warning occurs only if NONE of the 463 0xEE partitions begins on sector 1. 464 465- Fixed hybrid MBR creation on disks larger than 2TiB: Previously, if one 466 opted to create an extra partition to cover unused space following 467 hybridized partitions, gdisk would hang. 468 469- Added check for an active/bootable 0xEE protective partition to the 470 verify ('v') function. If found, this is not counted as an error, but 471 it is called out to the user, since it can cause some EFIs (such as 472 VirtualBox's EFI) to ignore the disk. 473 4740.8.7 (7/8/2013): 475----------------- 476 477- Modified Mac version so that it can work on /dev/rdisk* devices as well 478 as /dev/disk* devices. The result is that, when using the /dev/rdisk* 479 devices, the partition table can sometimes be re-read without removing 480 the disk or rebooting. 481 482- Added "-a" option to cgdisk to use a ">" symbol to the left of the 483 selected partition rather than ncurses highlighting. 484 485- Modified "converting MBR to GPT" message to clarify that the conversion 486 is being held in memory, since some people have mistakenly assumed that a 487 "gdisk -l" operation will change an MBR disk to a GPT disk without 488 prompting. 489 490- Added partition type code for freedesktop.org's proposed $BOOT partition 491 (bc13c2ff-59e6-4262-a352-b275fd6f7172; GPT fdisk type code EA00) 492 493- Adjusted alignment code when using -n or -N in sgdisk to keep the 494 requested partition size (if specified using +###{MGT} terminology) 495 as the requested value rather than relative to the requested start 496 point. This gives you the requested partition size rather than be 497 slightly smaller if sgdisk needs to adjust the start point up a bit and 498 it prevents gaps from appearing between partitions if several are created 499 in succession using automatic placement of the start point. 500 501- Fixed small bugs in gdisk_test.sh script. 502 503- Removed stray debug message that would appear when reading MBR disks. 504 505- Added partition type code for Intel Rapid Start partition (GUID 506 D3BFE2DE-3DAF-11DF-BA40-E3A556D89593, code 8400), used by systems that 507 implement Intel's Rapid Start technology. See 508 http://blog.adios.tw/2012/10/funtoo-linux-and-intel-rapid-start.html or 509 http://mjg59.dreamwidth.org/26022.html. 510 511- Added partition type code for Haiku BFS (GUID 512 42465331-3BA3-10F1-802A-4861696B7521; code EB00). 513 5140.8.6 (1/9/2013): 515----------------- 516 517- Fixed a bug that could cause sgdisk to crash when passing a partition 518 number of 0 to the -t option. 519 520- Added support for building under Solaris. 521 522- Added a new check to the verification code. 523 524- Added partition type code for Sony system partition 525 (F4019732-066E-4E12-8273-346C5641494F). I'm not entirely clear what this 526 is used for, but it's appearing on some new Sony computers. 527 528- Tweaked hybrid MBR creation options to fix a problem that caused the main 529 0xEE MBR partition to NOT be created if the user told gdisk to NOT place 530 it at the start of the disk AND IF fewer than three partitions are 531 hybridize AND IF the user opted to create a second protective partition. 532 533- Changed default build options for Mac OS X to *NOT* use libicu, 534 since it seems to have broken somewhere along the line. It still 535 works on Linux, though. 536 537- Added partition type codes for VMWare ESX (FB00, FB01, and FC00). 538 5390.8.5 (5/30/2012): 540------------------ 541 542- Changed code that writes the partition table so that a disk sync 543 operation occurs even if one or more write operations failed (but not if 544 they all failed). This is intended to work around a bug that a user 545 reported on a Windows system on which the write of the protective MBR 546 failed, although everything else worked. (I suspect anti-virus software 547 may have been blocking write access to the MBR.) 548 549- Added type codes for Midnight BSD (0xA580 - 0xA585). I used these codes 550 because Midnight BSD uses the same 0xA5 type code as FreeBSD on MBR 551 disks, so I'm starting Midnight BSD's numbering halfway through the 552 0xA5## range. 553 5540.8.4 (3/25/2012): 555------------------ 556 557- REALLY fixed Ctrl+D problems! Now gdisk terminates upon receiving a 558 Ctrl+D. In all previous versions, it could lock itself into a CPU-hogging 559 loop if launched via "sudo" from a terminal window that was then closed 560 or if Ctrl+D was pressed at certain input prompts (for a partition name 561 or sector number, for instance). 562 5630.8.3 (3/23/2012): 564------------------ 565 566- Fixed compilation problem on GCC 4.7. 567 568- Improved handling of Ctrl+D on some systems. 569 570- Added disk's name to message stating that a disk write was successful. 571 572- Fixed bug that caused creation of >2TiB partitions on 32-bit systems to 573 be truncated in sgdisk. 574 5750.8.2 (1/22/2012): 576------------------ 577 578- Adjusted the code to support a number of partitions that's not a multiple 579 of the number of partition table entries that fits in a sector (normally 580 4 per sector). The program still rounds up, when necessary, when resizing 581 the partition table manually, but not when loading a partition table that 582 contains a peculiar number of partitions. This helps prevent spurious 583 error messages about CRC problems when loading some Solaris partition 584 tables. 585 586- Fixed bugs relating to the handling of empty partitions; Solaris's ZFS 587 tools create weird empty partitions that are legal but that gdisk wasn't 588 handling properly. (Specifically, they sometimes have non-zero end 589 points; gdisk assumed empty partitions had end points of 0.) 590 591- Fixed a bug that caused an infinite loop of input prompts if the user 592 pressed Ctrl+D. 593 594- Changed gdisk's first-sector input operation to specify a sector number 595 that's properly aligned as the default value. This eliminates the need 596 to alter that value and notify the user of the change when the user 597 hits "Enter" for the default value as the first partition on an empty 598 disk (as well as in some other situations). 599 6000.8.1 (10/1/2011): 601------------------ 602 603- Fixed bug that could cause FixParts to keep a partition's assignment 604 as logical when FixPart could not actually do so. This could happen 605 when there are no gaps between two logical partitions. Some partitioning 606 tools can create such configurations, but FixParts can't. Such 607 configurations are extremely rare. I've only encountered them when 608 logical partitions are out of order. 609 610- Added code to detect infinite loops of logical partitions when reading 611 MBR data. When detected, the program now stops reading after the first 612 loop, so no duplicates appear in the partition list. 613 614- Fixed bug in partition overlap detection in MBR code. 615 616- Changed GPT reading code to use the size encoded in GPT headers to 617 determine how much of the header to use in computing a CRC, with the 618 restriction that the size be equal to or less than the disk's sector 619 size. This should work around problems with libefi in ZFS, which sets the 620 header size to 512 rather than the more common 92. A caveat: If the 621 disk's sector size is larger than the GPTHeader data structure size (512 622 bytes), then the rest of the sector's contents are ignored and replaced 623 with 0 values. This could produce false positives on CRC checks on disks 624 with over-512-byte sector sizes if the header sector is padded with 625 something other than 0 values. 626 627- Fixed bug in new (as of 0.8.0) check that main and backup partition 628 tables are identical on big-endian (PowerPC, etc.) hardware. 629 6300.8.0 (9/10/2011): 631------------------ 632 633- Added new return option for sgdisk: 8, which means that a replication 634 operation (-R or --replicate) failed. Note that other operations on 635 the same command line might still have succeeded. 636 637- Added gdisk_test.sh shell script, contributed by Guillaume Delacour. 638 This script tests some common gdisk and sgdisk operations to be sure 639 they're working correctly. 640 641- Enable sgdisk's -l (--load-backup) and -o (--clear) options to work 642 even on disks that are damaged. Most other options will still be ignored, 643 though, so if you suspect a disk may be bad and want to use one of these 644 options, you should do so on a line by itself, followed by a separate 645 command to perform other actions (such as adding new partitions). 646 647- Added check for mis-matched primary and backup partition tables. 648 A mismatch is reported as a CRC error. 649 650- Added Apple Core Storage partition type code (hex code AF05, GUID 651 53746F72-6167-11AA-AA11-00306543ECAC). 652 653- Added cgdisk program to the family. This program is a rough workalike 654 to cfdisk, much as gdisk is a rough workalike to fdisk. See the cgdisk 655 man page or http://www.rodsbooks.com/gdisk/cgdisk-walkthrough.html for 656 details about its operation. 657 658- Fixed bug that caused CHS end point for protective MBR to be set to 659 0xfeffff rather than the spec-mandated 0xffffff on disks over ~8GB. This 660 is a very minor bug, since not much cares about this, and most other GPT 661 tools get it wrong in the same way, too. 662 6630.7.2 (6/26/2011): 664------------------ 665 666- The Windows version now (finally!) generates proper GUIDs rather than a 667 purely random number. This fixes a bug that caused Windows 7 to crash 668 when converting a disk from MBR format (but, oddly, not when creating a 669 fresh partition table or doing various other things). 670 671- Added a warning when an MBR partition is discarded because it's too 672 big for the disk. 673 674- Changed warning to Windows users about the dangers of converting to GPT 675 so that it appears only on disks that aren't already in GPT form. 676 677- Fixed bug that caused bogus "3" values to pad the ends of partition names 678 on some disks (particularly those created by Microsoft's disk 679 partitioning tools). 680 681- Made compilation without Unicode support possible (see README file) 682 683- Made default filesystem type code OS-dependent (based on the compilation 684 platform). 685 686- Added new Linux-only filesystem partition type GUID code, 687 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (8300 entry code). Also changed name 688 of the EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (0700 entry code) to 689 "Microsoft basic data"). 690 691- Fixed a bug that caused an incorrect code to be set for active/bootable 692 partitions when generating a hybrid MBR. 693 694- Enable entry of hex codes that begin with "0x" for both GPT and MBR 695 partitions. 696 697- Fixed bug that caused the boot loader code to be lost when creating a 698 hybrid MBR. 699 700- Fixed bug in sector input code that could produce improper values 701 if the user inputs ridiculously large "+" values. 702 7030.7.1 (3/21/2011): 704------------------ 705 706- Added support for proper UTF-16LE partition names rather than the 707 "shortcut" that properly encoded only ASCII names. This support works 708 only in Linux, FreeBSD, and OS X, though, at least for the moment. 709 Although it's possible to compile this support into Windows when using 710 Visual C++, it doesn't seem to work properly. Since using this feature 711 would require distributing the ICU libraries with the Windows binary, 712 thus bloating the binary package's size to no effect, I've disabled it in 713 my standard Windows build, at least for now. 714 715- Added check to fixparts to keep it from operating on devices that 716 lack an existing MBR signature. (In 0.7.0, it could write an empty 717 MBR data structure to a device on which it was mistakenly launched.) 718 719- Fixed bug that caused the protective MBR to not be written when 720 restoring a backup of the GPT data. 721 722- Fixed bug that caused second protective MBR partition, when created 723 as part of a hybrid MBR, to always be of type 0xEE, even when the 724 user specified something else. 725 726- Integrated a number of code cleanups contributed by Florian Zumbiehl. 727 7280.7.0 (3/11/2011): 729------------------ 730 731- Fixed bug that caused some types of logical partitions to be misread. 732 733- Created FixParts program, to fix problems on MBR-partitioned disks. 734 Although this program is part of the GPT fdisk family, it is NOT used on 735 GPT disks. 736 737- Completely redid the GPT-to-MBR code, used both for converting to MBR 738 form and for creating hybrid MBRs. 739 740- Fixed a bug that caused gdisk to "forget" some partitions if there were 741 numbering gaps when a conversion to MBR was aborted. 742 743- Improved CHS value creation on small (<~8GB) disks for protective MBR 744 and when creating hybrid MBRs or converting to MBR format. Linux-only, 745 for the moment; other platforms still produce bad CHS values on sub-~8GB 746 disks (but few OSes care these days). 747 748- Enhanced disk replication features ('u' on the experts' menu in gdisk; -R 749 or --replicate in sgdisk). It's now possible to replicate the partition 750 table from a larger to a smaller disk, so long as all the partitions fit 751 on the smaller disk. In sgdisk, the secondary GPT data are moved 752 automatically if disk sizes don't match. In gdisk, the secondary GPT data 753 are moved automatically if the target disk is smaller than the source 754 disk; if the target disk is larger than the source disk, the user is 755 given the option of making this adjustment. 756 757- Fixed --load-backup (-l) option to sgdisk, which was broken. 758 759- Changed largest drive that's not given a minimum 4 KiB alignment even 760 when smaller alignment is detected on the disk to 300 GB. 761 762- Fixed bug that prevented aborting a partition table backup ('u' on the 763 experts' menu) by hitting the Enter key for the device filename. 764 765- Implemented a number of code cleanups provided by Florian Zumbiehl. 766 7670.6.14 (1/8/2011): 768------------------ 769 770- Made small change to the way the start sector is interpreted if you use a 771 "+" specification, as in "+2G" to locate a partition 2 GiB into the 772 default range. This change makes adjustments for sector alignment less 773 likely. 774 775- Modified sgdisk's -n (--new) option to work with relative start and end 776 values (which the man page incorrectly stated it already did). Values of 777 0 for the start and end sectors refer to the first and last available 778 sectors in the largest free block, and a partition number of 0 refers to 779 the first available partition. 780 781- Added ChromeOS GUID values to list of recognized partition type GUIDs. 782 7F00 = ChromeOS kernel, 7501 = ChromeOS root, 7502 = ChromeOS reserved. 783 Untested on actual ChromeOS system. 784 785- Tweaked APM detection to look for APM signature even if an MBR 786 signature has already been found. Helps in diagnosis of cases 787 in which an MBR has overwritten an APM disk. 788 7890.6.13 (10/12/2010): 790-------------------- 791 792- Added notification about nonexistent partitions to hybrid MBR creation 793 in gdisk. 794 795- Fixed bug in GPT-to-MBR conversion that could sometimes enable creation 796 of an extended partition that overlaps a preceding partition. 797 798- Fixed bug in GPT-to-MBR conversion that prevented creation of an MBR 799 table with logical partitions if there were four or fewer partitions. 800 8010.6.12 (10/7/2010): 802------------------- 803 804- Adjusted alignment code to use 1 MiB alignment by default for drives with 805 other than 512-byte sector sizes. (Previous versions increased this -- 806 for instance, to 4 MiB for drives with 2048-byte logical sector size.) 807 808- Entry of non-hexadecimal value for partition type code now causes 809 re-prompting for a new value, fixing a recently-introduced minor bug. 810 811- Fixed bug in sector entry using K/M/G/T/P suffixes on disks with 812 other-than-512-byte sector numbers. 813 814- Added "P" (PiB, pebibyte) suffix to suffixes accepted in entering 815 partition sizes. 816 817- Fixed bug that caused sgdisk to segfault if fed the (invalid) 818 "-A show" parameter. Now it terminates with a complaint about an invalid 819 partition number 0. 820 821- Removed warning when running on big-endian hardware, since this 822 support has been present for quite a while with no bug reports. 823 8240.6.11 (9/25/2010): 825------------------- 826 827- Added -F (--first-aligned-in-largest) option to sgdisk. This option is a 828 variant on -f (--first-in-largest); it returns the number of the first 829 sector that will be used in the largest free area, given the current 830 alignment value (set via -a/--set-alignment). 831 832- Streamlined GUID code entry in gdisk; it no longer offers the option 833 to enter GUIDs in separate segments. 834 835- The -t option to sgdisk now accepts GUID values as well as the 836 sgdisk/gdisk-specific two-byte hex codes. 837 838- Added check that the protective 0xEE MBR partition begins on sector 1 839 to the verify function. If it doesn't, a warning message is displayed, 840 but it doesn't count as an error. 841 842- Added check for overlapping MBR partitions to verify function (gdisk "v" 843 function on all menus; sgdisk -v/--verify function). Also warns about 844 multiple MBR 0xEE partitions (causes problems in some OSes). 845 846- Added check to GPT-to-MBR and hybrid MBR creation options to prevent 847 creation of disks with duplicate partitions. When told to create a disk 848 with duplicates, sgdisk now aborts with the error message "Problem 849 creating MBR!" When attempting to create a hybrid MBR with duplicates, 850 gdisk silently drops duplicate partitions, leaving fewer than requested. 851 Creating duplicates should not be possible in sgdisk when converting to 852 MBR form. 853 8540.6.10 (8/22/2010): 855------------------- 856 857- Enable disk-wipe (-z and -Z) and verification (-v) operations in 858 sgdisk even if the disk is badly damaged. 859 860- Added support for setting attributes in sgdisk (-A/--attributes option) 861 in sgdisk. 862 863- Fixed bug that created backwards attribute field values (bit #2 was 864 entered as bit #61, etc.). 865 866- Fixed bug that caused creation of hybrid MBR to wipe out the MBR's boot 867 code. 868 869- Added ability to save partition table from one device to another (gdisk: 870 'u' on experts' menu; sgdisk: -R or --replicate option). 871 872- Fixed inaccessible -C/--recompute-chs option in sgdisk. 873 8740.6.9 (7/4/2010): 875------------------ 876 877- Fixed minor error in sgdisk man page (--largest-new option requires 878 a partition number). 879 880- Fixed major bug in hybrid MBR creation, which caused incorrect 881 protective partition end point settings and occasionally other 882 problems. 883 8840.6.8 (5/23/2010): 885------------------ 886 887- Added tests to see if the file to be opened is a directory, character 888 device, FIFO, or socket; program now terminates if any of these 889 conditions is met. (Linux/FreeBSD/OS X only.) Thanks to Justin Maggard 890 for this patch. 891 892- Added 'f' option on gdisk's experts' menu (-G/--randomize-guids in 893 sgdisk). This option randomizes the disk's GUID and all partitions' 894 GUIDs. Intended for use after cloning a disk with a utility that copies 895 the GUIDs intact (such as a raw dd copy) if you want each disk copy to 896 have its own set of GUIDs. 897 898- Added -u/--partition-guid and -U/--disk-guid options to sgdisk. These are 899 the equivalents of the 'g' and 'c' options, respectively, on the gdisk 900 experts' menu: They enable adjusting an individual partition's GUID or a 901 disk's GUID. The GUID may be either a fully specified GUID value or 'R' 902 or 'r' to set a random GUID value. 903 904- Fixed compile problem for FreeBSD (its math library lacks a log2() 905 function). Also created separate Makefile.freebsd with a couple of 906 FreeBSD-specific options. 907 908- Added -N (--largest-new) command to sgdisk. This command creates a single 909 partition that fills the largest single unpartitioned block of space on 910 the disk. 911 912- Fixed sgdisk man page error: the --change-name option was incorrectly 913 listed as --change. 914 915- Added 'h' option to gdisk experts' menu (-C or --recompute-chs in sgdisk) 916 to recompute all protective/hybrid MBR CHS values. This option is 917 intended to work around a bug in at least one BIOS that prevents the 918 computer from booting when the GPT-mandated (but technically illegal) 919 0xFFFFFF CHS value is used as the end point for a protective MBR. The 920 recomputed values will be legal (e.g., 0xFEFFFF instead of 0xFFFFFF), 921 but incorrect in GPT terms, and will therefore enable at least one 922 BIOS to boot with a GPT disk. See http://www.rodsbooks.com/gdisk/bios.html 923 for all I know about BIOS/GPT incompatibilities. 924 9250.6.7 (5/1/2010): 926----------------- 927 928- Undid earlier change, with version 0.6.4, that wiped the MBR boot loader 929 when doing MBR-to-GPT conversions. I've now become skeptical that MBR 930 boot loaders were causing any real problems on GPT disks, so I'm going 931 back to the philosophy of leaving as much alone as possible. 932 933- Fixed bug that caused incorrect reporting of free space on 0-size disks 934 (e.g., files of 0 length passed as disk images). 935 936- Fixed bug that caused segfault on some invalid disks 937 938- Fixed bug that caused incorrect partition numbers to be displayed for 939 some verify problems. 940 941 9420.6.6 (3/21/2010): 943----------------- 944 945- Added support for the "no block IO protocol" (referred to as "hide from 946 EFI" in GPT fdisk) and "legacy BIOS bootable" attribute bits. See Table 947 19 of the UEFI 2.3 specification (p. 153) for details. 948 949- Changed the sequence in which GPT data structures are written to disk; 950 backups are now written first, followed by the main structures. This is 951 as recommended in the UEFI 2.3 specification, since it's safer in the 952 extremely unlikely event that a RAID array's size is increased and 953 there's a power outage mid-write. (If the main structures are written 954 first in this case, they'll point to data that's not yet been written; 955 but by writing the backups first, the old main structures will still 956 point to the valid old backup structures.) 957 958- Protective MBRs now have disk signatures of 0x00000000, to better 959 conform with GPT as described in the UEFI 2.3 specification. 960 961- Added alignment information to the summary data produced by the 962 'p' main-menu option in gdisk or the -p option to sgdisk. 963 964- More alignment changes: GPT fdisk now attempts to determine the alignment 965 value based on alignment of current partitions, if any are defined. If no 966 partitions are defined, a default value of 2048 is set. If the computed 967 value is less than 8 on drives over about 596GiB, it's reset to 8, since 968 the drive might be a WD Advanced Format unit that requires an 8-sector 969 (or larger power-of-2) alignment value for best performance. The 970 2048-sector default provides better alignment in some RAID 971 configurations. 972 973- Changed behavior when a backup restore fails. Previously, GPT fdisk 974 would create a fresh blank set of partitions. Now it does so only 975 if the failure occurs when interpreting the backup's contents; if the 976 user typed the wrong filename, the in-memory data structures aren't 977 touched. 978 979 9800.6.5 (3/7/2010): 981----------------- 982 983- Added tests to verify ('v') function and to pre-save checks to look for 984 partitions that end before they begin or that are too big for their 985 disks. 986 987- Fixed a bug that could cause spurious data to appear in a grown partition 988 table. 989 990- Added ability to convert some or all partitions to logical partitions in 991 GPT-to-MBR conversion. This feature is limited by the fact that at least 992 one free sector must exist immediately prior to each logical partition, 993 so it won't do much good if partitions are crammed together. It should be 994 possible to convert back to MBR any disk that started that way, provided 995 no partitions were added or resized when the disk was in GPT form; and 996 disks that were partitioned with Apple's Disk Utility or other tools that 997 insert unpartitioned space should also be convertible. CAUTION: THE 998 LOGICAL PARTITION CREATION FEATURE DOESN'T TRY TO ALIGN PARTITIONS OR 999 PARTITION HEADER DATA TO CYLINDER BOUNDARIES! It's conceivable that some 1000 older OSes or utilities will object to these disks, although Linux, OS X, 1001 Windows Vista, and Windows 7 all seem happy with them. 1002 1003- Fixed bug that caused creation of 0-length file if an incorrect device 1004 filename was typed. 1005 1006- The gdisk program now prompts for a device filename if it's called with 1007 no options. This enables gdisk to do something useful if it's launched by 1008 double-clicking its icon in a GUI environment. 1009 1010- Added workaround for bug in some versions of MinGW that caused the 1011 program to garble input sector numbers. 1012 1013- The Windows version now works on disks with over-512-byte sectors. 1014 Tested on a magneto-optical (MO) drive with 2048-byte sectors. 1015 1016- Added -D (--display-alignment) option to sgdisk, to display sector 1017 alignment value (by default, 1 for sub-800GiB disks and 8 for disks 1018 over that size). 1019 1020- Fixed bug in computation of CHS geometries for protective MBR. This is 1021 non-critical, since most modern utilities ignore the CHS geometries. 1022 Concerned users can use the 'n' option on the experts' menu to build new 1023 protective MBRs with the new algorithm, if desired. (Note that GNU 1024 Parted, at least, gets this wrong, too.) 1025 1026- Fixed memory-allocation bug when reading GPT disks with partition tables 1027 with over 128 entries; could cause program to crash on startup. 1028 10290.6.4-2 (2/20/2010): 1030-------------------- 1031 1032Note: Neither of the following changes affects actual program code, so I've 1033left the version number in the program at 0.6.4. 1034 1035- Altered Makefile to pass user's compiler and linker environment 1036 variables through. 1037 1038- Added #include to gpttext.cc to enable it to compile on the latest 1039 GCC versions (it was failing on at least some 4.4.x compilers). 1040 10410.6.4 (2/19/2010): 1042------------------- 1043 1044- Added -m (--gpttombr) option to sgdisk, enabling conversion of GPT 1045 disks to MBR format, with a limit of four partitions total, and of course 1046 without overcoming the 2TiB limit. 1047 1048- Added -h (--hybrid) option to sgdisk, enabling creation of hybrid 1049 MBRs. Fewer options are available in sgdisk than in gdisk, though, 1050 in order to keep the user interface manageable. 1051 1052- Fixed off-by-one bug in specification of partition when using the 1053 -T (--transform-bsd) option in sgdisk. 1054 1055- Changed the code to create a new MBR unique disk signature whenever a new 1056 protective MBR is generated (when doing an MBR-to-GPT conversion, when 1057 using the 'n' option on the experts' menu, or when using the 'o' option 1058 on the main menu, for example). Previous versions attempted to preserve 1059 the existing MBR disk signature in most cases, but this resulted in 1060 values of 0x00000000 whenever an empty disk was partitioned, and often in 1061 other cases, too. Better to risk changing this value too often than to 1062 leave multiple disks with 0x00000000 values, I think. 1063 1064- Added transpose ('t' on experts' menu in gdisk; or -r or --transpose in 1065 sgdisk) command to enable fine-tuning partition order without doing a 1066 full sort. 1067 1068- Added code to clear the MBR boot loader when doing an MBR-to-GPT 1069 conversion. (This was already done in full-disk BSD-to-GPT conversions.) 1070 This is done because I've seen a few problem reports that make me think 1071 some MBR boot loaders freak out and hang the system when they encounter 1072 GPT disks, and/or they attempt to load a second-stage boot loader stored 1073 in what is now GPT territory, causing a system hang. Since MBR boot 1074 loaders don't work on GPT disks anyhow (even GRUB needs to be 1075 reinstalled), this new wiping behavior shouldn't cause any problems, and 1076 may prevent a few. 1077 1078- Fixed bug in Windows version that prevented saving backup files. 1079 1080- Fixed bug that caused second and subsequent partition numbers in 1081 prompts in hybrid MBR conversion procedure to be displayed in 1082 hexadecimal. 1083 1084- Fixed very obscure potential bug in hybrid MBR/GPT synchronization when 1085 deleting partitions; code wasn't matching partition lengths correctly, 1086 which would only affect partitions that start at the same point but have 1087 different lengths in MBR vs. GPT. 1088 1089- Fixed bug in the -E option to sgdisk; it was actually returning the 1090 last free sector, not the last free sector in the largest free block. 1091 1092- Fixed bug in -t option to sgdisk; it was corrupting partition type 1093 codes. 1094 1095- Fixed minor alignment bug in partition summary list ('p' from any menu) 1096 when partition sizes are between 1000 and 1024 units. 1097 1098- Backup restore function ('l' on recovery & transformation menu) now 1099 accepts both backups generated by GPT fdisk and backups created by a 1100 direct copy (via dd, etc.) of the MBR, main GPT header, and main GPT 1101 partition table, in that order. ("dd if=/dev/sda of=backup.gpt bs=512 1102 count=34" will do this on Linux for a disk with a typical-sized GPT table 1103 of 128 entries.) 1104 11050.6.3 (2/3/2010): 1106------------------ 1107 1108- Fixed serious data corruption bug on big-endian (PowerPC and similar) 1109 systems. 1110 1111- Changed several GPT fdisk Solaris type codes to correct a duplicate 1112 1113- Corrected error in GPT fdisk type codes for NetBSD LFS and NetBSD RAID; 1114 they were identical, but I've now changed NetBSD RAID to A906, which 1115 is unique. 1116 1117- Added GUID for IBM General Parallel File System (GPFS) partition type 1118 code. Somewhat arbitrarily set it to use the 7501 number (MBR code 0x75 1119 is used by IBM PC/IX, so it's at least the right company, by my loose 1120 numbering rules....). 1121 1122- Improved GUID generation. Prior versions generated completely random 1123 numbers for GUIDs. This works, but is technically a violation of the 1124 spec. Unix versions now employ libuuid to generate GUIDs in a more 1125 correct way. The Windows version still generates random numbers, though. 1126 1127- Turned PartTypes class into a derived class of GUIDData, and renamed 1128 it to PartType. 1129 1130- Created new GUIDData class, to replace the original GUIDData struct. 1131 11320.6.2 (1/29/2010): 1133------------------ 1134 1135- The change-type ('t' on main menu) option now changes the partition's 1136 name *IF* the current name is the generic one for the partition type. 1137 If the current name is not the generic name, it is NOT changed. 1138 1139- Fixed bug that caused new protective MBR to not be created when the 1140 MBR was invalid and the GPT was damaged and the user opts to try to 1141 use the GPT data. 1142 1143- Enabled default partition type code of 0700 when creating partitions 1144 or changing their type codes. (Type 0700, Linux/Windows data, is set if 1145 the user hits the Enter key alone.) 1146 1147- Fixed bug in sort ('s' on main menu) option that caused partition 1148 numbers to begin at more than 1 if the original partition list had 1149 too many empty partitions before the last one defined. 1150 1151- Improved code to determine which partition table to load in case of 1152 CRC mismatches between the partition tables and the stored CRC values 1153 in the headers. 1154 1155- Compiles using MinGW (http://www.mingw.org) to create a Windows binary. 1156 1157- Moved all disk I/O functions to the new DiskIO class. This helps with the 1158 Windows port; it uses diskio-windows.cc for Windows-specific code, 1159 diskio-unix.cc for the Linux, FreeBSD, and OS X code, and diskio.cc for 1160 cross-platform disk I/O code. 1161 1162- Changed BSD disklabel detection code to be more correct (I think). 1163 This change has no effect on my test disks, but I hope it'll work 1164 better on disks with sector sizes other than 512 or 2048. 1165 11660.6.1 (1/20/2010): 1167------------------ 1168 1169- Fixed bug that returned incorrect disk size on 32-bit versions of 1170 FreeBSD. 1171 1172- Fixed bug that prevented FreeBSD version from working on disk image 1173 files. 1174 1175- Fixed bug that caused BSD disklabel conversion to fail. 1176 11770.6.0 (1/15/2010): 1178------------------ 1179 1180- Fixed bug that caused the convert to MBR function to fail. 1181 1182- Added support for disks with other than 512-byte sectors. 1183 1184- Created embryonic sgdisk program. 1185 1186- Fixed bug that caused relative sector numbers entered by users (e.g, 1187 "+128M") to be misinterpreted as from the start of the range rather than 1188 from the default value. 1189 11900.5.3 (1/4/2010): 1191----------------- 1192 1193- Fixed bug in display of GUIDs when compiled with some versions of GCC. 1194 1195- Eliminated warnings caused by additional checks in latest versions of 1196 GCC. These warnings were harmless, but to eliminate them I've added 1197 more error checking on disk I/O. 1198 1199- Eliminated unnecessary warnings about potential data loss if the program 1200 was launched with the -l option or if writes aren't possible. 1201 1202- Added code to set the partition boundary value based on the physical 1203 sector size. (FindAlignment() function.) This function, however, works 1204 only on Linux, and then only if the BLKPBSZGET ioctl is defined. This 1205 ioctl is new in kernel 2.6.32 or thereabouts. 1206 12070.5.2 (12/31/2009): 1208------------------- 1209 1210- Modified partition creation function to begin partitions on 8-sector 1211 boundaries by default. This improves performance on the new Western 1212 Digital Advanced Format drives. The new 'd' and 'l' options on the 1213 experts' menu display and change, respectively, the boundary size. 1214 1215- Tweaked code to produce fewer warnings on the latest versions of 1216 GCC. 1217 12180.5.1: 1219------ 1220 1221- Made some minor edits to the man page. 1222 1223- Incorporated RPM .spec file changes contributed by Scott Collier 1224 (boodle11@gmail.com). 1225 1226- Changed method of locating and loading backup GPT data, to use the 1227 main header's pointer, if it's valid, rather than seeking to the 1228 end of the disk. 1229 1230- Added 'e' option (relocate backup GPT data structures) to the experts' 1231 menu. 1232 1233- Fixed bug that prevented recovery of partitions in case of partially 1234 damaged GPT data (bad main and good backup or bad backup and good 1235 main header, for instance). 1236 12370.5.0: 1238------ 1239 1240- Added GPT-to-MBR conversion function. It's very limited, but potentially 1241 useful in some cases. 1242 1243- Fixed bug that caused incorrect file sizes to be reported on 32-bit 1244 Linux, thus causing problems when editing partition tables in disk images 1245 or when loading GPT backup files. 1246 1247- Fixed bug that caused bogus CRC error reports when loading backup GPT 1248 data. 1249 1250- Reorganized menus. There are now three: the main menu, the experts' menu, 1251 and the recovery & transformation menu. The last of these has most of the 1252 items that had been on the earlier versions' experts' menu. 1253 1254- Added ability to re-load the MBR and generate a fresh GPT from it. This 1255 is normally identical to quitting and re-running the program, but it 1256 could be handy if, say, the GPT partitions on a hybrid configuration are 1257 badly messed up; this will enable using the hybridized partitions as the 1258 starting point for a new GPT setup. 1259 1260- The program now generates CHS values for hybrid and GPT-to-MBR conversion 1261 MBRs. For the moment, the assumption is the maximum number of heads and 1262 sectors per track (255 and 63, respectively), although the bulk of the 1263 code supports other values -- it'd just be awkward to enter the data in 1264 the user interface. 1265 1266- Fixed minor display bug that caused number of sectors on the disk to be 1267 shown as 0 on large disks when running 32-bit binaries. 1268 1269- Reverted 0.4.2's zap (destroy GPT) changes, since I don't want to wipe 1270 out a valid MBR if the user created that MBR over an older GPT without 1271 first properly wiping out the GPT, and the user now wants to wipe out 1272 the GPT. 1273 1274- Reformatted and edited the man page. Aside from edits related to the 1275 preceding program changes, I've altered the markup slightly and trimmed 1276 much of the more tutorial information from the man page to better 1277 conform to typical terse man page style. 1278 12790.4.2: 1280------ 1281 1282- Code cleanup. 1283 1284- Fixed very small formatting bug in display of hex code when a match isn't 1285 found when converting from an MBR/gdisk hex code to a GUID type code. 1286 1287- Added the ability to work on disk image files (raw files for virtual 1288 machines, backup images, etc.). The program assumes that all such disk 1289 image files have 512-byte sectors. 1290 1291- Added verification prompt to 'o' main-menu option to avoid accidental 1292 erasures of all partitions. 1293 1294- The "destroy GPT data structures" option ('z' on the experts' menu) now 1295 also destroys all EFI GPT (0xEE) partitions in the MBR. 1296 1297- Added an extra warning to the "destroy GPT data structures" option if an APM 1298 or BSD disklabel was detected on the disk. 1299 1300- Added a buffer flush after destroying GPT data structures, to get the OS 1301 to read the new (empty or MBR-only) partition table. 1302 1303- Fixed bug that allowed entry of nonexistent partition numbers when creating 1304 a hybrid MBR. 1305 13060.4.1: 1307------ 1308 1309- Code cleanup/re-organization 1310 1311- Partition creation function ('n' on main menu) now uses the start of the 1312 largest available chunk of free space rather than the first available 1313 sector as the default starting sector number. This should enable easier 1314 partition creation if there are small bits of free space on the disk. 1315 1316- You can now specify the end point of a partition by using a minus sign, 1317 in which case the end point is the default value minus the specified 1318 size. For instance, "-200M" creates a partition that ends 200MiB before 1319 the default end point. 1320 1321- You can now specify the start point of a partition by using a plus or 1322 minus sign, in which case the start point is the specified distance from 1323 the start (+) or end (-) of free space. This is exactly the same as the 1324 new rules for entry of the end point, except that the default value is 1325 set differently. 1326 1327- Deleting a partition now checks for a matching hybrid MBR partition, and 1328 if one is found, it's deleted. Any empty space that then surrounds the 1329 0xEE (EFI GPT) MBR partitions is then added to the nearby 0xEE partition. 1330 If no non-0xEE partitions are left, a fresh protective MBR is generated. 1331 1332- Added hybrid MBR consistency check to the verify ('v') option and to 1333 pre-write checks. If non-0xEE/non-0x00 MBR partitions without 1334 corresponding GPT partitions are found, the user is warned. This finding 1335 does NOT prevent writing the partition table, though. 1336 1337- Added non-destructive write test when opening the device file, in order 1338 to detect the problem with FreeBSD being unable to write to disks with 1339 mounted partitions (or other potential problems). 1340 13410.4.0: 1342------ 1343 1344- Added support for BSD disklabels. The program can now convert disks that 1345 use "raw" disklabels, with the caveat that the first partition will 1346 almost certainly need to be deleted because it'll overlap the main GPT 1347 header; and convert disklabels contained within a GPT (or a former MBR, 1348 converted to GPT) partition. In the latter case, the 'b' main menu option 1349 is used. 1350 1351- Added support for compiling on FreeBSD. 1352 1353- Fixed bug that could cause crashes or incomplete sorts when sorting 1354 the partition table. 1355 1356- New partitions, including converted ones, now take on the name of the 1357 partition type as a default name. 1358 1359- Reorganized some code; created a separate C++ class for GPT partitions 1360 (GPTPart), which replaced a struct and enabled moving code from the 1361 bloated GPTData class into GPTPart. 1362 1363- Fixed a bug that produced spurious warnings about unknown sector sizes 1364 when loading a backup file. 1365 13660.3.5: 1367------ 1368 1369Note: This version was not officially publicly released; I wanted to test 1370the big-endian support while developing 0.4.0. 1371 1372- Tweaked the disk type identification code to warn users to re-sync their 1373 hybrid MBRs when one is detected. 1374 1375- Tweaked MBR-reading code to ignore 0xEE (EFI GPT) partitions. This will 1376 only have an effect on a poorly partitioned MBR disk that contains an 1377 inappropriate EFI GPT partition, or when attempting to recover a 1378 corrupted disk by using the hybrid MBR for data recovery. 1379 1380- Added big-endian (PowerPC, etc.) support! 1381 1382- Added code to identify and warn of the presence of an Apple Partition 1383 Map (APM) on the disk. 1384 1385- Enabled MBR conversion code to handle multiple logical partitions. 1386 13870.3.4: 1388------ 1389 1390- Fixed bug that enabled (possibly accidental) entry of MBR type codes of 1391 0x00 in GPTData::MakeHybrid(). The fix also enables entry of default 1392 type code by pressing the Enter key when prompted. Applied a similar 1393 fix to the entry of the type code for the second protective partition, 1394 if one is used. 1395 1396- Fixed a typo: "sectors" was spelled "sectprs" in one spot! 1397 1398- Fixed bug that caused default entry for end sector to be refused if an 1399 initial value using a plus sign (e.g., "+20G") was also refused. 1400 14010.3.3: 1402------ 1403 1404- Gave users control over the way MBR partitions are assigned to slots in a 1405 hybrid MBR setup; the original method (putting the 0xEE partition after 1406 the real partitions) works well for non-boot disks, but both GRUB and 1407 GRUB2 become confused by this type of setup, so it needs changing. 1408 1409- Changed "blocks" to "sectors" in GPT and MBR table displays. 1410 1411- Added "Boot" column to MBR table display; shows an asterisk (*) when the 1412 partition's status is bootable. 1413 14140.3.2: 1415------ 1416 1417- Changed __DARWIN_UNIX03 to __APPLE__ as code to enable MacOS X support. 1418 1419- Added the ability to create a hybrid MBR ('h' on experts' menu). This was 1420 motivated by my discovery that Windows 7 remains brain-dead when it comes 1421 to the ability to boot from a GPT disk, at least on BIOS-based machines. 1422 1423- Added 'z' option to experts' menu, to destroy GPT data structures and 1424 exit. The intent is to use this feature to enable subsequent partitioning 1425 of the disk using fdisk or other GPT-unaware tools. (GNU Parted will wipe 1426 the GPT data structures itself when you create a new MBR ["msdos 1427 disklabel," in Parted parlance], so using Parted is another option.) 1428 1429- Slightly altered the effect of the 'o' command on the main menu. It now 1430 blanks out the protective MBR, as well as the GPT data. 1431 14320.3.1: 1433------ 1434 1435- Added Mac OS X support, provided as a patch by David Hubbard 1436 (david.c.hubbard@gmail.com). 1437 1438- Fixed bug in disksize() function on Mac OS. (Possibly dependent on the 1439 kernel and/or GCC version.) The disk size, of type uint64_t, was not 1440 being passed correctly, so I reorganized the function to return it as 1441 the function's return value rather than as a parameter. This seems to 1442 work OK on my Mac OS test system and on both 32- and 64-bit Linux 1443 systems. 1444 1445- Fixed off-by-one bug in GPTData::FindLastAvailable(). 1446 1447- Fixed bug that caused display of options after a disk-write error. 1448 1449- Fixed several incorrect MacOS X partition type GUIDs, thanks to Yves 1450 Blusseau (1otnwmz02@sneakemail.com). 1451 14520.3.0: 1453------ 1454 1455- Changed version number to 0.3.0, reflecting the fact that I've received 1456 no significant bug reports and so am elevating the program to "beta" 1457 status. This change also entailed altering the warning the program 1458 displays when saving partition table changes. 1459 1460- Fixed minor bug in CHS geometry of the protective MBR's type EE partition 1461 (was producing 0x000200 as the start value, but should be 0x000100). 1462 Should be a non-critical bug since the protective MBR partition 1463 definition is only there to keep MBR-only disk utilities from messing 1464 with the disk. 1465 1466- Added ability to enter GUIDs as single massive strings rather than in 1467 chunks. 1468 14690.2.2: 1470------ 1471 1472- Added #include directives required to compile the program using GCC 1473 4.4.0. 1474 14750.2.1: 1476------ 1477 1478- Fixed partition numbering problem in reports of partition overlaps in 1479 verification function. 1480 1481- Fixed 1-sector partition size problem when creating new partitions 1482 (partitions were 1 sector too big when using the +size option). 1483 1484- Changed BytesToSI() to display values in bytes without decimal points 1485 (e.g., "512 bytes" rather than "512.0 bytes"). 1486 1487- Added GPTData class member functions to retrieve GPT data structure 1488 locations on disk; used in my internal-use-only GPT-wiping program. 1489 1490- Eliminated the "a reboot is recommended" notice after writing the 1491 partition table. 1492 1493- Added notice after sorting the partition table to the effect that 1494 editing /etc/fstab and/or the boot loader files may be required. 1495 1496- Fixed bug in MBR-reading function that caused 0x0f (Win95 LBA) and 0x85 1497 (Linux extended) extended partitions to not be read. 1498 1499- Fixed bug in GetLastSector() (in support.cc) that would have prevented 1500 correct user entry of over-32-bit sector numbers on 32-bit systems. 1501 1502- Made some changes/corrections to the partition type list in 1503 parttypes.cc. Most of these were based on newly-discovered MBR type 1504 codes for Apple (Mac OS X) filesystems. 1505 1506- General code cleanup (setting explicit casts, etc.) 1507 15080.2.0: 1509------ 1510 1511- Initial semi-public release 1512