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