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