AIX Application Binary Compatibility
and the Apple Network Server
The Apple Network Server represents a new family of purpose-built, high-performance
servers. The new systems are designed around an innovative, standards-based
server architecture optimized for high performance and scalability while
providing balance and flexibility. These advanced server capabilities reflect
direct customer input, providing a full-featured server at low cost.
Most of the thousands of AIX® 4.1 applications running today on IBM's
RS/6000 platforms should run on AIX for the Network Server without any modification.
Exceptions include those applications with specific hardware dependencies
and applications which do not yet run on AIX 4.1 due to incompatibilities
between IBM's implementation of AIX 4.1 and previous releases of AIX.
This document will provide a brief introduction to Network Server hardware
and the AIX 4.1 operating system and will discuss hardware and software
considerations relating to application binary compatibility.
IBM's AIX 4.1 represents a state-of-the-art UNIX operating system adhering
to accepted industry standards including IEEE POSIX, FIPS 151-2, and XPG4.
AIX 4.1 is also designed to meet the emerging common application interface
as defined by Spec 1170. AIX features supported include:
JFS - Journaled File System with mirroring and striping
UNIX networking including NFS, TCP/IP
Common Desktop Environment (industry standard UNIX GUI)
System Management Interface Tool and Visual System Manager.
Apple has hosted the AIX 4.1 operating system on high-performance hardware
designed to be a great server platform. AIX 4.1 provides a high-performance
base operating system on which to run higher-level services such as file,
print, and database. Additional Apple value-added features required by our
customers are also provided.
To meet these needs, the Network Server integrates a number of complex technologies
from several sources.
PowerPC® RISC processor technology from IBM, Motorola and Apple.
IBM's AIX 4.1 including UNIX networking and AIX Windows (X and Motif).
Berkeley-style sockets and TLI-compliant AppleTalk protocol stack,
with routing support for multiple Ethernet interfaces.
Third-party solutions such as backup and file/print services.
Network Server Hardware
The following hardware features are important from the point of view of
the software and may affect applications compatibility and performance.
604 PowerPC CPU, 132Mhz or 150 Mhz
up to 1 MB level-two cache
two PCI expansion buses (6 slots)
integrated, on-board I/O
two fast and wide SCSI-2 controllers: 20 MBytes/sec/channel (internal
devices only)
one SCSI-1 interface: 5 MBytes/sec (external devices only)
AAUI Ethernet interface (10 MBits/sec)
2 DIN-8 serial ports
8-bit (256 colors) SVGA video adapter
SWIM III floppy controller
Apple Desktop Bus interface
80 character front-panel LCD for diagnostics
32K NVRAM
three-position keyswitch
native boot using the Open Firmware model and device tree
Binary
Compatibility Overview
Binary compatibility means that a compiled program (the executable) can
be taken from one platform to another platform without having to either
recompile it or make source code changes. Most applications will be binary
compatible with AIX 4.1 running on the Network Server because in most cases,
differences in hardware that may affect binary compatibility are masked
by the operating system environment and are not visible to the application
layer In order to ensure application binary compatibility, Apple continues
to work with many different ISVs.
Application Binary Interface (ABI)
The IBM AIX 4.1 ABI defines all the elements developers need to create applications
that will install, execute, and run unmodified on AIX 4.1. This includes
such key definitions as loading and linking conventions, object formats,
the execution environment, networking infrastructure, and installation and
packaging information. The core of this definition consists of the AIX 4.1
application programming interfaces (API). Apple has added some additional
interfaces to its value added subsystems (e.g., AppleTalk) and has by necessity
deleted interfaces that support IBM-specific hardware.
For UNIX users, the AIX 4.1 ABI provides platform binary compatibility based
upon leading edge hardware technology and software specifications. The AIX
4.1 ABI specification enables binary applications to run across AIX systems
from different vendors and to provide a standards-driven, open environment
for tomorrow's users today. Applications developed to the AIX 4.1 ABI should
run unmodified on AIX for the Network Server.
Application Programming Interface (API)
The API defines the set of system calls, library functions, header files,
commands and utilities that an application developer is allowed to use to
develop a compliant application. ISVs are mainly concerned with programming
to the API. Underlying the AIX API are key industry standards including:
There are about 3,000 AIX 4.1 applications listed in IBM's AIX Power
Solutions catalogue, which can be ordered from IBM, Document No. GC67-0210-04.
AIX applications listings are also available on the World-Wide Web. Apple
is in the continous process of testing the AIX binary compatibility of the
the Network Server platform and will provide more specific information on
selected applications as it becomes available.
Incompatible
Applications
The ability to take a compiled program (the executable) from one platform
to another platform and run it without having to make any code changes is
affected by many things. Certain applications may need some modification
if they are affected by any of the following.
The 604 processor
The Network Server platform uses the PowerPC 604 microprocessor, which does
not implement all of the instructions in the original POWER chipset or the
POWER2 architecture. If an application uses hand-coded assembly or compiler
options which result in instructions which are not implemented on the 604,
then the binary may not run on the Network Server platform. The operating
system attempts to mitigate this problem by emulating many of the unimplemented
instructions.
The PCI expansion bus
The Network Server platform's principal hardware incompatibility with the
existing base of AIX applications is its exclusive use of the PCI expansion
bus. Many of the current AIX platforms from other vendors use IBM's MicroChannel
Architecture (MCA) expansion bus or provide both MCA and PCI buses. If an
application depends on a specific MCA expansion card such as a multi-port
serial card or Centronics® printer, then a functionally equivalent PCI
card (and supporting AIX driver software) may not be available. Apple believes
the PCI expansion bus is established as a significant standard, and is working
with third parties to promote the availability of PCI cards and drivers
for the Network Server platform.
The system API, including interfaces for drivers and kernel extensions
Apple has adopted Open FirmWare to support PCI card self-configuration on
the Network Server and future platforms. Device driver writers will need
to develop Open FirmWare-based configuration methods to correctly invoke
their drivers on the Network Server platform. The relevant Open Firmware
issues are described in the Developer's Reference Guide for Apple Network
Server, a document available from Apple.
The libraries, commands and other system utilities
In AIX 4.1, the Korn shell, /bin/ksh, is linked to /bin/sh, which is traditionally
the Bourne shell. If an application uses a Bourne shell script which is
incompatible with the Korn shell, the procedures will not perform correctly
on AIX 4.1. Most Bourne shell scripts are compatible with the Korn shell,
however.
In addition, IBM reports in the AIX Version 4.1 Porting Guide that
some applications will run on AIX 3.2.5, but not AIX 4.1. Some of the problematic
system services are listed below.
XPG4-changed command output formats
Unsupported, loadable AIX kernel extensions
Certain high-function terminal APIs
IBM X input device programming interfaces instead of the X11R5 standard
input interfaces
Communications I/O LAN device driver programming interface
SCSI device configuration methods (IHVs)
nlist() interface
DCE threads
The resulting incompatibilities from the list above are not unique to Apple's
AIX implementation, but rather are due to changes introduced by IBM's transition
from AIX 3.2.5 to 4.1.
There are other factors affecting the availability of binary-compatible
applications for the Network Server.
Third party (ISV) application testing and certification
performance tuning considerations
Third party marketing efforts (sales training, technical support)
support for third party applications
Macintosh Applications
Mac OS-based applications are not supported on the Network Server, as the
Macintosh Application Environment (MAE) is not supported on AIX.
Conclusion
Many AIX applications running on IBM's RS/6000 platform are binary compatible
withe Network Server AIX 4.1 and will run without the need for recompilation
or modification. However, some applications that run on AIX 4.1 on IBM's
RS/6000 product will not automatically run on the Network Server running
AIX 4.1. These applications are dependent upon certain hardware features
which differ between the IBM AIX RS/6000 implementation and the Network
Server. In such cases, these applications will need to be changed or recompiled
before they can run on the Network Server. In particular, applications with
specific device driver dependencies may not run on the Network Server because
of the difference between the PCI bus architecture and the IBM AIX reference
platform MCA bus architecture.
It is expected that more applications will become available as emerging
standards such as the AIX Multi-Vendor Program help to maintain and ensure
compatibility between AIX implementations.
A copy of the AIX Version 4.1 Porting Guide and other developer-oriented material is available on the World-Wide Web.
The URL is http://www.developer.ibm.com.
This material can also be obtained directly from your local IBM representative
or branch office.