SCO OpenServer 5 - saprykin/plibsys GitHub Wiki
Version | Compilers | Status | Tests |
---|---|---|---|
5.0.7 (x86) | GCC 2.95.3 | Compiled | Passed |
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.
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.
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 ofDEFBOOTSTR
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.
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
andCXXFLAGS
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 withmake package
command.
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 toCFLAGS
variable in Makefile ofsrc
sub-directory. If not, then add it manually. Also, uncomment building in themalloc
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.