Understanding Platform Differences
Xi-Text and Xi-Batch run across multiple Unix and Linux platforms. While the core functionality remains consistent, several platform-specific differences affect installation, configuration, and operation.
Supported Platforms
Xi Software has been deployed on:
HP-UX : HP-PA RISC and Itanium systems
AIX : IBM POWER systems
Solaris : SPARC and x86 systems
Linux : Multiple distributions (Red Hat, CentOS, Rocky, Ubuntu, SUSE)
FreeBSD and other BSD variants : Platform-specific builds available
Installation Media Format
CD-ROM installations : Some platforms mount CDs as executable file systems, others require extracting xi.tar to scratch directory
Tape installations : Device names vary by platform:
- Solaris: /dev/rmt/0
- AIX: /dev/rmt0
- Linux: /dev/st0
- HP-UX: /dev/rmt/0m
FTP distributions : Platform name encoded in tar filename (e.g., IBM-aix4.3-050120.tar)
Directory Conventions
Base Directories
Traditional Unix (/usr/spool) : HP-UX, AIX, Solaris typically use /usr/spool for spool directories
Modern Linux (/var/spool) : Linux distributions often prefer /var/spool for spool data
Custom locations : Use -b option during installation to specify alternate base directory
User Binary Locations
System directories : /usr/bin - Avoid for third-party software : /bin - Reserved for system essentials
Local directories : /usr/local/bin - Common choice for third-party tools : /opt/xi/bin - Application-specific path option
Platform conventions vary. Linux Filesystem Hierarchy Standard (FHS) suggests /usr/local or /opt for third-party software.
User and Group Management
User Creation
Linux (useradd)
bash
useradd -r -s /bin/false -c "Xi Software Spooler" spooler
Solaris (useradd)
bash
useradd -d /var/spool/xi -s /bin/false -c "Xi Software" spooler
AIX (mkuser)
bash
mkuser home=/var/spool/xi shell=/bin/false spooler
HP-UX (useradd)
bash
useradd -g users -d /var/spool/xi -s /bin/false spooler
Password File Location
Most platforms : /etc/passwd for local users
NIS/YP networks : User information distributed via network directory service
LDAP : Centralised directory may require additional configuration
Xi Software reads standard Unix password database. Ensure spooler/batch users visible to system regardless of directory service.
Device Naming Conventions
Serial Devices
Linux : /dev/ttyS0, /dev/ttyS1, etc.
Solaris : /dev/term/a, /dev/term/b, etc.
HP-UX : /dev/tty0p0, /dev/tty1p0, etc.
AIX : /dev/tty0, /dev/tty1, etc.
Parallel Devices
Linux : /dev/lp0, /dev/lp1
Solaris : /dev/lp (single parallel port)
HP-UX : /dev/lp
AIX : /dev/lp0
Network Printers
Most platforms support network printers via terminal servers or network print protocols. Device specification in Xi-Text uses angle brackets: <printserver:port>.
IPC Facilities
Shared Memory
System V IPC : All platforms support System V shared memory, message queues, and semaphores
Memory-mapped files (newer Xi-Text releases) : Replace shared memory segments with file-backed mappings for better recovery
File locking (newer releases) : Replace semaphores with file locks for improved portability
IPC Limits
Different platforms impose different limits on IPC resources:
Linux : Check/modify /proc/sys/kernel/shmmax, /proc/sys/kernel/shmmni
Solaris : Configure in /etc/system, requires reboot
HP-UX : Use kctune to adjust kernel parameters
AIX : Modify /etc/tunables/nextboot
Xi Software typically operates within default IPC limits, but high-volume installations may require tuning.
Networking
Service Files
All platforms use /etc/services for service-to-port mapping. Xi Software adds entries during network installation:
xitext-api 9998/tcp xitext-sched 9999/tcp xibatch-api 10000/tcp xibatch-sched 10001/tcp
Port numbers may vary. Ensure firewall rules permit communication on assigned ports.
Host Resolution
Hosts file (/etc/hosts) : Xi Software reads standard hosts file
DNS : Fully qualified domain names (FQDNs) supported
Mixed resolution : Some hosts via /etc/hosts, others via DNS
Xi Software network configuration in /etc/Xitext-hosts or /etc/Xibatch-hosts references hostnames. Ensure name resolution works consistently across platforms.
Terminal Handling
Terminfo vs Termcap
Modern systems (Linux, Solaris, recent HP-UX) : Use terminfo database in /usr/share/terminfo/
Older systems : May use termcap (/etc/termcap)
Xi Software character-mode interfaces (spq, btq) use terminfo/termcap for screen control. Ensure terminal definitions exist for terminal types in use.
Terminal Types
Set TERM environment variable appropriately:
Physical terminals : TERM=vt100, TERM=wyse60, etc.
Terminal emulators : TERM=xterm, TERM=rxvt, TERM=screen
SSH sessions : Usually auto-detected as xterm or xterm-256color
Mismatched TERM settings cause display corruption in spq/btq.
File System Differences
Maximum Path Length
Most platforms : 1024 characters (PATH_MAX)
Some platforms : 256 characters
Xi Software generates paths for spool files, printer directories, and job scripts. Deeply nested directory structures may exceed limits on some platforms.
File Locking
fcntl() locking (preferred) : Advisory locks using fcntl(), supported universally
flock() locking : BSD-style locking, not available on all platforms
NFS considerations : Network file systems may not fully support file locking. Avoid placing spool directories on NFS mounts.
File System Types
Local file systems (ext4, xfs, zfs, jfs, vxfs) : Recommended for spool directories
Network file systems (NFS, SMB/CIFS) : Not recommended due to locking and performance issues
Temporary file systems (tmpfs, ramfs) : Unsuitable for spool directories (data loss on reboot)
Shell Differences
Default Shells
Linux : /bin/bash typically default
Solaris : /bin/sh (POSIX shell) or /bin/bash
HP-UX : /bin/sh (POSIX), /bin/ksh available
AIX : /bin/ksh (Korn shell) typically default
Xi-Batch command interpreters reference specific shell paths. Verify shells exist at expected locations during migration between platforms.
Shell Script Compatibility
Scripts generated by Xi Software (job scripts, migration scripts) use POSIX-compatible shell constructs. However, interpreter paths in job scripts may need adjustment:
Original (Linux)
bash
#!/bin/bash
Modified (HP-UX)
bash
#!/usr/bin/ksh
Character Encoding
ASCII vs UTF-8
Traditional Unix : ASCII (7-bit) character sets
Modern Linux : UTF-8 Unicode encoding
Xi-Text handles text files. Character encoding mismatches between systems can cause display issues for non-ASCII characters (accented characters, currency symbols).
Set LC_ALL or LANG environment variables consistently across platforms:
bash
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
System Startup Integration
Init Systems
SysV init (traditional Unix, older Linux) : Scripts in /etc/init.d/, links in /etc/rc*.d/
systemd (modern Linux) : Unit files in /etc/systemd/system/
Upstart (Ubuntu, some others) : Configuration in /etc/init/
launchd (macOS, if supported) : Plist files in /Library/LaunchDaemons/
Xi Software installation attempts to create appropriate startup scripts. Verify scheduler starts on boot after installation.
Manual Startup Configuration
SysV init example (Solaris, HP-UX, AIX):
bash
# Create startup script
cat > /etc/init.d/xitext << 'EOF'
#!/bin/sh
case "$1" in
start)
/usr/spool/progs/spstart
;;
stop)
/usr/spool/progs/sstop -y
;;
esac
EOF
chmod 755 /etc/init.d/xitext
ln -s /etc/init.d/xitext /etc/rc3.d/S99xitext
ln -s /etc/init.d/xitext /etc/rc0.d/K01xitext
systemd example (modern Linux):
bash
# Create unit file cat > /etc/systemd/system/xitext.service << 'EOF' [Unit] Description=Xi-Text Print Spooler After=network.target [Service] Type=forking User=spooler ExecStart=/usr/spool/progs/spstart ExecStop=/usr/spool/progs/sstop -y Restart=on-failure [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable xitext systemctl start xitext
Licence Portability
Platform-specific licences : Licence keys encode platform and hostname information
Migration requirements : New licence required when changing platforms or hostnames
Trial licences : 30-day trial automatically generated during installation
Contact Xi Software support or visit website to obtain new licence for platform migrations.
Binary Compatibility
No cross-platform binaries : Xi Software builds are platform-specific
Architecture matching : Ensure correct build for CPU architecture (32-bit vs 64-bit, SPARC vs x86, etc.)
Mixed environments : Network multiple platforms with platform-specific Xi installation on each host
Performance Characteristics
Shared Memory Performance
Different platforms exhibit different shared memory performance:
- Linux: Generally fast, especially on modern kernels
- Solaris: Optimised for large memory systems
- HP-UX: Performance tuning available via kernel parameters
- AIX: Strong performance on POWER architecture
File I/O Performance
File system type impacts Xi Software performance:
- Solaris ZFS: Excellent for spool directories
- Linux ext4/xfs: Well-tested and performant
- HP-UX VxFS: Enterprise-grade reliability
- AIX JFS2: Optimised for POWER systems
Local storage always performs better than network storage for spool directories.
Best Practices for Multi-Platform Environments
Consistent directory structure : Use same base directories across all platforms (/opt/xi consistently)
Standard user IDs : Assign same UIDs/GIDs for spooler/batch users on all systems
Centralised network configuration : Maintain single master hosts file, distribute to all systems
Platform documentation : Document platform-specific settings (device names, shells, paths)
Testing migration scripts : Test backup/restore scripts between platforms before production use
Scheduled maintenance windows : Plan platform migrations during low-activity periods
Rollback procedures : Keep old system available during parallel operation phase
Migration Checklist by Platform
From Solaris to Linux:
- Adjust device paths (/dev/term/a → /dev/ttyS0)
- Update shell paths in job scripts (/bin/ksh → /bin/bash)
- Modify systemd startup instead of SysV init
- Verify terminfo entries for terminal types
- Obtain new Linux-specific licence
From HP-UX to Solaris:
- Change device naming conventions
- Update printer setup files with correct device paths
- Adjust IPC kernel parameters if needed
- Test file locking on target file system type
- Obtain new Solaris-specific licence
From AIX to Linux:
- Update shell interpreter paths
- Modify device references in printer configs
- Convert startup scripts to systemd units
- Verify character encoding settings
- Obtain new Linux-specific licence
Each platform pair has unique considerations. Thorough testing in non-production environment essential before production migration.
⚠️ WARNING: Platform migrations require new licence keys
Xi Software licences are platform-specific. Obtain appropriate licence for target platform before migration. Trial licences available for testing.
⚠️ WARNING: Test thoroughly before production migration
Platform differences can cause subtle issues. Always perform complete test migration to non-production system first, verify all functionality, then proceed to production.
⚠️ WARNING: Spool directories must be on local file systems
Never place spool directories (/usr/spool/spd, /var/spool/xi/batch) on NFS or other network file systems. File locking and performance issues will occur.