Installation of Linux on Compaq Armada 7400/7800 Portables
7
0206-0799-A
A third option is to partition the hard disk during Linux setup. Both Linux distributions have options during installation
to do manual partitioning. In this case the CSP partition can be recognized by its type, 0x12. Should the CSP partition be
accidentally deleted then it can be restored using the CSP floppy or by downloading the Personal Computer Diagnostics
(PCD) from the same location. Restoration of CSP requires at least 16MB of free space on the hard drive. To restore,
first boot the PCD diskette, choose create diagnostic partition and then follow the instructions. One side effect of leaving
the CSP partition on the hard drive occurs when a boot loader program is installed into the MBR. Boot loaders replace
the MBR so they can control which OS is booted. When attempting to enter Compaq Setup for Portables using the F10
key during BIOS POST (Power on Self-Test) the BIOS will read the MBR to load and execute code in the MBR.
Therefore, the boot loader program is executed instead of loading the CSP partition. A work around is to add a selection
for the CSP partition to the boot loader menu. To access the CSP, let the boot loader start and select CSP from its menu.
When CSP is started from the hard drive it gives the user the choice of Setup or Diagnostics. If Setup is chosen then the
machine reboots into Setup. With the boot loader present the user need only choose the CSP entry again to finally enter
Setup.
Large Hard Drives
The latest Armada 7400 and 7800 models offer hard drives greater than 8GB in size. Linux supports large hard drives
because it accesses the hard drive on a sector basis (LBA) instead of the older cylinder-head-sector (CHS) method.
Compaq BIOS fully supports these large hard drives but maintains backward compatibility with older operating systems.
This backward compatibility is implemented by limiting the cylinders to 1023 and heads to 240. The 240-head limitation
prevents a fatal MS-DOS bug and the 1023 cylinder limit meets the original INT13 specification. The ATA hard drive
specification limits the total CHS reported by the drive to (16383,16,63) which gives a maximum drive size of 8GB. To
overcome these limitations and maintain backward compatibility with older operating systems Compaq uses the
following algorithm:
1.
Up until 7.8GB, drives report 15 heads
2.
After 7.8GB, drives report 16 heads and remain ATA compliant
3.
If ROM sees a drive that has 16 heads and greater than 8191 cylinders it
•
Issues an Initialize Drive Parameters command to 15 heads, 63 spt
•
Perform translation by using words 54, 55 and 56 instead of words 1, 3 and 6
•
The translated cylinder count is capped at 1023
4.
Extended INT13 services use ID words 60 & 61(total sector count) allowing access to the full capacity. The formula
used by the drive and BIOS is:
LBA = ((cylinder
X
number_of_heads) + head)
X
number_of_sectors
+
sector
–
1,
where LBA is Logical Block Address or sector number.
The hard drive is sent a command to instruct it to report the new CHS in ATA-ID words 54, 55 and 56. This new CHS
value is not capped at 1023 and follows the above rule, CHS=(0000,15,63). The ATA {IBM AT Attachment}
specification caps the cylinder value at 65535. The true total number of sectors in ID words are 60 and 61, this is the best
value to use. There are two Linux utility programs that exhibit this limitation. The first is the Linux fdisk program. Linux
fdisk does a HDIO_GETGEO call to the kernel to get disk geometry. During the boot process the kernel has four sources
for disk geometry, user command line boot parameter, BIOS, physical geometry from the IDE drive, and logical
geometry from the IDE drive. The order of use is command line parameters, BIOS, IDE drive information. The
algorithm is supposed to check the BIOS information and if it sees more than 16 heads it will use the IDE drive
information. Compaq has observed that the kernel is returning BIOS information in the HDIO_GETGEO call. Since the
BIOS limits CHS to (1023,240,63), the impact is that Linux fdisk will only allow access to the first 7.8GB of the hard
drive. There are two ways to improve on these limitations. The first method uses the extra functionality of the fdisk
command to change the cylinder value. In fdisk choose the x menu item (extra functionality). Next, choose c (change
number of cylinders). Enter the number of cylinders, which will allow fdisk to see the whole hard drive. The second
method, which is preferred during Linux installation, is to enter a kernel command line value. When booting during
installation, Linux should present a ‘boot:’ prompt. At this prompt the new drive geometry parameters are specified.
Currently there are two hard drives with capacity larger than 8GB for the Armada 7400 and 7800:
•
IBM Travelstar 14GS, model DCYA-214000 = 27,609,120 total sectors
•
IBM Travelstar 10GT, model DCXA-210000 = 19,640,880 total sectors
Example: