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