OSF/1 1.0: Unterschied zwischen den Versionen
Luna (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Luna (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== OSF/1 == | == OSF/1 == | ||
Before DEC sold Alpha machines running Tru64 aka Digital UNIX aka OSF/1, they had the DECstation line of MIPS based machines. DECstations ran an old school Unix named ULTRIX, which was at its core based on 4.2BSD. Back in the early 1990s DEC promised to port OSF/1 to the DECstation platform, a modern design with a Mach kernel. Later, after several announcements and a longer will-they-won't-they drama, DEC canceled OSF/1 on MIPS decided to focus on the Alpha platform. Even though OSF/1 never turned into a proper product and many customers were furious, DEC released developer releases for OSF/1. Distribution tapes for 1.0 and 2.0 have made their way into the internet. Back in the days, DEC never claimed that OSF/1 on MIPS was a stable product. It lacks support for a range of hardware and it never received fixes or support in the long run. Then again, ULTRIX, the main OS for the DECstation, was an insufferable mess of bugs on top of a stone age Unix. It matured over time, yet by the time it had reached a proper level of stability, it lacked a number of features. OSF/1 on MIPS isn't as bad as you might expect. It will run on contemporary R2000 and R3000 based DECstations. R4000 systems were never supported. DEC also marketed OSF/1 for realtime applications, a feature that somehow became unimportant for later OSF/1 and DEC Unix releases. | Before DEC sold Alpha machines running Tru64 aka Digital UNIX aka OSF/1, they had the DECstation line of MIPS based machines. DECstations ran an old school Unix named ULTRIX, which was at its core based on 4.2BSD. Back in the early 1990s DEC promised to port OSF/1 to the DECstation platform, a modern design with a Mach kernel. Later, after several announcements and a longer will-they-won't-they drama, DEC canceled OSF/1 on MIPS and decided to focus on the Alpha platform. Even though OSF/1 never turned into a proper product and many customers were furious, DEC released developer releases for OSF/1. Distribution tapes for 1.0 and 2.0 have made their way into the internet. Back in the days, DEC never claimed that OSF/1 on MIPS was a stable product. It lacks support for a range of hardware and it never received fixes or support in the long run. Then again, ULTRIX, the main OS for the DECstation, was an insufferable mess of bugs on top of a stone age Unix. It matured over time, yet by the time it had reached a proper level of stability, it lacked a number of features. OSF/1 on MIPS isn't as bad as you might expect. It will run on contemporary R2000 and R3000 based DECstations. R4000 systems were never supported. DEC also marketed OSF/1 for realtime applications, a feature that somehow became unimportant for later OSF/1 and DEC Unix releases. | ||
[https://groups.google.com/forum/?hl=en#!original/bit.listserv.esl-l/BovGe3q9yWE/cqlcCYfxmbAJ]This is the original release announcement from 1992. | |||
To install OSF/1 V1.0 you will need a supported harddisk to install the system. Supported disks include the RZ23 (100MB), RZ24 (200MB), RZ25 (400MB), RZ55 (300MB), RZ56 (600MB). It will work with the common 8bit 2D graphics cards. Some people say using a serial console does not work. That may or may not be true for some systems. | To install OSF/1 V1.0 you will need a supported harddisk to install the system. Supported disks include the RZ23 (100MB), RZ24 (200MB), RZ25 (400MB), RZ55 (300MB), RZ56 (600MB). It will work with the common 8bit 2D graphics cards. Some people say using a serial console does not work. That may or may not be true for some systems. | ||
[[Datei:Decstation3100.jpg|thumb|right|DECstation 3100]] | [[Datei:Decstation3100.jpg|thumb|right|DECstation 3100]] | ||
[[Datei:Osf1_mips.jpg|thumb|right|OSF/1 with a VT220 serial console terminal]] | |||
'''OSF/1 installation on a DECstation 3100''' | '''OSF/1 installation on a DECstation 3100''' | ||
Zeile 16: | Zeile 19: | ||
copy the files from the tapes to the new distribution directories. Create new subdirs: | copy the files from the tapes to the new distribution directories. Create new subdirs: | ||
Tin0Install -> MPK | Tin0Install -> MPK | ||
Tin1Kits -> BASE | Tin1Kits -> BASE | ||
Tin2Kits -> BASE (same dir as above) | Tin2Kits -> BASE (same dir as above) | ||
Tin3RT -> RT | Tin3RT -> RT | ||
create a subdir "instctrl" in all dirs. Untar the respective f03.instctrl.tar there. | create a subdir "instctrl" in all dirs. Untar the respective f03.instctrl.tar there. | ||
Rename all the files, so they can be found by the installation procedure, like: | Rename all the files, so they can be found by the installation procedure, like: | ||
mv f30.OSFDCMT100.tar.Z OSFDCMT100 | mv f30.OSFDCMT100.tar.Z OSFDCMT100 | ||
The | The end result should look like this: | ||
root@audrey:/export/binaries/dec/osf1/mips/osf1_1.0.1_mips/disk# find . | root@audrey:/export/binaries/dec/osf1/mips/osf1_1.0.1_mips/disk# find . | ||
Zeile 299: | Zeile 302: | ||
This is a suitable installation directory, but you will likely have no means to boot it on a real DECstation. | This is a suitable installation directory, but you will likely have no means to boot it on a real DECstation. | ||
So, we will call "ris" to the rescue. ULTRIX provides a great way to setup a remote installation server using "ris - Remote installation service". Make the distribution directory you just created available to a machine running a reasonably recent version (I tested 4.5) of ULTRIX. ULTRIX will be able to do cross-architecture installation, so any VAX or DECstation should be fine. You might even consider an emulated VAX using simh. For the following demonstration, the server will be a DECstation 5000/ | So, we will call "ris" to the rescue. ULTRIX provides a great way to setup a remote installation server using "ris - Remote installation service". Make the distribution directory you just created available to a machine running a reasonably recent version (I tested 4.5) of ULTRIX. ULTRIX will be able to do cross-architecture installation, so any VAX or DECstation should be fine. You might even consider an emulated VAX using simh. For the following demonstration, the server will be a DECstation 5000/240 running ULTRIX 4.5: | ||
root@io:~# ris | root@io:~# ris | ||
Zeile 342: | Zeile 345: | ||
Other DECstations will require other commands. | Other DECstations will require other commands. | ||
The remote installation then | The remote installation then starts by booting an ULTRIX 4.2 kernel (yes...), so you can partition a disk and copy a miniroot filesystem. It will then reboot to disk and start the OSF/1 kernel for the first time. The installation will go on normaly from this point on. | ||
-------------------------- | -------------------------- | ||
Zeile 408: | Zeile 411: | ||
--------------- | --------------- | ||
Enable serial console: | '''building a new kernel:''' | ||
cd /usr/sys/conf | |||
/usr/sys/bin/config NAME | |||
then cd to the ../NAME directory and: | |||
make depend && make | |||
then copy the kernel to / | |||
------------- | |||
'''Enable serial console:''' | |||
Some people say that OSF/1 does not support serial consoles on MIPS. I have personally seen that it just won't work with a DECstation 5000 some years ago, but never found a definitive answer. | Some people say that OSF/1 does not support serial consoles on MIPS. I have personally seen that it just won't work with a DECstation 5000 some years ago, but never found a definitive answer. | ||
However, it does work for the DECstation 3100 and OSF/1 V1.0. | However, it does work for the DECstation 3100 and OSF/1 V1.0. | ||
Configure the hardware: | Configure the hardware: | ||
Zeile 417: | Zeile 431: | ||
pull the framebuffer RAM module. | pull the framebuffer RAM module. | ||
In the firmware: | In the firmware (in theory): | ||
The 3100 needs: | |||
setenv console 8 | |||
other DECstations will need: | |||
setenv console "s". | setenv console "s". | ||
keep the mouse connected or install a mouse loopback connector. | keep the mouse connected or install a mouse loopback connector. | ||
Unfortunately, I have a DS3100 with an early firmware revision (V6.71), which for unknown reasons does not like any serial console setting. It always stops at "3.." in the selftest declaring "FAILURE". You need to push the reset button then to get to the ">>" prompt. Even as it uses the serial port as system console, this prevents it it from auto-booting. Just entering "auto" will make the system boot up fine from the ">>" prompt. | |||
Configure the OSF/1 software: | Configure the OSF/1 software: | ||
Zeile 462: | Zeile 482: | ||
then TERM=vt100; export TERM | then TERM=vt100; export TERM | ||
fi | fi | ||
PS1='\u@\h:\w\$ ' | |||
export PS1 | |||
CFLAGS="-I/usr/local/include -O" | |||
LDFLAGS="-L/usr/local/lib" | |||
CPPFLAGS="-I/usr/local/include" | |||
export CFLAGS LDFLAGS CPPFLAGS | |||
EDITOR=vim | |||
export EDITOR | |||
LANG=C | |||
LC_CTYPE=de_DE.88591 | |||
export LANG LC_CTYPE | |||
stty cs8 -istrip | |||
-------------- | -------------- | ||
disklabel a second disk: | '''disklabel a second disk:''' | ||
write new disklabel: | write new disklabel: | ||
Zeile 514: | Zeile 551: | ||
-------------- | -------------- | ||
Building GNU software: | '''Building GNU software:''' | ||
OSF/1 V1.0 ships with the MIPS C-Compiler 2.20. Thus, we are not completely lost. | OSF/1 V1.0 ships with the MIPS C-Compiler 2.20. Thus, we are not completely lost. | ||
Zeile 527: | Zeile 564: | ||
'''gcc-2.7.2.3:''' | '''gcc-2.7.2.3:''' | ||
./configure --enable-languages=c --disable-nls mips-dec-osf1 | |||
Note: I found out that c++ and f77 do not work correctly. | |||
shared libraries on OSF/1 don't work! Assembler errors like "undefined assembler operation: .gpword" are likely due to the use of "-fPIC", which does not work correctly. | |||
'''sed-3.0.2:''' | '''sed-3.0.2:''' | ||
will not build correctly with the native cc. Use gcc. | |||
'''grep-2.3:''' | '''grep-2.3:''' | ||
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../intl -DLOCALEDIR=\"/usr/local/share/locale\" -g -O2 -c btowc.c | |||
btowc.c:41: parse error before `btowc' | btowc.c:41: parse error before `btowc' | ||
btowc.c: In function `btowc': | btowc.c: In function `btowc': | ||
btowc.c:44: `WEOF' undeclared (first use this function) | btowc.c:44: `WEOF' undeclared (first use this function) | ||
btowc.c:44: (Each undeclared identifier is reported only once | btowc.c:44: (Each undeclared identifier is reported only once | ||
btowc.c:44: for each function it appears in.) | btowc.c:44: for each function it appears in.) | ||
btowc.c:44: `wint_t' undeclared (first use this function) | btowc.c:44: `wint_t' undeclared (first use this function) | ||
btowc.c:47: parse error before `c' | btowc.c:47: parse error before `c' | ||
make[2]: *** [btowc.o] Error 1 | make[2]: *** [btowc.o] Error 1 | ||
make[2]: Leaving directory `/usr/local/compile/grep-2.3/src' | make[2]: Leaving directory `/usr/local/compile/grep-2.3/src' | ||
make[1]: *** [all-recursive] Error 1 | make[1]: *** [all-recursive] Error 1 | ||
make[1]: Leaving directory `/usr/local/compile/grep-2.3' | make[1]: Leaving directory `/usr/local/compile/grep-2.3' | ||
make: *** [all-recursive-am] Error 2 | make: *** [all-recursive-am] Error 2 | ||
There is an ifdef broken here. fix btowc.c by deleting the ifdef around the typdef unsigned int wint_t. | There is an ifdef broken here. fix btowc.c by deleting the ifdef around the typdef unsigned int wint_t. | ||
'''texinfo-4.8:''' FAIL | '''texinfo-4.8:''' FAIL | ||
mips-dec-osf1-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../intl -g -O2 -c substring.c | |||
In file included from substring.c:20: | In file included from substring.c:20: | ||
system.h:268: conflicting types for `getpwnam' | system.h:268: conflicting types for `getpwnam' | ||
/usr/include/pwd.h:75: previous declaration of `getpwnam' | /usr/include/pwd.h:75: previous declaration of `getpwnam' | ||
make[2]: *** [substring.o] Error 1 | make[2]: *** [substring.o] Error 1 | ||
make[2]: Leaving directory `/usr/local/compile/texinfo-4.8/lib' | make[2]: Leaving directory `/usr/local/compile/texinfo-4.8/lib' | ||
make[1]: *** [all-recursive] Error 1 | make[1]: *** [all-recursive] Error 1 | ||
make[1]: Leaving directory `/usr/local/compile/texinfo-4.8' | make[1]: Leaving directory `/usr/local/compile/texinfo-4.8' | ||
make: *** [all] Error 2 | make: *** [all] Error 2 | ||
uncomment in system.h: | |||
struct passwd *getpwnam (const char *name); | struct passwd *getpwnam (const char *name); | ||
still FAILS | still FAILS | ||
'''gawk-3.0.6:''' | '''gawk-3.0.6:''' | ||
copy install-sh to /usr/local/bin/install | |||
gcc -c -DGAWK -I. -I. -DHAVE_CONFIG_H -g -O2 array.c | gcc -c -DGAWK -I. -I. -DHAVE_CONFIG_H -g -O2 array.c | ||
In file included from array.c:40: | In file included from array.c:40: | ||
awk.h:872: conflicting types for `strncasecmp' | awk.h:872: conflicting types for `strncasecmp' | ||
/usr/local/lib/gcc-lib/mips-dec-osf1/2.7.2.3/include/string.h:164: previous declaration of `strncasecmp' | /usr/local/lib/gcc-lib/mips-dec-osf1/2.7.2.3/include/string.h:164: previous declaration of `strncasecmp' | ||
/* extern int strncasecmp P((const char *s1, const char *s2, register size_t n)) | uncomment in awk.h: | ||
; */ | /* extern int strncasecmp P((const char *s1, const char *s2, register size_t n)); */ | ||
'''binutils-2.12.2:''' | '''binutils-2.12.2:''' | ||
--disable-nls mips-dec-osf1 | |||
<br> | |||
'''Note: binutils do not work correctly with OSF/1 on MIPS. Do not use.''' | |||
one concession to convenience is GNU nm, because "nm -o" is just great. I have copied this to "/usr/local/bin/nm.gnu". | |||
'''bison-1.28:''' | '''bison-1.28:''' | ||
--disable-nls | |||
'''tar-1.11.8:''' | '''tar-1.11.8:''' | ||
--disable-nls | |||
make install fails. Copy by hand. | make install fails. Copy by hand. | ||
'''m4-1.4.3''' | '''m4-1.4.3''' | ||
Zeile 609: | Zeile 643: | ||
'''make-3.77''' | '''make-3.77''' | ||
'''libiconv-1.9.2:''' | |||
--disable-nls mips-dec-osf1 | |||
do not build shared libraries. libiconv wants to build a shared lib for osf anyway. | |||
Edit Makefile. | |||
'''ncurses-5.9:''' | |||
./configure --without-cxx --without-cxx-binding --without-ada mips-dec-osf1 | |||
------- | '''vim-4.6''' | ||
'''bash-2.05b:''' | |||
fc.def: | |||
uncomment unlink on line 88: | |||
/* extern int unlink __P((const char *)); */ | |||
'''fileutils-4.1:''' | |||
error with linking about Undefined: __builtin_alloc when compiling touch.c. Most tools however build fine and can be copied by hand to /usr/local/bin. | |||
'''byacc-20180609:''' | |||
gcc-2.7 can't understand the __attribute__((noreturn)) | |||
delete that. | |||
'''tin-2.4.4snap4:''' | |||
./configure --enable-nntp-only --with-domain --disable-nls --with-nntp-default --with-screen=ncurses --with-editor=/usr/local/bin/vim | |||
'''vim-5.8''' | |||
'''psksh-5.2.14''' | |||
'''readline-6.1:''' | |||
build only static libraries | |||
'''zsh-4.3.10''' | |||
'''tar-1.15.1:''' | |||
gcc -DHAVE_CONFIG_H -DLIBDIR=\"/usr/local/lib\" -I. -I. -I.. -g -O2 -c argp-fmtstream.c | |||
In file included from argp-namefrob.h:80, | |||
from argp-fmtstream.c:34: | |||
strcase.h:39: conflicting types for `strncasecmp' | |||
/usr/local/lib/gcc-lib/mips-dec-osf/2.7.2.3/include/string.h:164: previous declaration of `strncasecmp' | |||
make[3]: *** [argp-fmtstream.o] Error 1 | |||
uncomment strncasecmp in lib/strcase.h. | |||
add to lib/argp-fmtstream.c | |||
include <snprintf.h> | |||
'''slang-1.4.9''' | |||
./configure --disable-shared mips-dec-osf1 | |||
'''unzip-5.52''' | |||
edit the unix/Makefile and change cc to gcc. Then use | |||
make -f unix/Makefile generic | |||
make -f unix/Makefile install | |||
'''zip-2.32''' | |||
'''autoconf-2.13''' | |||
'''make-3.79.1''' | |||
'''libiconv-1.11''' | |||
./configure --disable-shared --disable-nls --enable-static mips-dec-osf1 && make | |||
needs a lot of memory. Might fail with this error: "virtual memory exhausted". In this case, get more memory or more swap space. | |||
'''bison-1.875:''' | |||
builds, but fails most of the tests. | |||
'''pcre-8.45:''' | |||
add to pcregrep.c: | |||
#include <snprintf.h> | |||
'''gcc-2.8.1:''' | '''gcc-2.8.1:''' | ||
</ | Note: DO NOT USE --without-gnu-as! For some reason the configure will then assume | ||
that you WANT to use GNU as and the new gcc will create AS code that the MIPS | |||
assemble can't process. | |||
fix gcc configuration with CPP definitions: | |||
gcc-2.8.1/config/mips/mips.h: | |||
add the missing definition "-D__LANGUAGE_C__" | |||
../gcc-2.8.1/configure --enable-languages=c --disable-nls --with-as=/usr/bin/as --with-ld=/usr/bin/ld --disable-shared --prefix=/usr/local/gcc281 mips-dec-osf1 | |||
'''X11R6.1:''' | |||
I ended up building X11R6.1, because the system X11 is really old. | |||
Note: when you go for X11R6, you may see problems when you try to use the old OSF/1 Motif libraries. | |||
edit xc/config/cf/site.def: and add: | |||
#define ForceNormalLib YES | |||
#define HasSharedLibraries NO | |||
this will prevent building shared libraries. | |||
created static libraries will not work as is. create a table of contents before linking | |||
any programs with "ar ts". after that, go to xc/programs and do a "make clean && make". | |||
xc/programs/xterm needs to be linked with -lutil. | |||
It will fail with: | |||
cc -o xterm -O -Xa -L../../usrlib main.o input.o charproc.o cursor.o util.o tabs.o screen.o scrollbar.o button.o Tekproc.o misc.o VTPrsTbl.o TekPrsTbl.o data.o menu.o -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -L/usr/X11R6.1/lib -ltermcap | |||
ld: | |||
Using archive ../../usrlib/libXaw.a for -lXaw | |||
Using archive ../../usrlib/libXmu.a for -lXmu | |||
Using archive ../../usrlib/libXt.a for -lXt | |||
Using archive ../../usrlib/libSM.a for -lSM | |||
Using archive ../../usrlib/libICE.a for -lICE | |||
Using archive ../../usrlib/libXext.a for -lXext | |||
Using archive ../../usrlib/libX11.a for -lX11 | |||
Using archive /usr/ccs/lib/libtermcap.a for -ltermcap | |||
Unresolved: | |||
openpty | |||
but it will still link the binaries. Those binaries just create a segmentation fault. | |||
The solution is to do the "ar ts" for all the new libraries. | |||
build Xaw3d as well. | |||
'''building new X11 applications:''' | |||
for new software it can be better to use gcc. | |||
change the config files in: /usr/X11R6.1/lib/X11/config | |||
site.def and osf1.cf. | |||
make sure it sets "#define HasGcc2 YES" and does not use the "-Xa". | |||
that way, "xmkmf -a" will work for new packages. | |||
--------- | |||
rebuild all the things that use X11. Use these environment variables: | |||
CFLAGS="-I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11 -O" | |||
LDFLAGS="-L/usr/local/lib -L/usr/X11R6.1/lib" | |||
CPPFLAGS="-I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11" | |||
export CFLAGS LDFLAGS CPPFLAGS | |||
----------- | |||
'''xpm-3.4k:''' | |||
just do: | |||
xmkmf -a && make | |||
don't forget: | |||
ar ts ./lib/libXpm.a | |||
ln -s /usr/local/lib/X11/libXpm.a /usr/X11R6.1/lib/X11/ | |||
ln -s /usr/local/lib/X11/libXpm.a /usr/X11R6.1/lib/X11/ | |||
'''jpeg-6b''' | |||
./configure --disable-shared --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1 | |||
don't forget to do | |||
make install | |||
make install-lib | |||
'''libpng-1.2.31:''' | |||
./configure --disable-shared mips-dec-osf1 | |||
build only static libs | |||
add top png.c: | |||
#include <snprintf.h> | |||
'''jasper-1.900.1:''' | |||
./configure --with-x --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1 | |||
'''libungif-4.1.4:''' | |||
./configure --with-x --disable-shared --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1 | |||
''' | '''tiff-3.8.2:''' | ||
the libtool scruipt includes makes problems. Build libtool-2.2.8 first and | |||
then copy /usr/local/bin/libtool to the tiff directory. | |||
tiff want to build some C++ code even without --enable-cxx that doesn't work. | |||
you need to edit the makefile to prevent the cxx libraries from being built. | |||
./configure --with-x --with-jpeg-lib-dir=/usr/local/lib --with-jpeg-include-dir=/usr/local/include --with-zlib-lib-dir=/usr/local/lib --with-zlib-include-dir=/usr/local/include --disable-shared --x-includes=/usr/X11R6.1/include --x-libraries=/usr/X11R6.1/lib mips-dec-osf1 | |||
'''t1lib-5.1.2:''' | |||
./configure --with-x --disable-shared --x-includes=/usr/X11R6.1/include --x-libraries=/usr/X11R6.1/lib mips-dec-osf1 | |||
'''glib-1.2.10''' | |||
--disable-nls --disable-shared --disable-threats | |||
'''gtk+-1.2.10''' | |||
--with-x --disable-nls --disable-shared mips-dec-osf1 | |||
'''tk8.3.5''' | |||
'''xearth-1.1''' | |||
'''nedit:''' | |||
needs Motif. | |||
'''Nedit 5''' apparently doesn't work with the Motif version that comes with this OSF/1. | |||
'''Nedit-3.1.1:''' | |||
X libraries need to be linked in the correct order: | |||
# cc -I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11 -O -DUSE_DIRENT nedit.o file.o menu.o window.o clipboard.o search.o undo.o shift.o help.o preferences.o tags.o shell.o regularExp.o ../util/libNUtil.a -L/usr/local/lib -L/usr/X11R6.1/lib -lm -lXm -lXt -lX11 -lICE -lSM -o nedit | |||
'''m4-1.4.7''' | |||
./configure --disable-nls mips-dec-osf1 && make | |||
has a problem with wide chars. | |||
solution: temporarily move wchar.h and wcstr.h out of the way and change it back later. | |||
strcase.h: uncomment | |||
/* | |||
extern int strncasecmp (const char *s1, const char *s2, size_t n); | |||
*/ | |||
------------ | |||
'''xntp3-5.93e-export:''' | |||
put in /sbin/rc3.d: | |||
S99xntp: | |||
#!/bin/sh | |||
# | |||
echo "updating time with NTP" | |||
/usr/sbin/ntpdate -b ptbtime1.ptb.de ptbtime2.ptb.de >/dev/null | |||
------------- | |||
'''tin-2.6.3:''' | |||
./configure --enable-nntp-only --with-domain=domain --with-nntp-default-server=server --with-screen=ncurses --disable-nls --with-libiconv-prefix=/usr/local --disable-ipv6 --with-editor=/usr/local/bin/vim && make build | |||
'''gawk-3.1.8:''' | |||
config.h: | |||
delete WCHAR | |||
awk.h: Zeile 1206: | |||
uncomment strncasecmp. | |||
replace.c: | |||
uncomment mktime: | |||
#ifndef HAVE_MKTIME | |||
/* mktime.c defines main() if DEBUG is set */ | |||
#undef DEBUG | |||
/* #include "missing_d/mktime.c" */ | |||
#endif /* HAVE_MKTIME */ | |||
'''gettext-0.14.6''' | |||
./configure --with-libiconv-prefix=/usr/local mips-dec-osf1 && make | |||
there is a problem installing in "gettext-tools/examples". just delete | |||
this subdir in the makefile | |||
'''openssl-0.9.8zg:''' | |||
configure with zlib for mips-ultrix-gcc | |||
crypto/bio/bss_bio.c: | |||
typedef int ssize_t; | |||
make[2]: Entering directory `/usr/local/compile/openssl-0.9.8zg/apps' | |||
( :; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto -lz}"; LDCMD="${LDCMD:-gcc}"; LDFLAGS="${LDFLAGS:--DZLIB -O3 -DL_ENDIAN}";LIBPATH=`for x in $LIBDEPS; do if echo $x | grep '^ *-L' > /dev/null 2>&1; then echo $x | sed -e 's/^ *-L//'; fi; done | uniq`; | |||
LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=openssl} openssl.o verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o ca.o pkcs7.o crl2p7.o crl.o rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o s_time.o apps.o s_cb.o s_socket.o app_rand.o version.o sess_id.o ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o engine.o ocsp.o prime.o cms.o ${LIBDEPS} ) | |||
collect2: ld returned 1 exit status | |||
/usr/lib/cmplrs/cc/ld: | |||
Undefined: | |||
ftime | |||
make[2]: *** [link_app.] Error 1 | |||
ftime lives in libbsd.a | |||
'''gdbm-1.8.3''' | |||
'''gperf-2.7.2''' | |||
'''ghostview-1.5''' | |||
'''xproto-6.6.2''' | |||
'''renderext-0.9''' | |||
'''renderproto-0.9.3''' | |||
'''xrender-0.8.3''' | |||
'''xpacman''' | |||
'''indent-1.10.0:''' | |||
./configure mips-dec-osf1 | |||
'''plotutils-2.1.6''' | |||
./configure --with-x --disable-shared mips-dec-osf1 | |||
[[Kategorie: UNIX]] | |||
[[Kategorie: OSF1]] |
Aktuelle Version vom 12. April 2023, 16:14 Uhr
OSF/1
Before DEC sold Alpha machines running Tru64 aka Digital UNIX aka OSF/1, they had the DECstation line of MIPS based machines. DECstations ran an old school Unix named ULTRIX, which was at its core based on 4.2BSD. Back in the early 1990s DEC promised to port OSF/1 to the DECstation platform, a modern design with a Mach kernel. Later, after several announcements and a longer will-they-won't-they drama, DEC canceled OSF/1 on MIPS and decided to focus on the Alpha platform. Even though OSF/1 never turned into a proper product and many customers were furious, DEC released developer releases for OSF/1. Distribution tapes for 1.0 and 2.0 have made their way into the internet. Back in the days, DEC never claimed that OSF/1 on MIPS was a stable product. It lacks support for a range of hardware and it never received fixes or support in the long run. Then again, ULTRIX, the main OS for the DECstation, was an insufferable mess of bugs on top of a stone age Unix. It matured over time, yet by the time it had reached a proper level of stability, it lacked a number of features. OSF/1 on MIPS isn't as bad as you might expect. It will run on contemporary R2000 and R3000 based DECstations. R4000 systems were never supported. DEC also marketed OSF/1 for realtime applications, a feature that somehow became unimportant for later OSF/1 and DEC Unix releases.
[1]This is the original release announcement from 1992.
To install OSF/1 V1.0 you will need a supported harddisk to install the system. Supported disks include the RZ23 (100MB), RZ24 (200MB), RZ25 (400MB), RZ55 (300MB), RZ56 (600MB). It will work with the common 8bit 2D graphics cards. Some people say using a serial console does not work. That may or may not be true for some systems.
OSF/1 installation on a DECstation 3100
There are installation tape images available. One TK50 tape could hold about 95MB of data. The OSF/1 distribution comes on four tapes. You need to extract the OSF/1 install tapes and create something like a fake cdrom distribution:
create a directory "disk". cd to disk and create a new dir "RISC".
copy the files from the tapes to the new distribution directories. Create new subdirs:
Tin0Install -> MPK Tin1Kits -> BASE Tin2Kits -> BASE (same dir as above) Tin3RT -> RT
create a subdir "instctrl" in all dirs. Untar the respective f03.instctrl.tar there. Rename all the files, so they can be found by the installation procedure, like:
mv f30.OSFDCMT100.tar.Z OSFDCMT100
The end result should look like this:
root@audrey:/export/binaries/dec/osf1/mips/osf1_1.0.1_mips/disk# find . . ./RISC ./RISC/RT ./RISC/RT/OSFMANRT100 ./RISC/RT/ORTDEV100 ./RISC/RT/vmunix ./RISC/RT/ORTBIN100 ./RISC/RT/boot ./RISC/RT/instctrl ./RISC/RT/instctrl/ORTDEV100.scp ./RISC/RT/instctrl/ORTDEV100.ctrl ./RISC/RT/instctrl/ORTBIN100.inv ./RISC/RT/instctrl/ORTBIN101.ctrl ./RISC/RT/instctrl/OSFMANRT100.scp ./RISC/RT/instctrl/OSF100.comp ./RISC/RT/instctrl/ORTBIN101.inv ./RISC/RT/instctrl/OSF.image ./RISC/RT/instctrl/ORT101.comp ./RISC/RT/instctrl/ORTBIN100.scp ./RISC/RT/instctrl/ORT100.comp ./RISC/RT/instctrl/ORTBIN100.ctrl ./RISC/RT/instctrl/OSFMANRT100.ctrl ./RISC/RT/instctrl/OSFMANRT100.inv ./RISC/RT/instctrl/ORTBIN101.scp ./RISC/RT/instctrl/ORTDEV100.inv ./RISC/RT/ORTBIN101 ./RISC/RT/root ./RISC/BASE ./RISC/BASE/OSFCLINFS100 ./RISC/BASE/OSFMITBIT100 ./RISC/BASE/OSFSER100 ./RISC/BASE/OSFSVID2100 ./RISC/BASE/OSFLEARN100 ./RISC/BASE/vmunix ./RISC/BASE/OSFSCCS100 ./RISC/BASE/OSFSNMP100 ./RISC/BASE/boot ./RISC/BASE/OSFDCMTEXT100 ./RISC/BASE/OSFCDAPGMR100 ./RISC/BASE/OSFBASE100 ./RISC/BASE/OSFPRINT100 ./RISC/BASE/OSFXCDADEV100 ./RISC/BASE/OSFEMACSSRC100 ./RISC/BASE/OSFX11100 ./RISC/BASE/OSFACCT100 ./RISC/BASE/OSFEXER100 ./RISC/BASE/OSFMANWS100 ./RISC/BASE/OSFMH100 ./RISC/BASE/OSFPGMR100 ./RISC/BASE/OSFNFS100 ./RISC/BASE/OSFEMACS100 ./RISC/BASE/OSFXDEV100 ./RISC/BASE/OSFUUCP100 ./RISC/BASE/instctrl ./RISC/BASE/instctrl/OSFINET100.ctrl ./RISC/BASE/instctrl/OSFXCDA100.scp ./RISC/BASE/instctrl/OSFDECW100.scp ./RISC/BASE/instctrl/OSFACCT100.inv ./RISC/BASE/instctrl/OSFMITBIT100.inv ./RISC/BASE/instctrl/OSFEMACS100.inv ./RISC/BASE/instctrl/OSFSNMP100.scp ./RISC/BASE/instctrl/OSFPRINT100.scp ./RISC/BASE/instctrl/OSFUUCP100.ctrl ./RISC/BASE/instctrl/OSFACCT100.scp ./RISC/BASE/instctrl/OSFEMACSSRC100.ctrl ./RISC/BASE/instctrl/OSFSER100.ctrl ./RISC/BASE/instctrl/OSFXCDADEV100.ctrl ./RISC/BASE/instctrl/OSFXDEV100.scp ./RISC/BASE/instctrl/OSFMH100.inv ./RISC/BASE/instctrl/OSFPGMR100.scp ./RISC/BASE/instctrl/OSFPGMR100.inv ./RISC/BASE/instctrl/OSFDCMTEXT100.inv ./RISC/BASE/instctrl/OSFUUCP100.scp ./RISC/BASE/instctrl/OSFDCMT100.scp ./RISC/BASE/instctrl/OSFMITFONT100.ctrl ./RISC/BASE/instctrl/OSFSCCS100.ctrl ./RISC/BASE/instctrl/OSFDCMTEXT100.ctrl ./RISC/BASE/instctrl/OSFSER100.inv ./RISC/BASE/instctrl/OSFSCCS100.inv ./RISC/BASE/instctrl/OSFLEARN100.inv ./RISC/BASE/instctrl/OSFBIN100.scp ./RISC/BASE/instctrl/OSFNFS100.scp ./RISC/BASE/instctrl/OSFCLINFS100.ctrl ./RISC/BASE/instctrl/OSFMANOS100.inv ./RISC/BASE/instctrl/OSFCOMM100.scp ./RISC/BASE/instctrl/OSFCDAPGMR100.ctrl ./RISC/BASE/instctrl/OSFEXER100.ctrl ./RISC/BASE/instctrl/OSFCDABASE100.scp ./RISC/BASE/instctrl/OSFMITFONT100.scp ./RISC/BASE/instctrl/OSFEXER100.inv ./RISC/BASE/instctrl/OSFCLINFS100.scp ./RISC/BASE/instctrl/OSFXCDADEV100.inv ./RISC/BASE/instctrl/OSFMANMIT100.ctrl ./RISC/BASE/instctrl/OSFINET100.scp ./RISC/BASE/instctrl/OSFCOMM100.inv ./RISC/BASE/instctrl/OSFXDEMOS100.inv ./RISC/BASE/instctrl/OSFMH100.scp ./RISC/BASE/instctrl/OSFXMIT100.scp ./RISC/BASE/instctrl/OSFCLINET100.ctrl ./RISC/BASE/instctrl/OSFPGMR100.ctrl ./RISC/BASE/instctrl/OSFMANMIT100.inv ./RISC/BASE/instctrl/OSFSNMP100.ctrl ./RISC/BASE/instctrl/OSFBASE100.scp ./RISC/BASE/instctrl/OSFMANWS100.scp ./RISC/BASE/instctrl/OSFCLINFS100.inv ./RISC/BASE/instctrl/OSFAFM100.inv ./RISC/BASE/instctrl/OSFBINCOM100.ctrl ./RISC/BASE/instctrl/OSFCDABASE100.ctrl ./RISC/BASE/instctrl/OSFMANOP100.inv ./RISC/BASE/instctrl/OSFSVID2100.scp ./RISC/BASE/instctrl/OSFEMACS100.ctrl ./RISC/BASE/instctrl/OSFXCDA100.ctrl ./RISC/BASE/instctrl/OSFDCMTEXT100.scp ./RISC/BASE/instctrl/OSF100.comp ./RISC/BASE/instctrl/OSFCLINET100.scp ./RISC/BASE/instctrl/OSFMANWS100.ctrl ./RISC/BASE/instctrl/OSFBINCOM100.inv ./RISC/BASE/instctrl/OSFXDEV100.ctrl ./RISC/BASE/instctrl/OSFMANOP100.scp ./RISC/BASE/instctrl/OSFINET100.inv ./RISC/BASE/instctrl/OSFBIN100.ctrl ./RISC/BASE/instctrl/OSFXMIT100.ctrl ./RISC/BASE/instctrl/OSFCDAPGMR100.inv ./RISC/BASE/instctrl/OSFBASE100.inv ./RISC/BASE/instctrl/OSFXMIT100.inv ./RISC/BASE/instctrl/OSFEMACSSRC100.scp ./RISC/BASE/instctrl/OSFFONT15100.scp ./RISC/BASE/instctrl/OSF.image ./RISC/BASE/instctrl/OSFBIN100.inv ./RISC/BASE/instctrl/OSFMANOS100.ctrl ./RISC/BASE/instctrl/OSFNFS100.inv ./RISC/BASE/instctrl/OSFLEARN100.scp ./RISC/BASE/instctrl/OSFX11100.inv ./RISC/BASE/instctrl/OSFLEARN100.ctrl ./RISC/BASE/instctrl/OSFDCMT100.inv ./RISC/BASE/instctrl/OSFAFM100.scp ./RISC/BASE/instctrl/OSFXDEV100.inv ./RISC/BASE/instctrl/OSFMANOP100.ctrl ./RISC/BASE/instctrl/OSFXCDADEV100.scp ./RISC/BASE/instctrl/OSFMANWS100.inv ./RISC/BASE/instctrl/OSFFONT15100.ctrl ./RISC/BASE/instctrl/OSFAFM100.ctrl ./RISC/BASE/instctrl/OSFDECW100.inv ./RISC/BASE/instctrl/OSFSVID2100.ctrl ./RISC/BASE/instctrl/OSFXMAIL100.scp ./RISC/BASE/instctrl/OSFSVID2100.inv ./RISC/BASE/instctrl/OSFUUCP100.inv ./RISC/BASE/instctrl/OSFCDABASE100.inv ./RISC/BASE/instctrl/OSFEMACSSRC100.inv ./RISC/BASE/instctrl/OSFFONT15100.inv ./RISC/BASE/instctrl/OSFPRINT100.inv ./RISC/BASE/instctrl/OSFX11100.ctrl ./RISC/BASE/instctrl/OSFCDAPGMR100.scp ./RISC/BASE/instctrl/OSFXMAIL100.inv ./RISC/BASE/instctrl/OSFNFS100.ctrl ./RISC/BASE/instctrl/OSFXCDA100.inv ./RISC/BASE/instctrl/OSFSCCS100.scp ./RISC/BASE/instctrl/OSFXDEMOS100.ctrl ./RISC/BASE/instctrl/OSFCLINET100.inv ./RISC/BASE/instctrl/OSFMH100.ctrl ./RISC/BASE/instctrl/OSFDECW100.ctrl ./RISC/BASE/instctrl/OSFBASE100.ctrl ./RISC/BASE/instctrl/OSFBINCOM100.scp ./RISC/BASE/instctrl/OSFX11100.scp ./RISC/BASE/instctrl/OSFSER100.scp ./RISC/BASE/instctrl/OSFXMAIL100.ctrl ./RISC/BASE/instctrl/OSFMANMIT100.scp ./RISC/BASE/instctrl/OSFFONT100.scp ./RISC/BASE/instctrl/OSFXDEMOS100.scp ./RISC/BASE/instctrl/OSFDCMT100.ctrl ./RISC/BASE/instctrl/OSFFONT100.ctrl ./RISC/BASE/instctrl/OSFSNMP100.inv ./RISC/BASE/instctrl/OSFACCT100.ctrl ./RISC/BASE/instctrl/OSFMITBIT100.scp ./RISC/BASE/instctrl/OSFEXER100.scp ./RISC/BASE/instctrl/OSFMITBIT100.ctrl ./RISC/BASE/instctrl/OSFCOMM100.ctrl ./RISC/BASE/instctrl/OSFEMACS100.scp ./RISC/BASE/instctrl/OSFFONT100.inv ./RISC/BASE/instctrl/OSFPRINT100.ctrl ./RISC/BASE/instctrl/OSFMANOS100.scp ./RISC/BASE/instctrl/OSFMITFONT100.inv ./RISC/BASE/OSFDCMT100 ./RISC/BASE/OSFBIN100 ./RISC/BASE/OSFMANOS100 ./RISC/BASE/OSFMANMIT100 ./RISC/BASE/OSFMANOP100 ./RISC/BASE/OSFCOMM100 ./RISC/BASE/OSFAFM100 ./RISC/BASE/OSFXDEMOS100 ./RISC/BASE/OSFXCDA100 ./RISC/BASE/OSFCDABASE100 ./RISC/BASE/OSFBINCOM100 ./RISC/BASE/root ./RISC/BASE/OSFFONT15100 ./RISC/BASE/OSFFONT100 ./RISC/BASE/OSFDECW100 ./RISC/BASE/OSFMITFONT100 ./RISC/BASE/OSFINET100 ./RISC/BASE/OSFXMIT100 ./RISC/BASE/OSFCLINET100 ./RISC/BASE/OSFXMAIL100 ./RISC/MPK ./RISC/MPK/ROOT ./RISC/MPK/OSFBASE101 ./RISC/MPK/vmunix ./RISC/MPK/OSFMANOS101 ./RISC/MPK/boot ./RISC/MPK/OSFX11101 ./RISC/MPK/OSFMANWS101 ./RISC/MPK/OSFMANOP101 ./RISC/MPK/OSFBIN101 ./RISC/MPK/OSFXMAIL101 ./RISC/MPK/instctrl ./RISC/MPK/instctrl/OSFMANOS101.scp ./RISC/MPK/instctrl/OSFXDEV101.inv ./RISC/MPK/instctrl/OSFMANOP101.ctrl ./RISC/MPK/instctrl/OSFPGMR101.scp ./RISC/MPK/instctrl/OSFPGMR101.inv ./RISC/MPK/instctrl/OSFDECW101.scp ./RISC/MPK/instctrl/OSFXDEV101.scp ./RISC/MPK/instctrl/OSFDECW101.ctrl ./RISC/MPK/instctrl/OSFSER101.inv ./RISC/MPK/instctrl/OSFBASE101.scp ./RISC/MPK/instctrl/OSFEMACSSRC101.ctrl ./RISC/MPK/instctrl/OSFMANWS101.ctrl ./RISC/MPK/instctrl/OSFBINCOM101.ctrl ./RISC/MPK/instctrl/OSFSER101.ctrl ./RISC/MPK/instctrl/OSFBINCOM101.scp ./RISC/MPK/instctrl/OSFMANOS101.ctrl ./RISC/MPK/instctrl/OSFUUCP101.inv ./RISC/MPK/instctrl/OSFX11101.scp ./RISC/MPK/instctrl/OSFXMAIL101.ctrl ./RISC/MPK/instctrl/OSFMANOS101.inv ./RISC/MPK/instctrl/OSFX11101.ctrl ./RISC/MPK/instctrl/OSFEMACSSRC101.scp ./RISC/MPK/instctrl/OSFBIN101.inv ./RISC/MPK/instctrl/OSFSER101.scp ./RISC/MPK/instctrl/OSFX11101.inv ./RISC/MPK/instctrl/OSF101.comp ./RISC/MPK/instctrl/OSF.image ./RISC/MPK/instctrl/OSFDECW101.inv ./RISC/MPK/instctrl/OSFUUCP101.scp ./RISC/MPK/instctrl/OSFMANWS101.inv ./RISC/MPK/instctrl/OSFUUCP101.ctrl ./RISC/MPK/instctrl/OSFBIN101.ctrl ./RISC/MPK/instctrl/OSFBASE101.inv ./RISC/MPK/instctrl/OSFEMACSSRC101.inv ./RISC/MPK/instctrl/OSFPGMR101.ctrl ./RISC/MPK/instctrl/OSFXDEV101.ctrl ./RISC/MPK/instctrl/OSFXMAIL101.scp ./RISC/MPK/instctrl/OSFBASE101.ctrl ./RISC/MPK/instctrl/OSFBIN101.scp ./RISC/MPK/instctrl/OSFMANWS101.scp ./RISC/MPK/instctrl/OSFXMAIL101.inv ./RISC/MPK/instctrl/OSFMANOP101.scp ./RISC/MPK/instctrl/OSFMANOP101.inv ./RISC/MPK/instctrl/OSFBINCOM101.inv ./RISC/MPK/OSFXDEV101 ./RISC/MPK/OSFDECW101 ./RISC/MPK/OSFPGMR101 ./RISC/MPK/BOOT ./RISC/MPK/OSFEMACSSRC101 ./RISC/MPK/root ./RISC/MPK/OSFUUCP101 ./RISC/MPK/VMUNIX ./RISC/MPK/OSFBINCOM101 ./RISC/MPK/OSFSER101
This is a suitable installation directory, but you will likely have no means to boot it on a real DECstation.
So, we will call "ris" to the rescue. ULTRIX provides a great way to setup a remote installation server using "ris - Remote installation service". Make the distribution directory you just created available to a machine running a reasonably recent version (I tested 4.5) of ULTRIX. ULTRIX will be able to do cross-architecture installation, so any VAX or DECstation should be fine. You might even consider an emulated VAX using simh. For the following demonstration, the server will be a DECstation 5000/240 running ULTRIX 4.5:
root@io:~# ris REMOTE INSTALLATION SERVICE (RIS) MENU a - Add Client r - Remove Client s - Show Products in Remote Installation Environments m - Modify Client i - Install Software d - Delete Software e - Exit
choose "i" to install new software to a remote installation environment. You need to have one environment for every OS release and platform (MIPS or VAX) you want. You can also add more software to such an environment later. Now enter your path to the BASE directory of you distribution set and follow the instructions. You can later add additional software to this installation directory. Once you have added the BASE subsets, also add the MDK, which is a mandatory upgrade. You can leave out the realtime extensions "RT" in my opinion. You can choose if you want to extract and copy the filesets to the server's local harddisk or if you want symlinks. I have always chosen extraction so far. Just make sure that you have enough space in /usr/var/adm/ris or create a directory on a new disks and symlink. Then, call "ris" again to choose "a" in the menu to add a client. Give you client's ethernet address. This will set up the software distribution and also start /etc/mop_mom on the server. Old DECstations and VAXen boot via MOP, the maintenance operation protocal. Make sure your client is added to the servers /etc/hosts file.
/etc/hosts should be beautiful like this:
192.168.2.123 ds3100 ds3100.domain.tld
but NOT like this:
192.168.2.123 ds3100.domain.tld ds3100
If there are any errors during setup, you might get the following error during the installation of the client:
Cannot find rzux1 in risdb file. Check the sytem manager of your host server.
Check to make sure: the client is in the /etc/hosts of the server the r services have to be enabled in /etc/inetd.conf on the server /usr/adm/ris/.rhosts should include the client /usr/adm/ris/clients/risdb should include the client
You can now boot the client from the server. For a DECstation 3100, the proper command is:
boot -f mop()
Other DECstations will require other commands. The remote installation then starts by booting an ULTRIX 4.2 kernel (yes...), so you can partition a disk and copy a miniroot filesystem. It will then reboot to disk and start the OSF/1 kernel for the first time. The installation will go on normaly from this point on.
allow root logins from terminal other than the system console:
# /etc/ttys # "@(#)ttys 1.0 (OSF/1) 05/11/90" # # NOTE: This file is largely obsolete, its function having been taken # over by /etc/inittab. Its only remaining purpose is to mark which # tty lines are secure (i.e., allow root logins). To disallow root # logins on a given line, remove the "secure" keyword. # # name getty type status comments # console none none secure # console tty00 none none secure # direct tty tty01 none none secure # direct tty tty02 none none secure # direct tty tty03 none none secure # direct tty tty04 none none secure # direct tty tty05 none none secure # direct tty tty06 none none secure # direct tty tty07 none none secure # direct tty ttyd0 none none secure # modem line ttyp0 none network secure ttyp1 none network secure ttyp2 none network secure ttyp3 none network secure ttyp4 none network secure ttyp5 none network secure ttyp6 none network secure ttyp7 none network secure ttyp8 none network secure ttyp9 none network secure ttypa none network secure ttypb none network secure ttypc none network secure ttypd none network secure ttype none network secure ttypf none network secure ttyq0 none network secure ttyq1 none network secure ttyq2 none network secure ttyq3 none network secure ttyq4 none network secure ttyq5 none network secure ttyq6 none network secure ttyq7 none network secure ttyq8 none network secure ttyq9 none network secure ttyqa none network secure ttyqb none network secure ttyqc none network secure ttyqd none network secure ttyqe none network secure ttyqf none network secure
OSF/1 V1.0 will not accept any other HOME directory for root other than /.
building a new kernel:
cd /usr/sys/conf /usr/sys/bin/config NAME then cd to the ../NAME directory and: make depend && make then copy the kernel to /
Enable serial console:
Some people say that OSF/1 does not support serial consoles on MIPS. I have personally seen that it just won't work with a DECstation 5000 some years ago, but never found a definitive answer. However, it does work for the DECstation 3100 and OSF/1 V1.0.
Configure the hardware:
pull the framebuffer RAM module.
In the firmware (in theory): The 3100 needs:
setenv console 8
other DECstations will need:
setenv console "s".
keep the mouse connected or install a mouse loopback connector.
Unfortunately, I have a DS3100 with an early firmware revision (V6.71), which for unknown reasons does not like any serial console setting. It always stops at "3.." in the selftest declaring "FAILURE". You need to push the reset button then to get to the ">>" prompt. Even as it uses the serial port as system console, this prevents it it from auto-booting. Just entering "auto" will make the system boot up fine from the ">>" prompt.
Configure the OSF/1 software:
X11 is started by an entry in /etc/inittab:
#cons:1234:respawn:/usr/sbin/getty console console pmconsole xdm:23:respawn:/sbin/sh /sbin/xdm.init respawn > /dev/console 2>&1
to disable X11 and enable serial login change to:
cons:1234:respawn:/usr/sbin/getty console console pmconsole #xdm:23:respawn:/sbin/sh /sbin/xdm.init respawn > /dev/console 2>&1
This will essentially keep xdm from starting and enable a login: prompt on the console, either graphical or serial.
.cshrc:
setenv PATH /usr/local/bin:/usr/ccs/bin:/sbin:/usr/sbin:/usr/bin:/usr/bin/X11
if ($term == xterm-256color) then setenv TERM vt100 endif
if ($term == pmconsole) then setenv TERM vt100 endif
.bashrc:
# set a fancy prompt PS1='\u@\h:\w\$ ' export PS1
.profile:
PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/bin/X11 if [ $TERM = "xterm-256color" ] then TERM=vt100; export TERM fi PS1='\u@\h:\w\$ ' export PS1 CFLAGS="-I/usr/local/include -O" LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" export CFLAGS LDFLAGS CPPFLAGS EDITOR=vim export EDITOR LANG=C LC_CTYPE=de_DE.88591 export LANG LC_CTYPE stty cs8 -istrip
disklabel a second disk:
write new disklabel:
disklabel -w /dev/rz1c rz25
edit a disklabel:
disklabel -e /dev/rz1c
read the current disklabel:
disklabel -r /dev/rz1c # /dev/rz1c: type: SCSI disk: rz25 label: flags: bytes/sector: 512 sectors/track: 62 tracks/cylinder: 9 sectors/cylinder: 558 cylinders: 1492 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 7 partitions: # size offset fstype [fsize bsize cpg] a: 1024 0 unused 1024 8192 # (Cyl. 0 - 1*) b: 131072 1024 swap # (Cyl. 1*- 236*) c: 832527 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 1491*) d: 700431 132096 4.2BSD 1024 8192 16 # (Cyl. 236*- 1491*) e: 222896 386736 unused 1024 8192 # (Cyl. 693*- 1092*) f: 222895 609632 unused 1024 8192 # (Cyl. 1092*- 1491*) g: 668687 163840 unused 1024 8192 # (Cyl. 293*- 1491*)
edit fstab:
/dev/rz0a / ufs rw 1 1 /dev/rz0g /usr ufs rw 1 2 /dev/rz0b swap1 ufs sw 0 2 /dev/rz1b swap2 ufs sw 0 2 /dev/rz1d /usr/local ufs rw 1 2
Building GNU software:
OSF/1 V1.0 ships with the MIPS C-Compiler 2.20. Thus, we are not completely lost.
if config.guess can't detect the OS, give "mips-dec-osf1".
m4-1.4
make-3.75
flex-2.5.4a
gcc-2.7.2.3:
./configure --enable-languages=c --disable-nls mips-dec-osf1
Note: I found out that c++ and f77 do not work correctly. shared libraries on OSF/1 don't work! Assembler errors like "undefined assembler operation: .gpword" are likely due to the use of "-fPIC", which does not work correctly.
sed-3.0.2: will not build correctly with the native cc. Use gcc.
grep-2.3:
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../intl -DLOCALEDIR=\"/usr/local/share/locale\" -g -O2 -c btowc.c btowc.c:41: parse error before `btowc' btowc.c: In function `btowc': btowc.c:44: `WEOF' undeclared (first use this function) btowc.c:44: (Each undeclared identifier is reported only once btowc.c:44: for each function it appears in.) btowc.c:44: `wint_t' undeclared (first use this function) btowc.c:47: parse error before `c' make[2]: *** [btowc.o] Error 1 make[2]: Leaving directory `/usr/local/compile/grep-2.3/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/compile/grep-2.3' make: *** [all-recursive-am] Error 2
There is an ifdef broken here. fix btowc.c by deleting the ifdef around the typdef unsigned int wint_t.
texinfo-4.8: FAIL
mips-dec-osf1-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../intl -g -O2 -c substring.c In file included from substring.c:20: system.h:268: conflicting types for `getpwnam' /usr/include/pwd.h:75: previous declaration of `getpwnam' make[2]: *** [substring.o] Error 1 make[2]: Leaving directory `/usr/local/compile/texinfo-4.8/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/compile/texinfo-4.8' make: *** [all] Error 2
uncomment in system.h:
struct passwd *getpwnam (const char *name);
still FAILS
gawk-3.0.6:
copy install-sh to /usr/local/bin/install
gcc -c -DGAWK -I. -I. -DHAVE_CONFIG_H -g -O2 array.c In file included from array.c:40: awk.h:872: conflicting types for `strncasecmp' /usr/local/lib/gcc-lib/mips-dec-osf1/2.7.2.3/include/string.h:164: previous declaration of `strncasecmp'
uncomment in awk.h: /* extern int strncasecmp P((const char *s1, const char *s2, register size_t n)); */
binutils-2.12.2:
--disable-nls mips-dec-osf1
Note: binutils do not work correctly with OSF/1 on MIPS. Do not use.
one concession to convenience is GNU nm, because "nm -o" is just great. I have copied this to "/usr/local/bin/nm.gnu".
bison-1.28:
--disable-nls
tar-1.11.8:
--disable-nls make install fails. Copy by hand.
m4-1.4.3
bash-2.03
tar-1.11.8
make-3.77
libiconv-1.9.2:
--disable-nls mips-dec-osf1 do not build shared libraries. libiconv wants to build a shared lib for osf anyway. Edit Makefile.
ncurses-5.9:
./configure --without-cxx --without-cxx-binding --without-ada mips-dec-osf1
vim-4.6
bash-2.05b:
fc.def: uncomment unlink on line 88: /* extern int unlink __P((const char *)); */
fileutils-4.1:
error with linking about Undefined: __builtin_alloc when compiling touch.c. Most tools however build fine and can be copied by hand to /usr/local/bin.
byacc-20180609:
gcc-2.7 can't understand the __attribute__((noreturn))
delete that.
tin-2.4.4snap4:
./configure --enable-nntp-only --with-domain --disable-nls --with-nntp-default --with-screen=ncurses --with-editor=/usr/local/bin/vim
vim-5.8
psksh-5.2.14
readline-6.1:
build only static libraries
zsh-4.3.10
tar-1.15.1:
gcc -DHAVE_CONFIG_H -DLIBDIR=\"/usr/local/lib\" -I. -I. -I.. -g -O2 -c argp-fmtstream.c In file included from argp-namefrob.h:80, from argp-fmtstream.c:34: strcase.h:39: conflicting types for `strncasecmp' /usr/local/lib/gcc-lib/mips-dec-osf/2.7.2.3/include/string.h:164: previous declaration of `strncasecmp' make[3]: *** [argp-fmtstream.o] Error 1
uncomment strncasecmp in lib/strcase.h.
add to lib/argp-fmtstream.c
include <snprintf.h>
slang-1.4.9
./configure --disable-shared mips-dec-osf1
unzip-5.52
edit the unix/Makefile and change cc to gcc. Then use
make -f unix/Makefile generic make -f unix/Makefile install
zip-2.32
autoconf-2.13
make-3.79.1
libiconv-1.11
./configure --disable-shared --disable-nls --enable-static mips-dec-osf1 && make
needs a lot of memory. Might fail with this error: "virtual memory exhausted". In this case, get more memory or more swap space.
bison-1.875:
builds, but fails most of the tests.
pcre-8.45:
add to pcregrep.c:
#include <snprintf.h>
gcc-2.8.1:
Note: DO NOT USE --without-gnu-as! For some reason the configure will then assume that you WANT to use GNU as and the new gcc will create AS code that the MIPS assemble can't process.
fix gcc configuration with CPP definitions: gcc-2.8.1/config/mips/mips.h: add the missing definition "-D__LANGUAGE_C__"
../gcc-2.8.1/configure --enable-languages=c --disable-nls --with-as=/usr/bin/as --with-ld=/usr/bin/ld --disable-shared --prefix=/usr/local/gcc281 mips-dec-osf1
X11R6.1:
I ended up building X11R6.1, because the system X11 is really old. Note: when you go for X11R6, you may see problems when you try to use the old OSF/1 Motif libraries.
edit xc/config/cf/site.def: and add:
#define ForceNormalLib YES #define HasSharedLibraries NO
this will prevent building shared libraries. created static libraries will not work as is. create a table of contents before linking any programs with "ar ts". after that, go to xc/programs and do a "make clean && make".
xc/programs/xterm needs to be linked with -lutil. It will fail with:
cc -o xterm -O -Xa -L../../usrlib main.o input.o charproc.o cursor.o util.o tabs.o screen.o scrollbar.o button.o Tekproc.o misc.o VTPrsTbl.o TekPrsTbl.o data.o menu.o -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -L/usr/X11R6.1/lib -ltermcap ld: Using archive ../../usrlib/libXaw.a for -lXaw Using archive ../../usrlib/libXmu.a for -lXmu Using archive ../../usrlib/libXt.a for -lXt Using archive ../../usrlib/libSM.a for -lSM Using archive ../../usrlib/libICE.a for -lICE Using archive ../../usrlib/libXext.a for -lXext Using archive ../../usrlib/libX11.a for -lX11 Using archive /usr/ccs/lib/libtermcap.a for -ltermcap Unresolved: openpty
but it will still link the binaries. Those binaries just create a segmentation fault. The solution is to do the "ar ts" for all the new libraries.
build Xaw3d as well.
building new X11 applications:
for new software it can be better to use gcc. change the config files in: /usr/X11R6.1/lib/X11/config site.def and osf1.cf. make sure it sets "#define HasGcc2 YES" and does not use the "-Xa".
that way, "xmkmf -a" will work for new packages.
rebuild all the things that use X11. Use these environment variables:
CFLAGS="-I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11 -O" LDFLAGS="-L/usr/local/lib -L/usr/X11R6.1/lib" CPPFLAGS="-I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11" export CFLAGS LDFLAGS CPPFLAGS
xpm-3.4k:
just do:
xmkmf -a && make
don't forget:
ar ts ./lib/libXpm.a ln -s /usr/local/lib/X11/libXpm.a /usr/X11R6.1/lib/X11/ ln -s /usr/local/lib/X11/libXpm.a /usr/X11R6.1/lib/X11/
jpeg-6b
./configure --disable-shared --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1
don't forget to do
make install make install-lib
libpng-1.2.31:
./configure --disable-shared mips-dec-osf1
build only static libs add top png.c:
#include <snprintf.h>
jasper-1.900.1:
./configure --with-x --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1
libungif-4.1.4:
./configure --with-x --disable-shared --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1
tiff-3.8.2:
the libtool scruipt includes makes problems. Build libtool-2.2.8 first and
then copy /usr/local/bin/libtool to the tiff directory.
tiff want to build some C++ code even without --enable-cxx that doesn't work. you need to edit the makefile to prevent the cxx libraries from being built.
./configure --with-x --with-jpeg-lib-dir=/usr/local/lib --with-jpeg-include-dir=/usr/local/include --with-zlib-lib-dir=/usr/local/lib --with-zlib-include-dir=/usr/local/include --disable-shared --x-includes=/usr/X11R6.1/include --x-libraries=/usr/X11R6.1/lib mips-dec-osf1
t1lib-5.1.2:
./configure --with-x --disable-shared --x-includes=/usr/X11R6.1/include --x-libraries=/usr/X11R6.1/lib mips-dec-osf1
glib-1.2.10
--disable-nls --disable-shared --disable-threats
gtk+-1.2.10
--with-x --disable-nls --disable-shared mips-dec-osf1
tk8.3.5
xearth-1.1
nedit: needs Motif. Nedit 5 apparently doesn't work with the Motif version that comes with this OSF/1.
Nedit-3.1.1: X libraries need to be linked in the correct order:
# cc -I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11 -O -DUSE_DIRENT nedit.o file.o menu.o window.o clipboard.o search.o undo.o shift.o help.o preferences.o tags.o shell.o regularExp.o ../util/libNUtil.a -L/usr/local/lib -L/usr/X11R6.1/lib -lm -lXm -lXt -lX11 -lICE -lSM -o nedit
m4-1.4.7
./configure --disable-nls mips-dec-osf1 && make
has a problem with wide chars. solution: temporarily move wchar.h and wcstr.h out of the way and change it back later.
strcase.h: uncomment
/* extern int strncasecmp (const char *s1, const char *s2, size_t n); */
xntp3-5.93e-export:
put in /sbin/rc3.d:
S99xntp: #!/bin/sh # echo "updating time with NTP" /usr/sbin/ntpdate -b ptbtime1.ptb.de ptbtime2.ptb.de >/dev/null
tin-2.6.3:
./configure --enable-nntp-only --with-domain=domain --with-nntp-default-server=server --with-screen=ncurses --disable-nls --with-libiconv-prefix=/usr/local --disable-ipv6 --with-editor=/usr/local/bin/vim && make build
gawk-3.1.8:
config.h: delete WCHAR
awk.h: Zeile 1206: uncomment strncasecmp.
replace.c: uncomment mktime:
#ifndef HAVE_MKTIME /* mktime.c defines main() if DEBUG is set */ #undef DEBUG /* #include "missing_d/mktime.c" */ #endif /* HAVE_MKTIME */
gettext-0.14.6
./configure --with-libiconv-prefix=/usr/local mips-dec-osf1 && make
there is a problem installing in "gettext-tools/examples". just delete this subdir in the makefile
openssl-0.9.8zg:
configure with zlib for mips-ultrix-gcc
crypto/bio/bss_bio.c:
typedef int ssize_t;
make[2]: Entering directory `/usr/local/compile/openssl-0.9.8zg/apps' ( :; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto -lz}"; LDCMD="${LDCMD:-gcc}"; LDFLAGS="${LDFLAGS:--DZLIB -O3 -DL_ENDIAN}";LIBPATH=`for x in $LIBDEPS; do if echo $x | grep '^ *-L' > /dev/null 2>&1; then echo $x | sed -e 's/^ *-L//'; fi; done | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=openssl} openssl.o verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o ca.o pkcs7.o crl2p7.o crl.o rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o s_time.o apps.o s_cb.o s_socket.o app_rand.o version.o sess_id.o ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o engine.o ocsp.o prime.o cms.o ${LIBDEPS} ) collect2: ld returned 1 exit status /usr/lib/cmplrs/cc/ld: Undefined: ftime make[2]: *** [link_app.] Error 1
ftime lives in libbsd.a
gdbm-1.8.3
gperf-2.7.2
ghostview-1.5
xproto-6.6.2
renderext-0.9
renderproto-0.9.3
xrender-0.8.3
xpacman
indent-1.10.0:
./configure mips-dec-osf1
plotutils-2.1.6
./configure --with-x --disable-shared mips-dec-osf1