OSF/1 1.0: Unterschied zwischen den Versionen

Aus Knowledgebase
Zur Navigation springen Zur Suche springen
Zeile 301: Zeile 301:
 
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/200 running ULTRIX 4.5:
 
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/200 running ULTRIX 4.5:
  
<nowiki>root@io:~# ris
+
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     
  
REMOTE INSTALLATION SERVICE (RIS) MENU
+
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.
        a -  Add Client
 
        r -  Remove Client
 
        s -  Show Products in Remote Installation Environments
 
        m -  Modify Client
 
        i -  Install Software
 
        d -  Delete Software
 
        e -  Exit     
 
 
 
Enter your choice: i
 
 
 
The menu below offers you two software installation alternatives:
 
 
 
        1) You can create a new area to serve either RISC or VAX clients
 
          by installing a software product. The ris utility automatically
 
          creates the new area.
 
 
 
        2) You can install additional software to an existing area
 
          that serves either RISC or VAX clients.
 
 
 
RIS Software Installation Menu:
 
 
 
        1  Install Software to a New Area.
 
        2  Add Software to an Existing Area.
 
        3  Return to Previous Menu
 
 
 
Enter your choice: 1
 
</nowiki>
 
You have chosen to establish a new remote installation environment.
 
 
 
Enter the device special file name or the path of the directory where the
 
software is located, for example, /dev/rmt0h:
 
 
 
now enter you path to the BASE directory of you distribution set.
 
follow the instructions.
 
You can later choose option "2" from above and 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 "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.
 
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.
 
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.
 
Make sure your client is added to the servers /etc/hosts file.
Zeile 347: Zeile 319:
 
/etc/hosts should be beautiful like this:
 
/etc/hosts should be beautiful like this:
  
192.168.2.123  ds3100  ds3100.domain.tld
+
192.168.2.123  ds3100  ds3100.domain.tld
  
 
but NOT like this:
 
but NOT like this:
  
192.168.2.123    ds3100.domain.tld  ds3100
+
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:
 
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                     
+
Cannot find rzux1 in risdb file.  Check the sytem manager of                     
your host server.
+
your host server.
  
 
Check to make sure:
 
Check to make sure:
Zeile 367: Zeile 339:
 
You can now boot the client from the server. For a DECstation 3100, the proper command is:
 
You can now boot the client from the server. For a DECstation 3100, the proper command is:
  
boot -f mop()
+
boot -f mop()
  
 
Other DECstations will require other commands.
 
Other DECstations will require other commands.
 
The remote installation then start 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.
 
The remote installation then start 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:
 
allow root logins from terminal other than the system console:
  
/etc/ttys
+
# /etc/ttys
# "@(#)ttys 1.0 (OSF/1) 05/11/90"
+
# "@(#)ttys 1.0 (OSF/1) 05/11/90"
#
+
#
# NOTE: This file is largely obsolete, its function having been taken
+
# NOTE: This file is largely obsolete, its function having been taken
# over by /etc/inittab.  Its only remaining purpose is to mark which
+
# over by /etc/inittab.  Its only remaining purpose is to mark which
# tty lines are secure (i.e., allow root logins).  To disallow root
+
# tty lines are secure (i.e., allow root logins).  To disallow root
# logins on a given line, remove the "secure" keyword.
+
# logins on a given line, remove the "secure" keyword.
#
+
#
# name getty type status comments
+
# name getty type status comments
#
+
#
console none none secure # console
+
console none none secure # console
tty00 none none secure  # direct tty
+
tty00 none none secure  # direct tty
tty01 none none secure  # direct tty
+
tty01 none none secure  # direct tty
tty02 none none secure  # direct tty
+
tty02 none none secure  # direct tty
tty03 none none secure  # direct tty
+
tty03 none none secure  # direct tty
tty04 none none secure  # direct tty
+
tty04 none none secure  # direct tty
tty05 none none secure  # direct tty
+
tty05 none none secure  # direct tty
tty06 none none secure  # direct tty
+
tty06 none none secure  # direct tty
tty07 none none secure  # direct tty
+
tty07 none none secure  # direct tty
ttyd0  none none    secure  # modem line
+
ttyd0  none none    secure  # modem line
ttyp0 none network secure
+
ttyp0 none network secure
ttyp1 none network secure
+
ttyp1 none network secure
ttyp2 none network secure
+
ttyp2 none network secure
ttyp3 none network secure
+
ttyp3 none network secure
ttyp4 none network secure
+
ttyp4 none network secure
ttyp5 none network secure
+
ttyp5 none network secure
ttyp6 none network secure
+
ttyp6 none network secure
ttyp7 none network secure
+
ttyp7 none network secure
ttyp8 none network secure
+
ttyp8 none network secure
ttyp9 none network secure
+
ttyp9 none network secure
ttypa none network secure
+
ttypa none network secure
ttypb none network secure
+
ttypb none network secure
ttypc none network secure
+
ttypc none network secure
ttypd none network secure
+
ttypd none network secure
ttype none network secure
+
ttype none network secure
ttypf none network secure
+
ttypf none network secure
ttyq0 none network secure
+
ttyq0 none network secure
ttyq1 none network secure
+
ttyq1 none network secure
ttyq2 none network secure
+
ttyq2 none network secure
ttyq3 none network secure
+
ttyq3 none network secure
ttyq4 none network secure
+
ttyq4 none network secure
ttyq5 none network secure
+
ttyq5 none network secure
ttyq6 none network secure
+
ttyq6 none network secure
ttyq7 none network secure
+
ttyq7 none network secure
ttyq8 none network secure
+
ttyq8 none network secure
ttyq9 none network secure
+
ttyq9 none network secure
ttyqa none network secure
+
ttyqa none network secure
ttyqb none network secure
+
ttyqb none network secure
ttyqc none network secure
+
ttyqc none network secure
ttyqd none network secure
+
ttyqd none network secure
ttyqe none network secure
+
ttyqe none network secure
ttyqf none network secure
+
ttyqf none network secure
  
  
Zeile 445: Zeile 418:
  
 
In the firmware:
 
In the firmware:
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.
Zeile 466: Zeile 439:
 
.cshrc:
 
.cshrc:
  
setenv PATH /usr/local/bin:/usr/ccs/bin:/sbin:/usr/sbin:/usr/bin:/usr/bin/X11
+
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
 
  
 +
if ($term == xterm-256color) then
 +
setenv TERM vt100
 +
endif
  
 +
if ($term == pmconsole) then
 +
setenv TERM vt100
 +
endif
  
 
---------------
 
---------------
 
.bashrc:
 
.bashrc:
# set a fancy prompt
+
# set a fancy prompt
PS1='\u@\h:\w\$ '
+
PS1='\u@\h:\w\$ '
export PS1
+
export PS1
  
 
---------------
 
---------------
 
.profile:
 
.profile:
  
PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/bin/X11
+
PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/bin/X11
if [ $TERM = "xterm-256color" ]
+
if [ $TERM = "xterm-256color" ]
  then TERM=vt100; export TERM
+
then TERM=vt100; export TERM
fi
+
fi
 
 
  
 
--------------
 
--------------
 
  
 
disklabel a second disk:
 
disklabel a second disk:
disklabel -w /dev/rz1c rz25
 
  
disklabel -e /dev/rz1c
+
write new disklabel:
 +
disklabel -w /dev/rz1c rz25
  
# disklabel -r /dev/rz1c
+
edit a disklabel:
# /dev/rz1c:
+
disklabel -e /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:
+
read the current disklabel:
#        size  offset    fstype  [fsize bsize  cpg]
+
disklabel -r /dev/rz1c
  a:    1024        0    unused    1024  8192      # (Cyl.    0 - 1*)
+
# /dev/rz1c:
  b:  131072    1024      swap                    # (Cyl.    1*- 236*)
+
type: SCSI
  c:  832527        0    4.2BSD    1024  8192    16 # (Cyl.    0 - 1491*)
+
disk: rz25
  d:  700431  132096    4.2BSD    1024  8192    16 # (Cyl.  236*- 1491*)
+
label:
  e:  222896  386736    unused    1024  8192      # (Cyl.  693*- 1092*)
+
flags:
  f:  222895  609632    unused    1024  8192      # (Cyl. 1092*- 1491*)
+
bytes/sector: 512
  g:  668687  163840    unused    1024  8192      # (Cyl.  293*- 1491*)
+
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*)
  
  
# # # cat /etc/fstab
+
--------------
/dev/rz0a / ufs rw 1 1
+
edit fstab:
/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
 
  
 +
/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.
 
OSF/1 V1.0 ships with the MIPS C-Compiler 2.20. Thus, we are not completely lost.
Zeile 546: Zeile 520:
 
if config.guess can't detect the OS, give "mips-dec-osf1".
 
if config.guess can't detect the OS, give "mips-dec-osf1".
  
m4-1.4
+
'''m4-1.4'''
  
make-3.75
+
'''make-3.75'''
  
flex-2.5.4a
+
'''flex-2.5.4a'''
  
gcc-2.7.2.3:
+
'''gcc-2.7.2.3:'''
./configure --enable-languages=c,c++,f77 --disable-nls mips-dec-osf
+
<nowiki>./configure --enable-languages=c,c++,f77 --disable-nls mips-dec-osf</nowiki>
  
  
sed-3.0.2:
+
'''sed-3.0.2:'''
will not build correctly with the native ULTRIX cc.
+
'''will not build correctly with the native ULTRIX cc.'''
  
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
+
<nowiki>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':
Zeile 573: Zeile 547:
 
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.
 +
</nowiki>
  
 +
'''texinfo-4.8:''' FAIL
  
texinfo-4.8: FAIL
+
<nowiki>mips-dec-osf1-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../intl    -g -O2 -c substring.c
 
 
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'
Zeile 597: Zeile 570:
  
 
still FAILS
 
still FAILS
 +
</nowiki>
  
  
 
+
'''gawk-3.0.6:'''
gawk-3.0.6:
+
<nowiki>copy install-sh to /usr/local/bin/install
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
Zeile 613: Zeile 586:
  
 
uncomment in awk.h
 
uncomment in awk.h
 +
</nowiki>
  
 +
'''binutils-2.12.2:'''
 +
<nowiki>--disable-nls mips-dec-osf1
 +
note: checking for EILSEQ... ENOENT
 +
</nowiki>
 +
 +
'''bison-1.28:'''
 +
<nowiki>--disable-nls</nowiki>
  
binutils-2.12.2:
 
--disable-nls mips-dec-osf1
 
note: checking for EILSEQ... ENOENT
 
  
 +
'''tar-1.11.8:'''
 +
<nowiki>--disable-nls
 +
make install fails. Copy by hand.
 +
</nowiki>
  
bison-1.28:
+
'''m4-1.4.3'''
--disable-nls
 
  
 +
'''bash-2.03'''
  
tar-1.11.8:
+
'''tar-1.11.8'''
--disable-nls
 
make install fails. Copy by hand.
 
  
m4-1.4.3
+
'''make-3.77'''
  
bash-2.03
 
  
tar-1.11.8
+
-------
 +
not quite there yet...
  
make-3.77
 
  
gcc-2.8.1:
+
'''gcc-2.8.1:'''
 +
<nowiki>
 
./configure --enable-languages=c,c++,f77 --with-ld=/usr/local/bin/gnuld --with-gnu-ld --with-as=/usr/local/bin/gas --with-gnu-as --disable-nls mips-dec-osf1 && make bootstrap
 
./configure --enable-languages=c,c++,f77 --with-ld=/usr/local/bin/gnuld --with-gnu-ld --with-as=/usr/local/bin/gas --with-gnu-as --disable-nls mips-dec-osf1 && make bootstrap
  
 +
enquire.c:
 +
#ifndef jmp_buf
 +
typedef int jmp_buf[_JBLEN];
 +
#endif
  
-------
+
</nowiki>
  
libiconv-1.9.2:
+
'''libiconv-1.9.2:'''
--disable-nls mips-dec-osf1
+
<nowiki>--disable-nls mips-dec-osf1</nowiki>

Version vom 20. März 2019, 19:04 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 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.

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.

DECstation 3100

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/200 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 start 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 /.


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:

setenv console "s".

keep the mouse connected or install a mouse loopback connector.

Configure the OSF/1 software:

X11 is started by an entry in /etc/inittab:

  1. 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

  1. 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

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,c++,f77 --disable-nls mips-dec-osf


sed-3.0.2: will not build correctly with the native ULTRIX cc.

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 # /* Some systems don't declare this function in pwd.h. */ struct passwd *getpwnam (const char *name); uncomment in system.h 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' /* extern int strncasecmp P((const char *s1, const char *s2, register size_t n)) ; */ uncomment in awk.h

binutils-2.12.2: --disable-nls mips-dec-osf1 note: checking for EILSEQ... ENOENT

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



not quite there yet...


gcc-2.8.1: ./configure --enable-languages=c,c++,f77 --with-ld=/usr/local/bin/gnuld --with-gnu-ld --with-as=/usr/local/bin/gas --with-gnu-as --disable-nls mips-dec-osf1 && make bootstrap enquire.c: #ifndef jmp_buf typedef int jmp_buf[_JBLEN]; #endif

libiconv-1.9.2: --disable-nls mips-dec-osf1