Back to Knowledege base

Platform-Specific Migration Considerations

Understanding differences between Unix and Linux platforms when deploying or migrating Xi-Text and Xi-Batch

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.

Migrating Between Systems
Exporting and importing configurations, jobs, and settings when moving to new hardware or OS versions