[an error occurred while processing this directive]

How do I add a 8 GB or greater ATAPI drive to Solaris 7 or earlier?

Solaris 8 has support for large ATAPI drives built-in.
For SCSI drives, there's no such restriction.
However, if you have
Solaris 7 or earlier, there's an 8 GB restriction on large hard drives,
even in LBA mode.
There is a workaround for this limit however, by following these instructions:

To add a drive for Solaris 7, you need a BIOS that supports
drives greater than 8.4GB in LBA mode.
Check with the computer manufacturer. BIOS upgrades may also be available if
your system currently does not support large drives.

You also need to find out the
total number of sectors available on the drive.
Solaris 7 or earlier cannot read the extended information on the drive,
so the information will need to be obtained from the manufacturer.
If the manufacturer only provides the total number of bytes, then
divide that number by 512 to obtain the total number of sectors.
NOTE: Ignore the 16383x16x63 (or whatever) listed on the drive --
this equates to an 8.4GB drive and is not applicable to large drives.

To configure the drive:

  1. Set the drive mode to LBA in the BIOS setup.

  2. Boot Solaris.

    WARNING! Continuing will destroy any partitions that are on this drive.

  3. Create a disk geometry file for Solaris.


    Our formula: x * y * z = s.
    Where x is the number of cylinders
    (x cannot exceed (2**14) - 1 = 16383),
    y is the number of heads,
    z is the number of sectors per track,
    and s is the total number of sectors available on the drive.
    By setting y = 1, we get the following:

    x * 1 * z = s, or x * z = s. By further setting x = 16383,
    we get: 16383 * z = s.

    Solve for z (number of sectors per track): z = s / 16383.
    For example:

    Western Digital AC 418000 (18.2GB) - Total sectors = 35,239,680.
    35,239,680 / 16383 = 2150.99 = 2150

    NOTE: All results must be rounded down. Solaris reserves three
    cylinders, so making x smaller would end up wasting space.

    Create a file called "geometry" like the following
    (using our example above) where NSECT is the value solved for z (2150):

    * Label geometry for device /dev/rdsk/c0d0p0
    16383 16383 2 0 1 2150 512

  4. Run fdisk in Solaris using the new geometry file:

    fdisk -S geometry -I /dev/rdsk/c1d0p0

    Replace "/dev/rdsk/c1d0p0" with your raw disk device
    (The trick is to let fdisk ignore the geometry reported by the
    BIOS and use the geometry specified in file "geometry" instead).

  5. From here on, you can format, partition, and make filesystems on
    the drive in the usual manner.

For details see the fdisk(1M), prtvtoc(1M), and fmthard(1M) man page.

[Thanks to Pete Howell and Juergen Marenda]

[an error occurred while processing this directive]