SCO OpenServer 5 - saprykin/plibsys GitHub Wiki

Configurations

Version Compilers Status Tests
5.0.7 (x86) GCC 2.95.3 Compiled Passed

About

Currently OpenServer is distributed by Xinuos, developed by SCO. OpenServer is a closed-source shareware so you must buy a license after a trial period. You can download evaluation version (x86) from the SCO server. This ISO is capable to run on VMware (or similar virtualization platform which supports x86). Lot of additional software packages are available from the Skunkware repository, but CMake is not available.

Installation

For package management you can use the same pkgadd and pkgrm commands as for UnixWare, but some software comes in form of media images (files named like VOL.000.000 after extracting from a VOLS archive). To install those files:

  • Put them into an empty directory (i.e. /tmp/foobar).
  • Run the scoadmin software command and select the menu items Software->Install New.
  • Select your host and, when prompted for the Media Device, select Media Images (you may need to scroll down the list) and Continue.
  • When prompted for the Image Directory, type in /tmp/foobar or whatever is the name of the directory containing the extracted media images.
  • Select OK and proceed.

If you need to skip media image prerequisities checking just create an empty file with the same name as the images directory plus .nocheck: touch /tmp/foobar.nocheck.

To get working GCC 2.95.3:

  • Make sure that you have installed the latest Maintenance Pack (MP) for your system (MP5 for OpenServer 5.0.7).
  • You may also need to install gwxlibs package on older systems (MP5 already contains it).
  • Install GNU Development Tools package. You may need to disable system requirements checking for that package if it fails.
  • Install SCO OpenServer Linker and Application Development Libraries package from the boot CD (there is no GNU linker for OpenServer 5 due to lack of the COFF weak symbols implementation).
  • Add /usr/gnu/bin to your binary search path. Also place /usr/bin/ar and /usr/bin/ranlib links to /usr/gnu/bin/gar and /usr/gnu/bin/granlib, respectively.

From now it is better to use GNU make utility instead of the native one (if you have it at all).

On some systems, default limits on the maximum size of shared memory segments can be set too low, like 512 KB. To pass the tests, at least 1 MB is required. To change the limits:

cd /etc/conf/cf.d
./configure SHMMAX=<value_in_bytes>
./link_unix

You can also check current limits using ./configure -y SHMMAX command. Reboot the system to make changes into effect.

QEMU

OpenServer can be run in QEMU taking into account some possible caveats:

  • Use standard pc machine profile with a single CPU core.
  • Disable USB keyboard/mouse inputs and use pcnet card for networking.
  • Drives shall be attached to IDE, and HDD should come before CD-ROM.
  • During the installation, select Microsoft PS/2 mouse. X-server, however, will not be able to handle it proper due to the problems with a wheel. To fix it, add kbm.wheel=no to the end of DEFBOOTSTR definition in /etc/default/boot.
  • DHCP does not really work when configured from GUI, use dhcpc -i <interface> to configure it manually.

An example of QEMU command to run is below:

qemu-system-i386 -m 1024 -M pc \
  -drive file=sco.qcow2,id=main_hdd,if=none,format=qcow2,media=disk \
  -device ide-hd,bus=ide.0,drive=main_hdd,bootindex=0 \
  -drive if=none,media=cdrom,id=main_cd,readonly=on \
  -device ide-cd,bus=ide.1,drive=main_cd,bootindex=1 \
  -nic user,model=pcnet,mac=52:54:00:6a:40:f8,hostfwd=tcp::10022-:22

Note. Do not install MP5 as it makes the system non-bootable due to some problems with disk drivers. To get bash or some other packages, use Skunkware directly or find them elsewhere.

Building CMake

CMake 2.8.12.2 compiles fine, although it might be possible to compile 3.x branch as well. The building process is easy.

  • You need to place proper /usr/include/elf.h header file instead of the system one which lacks several structures and definitions. You can take proper file from the glibc.
  • Setup GCC environment variables explicitly: set CC to /usr/gnu/bin/gcc, CXX to /usr/gnu/bin/g++, CPP to /usr/gnu/bin/cpp.
  • We also need to tell that GCC is C99 compliant. Set CFLAGS and CXXFLAGS environment variables to -D__STDC__ -D__STDC_VERSION__=199901L (you may only need this for CMake versions lower than 2.8.12.2).
  • Run CMake bootstrap process with ./bootstrap command.
  • Now you can compile CMake with make command and after that build installation packages with make package command.

Building FSU Pthreads

Before moving next, compile and install FSU Pthreads 3.14. You must compile it with GCC as you cannot mix object files from different compilers.

  • Make sure that -DMALLOC is appended to CFLAGS variable in Makefile of src sub-directory. If not, then add it manually. Also, uncomment building in the malloc sub-directory.
  • Run building with make command. Comment out any redefined structures in library's headers.
  • Install library with make install command.
  • Note. Do not run configure script because Makefile is tuned for OpenServer 5 and you will lose all required changes.

Now you are ready to build the library. Make sure that libmalloc.a in /usr/lib will be found first by the linker.

Additional references

⚠️ **GitHub.com Fallback** ⚠️