[Bug 1351071] Re: When GPT minimally replaced by MBR, Ubiquity resurrects GPT data

Launchpad Bug Tracker 1351071 at bugs.launchpad.net
Mon Aug 4 17:46:23 UTC 2014


Status changed to 'Confirmed' because the bug affects multiple users.

** Changed in: ubiquity (Ubuntu)
       Status: New => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to ubiquity in Ubuntu.
https://bugs.launchpad.net/bugs/1351071

Title:
  When GPT minimally replaced by MBR, Ubiquity resurrects GPT data

Status in “ubiquity” package in Ubuntu:
  Confirmed

Bug description:
  When a GUID Partition Table (GPT) disk is partitioned with fdisk
  (without GPT support), with Microsoft's default partitioning tools, or
  with certain other GPT-unaware tools, the result is a valid MBR
  partition table and leftover GPT data. The GPT spec (part of the
  EFI/UEFI spec) is quite clear that such a disk should be treated as an
  MBR disk. Ubiquity, however, often resurrects the old GPT data. I've
  seen reports online that it will report that the disk is empty, but
  when I tried to reproduce the problem, I didn't see that behavior.
  Either result has the potential to completely trash a user's
  partitions, and so is extremely serious.

  Steps to reproduce:

  1. Create a disk with GPT partitions. For realism, put filesystems on them. To duplicate one common use case, make them NTFS and FAT partitions, similar to what a Windows 8.1 system might use.
  2. Use a GPT-unaware partitioning tool (such as Ubuntu's fdisk) to partition the disk. Delete the type-0xEE protective partition and create one or more new partitions that do NOT replicate the types and sizes of the original GPT partitions.
  3. Optionally create filesystem(s) on the new partition(s).
  4. Start an Ubuntu installation on the disk. (I used 14.04.1 desktop for this test.) When asked, select the "something else" partitioning option.

  Result:

  In my test, the old GPT partitions appear in the partition list. Some
  online reports I've seen indicate an empty partition list when steps
  equivalent to these are followed.

  Ultimately, the problem is in libparted, which does a poor job of
  handling this condition. Here are some program outputs:

  $ sudo fdisk -l /dev/sda

  WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util
  fdisk doesn't support GPT. Use GNU Parted.

  
  Disk /dev/sda: 111.0 GB, 111008546816 bytes
  78 heads, 13 sectors/track, 213820 cylinders, total 216813568 sectors
  Units = sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disk identifier: 0x00000000

     Device Boot      Start         End      Blocks   Id  System
  /dev/sda1            2048   216813567   108405760   83  Linux

  The disk has a single Linux partition. fdisk (which does not use
  libparted) complains about the presence of leftover GPT data
  structures (which is a reasonable precaution), but the EFI spec says
  that this is an MBR disk.

  $ sudo gdisk /dev/sda
  GPT fdisk (gdisk) version 0.8.8

  Caution: invalid backup GPT header, but valid main header; regenerating
  backup header from main header.

  Warning! Main and backup partition tables differ! Use the 'c' and 'e' options
  on the recovery & transformation menu to examine the two tables.

  Warning! One or more CRCs don't match. You should repair the disk!

  Partition table scan:
    MBR: MBR only
    BSD: not present
    APM: not present
    GPT: damaged

  Found valid MBR and corrupt GPT. Which do you want to use? (Using the
  GPT MAY permit recovery of GPT data.)
   1 - MBR
   2 - GPT
   3 - Create blank GPT

  Your answer:

  gdisk (which does not use libparted) identifies the issue and offers
  the user a choice of what to do.

  $ sudo fixparts /dev/sda
  FixParts 0.8.8

  Loading MBR data from /dev/sda

  NOTICE: GPT signatures detected on the disk, but no 0xEE protective partition!
  The GPT signatures are probably left over from a previous partition table.
  Do you want to delete them (if you answer 'Y', this will happen
  immediately)? (Y/N): n

  The fixparts output identifies the issue and offers a chance to fix
  the problem. (I selected "n" so as to continue tests/demonstrations.)

  $ sudo parted /dev/sda
  GNU Parted 2.3
  Using /dev/sda
  Welcome to GNU Parted! Type 'help' to view a list of commands.
  (parted) print                                                            
  Warning: /dev/sda contains GPT signatures, indicating that it has a GPT table.
  However, it does not have a valid fake msdos partition table, as it should.
  Perhaps it was corrupted -- possibly by a program that doesn't understand GPT
  partition tables.  Or perhaps you deleted the GPT table, and are now using an
  msdos partition table.  Is this a GPT partition table?
  Yes/No? n                                                                 
  (parted)

  Here you can see that parted has detected and identified the issue,
  but when explicitly told that it's NOT a GPT disk, it ignores the
  valid MBR partition table and instead presents the disk as
  unpartitioned.

  (parted) print
  Warning: /dev/sda contains GPT signatures, indicating that it has a GPT table.
  However, it does not have a valid fake msdos partition table, as it should.
  Perhaps it was corrupted -- possibly by a program that doesn't understand GPT
  partition tables.  Or perhaps you deleted the GPT table, and are now using an
  msdos partition table.  Is this a GPT partition table?
  Yes/No? yes                                                               
  Error: The backup GPT table is corrupt, but the primary appears OK, so that will
  be used.
  OK/Cancel? ok                                                             
  Model: ATA VBOX HARDDISK (scsi)
  Disk /dev/sda: 111GB
  Sector size (logical/physical): 512B/512B
  Partition Table: gpt

  Number  Start   End     Size    File system  Name                  Flags
   2      2371MB  2505MB  134MB                Microsoft basic data  msftdata
   3      2505MB  77.7GB  75.2GB  ntfs         Microsoft basic data  msftdata

  This continues from before and shows what happens when parted is told
  to use the (technically invalid) GPT data structures.

  Potential consequences:

  Consider a user who has a computer with Windows 8 pre-installed in EFI
  mode (therefore using GPT) and and who then decides to install Windows
  7 in BIOS mode (therefore using MBR). The result will be similar to
  what's described here -- an MBR partition table with leftover GPT
  data, from which Ubquity will extract the GPT data (or perhaps show
  the disk as unpartitioned, if online reports are accurate). Worse, the
  user might not notice the problem until Ubiquity/libparted has
  resurrected the now-invalid GPT data, therefore trashing the new
  Windows 7 installation. Many similar scenarios are possible. I've seen
  reports of problems like this in the real world, but unfortunately I
  haven't saved URLs.

  I'm attaching log files from an attempt to install to the disk
  represented by the above partitioning tools' output.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1351071/+subscriptions



More information about the foundations-bugs mailing list