[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: tool to resize partitions on cylinder boundaries?

Olive wrote, On 12/12/06 19:09:
Arthur Marsh wrote:
I have a couple of 40 GB drives in a machine whose BIOS only supports hard disk drives up to 32 GiB. The motherboard (BIOStar M6TLC) manufacturer has confirmed that it is not possible to work around this limitation via a BIOS upgrade. Since installing Debian unstable in a dual boot arrangement with W98SE I have used the space between 32 GiB and 40 GB on each drive for a mirrored array.

However, cfdisk, fdisk and Partition Magic report problems with the first disk:

GNU parted reports:

# parted
GNU Parted 1.7.1
Using /dev/hda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit chs
(parted) p

Disk /dev/hda: 9693,15,62
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 9693,128,63. Each cylinder is 4129kB.
Partition Table: msdos

Number  Start     End          Type      File system  Flags
 1      0,1,0     3556,6,62    primary   fat32        boot, lba
 2      3556,7,0  8162,127,62  extended               lba
 5      3557,0,0  6054,127,62  logical   ext3
 6      6055,1,0  6296,127,62  logical   linux-swap
 7      6297,1,0  8156,127,62  logical   fat32
 3      8192,0,0  9692,127,62  primary   ext3


# fdisk /dev/hda

The number of cylinders for this disk is set to 4865.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1785    14337981    c  W95 FAT32 (LBA)
/dev/hda2            1786        4098    18575203+   f  W95 Ext'd (LBA)
Partition 2 does not end on cylinder boundary.
/dev/hda3            4113        4866     6052032   83  Linux
Partition 3 does not end on cylinder boundary.
/dev/hda5            1786        3040    10071936   83  Linux
/dev/hda6 3040 3161 975712+ 82 Linux swap / Solaris
/dev/hda7            3161        4095     7499488+   b  W95 FAT32

Command (m for help):

cfdisk /dev/hda

FATAL ERROR: Bad primary partition 2: Partition ends in the final partial cylind
                          Press any key to exit cfdisk

The irony is that I had actually resized the partitions on /dev/hda using GNU Parted but can't see how to adjust the partition sizes to satisfy fdisk/cfdisk/Partition Magic, even after doing a resize using CHS units to what is shown above. (The disk has free space either side of the /dev/hda2 partition).

I filed a Debian bug report (#402520) against parted about this problem, but wonder if anyone has a solution beyond backing up, wiping the disk and repartitioning?

I believe that Debian *should* provide a tool and documentation to easily resize partitions to satisfy the cylinder boundary requirements of fdisk/cfdisk, and proprietary programs such as Partition Magic.



You have to change the partition table with fdisk such that the new created partitions such does end from from a cylinder boundary (delete the offending partition and recreate it with the same start). You must be careful not to have overlapping partitions if you did with several partition. After the operation you can run fsck in the partition to verify all is correct (and it is a very good idea to save the partition table not on the same disk to be able to restore it in case of problems).


What I miss from SVR4 is the prtvtoc and edvtoc commands which would allow that changing of the partition table in a couple of easy steps.

As it is, it looks like I will need to run partimage to back the contents up to another another machine and then run the risky fdisk operation you describe.

Thanks for the suggestions,


Reply to: