More on "Unreadable" Partition Tables

Chuck Anderson cra at WPI.EDU
Sat Oct 11 19:11:45 UTC 2008


On Sat, Oct 11, 2008 at 12:34:54PM -0600, Michal Jaegermann wrote:
> Not necessarily.  /dev/sda4 sits between sda10 and sda11 but
> /dev/sda3 is extended.  Things are out of order and that may be
> not to liking of some tools.

Of course I meant to say "sda3" everywhere I said "sda5".

So this is the physical sector order of those partitions:

Device Boot      Start         End      Blocks   Id  System
/dev/sda3            6506       24379   143572905    f  W95 Ext'd (LBA)
/dev/sda10          18021       19258     9944203+  83  Linux
/dev/sda4           19259       21808    20482875   83  Linux
/dev/sda11          21809       24379    20651526   83  Linux

I wasn't aware that it was legal to punch a hole in an extended 
partition with a non-extended partition.  Looking at this another way, 
I wasn't aware that an extended partition could consist of 
non-contiguous extents of sectors.

> Nah!  This shold be very simple to do.  Redirect an output
> of 'sfdisk -d /dev/sda' to a file, edit results to put that
> into an order and feed that to sfdisk back.  This should be it.
> Rewrites of partition tables do not touch file systems although
> fstab may need some fixups depending on how it was done.

I wonder if the sda4 partition has reserved space at the beginning of 
it for the partition table sector required in extended partitions.  
There are usually 63 sectors between extended logical partitions, 
unlike primary partitions which don't reserve that extra space.

Posting the output of:

sfdisk -d -x /dev/sda

would be helpful.  For example here's one of mine:

#sfdisk -d -x /dev/sdb
# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=       63, size=   273042, Id=83, bootable
/dev/sdb2 : start=   273105, size=   273105, Id=83
/dev/sdb3 : start=   546210, size=311950170, Id= 5
/dev/sdb4 : start=        0, size=        0, Id= 0

/dev/sdb5 : start=   546273, size= 77995512, Id=8e
    -     : start= 78541785, size= 77995575, Id= 5
    -     : start=   546210, size=        0, Id= 0
    -     : start=   546210, size=        0, Id= 0

/dev/sdb6 : start= 78541848, size= 77995512, Id=8e
    -     : start=156537360, size= 77995575, Id= 5
    -     : start= 78541785, size=        0, Id= 0
    -     : start= 78541785, size=        0, Id= 0

/dev/sdb7 : start=156537423, size= 77995512, Id=8e
    -     : start=234532935, size= 77963445, Id= 5
    -     : start=156537360, size=        0, Id= 0
    -     : start=156537360, size=        0, Id= 0

/dev/sdb8 : start=234532998, size= 77963382, Id=8e
    -     : start=234532935, size=        0, Id= 0
    -     : start=234532935, size=        0, Id= 0
    -     : start=234532935, size=        0, Id= 0

So sdb2 starts with a partition table sector at 546210.  This 
partition table sector describes sda5 which starts 63 sectors later at 
546273.

For the OP's partition table, if sda4 was originally created as a 
primary partition, then it won't have this 63 sector gap before the 
filesystem data begins.  I don't know if this matters or not...




More information about the fedora-test-list mailing list