Index Software

Solaris Partition Editor

Status

At the end of 2005, mostly working.

February 2006, fixed a few issues.

March 2006. Fixed some layout issues. Fixed quite a few bugs in the calculation of CHS values from LBA.

Mid March 2006. Completed setting CHS from LBA.

September 2007. Tested on my new HP workstation.

Feedback

I would appreciate any feedback.

License

GPL, using Qt 3.3.6. I'm no fan of the GPL, but using Qt leaves me no choice (well, I could buy a commercial Qt licence). I leave it to your conscience to make a donation. I don't wish to make any profit out of this. You can contact me here

Screenshot

Taken on my Mac, ssh logged into my PC running Solaris 10u4.

Screenshot of pfdisk

Download

First you'll need the dynamic libraries.

Download a binary compiled for Solaris 10 x86 pfdisk_bin.tar.bz2.

The source code pfdisk_src.tar.bz2.

Known Defects

  1. Disks that are not mounted don't get loaded into the Disk list on the first run of the application. I can see a kernel message (from dmesg) referring to such a disk, so I guess I ought to check the errno to see if I can retry.

Instructions

Uncompress and untar the file (bin and lib). I suggest that you create a little script that contains

#!/bin/sh
/etc/init.d/volmgt stop
LD_LIBRARY_PATH=[path to directory containing pfdisk and libraries]
export LD_LIBRARY_PATH
[path to directory containing pfdisk and libraries]/pfdisk
/etc/init.d/volmgt start

Then run the script as root. The application won't start if you are not root. Stopping vold is optional. If vold is running then you may get warnings about being unable to open vold-controlled devices.

Notes

Tested configurations Basically, it "works on my two machinesTM". That is a PIII running Solaris 10, SCSI disks only, and a dual Opteron 2220 also running Solaris 10, SAS disks only. I did try it briefly on my wife's IDE-equipped PC. That's pretty a slim test coverage.

Related Links

A basic intro to multibooting
A non-authoritative guide to cross-OS filesystem mounting.
You may also be interested in my ports of the Linux ext2fs driver, which can be found back at the main software page.

Specifications

The app will have the appearance of (now) Norton ptedit, but with a bit more intelligence. I do not intend making a tool 'for dummies' like Partition Magic, and neither do I intend adding filesystem formatting functions. This tool will edit the partition table(s) and that's all. If you are a dummy, then please stop now.

The most common use that I foresee is for someone that wants to multiboot, and after installing Solaris, they want to fix the partition table(s) so that the CHS values correspond to the LBA values. However, I must say that the usefulness of this application (latter half of 2005) is somewhat limited by two factors. Firstly, with the advent of OpenSolaris, it seems to me quite likely that a fixed version of fdisk for Solaris x86 might see the light of day. The second factor is the fact that current hard disks have completely outgrown the CHS geometry mechanism. A 140Gbyte disk, split into 4 equal 35Gbyte partitions will only have the start of the 1st partition fall within the CHS geometry limitations. [which is always the case, no matter how big the disk].

Here are my milestones for the project:

  1. Command line mini apps for proving feasability of reading partition tables and enumerating hard disks in the PC. Done.
  2. Basic GUI which displays the partition table(s) in hex/decimal/octal. Done.
  3. Input validation (valid hex/decimal/octal, and within allowed range, e.g., 0 - 255 for partition type). Done.
  4. Reading the contents of the GUI back into the backing data. Done.
  5. Semantic validation (CHS and LBA match, partitions on cylinder boundaries, partitions do not overlap). This will probably be a kind of text report in a dialog, or perhaps a "wizard" dialog. Well advanced. Wizard framework is done. Implemented checks for overlapping partitions, duplicate partition types, gaps between partitions and partition table out of order (compared to disk).
  6. Set CHS from LBA. Done with help from Knuth's TAOCP
  7. Layout problems. The layout consists of a row of vertically distributed groups. The problem is that the distribution in each column isn't always the same. this means that the vertical alignment can sometimes be a bit ragged. Done
  8. Save edited partition tables. Done.
  9. Use CVS or whatever for proper version control. Done I was thinking of giving subversion a go, but I was put off by the web server feel of it. In the meantime, I stumbled over a web ad for perforce. They even support Solaris x86 (though not the visual client, yet). It seems easy enough to use.
  10. Simplify the code to be generic for all 4 partition table entries. Done.
  11. Work correctly when vold is running.Don't think that this is necessary
  12. Find out why startup is so slow. Done - dangling devices in /dev/rdsk made calls to the stat system call very slow.

I'm not going to commit myself to any hard timescale - I'll be doing this in my spare time in the evenings, and I do have family commitments. I started this project back in the Summer of 2004, and it looks like it'll be more or less complete by October 2005. I know that's pitiful progress.

There are a few other things that I'd like to do:

  1. Make a pkgadd installer. Build with -R and stop using LD_LIBRARY_PATH.
  2. Make backups of partition tables to regular files (a bit of a 'dummy' feature). Done.
  3. Support for extended partitions. Maybe not though.
  4. Support for symbolic representation of partition types as per e.g., /usr/include/sys/dktp/fdisk.h. Possibly implemented as tootips when the cursor is over the the Type entry fields. Done

At the moment I'm using Solaris 10. I do have the Solaris 7, 8 and 9 media, but I don't intend building on those platforms unless there really is demand.



pfdisk hit counter.

Copyright © Paul John Floyd 2004 - 2007.

Valid HTML 4.01!