<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kb.pocnet.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luna</id>
	<title>Knowledgebase - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://kb.pocnet.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luna"/>
	<link rel="alternate" type="text/html" href="https://kb.pocnet.net/wiki/Spezial:Beitr%C3%A4ge/Luna"/>
	<updated>2026-05-12T21:21:00Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Cheat-Codes_f%C3%BCr_Duke_Nukem_3D&amp;diff=3089</id>
		<title>Cheat-Codes für Duke Nukem 3D</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Cheat-Codes_f%C3%BCr_Duke_Nukem_3D&amp;diff=3089"/>
		<updated>2023-12-20T06:27:46Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|dncornholio&lt;br /&gt;
|100% Health&lt;br /&gt;
|-&lt;br /&gt;
|dnstuff&lt;br /&gt;
|alle Waffen, Schlüssel, Goodies&lt;br /&gt;
|-&lt;br /&gt;
|dnscotty###&lt;br /&gt;
|Sprung zu Episode #, Level ##&lt;br /&gt;
|-&lt;br /&gt;
|dncoords&lt;br /&gt;
|Koordinaten anzeigen&lt;br /&gt;
|-&lt;br /&gt;
|dnview&lt;br /&gt;
|Außenansicht&lt;br /&gt;
|-&lt;br /&gt;
|dnunlock&lt;br /&gt;
|alle Schalter, Türen toggeln&lt;br /&gt;
|-&lt;br /&gt;
|dncashman&lt;br /&gt;
|Duke wirft mit Geld&lt;br /&gt;
|-&lt;br /&gt;
|dnitems&lt;br /&gt;
|alle Schlüssel, Goodies&lt;br /&gt;
|-&lt;br /&gt;
|dnrate&lt;br /&gt;
|Frame-Rate anzeigen&lt;br /&gt;
|-&lt;br /&gt;
|dnskill#&lt;br /&gt;
|Schwierigkeitsgrad ändern&lt;br /&gt;
|-&lt;br /&gt;
|dnhyper&lt;br /&gt;
|Steroide&lt;br /&gt;
|-&lt;br /&gt;
|dnmonsters&lt;br /&gt;
|Monster abschalten&lt;br /&gt;
|-&lt;br /&gt;
|dnshowmap&lt;br /&gt;
|Die ganze Karte zeigen&lt;br /&gt;
|-&lt;br /&gt;
|dnkroz&lt;br /&gt;
|Duke wird unkaputtbar&lt;br /&gt;
|-&lt;br /&gt;
|dnclip&lt;br /&gt;
|Clipping ausschalten&lt;br /&gt;
|-&lt;br /&gt;
|dnweapons&lt;br /&gt;
|alle Waffen&lt;br /&gt;
|-&lt;br /&gt;
|dnkeys&lt;br /&gt;
|alle Schlüssel&lt;br /&gt;
|-&lt;br /&gt;
|dndebug&lt;br /&gt;
|Debug Modus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
beachte das Tastaturlayout: z vs. y. Bei deutschem layout wird aus &amp;quot;dnkroz&amp;quot; &amp;quot;dnkroy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Spiel]]&lt;br /&gt;
[[Kategorie:Cheat]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Cheat-Codes_f%C3%BCr_Duke_Nukem_3D&amp;diff=3088</id>
		<title>Cheat-Codes für Duke Nukem 3D</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Cheat-Codes_f%C3%BCr_Duke_Nukem_3D&amp;diff=3088"/>
		<updated>2023-12-20T06:27:28Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|dncornholio&lt;br /&gt;
|100% Health&lt;br /&gt;
|-&lt;br /&gt;
|dnstuff&lt;br /&gt;
|alle Waffen, Schlüssel, Goodies&lt;br /&gt;
|-&lt;br /&gt;
|dnscotty###&lt;br /&gt;
|Sprung zu Episode #, Level ##&lt;br /&gt;
|-&lt;br /&gt;
|dncoords&lt;br /&gt;
|Koordinaten anzeigen&lt;br /&gt;
|-&lt;br /&gt;
|dnview&lt;br /&gt;
|Außenansicht&lt;br /&gt;
|-&lt;br /&gt;
|dnunlock&lt;br /&gt;
|alle Schalter, Türen toggeln&lt;br /&gt;
|-&lt;br /&gt;
|dncashman&lt;br /&gt;
|Duke wirft mit Geld&lt;br /&gt;
|-&lt;br /&gt;
|dnitems&lt;br /&gt;
|alle Schlüssel, Goodies&lt;br /&gt;
|-&lt;br /&gt;
|dnrate&lt;br /&gt;
|Frame-Rate anzeigen&lt;br /&gt;
|-&lt;br /&gt;
|dnskill#&lt;br /&gt;
|Schwierigkeitsgrad ändern&lt;br /&gt;
|-&lt;br /&gt;
|dnhyper&lt;br /&gt;
|Steroide&lt;br /&gt;
|-&lt;br /&gt;
|dnmonsters&lt;br /&gt;
|Monster abschalten&lt;br /&gt;
|-&lt;br /&gt;
|dnshowmap&lt;br /&gt;
|Die ganze Karte zeigen&lt;br /&gt;
|-&lt;br /&gt;
|dnkroz&lt;br /&gt;
|Duke wird unkaputtbar&lt;br /&gt;
|-&lt;br /&gt;
|dnclip&lt;br /&gt;
|Clipping ausschalten&lt;br /&gt;
|-&lt;br /&gt;
|dnweapons&lt;br /&gt;
|alle Waffen&lt;br /&gt;
|-&lt;br /&gt;
|dnkeys&lt;br /&gt;
|alle Schlüssel&lt;br /&gt;
|-&lt;br /&gt;
|dndebug&lt;br /&gt;
|Debug Modus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
beachte das Tastaturlayout: z vs. y Bei deutschem layout wird aus &amp;quot;dnkroz&amp;quot; &amp;quot;dnkroy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:Spiel]]&lt;br /&gt;
[[Kategorie:Cheat]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3079</id>
		<title>SCO UnixWare 7.1.4 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3079"/>
		<updated>2023-10-08T12:32:58Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UnixWare ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the other&amp;quot; Unix system from SCO. UnixWare started as a PC Unix port from Univel (an AT&amp;amp;T and Novell joint venture). Then Novell bought the Unix  system laboratories from AT&amp;amp;T and UnixWare became a Novell product. In 1995 they sold Unix to SCO. It was slowly adapted into the SCO environment and UnixWare 7 was released in 1998 sporting a range of improvements. UnixWare was an interesting and capable system that was essentially destroyed by mismanagement. Support by the open source community pretty much died off in 2003 when the lawsuits started and UnixWare was pretty much dead then. SCO essentially burnt their own house down and expected all the users to happily dance around the fire with them. Somebody with an MBA please explain to me how this was a good idea... SCO tried to unify the old SVR3.2 based Openserver and the SVR5 based UnixWare. The newer Openserver 6 was mostly ignored though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sure. As far as the basic Unix goes, it is solid and has a number of features that are nice. It will support a lot of RAM, CPUs and it is pretty stable and fast. It&#039;s a bit like Solaris 2.5.1 to 9. The scoadmin tools are very convenient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing UnixWare 7.1.4 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:celsius.png |thumb|right|Fujitsu Celsius M470-2]]&lt;br /&gt;
&lt;br /&gt;
We will be installing UnixWare on this machine: A Fujitsu Celsius M470-2: 6-core Intel Xeon W3680, 22GB RAM, 500GB SSD, Nvidia Quaddro 2000 graphics. This machine will essentially provide a maxed-out UnixWare configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
get your licenses ready: Data Center Edition, UDK, ODK, additional CPUs, 64GB memory support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
a complete set of media includes these CDs. You will/may not need or want everything.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc01 - Base Operating Systems uw714.CD1.Jun2008.iso&#039;&lt;br /&gt;
 use this updated ISO. It includes more hardware support.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc02 - Base Operating System Upgrade CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc03 - Optional Services CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc04 - Linux RPM CD from 7.1.3.iso&#039;&lt;br /&gt;
 following the lawsuits, SCO removed the GNU/Linux stuff from UnixWare. One can just use the CD that was included with UnixWare 7.1.3. This is for the &amp;quot;Linux kernel personality&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc05 - UnixWare-OpenServer Development Kit CD.iso&#039;&lt;br /&gt;
 who doesn&#039;t want the developer stuff?&lt;br /&gt;
&lt;br /&gt;
&#039;Disc06 - OpenServer Kernel Personality CD.iso&#039;&lt;br /&gt;
 SCO offered an &amp;quot;Openserver personality&amp;quot; to migrate an existing Openserver installation. Unless you are interested in running old binaries, it is not so useful.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc07 - Web Services Substrate.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc08 - PowerTerm Series.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install software:&lt;br /&gt;
&lt;br /&gt;
/usr/X/bin/PackageMgr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install NFS:&lt;br /&gt;
&lt;br /&gt;
The ``nfs&#039;&#039; package is not one of those automatically included in the UnixWare installation process: you can change this setting using the installation menus, which allow packages to be selected or deselected as required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
install from UnixWare CD1:&lt;br /&gt;
&lt;br /&gt;
mount /dev/cdrom/cdrom1 /mnt&lt;br /&gt;
pkgadd -d /mnt nfs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: if you have already installed MP4 before, you will need to reinstall MP4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile&lt;br /&gt;
 MANPATH=/usr/local/man:/usr/dt/man:/usr/man:/usr/lib/scohelp/%L/man:/usr/share/man:scohelp:/usr/lib/scohelp/en_US.ISO8859-1/man:/usr/share/man&lt;br /&gt;
 &lt;br /&gt;
 PATH=/usr/local/bin:/usr/gnu/bin:/usr/ccs/bin:/usr/dt/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/ucb:/usr/dt/bin:/usr/bin/X11:/usr/java/bin&lt;br /&gt;
 &lt;br /&gt;
 export MANPATH PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot; erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CFLAGS=&amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/local/include&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS=&amp;quot;-L/usr/local/lib -Wl,-R,/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 export CFLAGS CPPFLAGS LDFLAGS&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #CONFIG_SHELL=/bin/ksh&lt;br /&gt;
 CONFIG_SHELL=/usr/local/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.850&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
    then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unregistered SCO software is installed on your system.&amp;quot;&lt;br /&gt;
 UnixWare keeps nagging you to register your software with SCO. So far I have not found any way to make it shut up.&lt;br /&gt;
 &lt;br /&gt;
 the message supposedly comes from:&lt;br /&gt;
 For telnet connections: /usr/lib/iaf/in.login/scheme&lt;br /&gt;
 For login : /usr/lib/iaf/login/scheme (/usr/bin/login)&lt;br /&gt;
 these are binary files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NFS mount errors:&lt;br /&gt;
&lt;br /&gt;
 UX:nfs mount: ERROR: get_addr: (host audrey, program 100003, version 3) is not found on any transport&lt;br /&gt;
 &lt;br /&gt;
 it&#039;s a server/unixware incompatiblity.&lt;br /&gt;
 UnixWare NEEDS udp for NFS.&lt;br /&gt;
 &lt;br /&gt;
 for a modern Linux server check that you have this enabled in /etc/nfs.conf:&lt;br /&gt;
 &lt;br /&gt;
 [nfsd]&lt;br /&gt;
 udp=y&lt;br /&gt;
 tcp=y&lt;br /&gt;
 vers2=y&lt;br /&gt;
 vers3=y&lt;br /&gt;
 vers4=y&lt;br /&gt;
 &lt;br /&gt;
 even then, UnixWare might try to mount shares as NFSv3, but it won&#039;t work correctly.&lt;br /&gt;
 In that case, try settting NFSv2 manually:&lt;br /&gt;
 &lt;br /&gt;
 mount -F nfs -o vers=2 audrey:/export/sources /mnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install maintenance pack 4 (MP4):&lt;br /&gt;
&lt;br /&gt;
    2. Do one of the following:&lt;br /&gt;
          + If you are installing the maintenance pack from CD, insert the&lt;br /&gt;
            maintenance pack CD into the primary CD drive and enter:&lt;br /&gt;
 # mount /dev/cdrom/cdrom1 /install&lt;br /&gt;
 &lt;br /&gt;
           + If you are installing this maintenance pack from the web,&lt;br /&gt;
            download the uw714mp4.iso file to your server from:&lt;br /&gt;
 &lt;br /&gt;
            In the directory where you downloaded the uw714mp4.iso file,&lt;br /&gt;
            enter:&lt;br /&gt;
 # mount `marry -a uw714mp4.iso` /install&lt;br /&gt;
&lt;br /&gt;
    3. Change directory to /install:&lt;br /&gt;
 # cd /install&lt;br /&gt;
 &lt;br /&gt;
    4. Do one of the following:&lt;br /&gt;
         A. To install the required uw714mp4 set and the updated packages&lt;br /&gt;
            on your system, enter:&lt;br /&gt;
 # ./install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
UnixWare used to have a more-or-less decent open source support. SCO provided gcc-2.95.3 and this works mostly fine, except for some declaration problems from time to time. After 2003 open source support died off. I could not get any more modern gcc version to work reliably on UnixWare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  -W -Wall -Wtraditional cplus-dem.c -o cplus-dem.o&lt;br /&gt;
In file included from cplus-dem.c:63:&lt;br /&gt;
../include/libiberty.h:293: conflicting types for `vasprintf&#039;&lt;br /&gt;
/usr/gnu/lib/gcc-lib/i586-unknown-sysv5/2.95.3pl1/include/stdio.h:374: previous declaration of `vasprintf&#039;&lt;br /&gt;
make: *** [cplus-dem.o] Error 1&lt;br /&gt;
&lt;br /&gt;
just uncomment the definition of vasprintf in include/libiberty.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8:&lt;br /&gt;
 needs a newer version of config.guess or just give the platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2 doesn&#039;t work correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
inet_addr undefined:&lt;br /&gt;
link with -lsocket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3078</id>
		<title>SCO UnixWare 7.1.4 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3078"/>
		<updated>2023-10-08T12:19:36Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UnixWare ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the other&amp;quot; Unix system from SCO. UnixWare started as a PC Unix port from Univel (an AT&amp;amp;T and Novell joint venture). Then Novell bought the Unix  system laboratories from AT&amp;amp;T and UnixWare became a Novell product. In 1995 they sold Unix to SCO. It was slowly adapted into the SCO environment and UnixWare 7 was released in 1998 sporting a range of improvements. UnixWare was an interesting and capable system that was essentially destroyed by mismanagement. Support by the open source community pretty much died off in 2003 when the lawsuits started and UnixWare was pretty much dead then. SCO essentially burnt their own house down and expected all the users to happily dance around the fire with them. Somebody with an MBA please explain to me how this was a good idea... SCO tried to unify the old SVR3.2 based Openserver and the SVR5 based UnixWare. The newer Openserver 6 was mostly ignored though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sure. As far as the basic Unix goes, it is solid and has a number of features that are nice. It will support a lot of RAM, CPUs and it is pretty stable and fast. It&#039;s a bit like Solaris 2.5.1 to 9. The scoadmin tools are very convenient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing UnixWare 7.1.4 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:celsius.png |thumb|right|Fujitsu Celsius M470-2]]&lt;br /&gt;
&lt;br /&gt;
We will be installing UnixWare on this machine: A Fujitsu Celsius M470-2: 6-core Intel Xeon W3680, 22GB RAM, 500GB SSD, Nvidia Quaddro 2000 graphics. This machine will essentially provide a maxed-out UnixWare configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
get your licenses ready: Data Center Edition, UDK, ODK, additional CPUs, 64GB memory support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
a complete set of media includes these CDs. You will/may not need or want everything.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc01 - Base Operating Systems uw714.CD1.Jun2008.iso&#039;&lt;br /&gt;
 use this updated ISO. It includes more hardware support.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc02 - Base Operating System Upgrade CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc03 - Optional Services CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc04 - Linux RPM CD from 7.1.3.iso&#039;&lt;br /&gt;
 following the lawsuits, SCO removed the GNU/Linux stuff from UnixWare. One can just use the CD that was included with UnixWare 7.1.3. This is for the &amp;quot;Linux kernel personality&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc05 - UnixWare-OpenServer Development Kit CD.iso&#039;&lt;br /&gt;
 who doesn&#039;t want the developer stuff?&lt;br /&gt;
&lt;br /&gt;
&#039;Disc06 - OpenServer Kernel Personality CD.iso&#039;&lt;br /&gt;
 SCO offered an &amp;quot;Openserver personality&amp;quot; to migrate an existing Openserver installation. Unless you are interested in running old binaries, it is not so useful.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc07 - Web Services Substrate.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc08 - PowerTerm Series.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install software:&lt;br /&gt;
&lt;br /&gt;
/usr/X/bin/PackageMgr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install NFS:&lt;br /&gt;
&lt;br /&gt;
The ``nfs&#039;&#039; package is not one of those automatically included in the UnixWare installation process: you can change this setting using the installation menus, which allow packages to be selected or deselected as required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
install from UnixWare CD1:&lt;br /&gt;
&lt;br /&gt;
mount /dev/cdrom/cdrom1 /mnt&lt;br /&gt;
pkgadd -d /mnt nfs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: if you have already installed MP4 before, you will need to reinstall MP4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile&lt;br /&gt;
 MANPATH=/usr/local/man:/usr/dt/man:/usr/man:/usr/lib/scohelp/%L/man:/usr/share/man:scohelp:/usr/lib/scohelp/en_US.ISO8859-1/man:/usr/share/man&lt;br /&gt;
 &lt;br /&gt;
 PATH=/usr/local/bin:/usr/gnu/bin:/usr/ccs/bin:/usr/dt/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/ucb:/usr/dt/bin:/usr/bin/X11:/usr/java/bin&lt;br /&gt;
 &lt;br /&gt;
 export MANPATH PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot; erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CFLAGS=&amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/local/include&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS=&amp;quot;-L/usr/local/lib -Wl,-R,/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 export CFLAGS CPPFLAGS LDFLAGS&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #CONFIG_SHELL=/bin/ksh&lt;br /&gt;
 CONFIG_SHELL=/usr/local/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.850&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
    then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unregistered SCO software is installed on your system.&amp;quot;&lt;br /&gt;
 UnixWare keeps nagging you to register your software with SCO. So far I have not found any way to make it shut up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NFS mount errors:&lt;br /&gt;
&lt;br /&gt;
 UX:nfs mount: ERROR: get_addr: (host audrey, program 100003, version 3) is not found on any transport&lt;br /&gt;
 &lt;br /&gt;
 it&#039;s a server/unixware incompatiblity.&lt;br /&gt;
 UnixWare NEEDS udp for NFS.&lt;br /&gt;
 &lt;br /&gt;
 for a modern Linux server check that you have this enabled in /etc/nfs.conf:&lt;br /&gt;
 &lt;br /&gt;
 [nfsd]&lt;br /&gt;
 udp=y&lt;br /&gt;
 tcp=y&lt;br /&gt;
 vers2=y&lt;br /&gt;
 vers3=y&lt;br /&gt;
 vers4=y&lt;br /&gt;
 &lt;br /&gt;
 even then, UnixWare might try to mount shares as NFSv3, but it won&#039;t work correctly.&lt;br /&gt;
 In that case, try settting NFSv2 manually:&lt;br /&gt;
 &lt;br /&gt;
 mount -F nfs -o vers=2 audrey:/export/sources /mnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install maintenance pack 4 (MP4):&lt;br /&gt;
&lt;br /&gt;
    2. Do one of the following:&lt;br /&gt;
          + If you are installing the maintenance pack from CD, insert the&lt;br /&gt;
            maintenance pack CD into the primary CD drive and enter:&lt;br /&gt;
 # mount /dev/cdrom/cdrom1 /install&lt;br /&gt;
 &lt;br /&gt;
           + If you are installing this maintenance pack from the web,&lt;br /&gt;
            download the uw714mp4.iso file to your server from:&lt;br /&gt;
 &lt;br /&gt;
            In the directory where you downloaded the uw714mp4.iso file,&lt;br /&gt;
            enter:&lt;br /&gt;
 # mount `marry -a uw714mp4.iso` /install&lt;br /&gt;
&lt;br /&gt;
    3. Change directory to /install:&lt;br /&gt;
 # cd /install&lt;br /&gt;
 &lt;br /&gt;
    4. Do one of the following:&lt;br /&gt;
         A. To install the required uw714mp4 set and the updated packages&lt;br /&gt;
            on your system, enter:&lt;br /&gt;
 # ./install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
UnixWare used to have a more-or-less decent open source support. SCO provided gcc-2.95.3 and this works mostly fine, except for some declaration problems from time to time. After 2003 open source support died off. I could not get any more modern gcc version to work reliably on UnixWare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  -W -Wall -Wtraditional cplus-dem.c -o cplus-dem.o&lt;br /&gt;
In file included from cplus-dem.c:63:&lt;br /&gt;
../include/libiberty.h:293: conflicting types for `vasprintf&#039;&lt;br /&gt;
/usr/gnu/lib/gcc-lib/i586-unknown-sysv5/2.95.3pl1/include/stdio.h:374: previous declaration of `vasprintf&#039;&lt;br /&gt;
make: *** [cplus-dem.o] Error 1&lt;br /&gt;
&lt;br /&gt;
just uncomment the definition of vasprintf in include/libiberty.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8:&lt;br /&gt;
 needs a newer version of config.guess or just give the platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2 doesn&#039;t work correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
inet_addr undefined:&lt;br /&gt;
link with -lsocket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3077</id>
		<title>SCO UnixWare 7.1.4 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3077"/>
		<updated>2023-10-08T11:32:14Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UnixWare ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the other&amp;quot; Unix system from SCO. UnixWare started as a PC Unix port from Univel (an AT&amp;amp;T and Novell joint venture). Then Novell bought the Unix  system laboratories from AT&amp;amp;T and UnixWare became a Novell product. In 1995 they sold Unix to SCO. It was slowly adapted into the SCO environment and UnixWare 7 was released in 1998 sporting a range of improvements. UnixWare was an interesting and capable system that was essentially destroyed by mismanagement. Support by the open source community pretty much died off in 2003 when the lawsuits started and UnixWare was pretty much dead then. SCO essentially burnt their own house down and expected all the users to happily dance around the fire with them. Somebody with an MBA please explain to me how this was a good idea... SCO tried to unify the old SVR3.2 based Openserver and the SVR5 based UnixWare. The newer Openserver 6 was mostly ignored though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sure. As far as the basic Unix goes, it is solid and has a number of features that are nice. It will support a lot of RAM, CPUs and it is pretty stable and fast. It&#039;s a bit like Solaris 2.5.1 to 9. The scoadmin tools are very convenient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing UnixWare 7.1.4 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:celsius.png |thumb|right|Fujitsu Celsius M470-2]]&lt;br /&gt;
&lt;br /&gt;
We will be installing UnixWare on this machine: A Fujitsu Celsius M470-2: 6-core Intel Xeon W3680, 22GB RAM, 500GB SSD, Nvidia Quaddro 2000 graphics. This machine will essentially provide a maxed-out UnixWare configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
get your licenses ready: Data Center Edition, UDK, ODK, additional CPUs, 64GB memory support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
a complete set of media includes these CDs. You will/may not need or want everything.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc01 - Base Operating Systems uw714.CD1.Jun2008.iso&#039;&lt;br /&gt;
 use this updated ISO. It includes more hardware support.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc02 - Base Operating System Upgrade CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc03 - Optional Services CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc04 - Linux RPM CD from 7.1.3.iso&#039;&lt;br /&gt;
 following the lawsuits, SCO removed the GNU/Linux stuff from UnixWare. One can just use the CD that was included with UnixWare 7.1.3. This is for the &amp;quot;Linux kernel personality&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc05 - UnixWare-OpenServer Development Kit CD.iso&#039;&lt;br /&gt;
 who doesn&#039;t want the developer stuff?&lt;br /&gt;
&lt;br /&gt;
&#039;Disc06 - OpenServer Kernel Personality CD.iso&#039;&lt;br /&gt;
 SCO offered an &amp;quot;Openserver personality&amp;quot; to migrate an existing Openserver installation. Unless you are interested in running old binaries, it is not so useful.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc07 - Web Services Substrate.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc08 - PowerTerm Series.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install software:&lt;br /&gt;
&lt;br /&gt;
/usr/X/bin/PackageMgr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install NFS:&lt;br /&gt;
&lt;br /&gt;
The ``nfs&#039;&#039; package is not one of those automatically included in the UnixWare installation process: you can change this setting using the installation menus, which allow packages to be selected or deselected as required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
install from UnixWare CD1:&lt;br /&gt;
&lt;br /&gt;
mount /dev/cdrom/cdrom1 /mnt&lt;br /&gt;
pkgadd -d /mnt nfs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: if you have already installed MP4 before, you will need to reinstall MP4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile&lt;br /&gt;
 MANPATH=/usr/local/man:/usr/dt/man:/usr/man:/usr/lib/scohelp/%L/man:/usr/share/man:scohelp:/usr/lib/scohelp/en_US.ISO8859-1/man:/usr/share/man&lt;br /&gt;
 &lt;br /&gt;
 PATH=/usr/local/bin:/usr/gnu/bin:/usr/ccs/bin:/usr/dt/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/ucb:/usr/dt/bin:/usr/bin/X11:/usr/java/bin&lt;br /&gt;
 &lt;br /&gt;
 export MANPATH PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot; erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CFLAGS=&amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/local/include&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS=&amp;quot;-L/usr/local/lib -Wl,-R,/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 export CFLAGS CPPFLAGS LDFLAGS&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #CONFIG_SHELL=/bin/ksh&lt;br /&gt;
 CONFIG_SHELL=/usr/local/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.850&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
    then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NFS mount errors:&lt;br /&gt;
&lt;br /&gt;
 UX:nfs mount: ERROR: get_addr: (host audrey, program 100003, version 3) is not found on any transport&lt;br /&gt;
 &lt;br /&gt;
 it&#039;s a server/unixware incompatiblity.&lt;br /&gt;
 UnixWare NEEDS udp for NFS.&lt;br /&gt;
 &lt;br /&gt;
 for a modern Linux server check that you have this enabled in /etc/nfs.conf:&lt;br /&gt;
 &lt;br /&gt;
 [nfsd]&lt;br /&gt;
 udp=y&lt;br /&gt;
 tcp=y&lt;br /&gt;
 vers2=y&lt;br /&gt;
 vers3=y&lt;br /&gt;
 vers4=y&lt;br /&gt;
 &lt;br /&gt;
 even then, UnixWare might try to mount shares as NFSv3, but it won&#039;t work correctly.&lt;br /&gt;
 In that case, try settting NFSv2 manually:&lt;br /&gt;
 &lt;br /&gt;
 mount -F nfs -o vers=2 audrey:/export/sources /mnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install maintenance pack 4 (MP4):&lt;br /&gt;
&lt;br /&gt;
    2. Do one of the following:&lt;br /&gt;
          + If you are installing the maintenance pack from CD, insert the&lt;br /&gt;
            maintenance pack CD into the primary CD drive and enter:&lt;br /&gt;
 # mount /dev/cdrom/cdrom1 /install&lt;br /&gt;
 &lt;br /&gt;
           + If you are installing this maintenance pack from the web,&lt;br /&gt;
            download the uw714mp4.iso file to your server from:&lt;br /&gt;
 &lt;br /&gt;
            In the directory where you downloaded the uw714mp4.iso file,&lt;br /&gt;
            enter:&lt;br /&gt;
 # mount `marry -a uw714mp4.iso` /install&lt;br /&gt;
&lt;br /&gt;
    3. Change directory to /install:&lt;br /&gt;
 # cd /install&lt;br /&gt;
 &lt;br /&gt;
    4. Do one of the following:&lt;br /&gt;
         A. To install the required uw714mp4 set and the updated packages&lt;br /&gt;
            on your system, enter:&lt;br /&gt;
 # ./install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
UnixWare used to have a more-or-less decent open source support. SCO provided gcc-2.95.3 and this works mostly fine, except for some declaration problems from time to time. After 2003 open source support died off. I could not get any more modern gcc version to work reliably on UnixWare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I./../include  -W -Wall -Wtraditional cplus-dem.c -o cplus-dem.o&lt;br /&gt;
In file included from cplus-dem.c:63:&lt;br /&gt;
../include/libiberty.h:293: conflicting types for `vasprintf&#039;&lt;br /&gt;
/usr/gnu/lib/gcc-lib/i586-unknown-sysv5/2.95.3pl1/include/stdio.h:374: previous declaration of `vasprintf&#039;&lt;br /&gt;
make: *** [cplus-dem.o] Error 1&lt;br /&gt;
&lt;br /&gt;
just uncomment the definition of vasprintf in include/libiberty.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8:&lt;br /&gt;
 needs a newer version of config.guess or just give the platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2 doesn&#039;t work correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
inet_addr undefined:&lt;br /&gt;
link with -lsocket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3076</id>
		<title>SCO UnixWare 7.1.4 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3076"/>
		<updated>2023-10-08T11:19:36Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UnixWare ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the other&amp;quot; Unix system from SCO. UnixWare started as a PC Unix port from Univel (an AT&amp;amp;T and Novell joint venture). Then Novell bought the Unix  system laboratories from AT&amp;amp;T and UnixWare became a Novell product. In 1995 they sold Unix to SCO. It was slowly adapted into the SCO environment and UnixWare 7 was released in 1998 sporting a range of improvements. UnixWare was an interesting and capable system that was essentially destroyed by mismanagement. Support by the open source community pretty much died off in 2003 when the lawsuits started and UnixWare was pretty much dead then. SCO tried to unify the old SVR3.2 based Openserver and the SVR5 based UnixWare. The newer Openserver 6 was mostly ignored though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sure. As far as the basic Unix goes, it is solid and has a number of features that are nice. It will support a lot of RAM, CPUs and it is pretty stable and fast. It&#039;s a bit like Solaris 2.5.1 to 9. The scoadmin tools are very convenient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing UnixWare 7.1.4 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:celsius.png |thumb|right|Fujitsu Celsius M470-2]]&lt;br /&gt;
&lt;br /&gt;
We will be installing UnixWare on this machine: A Fujitsu Celsius M470-2: 6-core Intel Xeon W3680, 22GB RAM, 500GB SSD, Nvidia Quaddro 2000 graphics. This machine will essentially provide a maxed-out UnixWare configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
get your licenses ready: Data Center Edition, UDK, ODK, additional CPUs, 64GB memory support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
a complete set of media includes these CDs. You will/may not need or want everything.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc01 - Base Operating Systems uw714.CD1.Jun2008.iso&#039;&lt;br /&gt;
 use this updated ISO. It includes more hardware support.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc02 - Base Operating System Upgrade CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc03 - Optional Services CD.iso&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;Disc04 - Linux RPM CD from 7.1.3.iso&#039;&lt;br /&gt;
 following the lawsuits, SCO removed the GNU/Linux stuff from UnixWare. One can just use the CD that was included with UnixWare 7.1.3. This is for the &amp;quot;Linux kernel personality&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc05 - UnixWare-OpenServer Development Kit CD.iso&#039;&lt;br /&gt;
 who doesn&#039;t want the developer stuff?&lt;br /&gt;
&lt;br /&gt;
&#039;Disc06 - OpenServer Kernel Personality CD.iso&#039;&lt;br /&gt;
 SCO offered an &amp;quot;Openserver personality&amp;quot; to migrate an existing Openserver installation. Unless you are interested in running old binaries, it is not so useful.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc07 - Web Services Substrate.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&#039;Disc08 - PowerTerm Series.iso&#039;&lt;br /&gt;
 no need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install software:&lt;br /&gt;
&lt;br /&gt;
/usr/X/bin/PackageMgr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install NFS:&lt;br /&gt;
&lt;br /&gt;
The ``nfs&#039;&#039; package is not one of those automatically included in the UnixWare installation process: you can change this setting using the installation menus, which allow packages to be selected or deselected as required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
install from UnixWare CD1:&lt;br /&gt;
&lt;br /&gt;
mount /dev/cdrom/cdrom1 /mnt&lt;br /&gt;
pkgadd -d /mnt nfs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: if you have already installed MP4 before, you will need to reinstall MP4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile&lt;br /&gt;
 MANPATH=/usr/local/man:/usr/dt/man:/usr/man:/usr/lib/scohelp/%L/man:/usr/share/man:scohelp:/usr/lib/scohelp/en_US.ISO8859-1/man:/usr/share/man&lt;br /&gt;
 &lt;br /&gt;
 PATH=/usr/local/bin:/usr/gnu/bin:/usr/ccs/bin:/usr/dt/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/ucb:/usr/dt/bin:/usr/bin/X11:/usr/java/bin&lt;br /&gt;
 &lt;br /&gt;
 export MANPATH PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot; erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CFLAGS=&amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/local/include&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS=&amp;quot;-L/usr/local/lib -Wl,-R,/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 export CFLAGS CPPFLAGS LDFLAGS&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #CONFIG_SHELL=/bin/ksh&lt;br /&gt;
 CONFIG_SHELL=/usr/local/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.850&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
    then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3075</id>
		<title>SCO UnixWare 7.1.4 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_UnixWare_7.1.4_installation&amp;diff=3075"/>
		<updated>2023-10-07T11:00:50Z</updated>

		<summary type="html">&lt;p&gt;Luna: Die Seite wurde neu angelegt: „== UnixWare ==  &amp;quot;the other&amp;quot; Unix system from SCO. UnixWare started as a PC Unix port from Univel (an AT&amp;amp;T and Novell joint venture). Then Novell bought the Uni…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UnixWare ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the other&amp;quot; Unix system from SCO. UnixWare started as a PC Unix port from Univel (an AT&amp;amp;T and Novell joint venture). Then Novell bought the Unix  system laboratories from AT&amp;amp;T and UnixWare became a Novell product. In 1995 they sold Unix to SCO. It was slowly adapted into the SCO environment and UnixWare 7 was released in 1998 sporting a range of improvements. UnixWare was an interesting and capable system that was essentially destroyed by mismanagement. Support by the open source community pretty much died off in 2003 when the lawsuits started and UnixWare was pretty much dead then. SCO tried to unify the old SVR3.2 based Openserver and the SVR5 based UnixWare. The newer Openserver 6 was mostly ignored though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sure. As far as the basic Unix goes, it is solid and has a number of features that are nice. It will support a lot of RAM, CPUs and it is pretty stable and fast. It&#039;s a bit like Solaris 2.5.1 to 9. The scoadmin tools are very convenient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing UnixWare 7.1.4 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:celsius.png |thumb|right|Fujitsu Celsius M470-2]]&lt;br /&gt;
&lt;br /&gt;
We will be installing UnixWare on this machine: A Fujitsu Celsius M470-2: 6-core Intel Xeon W3680, 22GB RAM, 500GB SSD, Nvidia Quaddro 2000 graphics.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile&lt;br /&gt;
 MANPATH=/usr/local/man:/usr/dt/man:/usr/man:/usr/lib/scohelp/%L/man:/usr/share/man:scohelp:/usr/lib/scohelp/en_US.ISO8859-1/man:/usr/share/man&lt;br /&gt;
 &lt;br /&gt;
 PATH=/usr/local/bin:/usr/gnu/bin:/usr/ccs/bin:/usr/dt/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/ucb:/usr/dt/bin:/usr/bin/X11:/usr/java/bin&lt;br /&gt;
 &lt;br /&gt;
 export MANPATH PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot; erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CFLAGS=&amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/local/include&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS=&amp;quot;-L/usr/local/lib -Wl,-R,/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 export CFLAGS CPPFLAGS LDFLAGS&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 #CONFIG_SHELL=/bin/ksh&lt;br /&gt;
 CONFIG_SHELL=/usr/local/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.850&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
    then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Datei:Celsius.png&amp;diff=3074</id>
		<title>Datei:Celsius.png</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Datei:Celsius.png&amp;diff=3074"/>
		<updated>2023-10-07T10:56:04Z</updated>

		<summary type="html">&lt;p&gt;Luna: Fujtsu Celsius M470-2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
Fujtsu Celsius M470-2&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Benutzer:Luna&amp;diff=3073</id>
		<title>Benutzer:Luna</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Benutzer:Luna&amp;diff=3073"/>
		<updated>2023-10-07T10:29:41Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;just some documentation on old systems:&lt;br /&gt;
&lt;br /&gt;
[[ULTRIX 3.1D]]&lt;br /&gt;
&lt;br /&gt;
[[ULTRIX 3 VAX]]&lt;br /&gt;
&lt;br /&gt;
[[ULTRIX 4]]&lt;br /&gt;
&lt;br /&gt;
[[OSF/1 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[SunOS 3.5]]&lt;br /&gt;
&lt;br /&gt;
[[SunOS 4.0.3c SPARC]]&lt;br /&gt;
&lt;br /&gt;
[[Solaris 2.0 SPARC]]&lt;br /&gt;
&lt;br /&gt;
[[Solaris 2.4 SPARC]]&lt;br /&gt;
&lt;br /&gt;
[[Sony NEWS-OS 3.3]]&lt;br /&gt;
&lt;br /&gt;
[[SunOS 4 network boot howto]]&lt;br /&gt;
&lt;br /&gt;
[[IRIX 3.3 installation]]&lt;br /&gt;
&lt;br /&gt;
[[gcc-2.95.3 libIO patch for ULTRIX]]&lt;br /&gt;
&lt;br /&gt;
[[SCO Openserver 5.0.7 installation]]&lt;br /&gt;
&lt;br /&gt;
[[SCO UnixWare 7.1.4 installation]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3072</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3072"/>
		<updated>2023-10-07T10:28:14Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-or-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. All this of course not in absolute terms. Naturally a system released in 1995 (OS 5.0) will be &amp;quot;mature&amp;quot; in 2023. It is just one of the very few SVR3 systems that survived long enough to actually improve over time, whereas most SVR3 were just released with a lot of problems and never really fixed. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM designed two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 The development system is on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A number of packages where I have no specific notes or installation sequence:&lt;br /&gt;
&lt;br /&gt;
autoconf-2.13&lt;br /&gt;
&lt;br /&gt;
automake-1.4-p6&lt;br /&gt;
&lt;br /&gt;
bc-1.06&lt;br /&gt;
&lt;br /&gt;
bzip2-1.0.6&lt;br /&gt;
&lt;br /&gt;
diffutils-3.2&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1&lt;br /&gt;
&lt;br /&gt;
gawk-3.1.8&lt;br /&gt;
&lt;br /&gt;
glib-1.2.10&lt;br /&gt;
&lt;br /&gt;
gmp-5.1.3&lt;br /&gt;
&lt;br /&gt;
jasper-1.900.1&lt;br /&gt;
&lt;br /&gt;
jpeg-6b&lt;br /&gt;
&lt;br /&gt;
libidn-1.26&lt;br /&gt;
&lt;br /&gt;
libid3tag-0.15.1b&lt;br /&gt;
&lt;br /&gt;
libpng-1.2.31&lt;br /&gt;
&lt;br /&gt;
libsigsegv-2.12&lt;br /&gt;
&lt;br /&gt;
libutf8-0.8.1&lt;br /&gt;
&lt;br /&gt;
make-3.82&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35&lt;br /&gt;
&lt;br /&gt;
mksh-R59c&lt;br /&gt;
&lt;br /&gt;
m4-1.4.7&lt;br /&gt;
&lt;br /&gt;
ncftp-3.1.9&lt;br /&gt;
&lt;br /&gt;
nedit-5.5&lt;br /&gt;
&lt;br /&gt;
pcre-8.45&lt;br /&gt;
&lt;br /&gt;
pth-2.0.7&lt;br /&gt;
&lt;br /&gt;
readline-6.1&lt;br /&gt;
&lt;br /&gt;
renderext-0.9&lt;br /&gt;
&lt;br /&gt;
renderproto-0.9.3&lt;br /&gt;
&lt;br /&gt;
tar-1.20&lt;br /&gt;
&lt;br /&gt;
tiff-3.8.2&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3&lt;br /&gt;
&lt;br /&gt;
t1lib-5.1.2&lt;br /&gt;
&lt;br /&gt;
vim64&lt;br /&gt;
&lt;br /&gt;
w3c-libwww-5.4.0&lt;br /&gt;
&lt;br /&gt;
xearth-1.1&lt;br /&gt;
&lt;br /&gt;
zlib-1.2.13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3071</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3071"/>
		<updated>2023-10-07T10:23:23Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-or-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM designed two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 The development system is on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A number of packages where I have no specific notes or installation sequence:&lt;br /&gt;
&lt;br /&gt;
autoconf-2.13&lt;br /&gt;
&lt;br /&gt;
automake-1.4-p6&lt;br /&gt;
&lt;br /&gt;
bc-1.06&lt;br /&gt;
&lt;br /&gt;
bzip2-1.0.6&lt;br /&gt;
&lt;br /&gt;
diffutils-3.2&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1&lt;br /&gt;
&lt;br /&gt;
gawk-3.1.8&lt;br /&gt;
&lt;br /&gt;
glib-1.2.10&lt;br /&gt;
&lt;br /&gt;
gmp-5.1.3&lt;br /&gt;
&lt;br /&gt;
jasper-1.900.1&lt;br /&gt;
&lt;br /&gt;
jpeg-6b&lt;br /&gt;
&lt;br /&gt;
libidn-1.26&lt;br /&gt;
&lt;br /&gt;
libid3tag-0.15.1b&lt;br /&gt;
&lt;br /&gt;
libpng-1.2.31&lt;br /&gt;
&lt;br /&gt;
libsigsegv-2.12&lt;br /&gt;
&lt;br /&gt;
libutf8-0.8.1&lt;br /&gt;
&lt;br /&gt;
make-3.82&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35&lt;br /&gt;
&lt;br /&gt;
mksh-R59c&lt;br /&gt;
&lt;br /&gt;
m4-1.4.7&lt;br /&gt;
&lt;br /&gt;
ncftp-3.1.9&lt;br /&gt;
&lt;br /&gt;
nedit-5.5&lt;br /&gt;
&lt;br /&gt;
pcre-8.45&lt;br /&gt;
&lt;br /&gt;
pth-2.0.7&lt;br /&gt;
&lt;br /&gt;
readline-6.1&lt;br /&gt;
&lt;br /&gt;
renderext-0.9&lt;br /&gt;
&lt;br /&gt;
renderproto-0.9.3&lt;br /&gt;
&lt;br /&gt;
tar-1.20&lt;br /&gt;
&lt;br /&gt;
tiff-3.8.2&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3&lt;br /&gt;
&lt;br /&gt;
t1lib-5.1.2&lt;br /&gt;
&lt;br /&gt;
vim64&lt;br /&gt;
&lt;br /&gt;
w3c-libwww-5.4.0&lt;br /&gt;
&lt;br /&gt;
xearth-1.1&lt;br /&gt;
&lt;br /&gt;
zlib-1.2.13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3070</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3070"/>
		<updated>2023-10-06T21:58:32Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM designed two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 The development system is on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A number of packages where I have no specific notes or installation sequence:&lt;br /&gt;
&lt;br /&gt;
autoconf-2.13&lt;br /&gt;
&lt;br /&gt;
automake-1.4-p6&lt;br /&gt;
&lt;br /&gt;
bc-1.06&lt;br /&gt;
&lt;br /&gt;
bzip2-1.0.6&lt;br /&gt;
&lt;br /&gt;
diffutils-3.2&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1&lt;br /&gt;
&lt;br /&gt;
gawk-3.1.8&lt;br /&gt;
&lt;br /&gt;
glib-1.2.10&lt;br /&gt;
&lt;br /&gt;
gmp-5.1.3&lt;br /&gt;
&lt;br /&gt;
jasper-1.900.1&lt;br /&gt;
&lt;br /&gt;
jpeg-6b&lt;br /&gt;
&lt;br /&gt;
libidn-1.26&lt;br /&gt;
&lt;br /&gt;
libid3tag-0.15.1b&lt;br /&gt;
&lt;br /&gt;
libpng-1.2.31&lt;br /&gt;
&lt;br /&gt;
libsigsegv-2.12&lt;br /&gt;
&lt;br /&gt;
libutf8-0.8.1&lt;br /&gt;
&lt;br /&gt;
make-3.82&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35&lt;br /&gt;
&lt;br /&gt;
mksh-R59c&lt;br /&gt;
&lt;br /&gt;
m4-1.4.7&lt;br /&gt;
&lt;br /&gt;
ncftp-3.1.9&lt;br /&gt;
&lt;br /&gt;
nedit-5.5&lt;br /&gt;
&lt;br /&gt;
pcre-8.45&lt;br /&gt;
&lt;br /&gt;
pth-2.0.7&lt;br /&gt;
&lt;br /&gt;
readline-6.1&lt;br /&gt;
&lt;br /&gt;
renderext-0.9&lt;br /&gt;
&lt;br /&gt;
renderproto-0.9.3&lt;br /&gt;
&lt;br /&gt;
tar-1.20&lt;br /&gt;
&lt;br /&gt;
tiff-3.8.2&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3&lt;br /&gt;
&lt;br /&gt;
t1lib-5.1.2&lt;br /&gt;
&lt;br /&gt;
vim64&lt;br /&gt;
&lt;br /&gt;
w3c-libwww-5.4.0&lt;br /&gt;
&lt;br /&gt;
xearth-1.1&lt;br /&gt;
&lt;br /&gt;
zlib-1.2.13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3069</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3069"/>
		<updated>2023-10-06T21:57:19Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM designed two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A number of packages where I have no specific notes or installation sequence:&lt;br /&gt;
&lt;br /&gt;
autoconf-2.13&lt;br /&gt;
&lt;br /&gt;
automake-1.4-p6&lt;br /&gt;
&lt;br /&gt;
bc-1.06&lt;br /&gt;
&lt;br /&gt;
bzip2-1.0.6&lt;br /&gt;
&lt;br /&gt;
diffutils-3.2&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1&lt;br /&gt;
&lt;br /&gt;
gawk-3.1.8&lt;br /&gt;
&lt;br /&gt;
glib-1.2.10&lt;br /&gt;
&lt;br /&gt;
gmp-5.1.3&lt;br /&gt;
&lt;br /&gt;
jasper-1.900.1&lt;br /&gt;
&lt;br /&gt;
jpeg-6b&lt;br /&gt;
&lt;br /&gt;
libidn-1.26&lt;br /&gt;
&lt;br /&gt;
libid3tag-0.15.1b&lt;br /&gt;
&lt;br /&gt;
libpng-1.2.31&lt;br /&gt;
&lt;br /&gt;
libsigsegv-2.12&lt;br /&gt;
&lt;br /&gt;
libutf8-0.8.1&lt;br /&gt;
&lt;br /&gt;
make-3.82&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35&lt;br /&gt;
&lt;br /&gt;
mksh-R59c&lt;br /&gt;
&lt;br /&gt;
m4-1.4.7&lt;br /&gt;
&lt;br /&gt;
ncftp-3.1.9&lt;br /&gt;
&lt;br /&gt;
nedit-5.5&lt;br /&gt;
&lt;br /&gt;
pcre-8.45&lt;br /&gt;
&lt;br /&gt;
pth-2.0.7&lt;br /&gt;
&lt;br /&gt;
readline-6.1&lt;br /&gt;
&lt;br /&gt;
renderext-0.9&lt;br /&gt;
&lt;br /&gt;
renderproto-0.9.3&lt;br /&gt;
&lt;br /&gt;
tar-1.20&lt;br /&gt;
&lt;br /&gt;
tiff-3.8.2&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3&lt;br /&gt;
&lt;br /&gt;
t1lib-5.1.2&lt;br /&gt;
&lt;br /&gt;
vim64&lt;br /&gt;
&lt;br /&gt;
w3c-libwww-5.4.0&lt;br /&gt;
&lt;br /&gt;
xearth-1.1&lt;br /&gt;
&lt;br /&gt;
zlib-1.2.13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3068</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3068"/>
		<updated>2023-10-06T21:56:33Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM designed two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A number of packages where I have no specific notes or installation sequence:&lt;br /&gt;
&lt;br /&gt;
autoconf-2.13&lt;br /&gt;
automake-1.4-p6&lt;br /&gt;
bc-1.06&lt;br /&gt;
bzip2-1.0.6&lt;br /&gt;
diffutils-3.2&lt;br /&gt;
expat-2.0.1&lt;br /&gt;
gawk-3.1.8&lt;br /&gt;
glib-1.2.10&lt;br /&gt;
gmp-5.1.3&lt;br /&gt;
jasper-1.900.1&lt;br /&gt;
jpeg-6b&lt;br /&gt;
libidn-1.26&lt;br /&gt;
libid3tag-0.15.1b&lt;br /&gt;
libpng-1.2.31&lt;br /&gt;
libsigsegv-2.12&lt;br /&gt;
libutf8-0.8.1&lt;br /&gt;
make-3.82&lt;br /&gt;
mc-4.1.35&lt;br /&gt;
mksh-R59c&lt;br /&gt;
m4-1.4.7&lt;br /&gt;
ncftp-3.1.9&lt;br /&gt;
nedit-5.5&lt;br /&gt;
pcre-8.45&lt;br /&gt;
pth-2.0.7&lt;br /&gt;
readline-6.1&lt;br /&gt;
renderext-0.9&lt;br /&gt;
renderproto-0.9.3&lt;br /&gt;
tar-1.20&lt;br /&gt;
tiff-3.8.2&lt;br /&gt;
tin-2.6.3&lt;br /&gt;
t1lib-5.1.2&lt;br /&gt;
vim64&lt;br /&gt;
w3c-libwww-5.4.0&lt;br /&gt;
xearth-1.1&lt;br /&gt;
zlib-1.2.13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3067</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3067"/>
		<updated>2023-10-06T21:52:25Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM designed two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3066</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3066"/>
		<updated>2023-10-06T21:50:21Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM designed two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3065</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3065"/>
		<updated>2023-10-06T21:49:47Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools-5.0.7Kj&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3064</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3064"/>
		<updated>2023-10-06T21:48:48Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3063</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3063"/>
		<updated>2023-10-06T21:48:08Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3062</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3062"/>
		<updated>2023-10-06T21:47:31Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO originally started in 1979. They did ports of UNIX(r) and in 1983 they did the XENIX port to the IBM PC/XT. There were early ties with Microsoft based on these projects already. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Let&#039;s cut to the chase: Is it any good?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yeah, kind of, sort of... Openserver feels old compared to Linux and even when compared to other commercial Unix systems there are some parts that are really ancient. For me it was &amp;quot;better than expected&amp;quot; when I compare it to other SVR3 systems. Advantages of Openserver: it&#039;s mature, stable, and by modern standards fast and small. The scoadmin tools are very good. You can see that the engineers who made this system really did a good job. You can still find a lot of online documentation (currently at: http://osr5doc.xinuos.com/de/Navpages/index.html).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCO? Aren&#039;t they evil?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes! And no. Old SCO wasn&#039;t evil, but quite a respectable Unix company. Then they sold the Unix business to Caldera (a Linux company) in 2001 and everything got a name change. Old SCO became Tarantella, Caldera became (new) SCO and this new SCO then became (in)famous for its lawsuits. Tarantella was bought by Sun in 2005. New SCO went bankrupt in 2012. The Openserver and Unixware systems predate all this lawsuit craziness and customers pretty much abandoned both systems as much as they could.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3061</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3061"/>
		<updated>2023-10-06T21:21:23Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO started in 1983 with a XENIX port to the IBM PC/XT. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35:&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3060</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3060"/>
		<updated>2023-10-06T21:20:25Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO started in 1983 with a XENIX port to the IBM PC/XT. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800:&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp:&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
the old Openserver /bin/sh is complete garbage. Use /usr/bin/bash (that is 3.1.17) whenever necessary/possible. It may be necessary to replace some sh with bash in configure scripts.&lt;br /&gt;
&lt;br /&gt;
The LD_RUN_PATH variable will tell the linker to look for additional libraries. It will hardcode this path into the binaries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-3.4.6:&lt;br /&gt;
 configure --enable-languages=c --with-gnu-as --with-as=/usr/gnu/bin/gas --prefix=/usr/local/gcc346&lt;br /&gt;
 &lt;br /&gt;
 one fixed header file is incorrect:&lt;br /&gt;
 &lt;br /&gt;
 gcc-3.4.6bin/gcc/include/math.h is missing an #endif:&lt;br /&gt;
 &lt;br /&gt;
 #ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION&lt;br /&gt;
 #define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.13.1:&lt;br /&gt;
 configure needs /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
 ./configure --with-shared --without-cxx --without-ada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim90:&lt;br /&gt;
 ./configure --with-tlib=ncurses --enable-gui=no --without-x --enable-multibyte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-3.2.57:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --enable-readline --enable-multibyte&lt;br /&gt;
 &lt;br /&gt;
 edit several Makefiles and remove &amp;quot;-b elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pkg-config-0.18.1:&lt;br /&gt;
 some tests fail, because scripts in check use /bin/sh. They PASS with /usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mc-4.1.35&lt;br /&gt;
 ./configure --with-sco --with-ncurses &lt;br /&gt;
 &lt;br /&gt;
 names.c: In function `finduname&#039;:&lt;br /&gt;
 names.c:62: error: conflicting types for &#039;getpwuid&#039;&lt;br /&gt;
 names.c:62: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/pwd.h:83: error: previous declaration of &#039;getpwuid&#039; was here&lt;br /&gt;
 names.c: In function `findgname&#039;:&lt;br /&gt;
 names.c:98: error: conflicting types for &#039;getgrgid&#039;&lt;br /&gt;
 names.c:98: note: an argument type that has a default promotion can&#039;t match an empty parameter name list declaration&lt;br /&gt;
 /usr/include/grp.h:61: error: previous declaration of &#039;getgrgid&#039; was here&lt;br /&gt;
 make[1]: *** [names.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/vfs&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 delete the definitions of getpwuid and getgrgid.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 gcc -c -I..  -I./../vfs -I./.. -I/usr/local/include/ncurses -I.. -DBINDIR=\&amp;quot;&amp;quot;/usr/local/bin/&amp;quot;\&amp;quot; -DLIBDIR=\&amp;quot;&amp;quot;/usr/local/lib/mc/&amp;quot;\&amp;quot; -DICONDIR=\&amp;quot;&amp;quot;/usr/local/share/icons/mc/&amp;quot;\&amp;quot;  -DLOCALEDIR=\&amp;quot;&amp;quot;/usr/local/share/locale/&amp;quot;\&amp;quot;  -DREGEX_MALLOC -DHAVE_CONFIG_H -g -D_SVID3 utilunix.c&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 utilunix.c:680: error: conflicting types for &#039;gettimeofday&#039;&lt;br /&gt;
 /usr/include/sys/time.h:65: error: previous declaration of &#039;gettimeofday&#039; was here&lt;br /&gt;
 make[1]: *** [utilunix.o] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/mc-4.1.35/src&#039;&lt;br /&gt;
 make: *** [all] Error 1&lt;br /&gt;
 &lt;br /&gt;
 uncomment the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3059</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3059"/>
		<updated>2023-10-06T21:11:33Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO started in 1983 with a XENIX port to the IBM PC/XT. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G (Extreme Graphics 2) chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card. This machine should be more than enough for Openserver. In theory one could go for a much faster SMP machine, but a 3GHz P4 is really just fine. The graphics chip will only work after installing maintenance pack 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installation media&#039;&#039;&#039;&lt;br /&gt;
there is an updated Openserver CD &amp;quot;OpenServer-5.0.7Hw-10Jun05_1800&amp;quot;. It solves problems with AHCI. Use this CD, rather than the original, old CD. There is also a supplemental CD that includes maintenance pack 5. Make sure you get the following packages and patches from the archives: &amp;quot;gnutools&amp;quot;, &amp;quot;oss672a&amp;quot;, &amp;quot;oss674a&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Installation sequence:&lt;br /&gt;
&lt;br /&gt;
1 base OS OpenServer-5.0.7Hw-10Jun05_1800:&lt;br /&gt;
 enter an &amp;quot;enterprise&amp;quot; license and it will basically select most of what can be selected. Add language environments if you want them. I had some bad luck with the &amp;quot;database&amp;quot; option, so I do not recommend that. Just stick to the default. It will guide you through the install process and the reboot. On reboot it will stop at &amp;quot;enter root password to enter single user mode or press CTRL-D to boot up&amp;quot;. Here you should login as root to complete the installation.&lt;br /&gt;
 If you login, it will drop you into a simple root shell. Type &amp;quot;scoadmin&amp;quot; and go through the menus of the administration tool. Enter additional licenses (SCO OpenServer SMP, SCO Openserver Development System, user licenses, etc...). Then go to &amp;quot;software&amp;quot; to install more things.&lt;br /&gt;
&lt;br /&gt;
2 smp:&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. Install the smp package right after installing the base system.&lt;br /&gt;
&lt;br /&gt;
3 devsys&lt;br /&gt;
 It&#039;s on the OpenServer-5.0.7Hw-10Jun05_1800 CD. It includes a bunch of Java things that require a certain maintenance pack (MP) revision. Just leave this out for now.&lt;br /&gt;
&lt;br /&gt;
4 mp5&lt;br /&gt;
 on the supplemental CD.&lt;br /&gt;
&lt;br /&gt;
5 devsys&lt;br /&gt;
 install the missing parts of the development system (like Java) if you want them.&lt;br /&gt;
&lt;br /&gt;
6 touch /tmp/gnutools.nocheck&lt;br /&gt;
 this is a necessary step. If you don&#039;t do this, the installation of gnu tools will fails.&lt;br /&gt;
&lt;br /&gt;
7 gnutools   (gnutools-5.0.7Kj)&lt;br /&gt;
 from the archives. It includes some updated versions of some libraries.&lt;br /&gt;
&lt;br /&gt;
8 mp5&lt;br /&gt;
 reinstalling MP5 is necessary, because gnu tools comes with older versions of some libraries (gwxlibs).&lt;br /&gt;
&lt;br /&gt;
9 oss672a (header update)&lt;br /&gt;
10 oss674a (smp update)&lt;br /&gt;
 patches from the archives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;configuring the system&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
.profile:&lt;br /&gt;
 PATH=/usr/local/gcc346/bin:/usr/local/bin:/usr/gnu/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/lib/X11/IXI/XDesktop/bin:/usr/lib/X11/IXI/XDesktop/bin/i3sc0322:/bin:/etc:/usr/bin:/tcb/bin:/usr/bin/X11&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 stty intr &amp;quot;^C&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty erase &amp;quot;^?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 LC_CTYPE=de_DE.ISO8859-15&lt;br /&gt;
 export LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_SHELL=/usr/bin/bash&lt;br /&gt;
 export CONFIG_SHELL&lt;br /&gt;
 &lt;br /&gt;
 LD_RUN_PATH=/usr/local/lib&lt;br /&gt;
 export LD_RUN_PATH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3058</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3058"/>
		<updated>2023-10-06T20:47:15Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO started in 1983 with a XENIX port to the IBM PC/XT. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware. One interesting aspect of Openserver is that SCO has build in XENIX compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ibm_thinkcentre.png |thumb|right|IBM Thinkcentre S50]]&lt;br /&gt;
&lt;br /&gt;
We will be installing SCO Openserver on this lovely little IBM Thinkcentre S50 PC. It has a 3GHz Pentium 4, 2GB of RAM, 80GB of IDE disk, and Intel 865G chipset graphics. There is also an Intel Pro/100 ethernet chip onboard, but I could not get this working in Openserver. Fortunately, IBM design two normal height PCI slots into this little machine, so I just added a 3com 905B PC ethernet card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Datei:Ibm_thinkcentre.png&amp;diff=3057</id>
		<title>Datei:Ibm thinkcentre.png</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Datei:Ibm_thinkcentre.png&amp;diff=3057"/>
		<updated>2023-10-06T20:42:54Z</updated>

		<summary type="html">&lt;p&gt;Luna: IBM Thinkcentre PC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
IBM Thinkcentre PC&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3056</id>
		<title>SCO Openserver 5.0.7 installation</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SCO_Openserver_5.0.7_installation&amp;diff=3056"/>
		<updated>2023-10-06T17:46:29Z</updated>

		<summary type="html">&lt;p&gt;Luna: Die Seite wurde neu angelegt: „== Openserver ==  SCO started in 1983 with a XENIX port to the IBM PC/XT. They later acquired XENIX from Microsoft completely. In 1989 they released the first…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Openserver ==&lt;br /&gt;
&lt;br /&gt;
SCO started in 1983 with a XENIX port to the IBM PC/XT. They later acquired XENIX from Microsoft completely. In 1989 they released the first version of a new SVR3 port called &amp;quot;SCO UNIX System V Release 3.2&amp;quot;. It replaced XENIX as SCO&#039;s main product and went through a number of iteration. The last versions of this line of Unix system was called &amp;quot;Openserver 5&amp;quot;. It is basically a classic SVR3 Unix system with added quality of life improvements and support for more-of-less recent hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Installing Openserver 5.0.7 on a PC&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SCO]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Benutzer:Luna&amp;diff=3055</id>
		<title>Benutzer:Luna</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Benutzer:Luna&amp;diff=3055"/>
		<updated>2023-10-06T17:26:47Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;just some documentation on old systems:&lt;br /&gt;
&lt;br /&gt;
[[ULTRIX 3.1D]]&lt;br /&gt;
&lt;br /&gt;
[[ULTRIX 3 VAX]]&lt;br /&gt;
&lt;br /&gt;
[[ULTRIX 4]]&lt;br /&gt;
&lt;br /&gt;
[[OSF/1 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[SunOS 3.5]]&lt;br /&gt;
&lt;br /&gt;
[[SunOS 4.0.3c SPARC]]&lt;br /&gt;
&lt;br /&gt;
[[Solaris 2.0 SPARC]]&lt;br /&gt;
&lt;br /&gt;
[[Solaris 2.4 SPARC]]&lt;br /&gt;
&lt;br /&gt;
[[Sony NEWS-OS 3.3]]&lt;br /&gt;
&lt;br /&gt;
[[SunOS 4 network boot howto]]&lt;br /&gt;
&lt;br /&gt;
[[IRIX 3.3 installation]]&lt;br /&gt;
&lt;br /&gt;
[[gcc-2.95.3 libIO patch for ULTRIX]]&lt;br /&gt;
&lt;br /&gt;
[[SCO Openserver 5.0.7 installation]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2998</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2998"/>
		<updated>2023-04-17T19:57:55Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1 ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/termios.h needs a mod:&lt;br /&gt;
&lt;br /&gt;
 /* added from SunOS 4.1.3: */&lt;br /&gt;
 #define IEXTEN  0x00008000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
/usr/include/dirent.h and /usr/include/sys/dirent.h are not safe when they are included multiple times.&lt;br /&gt;
Modify the include files and add something like:&lt;br /&gt;
&lt;br /&gt;
 #ifndef __dirent_h&lt;br /&gt;
 #define __dirent_h&lt;br /&gt;
&lt;br /&gt;
 [...rest of dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !_dirent_h */&lt;br /&gt;
&lt;br /&gt;
and...&lt;br /&gt;
&lt;br /&gt;
 #ifndef __sys_dirent_h&lt;br /&gt;
 #define __sys_dirent_h&lt;br /&gt;
 &lt;br /&gt;
 [...rest of sys/dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sys_dirent_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/time.h and /usr/include/sys/time.h also need a fix:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #ifndef __time_h&lt;br /&gt;
 #define __time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif  /* !__time_h */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #ifndef _sys_time_h&lt;br /&gt;
 #define _sys_time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif /*!_sys_time_h*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is what SunOS 4.1.3 does and it works fine...&lt;br /&gt;
Do not forget any fixed gcc include files if applicable...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.04 and bash-2.05b:&lt;br /&gt;
&lt;br /&gt;
won&#039;t properly run configure with the SunOS /bin/sh. Use bash.&lt;br /&gt;
&lt;br /&gt;
FAILS: bash &amp;gt; 2.03 wants to use set locale, which doesn&#039;t exist here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.7.2.3:&lt;br /&gt;
&lt;br /&gt;
 collect2.c:&lt;br /&gt;
 uncomment include unistd.h&lt;br /&gt;
 &lt;br /&gt;
 cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.7.2.3/configure --enable-languages=c,c++ sparc-sun-sunos4.0.3&lt;br /&gt;
&lt;br /&gt;
will use cc first.&lt;br /&gt;
change Makefile to use gcc (CC and OLDCC).&lt;br /&gt;
&lt;br /&gt;
Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unzip-5.52&lt;br /&gt;
&lt;br /&gt;
 fileio.c:&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.9.2:&lt;br /&gt;
&lt;br /&gt;
 srclib/gettext.h:&lt;br /&gt;
 uncomment the #include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 srclib/progreloc.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 before the #include stat.h&lt;br /&gt;
 &lt;br /&gt;
 srclib/setenv.c:&lt;br /&gt;
 srclib/unsetenv.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1:&lt;br /&gt;
 lib/xmlparse.c:&lt;br /&gt;
 xmlwf/xmlwf.c:&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 xmlwf/xmltchar.h:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 tests/runtests.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 tests/minicheck.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R5:&lt;br /&gt;
&lt;br /&gt;
FAILS. Can&#039;t even compile imake...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R4:&lt;br /&gt;
&lt;br /&gt;
 edit config/site.def and config.sun.cf&lt;br /&gt;
 make sure it has:&lt;br /&gt;
 #define HasGcc YES&lt;br /&gt;
 &lt;br /&gt;
 as well as:&lt;br /&gt;
 #define OSName		  SunOS 4.0.3&lt;br /&gt;
 #define OSMajorVersion	  4&lt;br /&gt;
 #define OSMinorVersion	  0&lt;br /&gt;
 &lt;br /&gt;
 libXt won&#039;t build, because one file want to include stdarg.h.&lt;br /&gt;
 uncomment that.&lt;br /&gt;
 &lt;br /&gt;
 then just do a &amp;quot;make World&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include/X11; ln -s Xaw/Form.h ./&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gawk-3.0.6:&lt;br /&gt;
&lt;br /&gt;
 protos.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #this usually lives in SunOS 4.1&#039;s &amp;lt;sys/stdtypes.h&amp;gt;:&lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
&lt;br /&gt;
 test/dots.c:&lt;br /&gt;
 test/dots_mvcur.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
 &lt;br /&gt;
 test/ncurses.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 test/railroad.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses needs some mods in SunOS:&lt;br /&gt;
&lt;br /&gt;
sys/termios.h, dirent.h, and sys/dirent.h. (see above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
texinfo-4.8:&lt;br /&gt;
 lib/gettext:&lt;br /&gt;
 uncomment include locale.h&lt;br /&gt;
 &lt;br /&gt;
 infodoc.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 makeinfo/lang.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
readline-6.1:&lt;br /&gt;
 xmalloc.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 history.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim-5.8:&lt;br /&gt;
 os_unix.c:&lt;br /&gt;
 #define       TCSANOW         0&lt;br /&gt;
 &lt;br /&gt;
 option.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: SunOS 4.0.3 does have termios, but it appears to be incomplete.&lt;br /&gt;
if you get error related to termios, you can often edit config.h and&lt;br /&gt;
set #undef HAVE_TERMIOS_H. termio.h will generally work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
byacc-20180609:&lt;br /&gt;
 defs.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 #define W_OK         2&lt;br /&gt;
 &lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
 gcc-2.7.2.3 can&#039;t understand the ATTRIBUTE_NORETURN. delete that.&lt;br /&gt;
 &lt;br /&gt;
 main.c&lt;br /&gt;
 #include &amp;lt;missing_atexit.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 make sure it installs as byacc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xpm-3.4k:&lt;br /&gt;
 use make -f Makefile.noX&lt;br /&gt;
 &lt;br /&gt;
 edit lib/Makefile.noX and add DEFINES:&lt;br /&gt;
 -DNEED_STRCASECMP&lt;br /&gt;
 &lt;br /&gt;
 SunOS 4.0.3 does not have strcasecmp(), even though SunOS 4.1.3 does.&lt;br /&gt;
 &lt;br /&gt;
 TODO: also needs shared libraries...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m4-1.4.3&lt;br /&gt;
 ./configure sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3snap1:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --disable-ipv6 --enable-broken-system-fix --disable-locale --enable-nntp-default-server=news --with-screen=ncurses --enable-nntp-only --with-domain= --with-editor=/usr/local/bin/vim sparc-sun-sunos4.0.3&lt;br /&gt;
 &lt;br /&gt;
 makecfg.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 intl/many files:&lt;br /&gt;
 delete the inclusion of locale.h&lt;br /&gt;
 &lt;br /&gt;
 add to pcre/pcre_globals.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bison-1.875:&lt;br /&gt;
&lt;br /&gt;
 lib/gettext.h:&lt;br /&gt;
 delete the include locale.h&lt;br /&gt;
 &lt;br /&gt;
 argmatch.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 lots of files need any one of these:&lt;br /&gt;
 &lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
textutils-1.22:&lt;br /&gt;
 pr.c:&lt;br /&gt;
 #include &amp;lt;missing_strftime.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
less-418:&lt;br /&gt;
 charset.h:&lt;br /&gt;
 missing_strstr.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.8.1:&lt;br /&gt;
 --enable-languages=c sparc-sun-sunos4.0.3&lt;br /&gt;
 Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
 &lt;br /&gt;
 cpplib.c:&lt;br /&gt;
 needs&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 to have time_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.95.3:&lt;br /&gt;
&lt;br /&gt;
 ../gcc-2.95.3/configure --enable-languages=c --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
 &lt;br /&gt;
 Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
 &lt;br /&gt;
 gcc-2.95.3 needs the fixes for /usr/include/time.h and /usr/include/sys/time.h.&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/libiberty/mkstemps.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/libiberty/setenv.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/gcc/cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2997</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2997"/>
		<updated>2023-04-17T19:56:58Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1 ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/termios.h needs a mod:&lt;br /&gt;
&lt;br /&gt;
 /* added from SunOS 4.1.3: */&lt;br /&gt;
 #define IEXTEN  0x00008000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
/usr/include/dirent.h and /usr/include/sys/dirent.h are not safe when they are included multiple times.&lt;br /&gt;
Modify the include files and add something like:&lt;br /&gt;
&lt;br /&gt;
 #ifndef __dirent_h&lt;br /&gt;
 #define __dirent_h&lt;br /&gt;
&lt;br /&gt;
 [...rest of dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !_dirent_h */&lt;br /&gt;
&lt;br /&gt;
and...&lt;br /&gt;
&lt;br /&gt;
 #ifndef __sys_dirent_h&lt;br /&gt;
 #define __sys_dirent_h&lt;br /&gt;
 &lt;br /&gt;
 [...rest of sys/dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sys_dirent_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/time.h and /usr/include/sys/time.h also need a fix:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #ifndef __time_h&lt;br /&gt;
 #define __time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif  /* !__time_h */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #ifndef _sys_time_h&lt;br /&gt;
 #define _sys_time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif /*!_sys_time_h*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is what SunOS 4.1.3 does and it works fine...&lt;br /&gt;
Do not forget any fixed gcc include files if applicable...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.04 and bash-2.05b:&lt;br /&gt;
&lt;br /&gt;
won&#039;t properly run configure with the SunOS /bin/sh. Use bash.&lt;br /&gt;
&lt;br /&gt;
FAILS: bash &amp;gt; 2.03 wants to use set locale, which doesn&#039;t exist here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.7.2.3:&lt;br /&gt;
&lt;br /&gt;
 collect2.c:&lt;br /&gt;
 uncomment include unistd.h&lt;br /&gt;
 &lt;br /&gt;
 cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.7.2.3/configure --enable-languages=c,c++ sparc-sun-sunos4.0.3&lt;br /&gt;
&lt;br /&gt;
will use cc first.&lt;br /&gt;
change Makefile to use gcc (CC and OLDCC).&lt;br /&gt;
&lt;br /&gt;
Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unzip-5.52&lt;br /&gt;
&lt;br /&gt;
 fileio.c:&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.9.2:&lt;br /&gt;
&lt;br /&gt;
 srclib/gettext.h:&lt;br /&gt;
 uncomment the #include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 srclib/progreloc.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 before the #include stat.h&lt;br /&gt;
 &lt;br /&gt;
 srclib/setenv.c:&lt;br /&gt;
 srclib/unsetenv.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1:&lt;br /&gt;
 lib/xmlparse.c:&lt;br /&gt;
 xmlwf/xmlwf.c:&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 xmlwf/xmltchar.h:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 tests/runtests.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 tests/minicheck.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R5:&lt;br /&gt;
&lt;br /&gt;
FAILS. Can&#039;t even compile imake...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R4:&lt;br /&gt;
&lt;br /&gt;
 edit config/site.def and config.sun.cf&lt;br /&gt;
 make sure it has:&lt;br /&gt;
 #define HasGcc YES&lt;br /&gt;
 &lt;br /&gt;
 as well as:&lt;br /&gt;
 #define OSName		  SunOS 4.0.3&lt;br /&gt;
 #define OSMajorVersion	  4&lt;br /&gt;
 #define OSMinorVersion	  0&lt;br /&gt;
 &lt;br /&gt;
 libXt won&#039;t build, because one file want to include stdarg.h.&lt;br /&gt;
 uncomment that.&lt;br /&gt;
 &lt;br /&gt;
 then just do a &amp;quot;make World&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include/X11; ln -s Xaw/Form.h ./&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gawk-3.0.6:&lt;br /&gt;
&lt;br /&gt;
 protos.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #this usually lives in SunOS 4.1&#039;s &amp;lt;sys/stdtypes.h&amp;gt;:&lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
&lt;br /&gt;
 test/dots.c:&lt;br /&gt;
 test/dots_mvcur.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
 &lt;br /&gt;
 test/ncurses.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 test/railroad.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses needs some mods in SunOS:&lt;br /&gt;
&lt;br /&gt;
sys/termios.h, dirent.h, and sys/dirent.h. (see above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
texinfo-4.8:&lt;br /&gt;
 lib/gettext:&lt;br /&gt;
 uncomment include locale.h&lt;br /&gt;
 &lt;br /&gt;
 infodoc.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 makeinfo/lang.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
readline-6.1:&lt;br /&gt;
 xmalloc.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 history.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim-5.8:&lt;br /&gt;
 os_unix.c:&lt;br /&gt;
 #define       TCSANOW         0&lt;br /&gt;
 &lt;br /&gt;
 option.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: SunOS 4.0.3 does have termios, but it appears to be incomplete.&lt;br /&gt;
if you get error related to termios, you can often edit config.h and&lt;br /&gt;
set #undef HAVE_TERMIOS_H. termio.h will generally work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
byacc-20180609:&lt;br /&gt;
 defs.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 #define W_OK         2&lt;br /&gt;
 &lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
 gcc-2.7.2.3 can&#039;t understand the ATTRIBUTE_NORETURN. delete that.&lt;br /&gt;
 &lt;br /&gt;
 main.c&lt;br /&gt;
 #include &amp;lt;missing_atexit.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 make sure it installs as byacc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xpm-3.4k:&lt;br /&gt;
 use make -f Makefile.noX&lt;br /&gt;
 &lt;br /&gt;
 edit lib/Makefile.noX and add DEFINES:&lt;br /&gt;
 -DNEED_STRCASECMP&lt;br /&gt;
 &lt;br /&gt;
 SunOS 4.0.3 does not have strcasecmp(), even though SunOS 4.1.3 does.&lt;br /&gt;
 &lt;br /&gt;
 TODO: also needs shared libraries...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m4-1.4.3&lt;br /&gt;
 ./configure sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3snap1:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --disable-ipv6 --enable-broken-system-fix --disable-locale --enable-nntp-default-server=news --with-screen=ncurses --enable-nntp-only --with-domain= --with-editor=/usr/local/bin/vim sparc-sun-sunos4.0.3&lt;br /&gt;
 &lt;br /&gt;
 makecfg.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 intl/many files:&lt;br /&gt;
 delete the inclusion of locale.h&lt;br /&gt;
 &lt;br /&gt;
 add to pcre/pcre_globals.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bison-1.875:&lt;br /&gt;
&lt;br /&gt;
 lib/gettext.h:&lt;br /&gt;
 delete the include locale.h&lt;br /&gt;
 &lt;br /&gt;
 argmatch.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 lots of files need any one of these:&lt;br /&gt;
 &lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
textutils-1.22:&lt;br /&gt;
 pr.c:&lt;br /&gt;
 #include &amp;lt;missing_strftime.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
less-418:&lt;br /&gt;
 charset.h:&lt;br /&gt;
 missing_strstr.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.8.1:&lt;br /&gt;
 --enable-languages=c sparc-sun-sunos4.0.3&lt;br /&gt;
 Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
 &lt;br /&gt;
 cpplib.c:&lt;br /&gt;
 needs&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 to have time_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.95.3:&lt;br /&gt;
&lt;br /&gt;
 ../gcc-2.95.3/configure --prefix=/usr/local/gcc2953 --enable-languages=c --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
 &lt;br /&gt;
 Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
 &lt;br /&gt;
 gcc-2.95.3 needs the fixes for /usr/include/time.h and /usr/include/sys/time.h.&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/libiberty/mkstemps.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/libiberty/setenv.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/gcc/cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2996</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2996"/>
		<updated>2023-04-17T19:56:39Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1 ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/termios.h needs a mod:&lt;br /&gt;
&lt;br /&gt;
 /* added from SunOS 4.1.3: */&lt;br /&gt;
 #define IEXTEN  0x00008000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
/usr/include/dirent.h and /usr/include/sys/dirent.h are not safe when they are included multiple times.&lt;br /&gt;
Modify the include files and add something like:&lt;br /&gt;
&lt;br /&gt;
 #ifndef __dirent_h&lt;br /&gt;
 #define __dirent_h&lt;br /&gt;
&lt;br /&gt;
 [...rest of dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !_dirent_h */&lt;br /&gt;
&lt;br /&gt;
and...&lt;br /&gt;
&lt;br /&gt;
 #ifndef __sys_dirent_h&lt;br /&gt;
 #define __sys_dirent_h&lt;br /&gt;
 &lt;br /&gt;
 [...rest of sys/dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sys_dirent_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/time.h and /usr/include/sys/time.h also need a fix:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #ifndef __time_h&lt;br /&gt;
 #define __time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif  /* !__time_h */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #ifndef _sys_time_h&lt;br /&gt;
 #define _sys_time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif /*!_sys_time_h*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is what SunOS 4.1.3 does and it works fine...&lt;br /&gt;
Do not forget any fixed gcc include files if applicable...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.04 and bash-2.05b:&lt;br /&gt;
&lt;br /&gt;
won&#039;t properly run configure with the SunOS /bin/sh. Use bash.&lt;br /&gt;
&lt;br /&gt;
FAILS: bash &amp;gt; 2.03 wants to use set locale, which doesn&#039;t exist here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.7.2.3:&lt;br /&gt;
&lt;br /&gt;
 collect2.c:&lt;br /&gt;
 uncomment include unistd.h&lt;br /&gt;
 &lt;br /&gt;
 cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.7.2.3/configure --enable-languages=c,c++ sparc-sun-sunos4.0.3&lt;br /&gt;
&lt;br /&gt;
will use cc first.&lt;br /&gt;
change Makefile to use gcc (CC and OLDCC).&lt;br /&gt;
&lt;br /&gt;
Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unzip-5.52&lt;br /&gt;
&lt;br /&gt;
 fileio.c:&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.9.2:&lt;br /&gt;
&lt;br /&gt;
 srclib/gettext.h:&lt;br /&gt;
 uncomment the #include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 srclib/progreloc.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 before the #include stat.h&lt;br /&gt;
 &lt;br /&gt;
 srclib/setenv.c:&lt;br /&gt;
 srclib/unsetenv.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1:&lt;br /&gt;
 lib/xmlparse.c:&lt;br /&gt;
 xmlwf/xmlwf.c:&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 xmlwf/xmltchar.h:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 tests/runtests.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 tests/minicheck.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R5:&lt;br /&gt;
&lt;br /&gt;
FAILS. Can&#039;t even compile imake...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R4:&lt;br /&gt;
&lt;br /&gt;
 edit config/site.def and config.sun.cf&lt;br /&gt;
 make sure it has:&lt;br /&gt;
 #define HasGcc YES&lt;br /&gt;
 &lt;br /&gt;
 as well as:&lt;br /&gt;
 #define OSName		  SunOS 4.0.3&lt;br /&gt;
 #define OSMajorVersion	  4&lt;br /&gt;
 #define OSMinorVersion	  0&lt;br /&gt;
 &lt;br /&gt;
 libXt won&#039;t build, because one file want to include stdarg.h.&lt;br /&gt;
 uncomment that.&lt;br /&gt;
 &lt;br /&gt;
 then just do a &amp;quot;make World&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include/X11; ln -s Xaw/Form.h ./&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gawk-3.0.6:&lt;br /&gt;
&lt;br /&gt;
 protos.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #this usually lives in SunOS 4.1&#039;s &amp;lt;sys/stdtypes.h&amp;gt;:&lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
&lt;br /&gt;
 test/dots.c:&lt;br /&gt;
 test/dots_mvcur.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
 &lt;br /&gt;
 test/ncurses.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 test/railroad.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses needs some mods in SunOS:&lt;br /&gt;
&lt;br /&gt;
sys/termios.h, dirent.h, and sys/dirent.h. (see above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
texinfo-4.8:&lt;br /&gt;
 lib/gettext:&lt;br /&gt;
 uncomment include locale.h&lt;br /&gt;
 &lt;br /&gt;
 infodoc.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 makeinfo/lang.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
readline-6.1:&lt;br /&gt;
 xmalloc.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 history.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim-5.8:&lt;br /&gt;
 os_unix.c:&lt;br /&gt;
 #define       TCSANOW         0&lt;br /&gt;
 &lt;br /&gt;
 option.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: SunOS 4.0.3 does have termios, but it appears to be incomplete.&lt;br /&gt;
if you get error related to termios, you can often edit config.h and&lt;br /&gt;
set #undef HAVE_TERMIOS_H. termio.h will generally work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
byacc-20180609:&lt;br /&gt;
 defs.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 #define W_OK         2&lt;br /&gt;
 &lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
 gcc-2.7.2.3 can&#039;t understand the ATTRIBUTE_NORETURN. delete that.&lt;br /&gt;
 &lt;br /&gt;
 main.c&lt;br /&gt;
 #include &amp;lt;missing_atexit.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 make sure it installs as byacc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xpm-3.4k:&lt;br /&gt;
 use make -f Makefile.noX&lt;br /&gt;
 &lt;br /&gt;
 edit lib/Makefile.noX and add DEFINES:&lt;br /&gt;
 -DNEED_STRCASECMP&lt;br /&gt;
 &lt;br /&gt;
 SunOS 4.0.3 does not have strcasecmp(), even though SunOS 4.1.3 does.&lt;br /&gt;
 &lt;br /&gt;
 TODO: also needs shared libraries...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m4-1.4.3&lt;br /&gt;
 ./configure sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3snap1:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --disable-ipv6 --enable-broken-system-fix --disable-locale --enable-nntp-default-server=news --with-screen=ncurses --enable-nntp-only --with-domain= --with-editor=/usr/local/bin/vim sparc-sun-sunos4.0.3&lt;br /&gt;
 &lt;br /&gt;
 makecfg.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 intl/many files:&lt;br /&gt;
 delete the inclusion of locale.h&lt;br /&gt;
 &lt;br /&gt;
 add to pcre/pcre_globals.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bison-1.875:&lt;br /&gt;
&lt;br /&gt;
 lib/gettext.h:&lt;br /&gt;
 delete the include locale.h&lt;br /&gt;
 &lt;br /&gt;
 argmatch.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 lots of files need any one of these:&lt;br /&gt;
 &lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
textutils-1.22:&lt;br /&gt;
 pr.c:&lt;br /&gt;
 #include &amp;lt;missing_strftime.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
less-418:&lt;br /&gt;
 charset.h:&lt;br /&gt;
 missing_strstr.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.8.1bin:&lt;br /&gt;
 --enable-languages=c sparc-sun-sunos4.0.3&lt;br /&gt;
 Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
 &lt;br /&gt;
 cpplib.c:&lt;br /&gt;
 needs&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 to have time_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.95.3:&lt;br /&gt;
&lt;br /&gt;
 ../gcc-2.95.3/configure --prefix=/usr/local/gcc2953 --enable-languages=c --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
 &lt;br /&gt;
 Note: c++ doesn&#039;t work. g++ will build, but lilbstdc++ won&#039;t.&lt;br /&gt;
 &lt;br /&gt;
 gcc-2.95.3 needs the fixes for /usr/include/time.h and /usr/include/sys/time.h.&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/libiberty/mkstemps.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/libiberty/setenv.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.95.3/gcc/cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2995</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2995"/>
		<updated>2023-04-17T19:49:40Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1 ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/termios.h needs a mod:&lt;br /&gt;
&lt;br /&gt;
 /* added from SunOS 4.1.3: */&lt;br /&gt;
 #define IEXTEN  0x00008000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
/usr/include/dirent.h and /usr/include/sys/dirent.h are not safe when they are included multiple times.&lt;br /&gt;
Modify the include files and add something like:&lt;br /&gt;
&lt;br /&gt;
 #ifndef __dirent_h&lt;br /&gt;
 #define __dirent_h&lt;br /&gt;
&lt;br /&gt;
 [...rest of dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !_dirent_h */&lt;br /&gt;
&lt;br /&gt;
and...&lt;br /&gt;
&lt;br /&gt;
 #ifndef __sys_dirent_h&lt;br /&gt;
 #define __sys_dirent_h&lt;br /&gt;
 &lt;br /&gt;
 [...rest of sys/dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sys_dirent_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/time.h and /usr/include/sys/time.h also need a fix:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #ifndef __time_h&lt;br /&gt;
 #define __time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif  /* !__time_h */&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #ifndef _sys_time_h&lt;br /&gt;
 #define _sys_time_h&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
 &lt;br /&gt;
 #endif /*!_sys_time_h*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is what SunOS 4.1.3 does and it works fine...&lt;br /&gt;
Do not forget any fixed gcc include files if applicable...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.04 and bash-2.05b:&lt;br /&gt;
&lt;br /&gt;
won&#039;t properly run configure with the SunOS /bin/sh. Use bash.&lt;br /&gt;
&lt;br /&gt;
FAILS: bash &amp;gt; 2.03 wants to use set locale, which doesn&#039;t exist here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.7.2.3:&lt;br /&gt;
&lt;br /&gt;
 collect2.c:&lt;br /&gt;
 uncomment include unistd.h&lt;br /&gt;
 &lt;br /&gt;
 cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.7.2.3/configure --enable-languages=c,c++ sparc-sun-sunos4.0.3&lt;br /&gt;
&lt;br /&gt;
will use cc first.&lt;br /&gt;
change Makefile to use gcc (CC and OLDCC).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unzip-5.52&lt;br /&gt;
&lt;br /&gt;
 fileio.c:&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.9.2:&lt;br /&gt;
&lt;br /&gt;
 srclib/gettext.h:&lt;br /&gt;
 uncomment the #include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 srclib/progreloc.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 before the #include stat.h&lt;br /&gt;
 &lt;br /&gt;
 srclib/setenv.c:&lt;br /&gt;
 srclib/unsetenv.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1:&lt;br /&gt;
 lib/xmlparse.c:&lt;br /&gt;
 xmlwf/xmlwf.c:&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 xmlwf/xmltchar.h:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 tests/runtests.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 tests/minicheck.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R5:&lt;br /&gt;
&lt;br /&gt;
FAILS. Can&#039;t even compile imake...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R4:&lt;br /&gt;
&lt;br /&gt;
 edit config/site.def and config.sun.cf&lt;br /&gt;
 make sure it has:&lt;br /&gt;
 #define HasGcc YES&lt;br /&gt;
 &lt;br /&gt;
 as well as:&lt;br /&gt;
 #define OSName		  SunOS 4.0.3&lt;br /&gt;
 #define OSMajorVersion	  4&lt;br /&gt;
 #define OSMinorVersion	  0&lt;br /&gt;
 &lt;br /&gt;
 libXt won&#039;t build, because one file want to include stdarg.h.&lt;br /&gt;
 uncomment that.&lt;br /&gt;
 &lt;br /&gt;
 then just do a &amp;quot;make World&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include/X11; ln -s Xaw/Form.h ./&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gawk-3.0.6:&lt;br /&gt;
&lt;br /&gt;
 protos.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #this usually lives in SunOS 4.1&#039;s &amp;lt;sys/stdtypes.h&amp;gt;:&lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
&lt;br /&gt;
 test/dots.c:&lt;br /&gt;
 test/dots_mvcur.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
 &lt;br /&gt;
 test/ncurses.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 test/railroad.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses needs some mods in SunOS:&lt;br /&gt;
&lt;br /&gt;
sys/termios.h, dirent.h, and sys/dirent.h. (see above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
texinfo-4.8:&lt;br /&gt;
 lib/gettext:&lt;br /&gt;
 uncomment include locale.h&lt;br /&gt;
 &lt;br /&gt;
 infodoc.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 makeinfo/lang.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
readline-6.1:&lt;br /&gt;
 xmalloc.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 history.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim-5.8:&lt;br /&gt;
 os_unix.c:&lt;br /&gt;
 #define       TCSANOW         0&lt;br /&gt;
 &lt;br /&gt;
 option.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: SunOS 4.0.3 does have termios, but it appears to be incomplete.&lt;br /&gt;
if you get error related to termios, you can often edit config.h and&lt;br /&gt;
set #undef HAVE_TERMIOS_H. termio.h will generally work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
byacc-20180609:&lt;br /&gt;
 defs.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 #define W_OK         2&lt;br /&gt;
 &lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
 gcc-2.7.2.3 can&#039;t understand the ATTRIBUTE_NORETURN. delete that.&lt;br /&gt;
 &lt;br /&gt;
 main.c&lt;br /&gt;
 #include &amp;lt;missing_atexit.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 make sure it installs as byacc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xpm-3.4k:&lt;br /&gt;
 use make -f Makefile.noX&lt;br /&gt;
 &lt;br /&gt;
 edit lib/Makefile.noX and add DEFINES:&lt;br /&gt;
 -DNEED_STRCASECMP&lt;br /&gt;
 &lt;br /&gt;
 SunOS 4.0.3 does not have strcasecmp(), even though SunOS 4.1.3 does.&lt;br /&gt;
 &lt;br /&gt;
 TODO: also needs shared libraries...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m4-1.4.3&lt;br /&gt;
 ./configure sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3snap1:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --disable-ipv6 --enable-broken-system-fix --disable-locale --enable-nntp-default-server=news --with-screen=ncurses --enable-nntp-only --with-domain= --with-editor=/usr/local/bin/vim sparc-sun-sunos4.0.3&lt;br /&gt;
 &lt;br /&gt;
 makecfg.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 intl/many files:&lt;br /&gt;
 delete the inclusion of locale.h&lt;br /&gt;
 &lt;br /&gt;
 add to pcre/pcre_globals.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bison-1.875:&lt;br /&gt;
&lt;br /&gt;
 lib/gettext.h:&lt;br /&gt;
 delete the include locale.h&lt;br /&gt;
 &lt;br /&gt;
 argmatch.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 lots of files need any one of these:&lt;br /&gt;
 &lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
textutils-1.22:&lt;br /&gt;
 pr.c:&lt;br /&gt;
 #include &amp;lt;missing_strftime.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
less-418:&lt;br /&gt;
 charset.h:&lt;br /&gt;
 missing_strstr.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2994</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2994"/>
		<updated>2023-04-15T21:08:33Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1 ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/termios.h needs a mod:&lt;br /&gt;
&lt;br /&gt;
 /* added from SunOS 4.1.3: */&lt;br /&gt;
 #define IEXTEN  0x00008000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
/usr/include/dirent.h and /usr/include/sys/dirent.h are not safe when they are included multiple times.&lt;br /&gt;
Modify the include files and add something like:&lt;br /&gt;
&lt;br /&gt;
 #ifndef __dirent_h&lt;br /&gt;
 #define __dirent_h&lt;br /&gt;
&lt;br /&gt;
 [...rest of dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !_dirent_h */&lt;br /&gt;
&lt;br /&gt;
and...&lt;br /&gt;
&lt;br /&gt;
 #ifndef __sys_dirent_h&lt;br /&gt;
 #define __sys_dirent_h&lt;br /&gt;
 &lt;br /&gt;
 [...rest of sys/dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sys_dirent_h */&lt;br /&gt;
&lt;br /&gt;
This is what SunOS 4.1.3 does and it works fine...&lt;br /&gt;
Do not forget any fixed gcc include files if applicable...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.04 and bash-2.05b:&lt;br /&gt;
&lt;br /&gt;
won&#039;t properly run configure with the SunOS /bin/sh. Use bash.&lt;br /&gt;
&lt;br /&gt;
FAILS: bash &amp;gt; 2.03 wants to use set locale, which doesn&#039;t exist here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.7.2.3:&lt;br /&gt;
&lt;br /&gt;
 collect2.c:&lt;br /&gt;
 uncomment include unistd.h&lt;br /&gt;
 &lt;br /&gt;
 cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.7.2.3/configure --enable-languages=c,c++ sparc-sun-sunos4.0.3&lt;br /&gt;
&lt;br /&gt;
will use cc first.&lt;br /&gt;
change Makefile to use gcc (CC and OLDCC).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unzip-5.52&lt;br /&gt;
&lt;br /&gt;
 fileio.c:&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.9.2:&lt;br /&gt;
&lt;br /&gt;
 srclib/gettext.h:&lt;br /&gt;
 uncomment the #include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 srclib/progreloc.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 before the #include stat.h&lt;br /&gt;
 &lt;br /&gt;
 srclib/setenv.c:&lt;br /&gt;
 srclib/unsetenv.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1:&lt;br /&gt;
 lib/xmlparse.c:&lt;br /&gt;
 xmlwf/xmlwf.c:&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 xmlwf/xmltchar.h:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 tests/runtests.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 tests/minicheck.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R5:&lt;br /&gt;
&lt;br /&gt;
FAILS. Can&#039;t even compile imake...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R4:&lt;br /&gt;
&lt;br /&gt;
 edit config/site.def and config.sun.cf&lt;br /&gt;
 make sure it has:&lt;br /&gt;
 #define HasGcc YES&lt;br /&gt;
 &lt;br /&gt;
 as well as:&lt;br /&gt;
 #define OSName		  SunOS 4.0.3&lt;br /&gt;
 #define OSMajorVersion	  4&lt;br /&gt;
 #define OSMinorVersion	  0&lt;br /&gt;
 &lt;br /&gt;
 libXt won&#039;t build, because one file want to include stdarg.h.&lt;br /&gt;
 uncomment that.&lt;br /&gt;
 &lt;br /&gt;
 then just do a &amp;quot;make World&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include/X11; ln -s Xaw/Form.h ./&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gawk-3.0.6:&lt;br /&gt;
&lt;br /&gt;
 protos.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #this usually lives in SunOS 4.1&#039;s &amp;lt;sys/stdtypes.h&amp;gt;:&lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
&lt;br /&gt;
 test/dots.c:&lt;br /&gt;
 test/dots_mvcur.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
 &lt;br /&gt;
 test/ncurses.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 test/railroad.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses needs some mods in SunOS:&lt;br /&gt;
&lt;br /&gt;
sys/termios.h, dirent.h, and sys/dirent.h. (see above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
texinfo-4.8:&lt;br /&gt;
 lib/gettext:&lt;br /&gt;
 uncomment include locale.h&lt;br /&gt;
 &lt;br /&gt;
 infodoc.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 makeinfo/lang.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
readline-6.1:&lt;br /&gt;
 xmalloc.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 history.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim-5.8:&lt;br /&gt;
 os_unix.c:&lt;br /&gt;
 #define       TCSANOW         0&lt;br /&gt;
 &lt;br /&gt;
 option.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: SunOS 4.0.3 does have termios, but it appears to be incomplete.&lt;br /&gt;
if you get error related to termios, you can often edit config.h and&lt;br /&gt;
set #undef HAVE_TERMIOS_H. termio.h will generally work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
byacc-20180609:&lt;br /&gt;
 defs.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 #define W_OK         2&lt;br /&gt;
 &lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
 gcc-2.7.2.3 can&#039;t understand the ATTRIBUTE_NORETURN. delete that.&lt;br /&gt;
 &lt;br /&gt;
 main.c&lt;br /&gt;
 #include &amp;lt;missing_atexit.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 make sure it installs as byacc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xpm-3.4k:&lt;br /&gt;
 use make -f Makefile.noX&lt;br /&gt;
 &lt;br /&gt;
 edit lib/Makefile.noX and add DEFINES:&lt;br /&gt;
 -DNEED_STRCASECMP&lt;br /&gt;
 &lt;br /&gt;
 SunOS 4.0.3 does not have strcasecmp(), even though SunOS 4.1.3 does.&lt;br /&gt;
 &lt;br /&gt;
 TODO: also needs shared libraries...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m4-1.4.3&lt;br /&gt;
 ./configure sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3snap1:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --disable-ipv6 --enable-broken-system-fix --disable-locale --enable-nntp-default-server=news --with-screen=ncurses --enable-nntp-only --with-domain= --with-editor=/usr/local/bin/vim sparc-sun-sunos4.0.3&lt;br /&gt;
 &lt;br /&gt;
 makecfg.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 intl/many files:&lt;br /&gt;
 delete the inclusion of locale.h&lt;br /&gt;
 &lt;br /&gt;
 add to pcre/pcre_globals.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bison-1.875:&lt;br /&gt;
&lt;br /&gt;
 lib/gettext.h:&lt;br /&gt;
 delete the include locale.h&lt;br /&gt;
 &lt;br /&gt;
 argmatch.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 lots of files need any one of these:&lt;br /&gt;
 &lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2993</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2993"/>
		<updated>2023-04-15T21:07:59Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1 ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/termios.h needs a mod:&lt;br /&gt;
&lt;br /&gt;
 /* added from SunOS 4.1.3: */&lt;br /&gt;
 #define IEXTEN  0x00008000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
/usr/include/dirent.h and /usr/include/sys/dirent.h are not safe when they are included multiple times.&lt;br /&gt;
Modify the include files and add something like:&lt;br /&gt;
&lt;br /&gt;
 #ifndef __dirent_h&lt;br /&gt;
 #define __dirent_h&lt;br /&gt;
&lt;br /&gt;
 [...rest of dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !_dirent_h */&lt;br /&gt;
&lt;br /&gt;
and...&lt;br /&gt;
&lt;br /&gt;
 #ifndef __sys_dirent_h&lt;br /&gt;
 #define __sys_dirent_h&lt;br /&gt;
 &lt;br /&gt;
 [...rest of sys/dirent.h...]&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sys_dirent_h */&lt;br /&gt;
&lt;br /&gt;
This is what SunOS 4.1.3 does and it works fine...&lt;br /&gt;
Do not forget any fixed gcc include files if applicable...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.04 and bash-2.05b:&lt;br /&gt;
won&#039;t properly run configure with the SunOS /bin/sh. Use bash.&lt;br /&gt;
&lt;br /&gt;
FAILS: bash &amp;gt; 2.03 wants to use set locale, which doesn&#039;t exist here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.7.2.3:&lt;br /&gt;
&lt;br /&gt;
 collect2.c:&lt;br /&gt;
 uncomment include unistd.h&lt;br /&gt;
 &lt;br /&gt;
 cp/errfn.c:&lt;br /&gt;
 extern int sprintf (char *, const char *, ...);&lt;br /&gt;
 &lt;br /&gt;
 ../gcc-2.7.2.3/configure --enable-languages=c,c++ sparc-sun-sunos4.0.3&lt;br /&gt;
&lt;br /&gt;
will use cc first.&lt;br /&gt;
change Makefile to use gcc (CC and OLDCC).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unzip-5.52&lt;br /&gt;
&lt;br /&gt;
 fileio.c:&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libiconv-1.9.2:&lt;br /&gt;
&lt;br /&gt;
 srclib/gettext.h:&lt;br /&gt;
 uncomment the #include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 srclib/progreloc.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 before the #include stat.h&lt;br /&gt;
 &lt;br /&gt;
 srclib/setenv.c:&lt;br /&gt;
 srclib/unsetenv.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
expat-2.0.1:&lt;br /&gt;
 lib/xmlparse.c:&lt;br /&gt;
 xmlwf/xmlwf.c:&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 xmlwf/xmltchar.h:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 tests/runtests.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 tests/minicheck.c&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R5:&lt;br /&gt;
&lt;br /&gt;
FAILS. Can&#039;t even compile imake...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
X11R4:&lt;br /&gt;
&lt;br /&gt;
 edit config/site.def and config.sun.cf&lt;br /&gt;
 make sure it has:&lt;br /&gt;
 #define HasGcc YES&lt;br /&gt;
 &lt;br /&gt;
 as well as:&lt;br /&gt;
 #define OSName		  SunOS 4.0.3&lt;br /&gt;
 #define OSMajorVersion	  4&lt;br /&gt;
 #define OSMinorVersion	  0&lt;br /&gt;
 &lt;br /&gt;
 libXt won&#039;t build, because one file want to include stdarg.h.&lt;br /&gt;
 uncomment that.&lt;br /&gt;
 &lt;br /&gt;
 then just do a &amp;quot;make World&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include/X11; ln -s Xaw/Form.h ./&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gawk-3.0.6:&lt;br /&gt;
&lt;br /&gt;
 protos.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #this usually lives in SunOS 4.1&#039;s &amp;lt;sys/stdtypes.h&amp;gt;:&lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses-5.9:&lt;br /&gt;
&lt;br /&gt;
 test/dots.c:&lt;br /&gt;
 test/dots_mvcur.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
 &lt;br /&gt;
 test/ncurses.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 test/railroad.c:&lt;br /&gt;
 #define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ncurses needs some mods in SunOS:&lt;br /&gt;
&lt;br /&gt;
sys/termios.h, dirent.h, and sys/dirent.h. (see above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
texinfo-4.8:&lt;br /&gt;
 lib/gettext:&lt;br /&gt;
 uncomment include locale.h&lt;br /&gt;
 &lt;br /&gt;
 infodoc.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 makeinfo/lang.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
readline-6.1:&lt;br /&gt;
 xmalloc.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 history.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vim-5.8:&lt;br /&gt;
 os_unix.c:&lt;br /&gt;
 #define       TCSANOW         0&lt;br /&gt;
 &lt;br /&gt;
 option.c:&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: SunOS 4.0.3 does have termios, but it appears to be incomplete.&lt;br /&gt;
if you get error related to termios, you can often edit config.h and&lt;br /&gt;
set #undef HAVE_TERMIOS_H. termio.h will generally work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
byacc-20180609:&lt;br /&gt;
 defs.h:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 #define W_OK         2&lt;br /&gt;
 &lt;br /&gt;
 typedef      unsigned short  mode_t;&lt;br /&gt;
&lt;br /&gt;
 gcc-2.7.2.3 can&#039;t understand the ATTRIBUTE_NORETURN. delete that.&lt;br /&gt;
 &lt;br /&gt;
 main.c&lt;br /&gt;
 #include &amp;lt;missing_atexit.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 make sure it installs as byacc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xpm-3.4k:&lt;br /&gt;
 use make -f Makefile.noX&lt;br /&gt;
 &lt;br /&gt;
 edit lib/Makefile.noX and add DEFINES:&lt;br /&gt;
 -DNEED_STRCASECMP&lt;br /&gt;
 &lt;br /&gt;
 SunOS 4.0.3 does not have strcasecmp(), even though SunOS 4.1.3 does.&lt;br /&gt;
 &lt;br /&gt;
 TODO: also needs shared libraries...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
m4-1.4.3&lt;br /&gt;
 ./configure sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tin-2.6.3snap1:&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local --disable-ipv6 --enable-broken-system-fix --disable-locale --enable-nntp-default-server=news --with-screen=ncurses --enable-nntp-only --with-domain= --with-editor=/usr/local/bin/vim sparc-sun-sunos4.0.3&lt;br /&gt;
 &lt;br /&gt;
 makecfg.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 intl/many files:&lt;br /&gt;
 delete the inclusion of locale.h&lt;br /&gt;
 &lt;br /&gt;
 add to pcre/pcre_globals.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bison-1.875:&lt;br /&gt;
&lt;br /&gt;
 lib/gettext.h:&lt;br /&gt;
 delete the include locale.h&lt;br /&gt;
 &lt;br /&gt;
 argmatch.c:&lt;br /&gt;
 #define EXIT_SUCCESS 0&lt;br /&gt;
 #define EXIT_FAILURE 1&lt;br /&gt;
 &lt;br /&gt;
 lots of files need any one of these:&lt;br /&gt;
 &lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2992</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2992"/>
		<updated>2023-04-13T22:37:13Z</updated>

		<summary type="html">&lt;p&gt;Luna: /* Installing SunOS 4.0.3c on a SPARCstation 1: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1 ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2991</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2991"/>
		<updated>2023-04-13T22:37:01Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing SunOS 4.0.3c on a SPARCstation 1: ==&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2990</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2990"/>
		<updated>2023-04-12T23:28:11Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2989</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2989"/>
		<updated>2023-04-12T19:58:28Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
&lt;br /&gt;
 configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2988</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2988"/>
		<updated>2023-04-12T19:57:36Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
 # set default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
&lt;br /&gt;
 # add this to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
./configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2987</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2987"/>
		<updated>2023-04-12T19:56:42Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local:&lt;br /&gt;
&lt;br /&gt;
# set default route&lt;br /&gt;
echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
route add default 192.168.2.253 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
setup the shell environment:&lt;br /&gt;
add this to .login:&lt;br /&gt;
&lt;br /&gt;
add to .login:&lt;br /&gt;
 setenv CONFIG_SHELL &amp;quot;/usr/local/bin/bash&amp;quot;&lt;br /&gt;
 setenv SHELL /usr/local/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 setenv CPPFLAGS &amp;quot;-I /usr/local/include&amp;quot;&lt;br /&gt;
 setenv CFLAGS &amp;quot;-O -I/usr/local/include -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib&amp;quot;&lt;br /&gt;
 setenv LDFLAGS &amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make-3.79.1:&lt;br /&gt;
./configure --disable-nls sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
 &lt;br /&gt;
 function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
 remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2986</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2986"/>
		<updated>2023-04-12T19:53:20Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make the transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to avoid that people would have to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2985</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2985"/>
		<updated>2023-04-12T16:42:52Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to prevent people having to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=ULTRIX_3.1D&amp;diff=2984</id>
		<title>ULTRIX 3.1D</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=ULTRIX_3.1D&amp;diff=2984"/>
		<updated>2023-04-12T15:17:10Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;ULTRIX 3.1D&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ULTRIX release 3.1D was a special hardware release to support the then new DECstation 5000/200. It will run on some early DECstations like the original 3100 and 2100, 5000/200, and possibly on the 5400 and 5800. It is mostly 4.2BSD with several extensions by DEC and adaptations from SysV and 4.3BSD. The 5000/200 does not have room for internal SCSI disks, so external disks and storage expansion boxes were common.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Decstation5000_200.jpg|thumb|right|DECstation 5000/200]]&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
Ultrix 3.1D comes with X11R3(exact version?) and only a simple X that only supports the plain color graphics (DS3100 or PMAG-B).&lt;br /&gt;
Replace with X11R4:&lt;br /&gt;
 &amp;quot;The XtPointer typedef was added to X11 with Release 4.  This error&lt;br /&gt;
 indicates that your system has X11R3 or earlier.  You need to update to&lt;br /&gt;
 a more recent edition of X in order to compile NetHack&#039;s X11 interface.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
copy stddef.h from ULTRIX 4.5...&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
show all soft/hard errors:&lt;br /&gt;
 uerf -c err&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setting the correct timezone:&#039;&#039;&#039;&lt;br /&gt;
the only way to set the timezone on ULTRIX 3 is by building a new kernel.&lt;br /&gt;
&lt;br /&gt;
this is the correct setting for MET with daylight savings time (DST):&lt;br /&gt;
&lt;br /&gt;
 timezone	-1 dst 4&lt;br /&gt;
&lt;br /&gt;
note: date knows about the TZNAME environment variable. You can set it&lt;br /&gt;
to whatever you like and date will show a different string in the timezone&lt;br /&gt;
field, but it won&#039;t adjust the time:&lt;br /&gt;
&lt;br /&gt;
 # date&lt;br /&gt;
 Sun Jan 29 11:41:26 MET 2023&lt;br /&gt;
 # TZNAME=&amp;quot;FARTS&amp;quot;; export TZNAME&lt;br /&gt;
 # date&lt;br /&gt;
 Sun Jan 29 11:41:36 FARTS 2023&lt;br /&gt;
&lt;br /&gt;
This behavior is different from later ULTRIX releases.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building a new kernel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
make sure you don&#039;t have anything GNU in the PATH and no CPPFLAGS, CFLAGS, LDFLAGS.&lt;br /&gt;
&lt;br /&gt;
this ULTRIX release will produce a distinct error when linking the vmunix kernel:&lt;br /&gt;
&lt;br /&gt;
 loading vmunix&lt;br /&gt;
 /bin/ld:&lt;br /&gt;
 Object file format error in: ltt_usrreq.o: bad issBase in file table entry in FDISS_TO_STR&amp;lt;br&amp;gt;&lt;br /&gt;
 *** Error code 1&lt;br /&gt;
 &lt;br /&gt;
 Stop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have not been able to determine the source of the problem, but it can be fixed by excluding LAT from the kernel configuration. Chances are you won&#039;t need LAT anyway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this is an example of a working kernel configuration for a DECstation 5000/200 with 64MB RAM booting from rz0:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ident		&amp;quot;MINOU&amp;quot;&lt;br /&gt;
machine		mips&lt;br /&gt;
cpu		&amp;quot;DS5000&amp;quot;&lt;br /&gt;
maxusers	64&lt;br /&gt;
processors	1&lt;br /&gt;
maxuprc		50&lt;br /&gt;
physmem		64&lt;br /&gt;
timezone	-1 dst 4&lt;br /&gt;
&lt;br /&gt;
options		QUOTA&lt;br /&gt;
options		INET&lt;br /&gt;
options		EMULFLT&lt;br /&gt;
options		NFS&lt;br /&gt;
options		RPC&lt;br /&gt;
options		DLI&lt;br /&gt;
options		UFS&lt;br /&gt;
options		DECNET&lt;br /&gt;
&lt;br /&gt;
makeoptions	ENDIAN=&amp;quot;-EL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
config		vmunix	root on rz0a  swap on rz0b  dumps on rz0b  &lt;br /&gt;
&lt;br /&gt;
adapter         ibus0      at nexus?    &lt;br /&gt;
adapter         ibus1      at nexus?    &lt;br /&gt;
adapter         ibus2      at nexus?    &lt;br /&gt;
adapter         ibus5      at nexus?    &lt;br /&gt;
adapter         ibus6      at nexus?    &lt;br /&gt;
adapter         ibus7      at nexus?    &lt;br /&gt;
controller      asc0       at ibus?     vector ascintr &lt;br /&gt;
disk            rz0        at asc0      drive 0&lt;br /&gt;
disk            rz1        at asc0      drive 1&lt;br /&gt;
disk            rz2        at asc0      drive 2&lt;br /&gt;
disk            rz3        at asc0      drive 3&lt;br /&gt;
disk            rz4        at asc0      drive 4&lt;br /&gt;
disk            rz5        at asc0      drive 5&lt;br /&gt;
disk            rz6        at asc0      drive 6&lt;br /&gt;
disk            rz7        at asc0      drive 7&lt;br /&gt;
tape            tz0        at asc0      drive 0&lt;br /&gt;
tape            tz1        at asc0      drive 1&lt;br /&gt;
tape            tz2        at asc0      drive 2&lt;br /&gt;
tape            tz3        at asc0      drive 3&lt;br /&gt;
tape            tz4        at asc0      drive 4&lt;br /&gt;
tape            tz5        at asc0      drive 5&lt;br /&gt;
tape            tz6        at asc0      drive 6&lt;br /&gt;
tape            tz7        at asc0      drive 7&lt;br /&gt;
controller      asc1       at ibus?     vector ascintr &lt;br /&gt;
disk            rz8        at asc1      drive 0&lt;br /&gt;
disk            rz9        at asc1      drive 1&lt;br /&gt;
disk            rz10       at asc1      drive 2&lt;br /&gt;
disk            rz11       at asc1      drive 3&lt;br /&gt;
disk            rz12       at asc1      drive 4&lt;br /&gt;
disk            rz13       at asc1      drive 5&lt;br /&gt;
disk            rz14       at asc1      drive 6&lt;br /&gt;
disk            rz15       at asc1      drive 7&lt;br /&gt;
tape            tz8        at asc1      drive 0&lt;br /&gt;
tape            tz9        at asc1      drive 1&lt;br /&gt;
tape            tz10       at asc1      drive 2&lt;br /&gt;
tape            tz11       at asc1      drive 3&lt;br /&gt;
tape            tz12       at asc1      drive 4&lt;br /&gt;
tape            tz13       at asc1      drive 5&lt;br /&gt;
tape            tz14       at asc1      drive 6&lt;br /&gt;
tape            tz15       at asc1      drive 7&lt;br /&gt;
device          ln0        at ibus?     vector lnintr &lt;br /&gt;
device          ln1        at ibus?     vector lnintr &lt;br /&gt;
device          dc0        at ibus?     vector dcintr &lt;br /&gt;
&lt;br /&gt;
scs_sysid	 1&lt;br /&gt;
&lt;br /&gt;
pseudo-device	pty&lt;br /&gt;
pseudo-device	loop&lt;br /&gt;
pseudo-device	inet&lt;br /&gt;
pseudo-device	ether&lt;br /&gt;
pseudo-device	rpc&lt;br /&gt;
pseudo-device	nfs&lt;br /&gt;
pseudo-device	dli&lt;br /&gt;
pseudo-device	ufs&lt;br /&gt;
pseudo-device	decnet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
On ultrix 4.2 (and earlier) we don&#039;t have &#039;&#039;&#039;usleep()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
in the file clients/olwm/usleep.c&lt;br /&gt;
&lt;br /&gt;
replace the line&lt;br /&gt;
&lt;br /&gt;
 return usleep(usec);&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #ifndef ultrix&lt;br /&gt;
 return usleep(usec);&lt;br /&gt;
 #else&lt;br /&gt;
 return sleep(usec * 1000000);&lt;br /&gt;
 #endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--------------------------------------&lt;br /&gt;
&lt;br /&gt;
to &#039;&#039;&#039;enable root logins via telnet&#039;&#039;&#039; or non-secure ports, edit /etc/ttys:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 root@minou:/etc# cat ttys &lt;br /&gt;
 # @(#)ttys	1.1 (ULTRIX) 3/2/89&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 # name	getty		type		status		comments&lt;br /&gt;
 #&lt;br /&gt;
 console	&amp;quot;/etc/getty std.9600&amp;quot; vt100 on	secure	# console terminal&lt;br /&gt;
 tty00	&amp;quot;/etc/getty std.9600&amp;quot; vt100 on secure nomodem	# direct connect tty&lt;br /&gt;
 tty01	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty02	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty03	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty04	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty05	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty06	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty07	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 ttyd0   &amp;quot;/etc/getty std.9600&amp;quot; vt100 off shared secure # modem line&lt;br /&gt;
 ttyp0	none		network secure&lt;br /&gt;
 ttyp1	none		network secure&lt;br /&gt;
 ttyp2	none		network secure&lt;br /&gt;
 ttyp3	none		network secure&lt;br /&gt;
 ttyp4	none		network secure&lt;br /&gt;
 ttyp5	none		network secure&lt;br /&gt;
 ttyp6	none		network secure&lt;br /&gt;
 ttyp7	none		network secure&lt;br /&gt;
 ttyp8	none		network secure&lt;br /&gt;
 ttyp9	none		network secure&lt;br /&gt;
 ttypa	none		network secure&lt;br /&gt;
 ttypb	none		network secure&lt;br /&gt;
 ttypc	none		network secure&lt;br /&gt;
 ttypd	none		network secure&lt;br /&gt;
 ttype	none		network secure&lt;br /&gt;
 ttypf	none		network secure&lt;br /&gt;
 ttyq0	none		network secure&lt;br /&gt;
 ttyq1	none		network secure&lt;br /&gt;
 ttyq2	none		network secure&lt;br /&gt;
 ttyq3	none		network secure&lt;br /&gt;
 ttyq4	none		network secure&lt;br /&gt;
 ttyq5	none		network secure&lt;br /&gt;
 ttyq6	none		network secure&lt;br /&gt;
 ttyq7	none		network secure&lt;br /&gt;
 ttyq8	none		network secure&lt;br /&gt;
 ttyq9	none		network secure&lt;br /&gt;
 ttyqa	none		network secure&lt;br /&gt;
 ttyqb	none		network secure&lt;br /&gt;
 ttyqc	none		network secure&lt;br /&gt;
 ttyqd	none		network secure&lt;br /&gt;
 ttyqe	none		network secure&lt;br /&gt;
 ttyqf	none		network secure&lt;br /&gt;
 # :0 &amp;quot;/usr/bin/login -P /usr/bin/Xprompter -C /usr/bin/dxsession&amp;quot; none on secure window=&amp;quot;/usr/bin/Xcfb&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----------------------------------------&lt;br /&gt;
&lt;br /&gt;
add to &#039;&#039;&#039;/etc/rc.local&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 # default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 /etc/route add default 192.168.2.253 1&lt;br /&gt;
 # SSHd&lt;br /&gt;
 echo &#039;starting SSH daemon&#039; &amp;gt; /dev/console&lt;br /&gt;
 /usr/local/sbin/sshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
error in repaired Ultrix gcc header files:&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/sys/dir.h&lt;br /&gt;
gcc fixes this to u_long, but does not define it. Add:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
in many cases, config.guess can&#039;t detect the platform.&lt;br /&gt;
Specify as mips-dec-ultrix3.1&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
size_t is declared in &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ultrix also often needs:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
.cshrc:&lt;br /&gt;
&lt;br /&gt;
 if ($term == xterm-256color) then&lt;br /&gt;
 setenv TERM vt100&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
.profile&lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
 then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
symlink /usr/lib/libi.a to /usr/lib/libiconv_ult.a&lt;br /&gt;
if setlocale is undefined link with this library&lt;br /&gt;
for some reason gcc doesn&#039;t want to link just to libi.a&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
strstr.c from GNU tar...&lt;br /&gt;
copy to /usr/include/missing_strstr.h&lt;br /&gt;
&lt;br /&gt;
 /* strstr.c -- return the offset of one string within another&lt;br /&gt;
 Copyright (C) 1989, 1990 Free Software Foundation, Inc.&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2, or (at your option)&lt;br /&gt;
 any later version.&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */&lt;br /&gt;
 /* Written by Mike Rendell &amp;lt;michael@cs.mun.ca&amp;gt;.  */&lt;br /&gt;
&lt;br /&gt;
 /* Return the starting address of string S2 in S1;&lt;br /&gt;
   return 0 if it is not found. */&lt;br /&gt;
 char *&lt;br /&gt;
 strstr (s1, s2)&lt;br /&gt;
     char *s1;&lt;br /&gt;
     char *s2;&lt;br /&gt;
 {&lt;br /&gt;
  int i;&lt;br /&gt;
  char *p1;&lt;br /&gt;
  char *p2;&lt;br /&gt;
  char *s = s1;&lt;br /&gt;
  for (p2 = s2, i = 0; *s; p2 = s2, i++, s++)&lt;br /&gt;
    {&lt;br /&gt;
      for (p1 = s; *p1 &amp;amp;&amp;amp; *p2 &amp;amp;&amp;amp; *p1 == *p2; p1++, p2++)&lt;br /&gt;
        ;&lt;br /&gt;
      if (!*p2)&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  if (!*p2)&lt;br /&gt;
    return s1 + i;&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
-----------------&lt;br /&gt;
&lt;br /&gt;
Building some GNU software:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GCC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
start with gcc-1.42&lt;br /&gt;
use gcc to build some older version of tools: sed-1.18, gawk1, bison-1.25, make-3.75&lt;br /&gt;
use gcc1 to build gcc2&lt;br /&gt;
&lt;br /&gt;
ultrix 3 doesn&#039;t know about atexit().&lt;br /&gt;
Remove HAVE_ATEXIT before building gcc.&lt;br /&gt;
&lt;br /&gt;
build gcc in steps:&lt;br /&gt;
&lt;br /&gt;
 make &amp;quot;CC=/usr/local/bin/gcc&amp;quot; LANGUAGES=c&lt;br /&gt;
 make stage1&lt;br /&gt;
 make CC=&amp;quot;stage1/xgcc -Bstage1/&amp;quot; CFLAGS=&amp;quot;-g -O&amp;quot;&lt;br /&gt;
 make stage2&lt;br /&gt;
 make CC=&amp;quot;stage2/xgcc -Bstage2/&amp;quot; CFLAGS=&amp;quot;-g -O&amp;quot;&lt;br /&gt;
 make compare&lt;br /&gt;
 make install CC=&amp;quot;stage2/xgcc -Bstage2/&amp;quot; CFLAGS=&amp;quot;-g -O&amp;quot; LANGUAGES=c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.3.3 typedefs size_t to long unsigned int in&lt;br /&gt;
/usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.3.3/include/stddef.h&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/types.h defines size_t as &amp;quot;int&amp;quot;&lt;br /&gt;
&lt;br /&gt;
add something like this in both header files:&lt;br /&gt;
note: changing original 25 year old header files is really ugly&lt;br /&gt;
&lt;br /&gt;
 #ifndef size_t_defined&lt;br /&gt;
 typedef int size_t;&lt;br /&gt;
 #define size_t_defined&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;binutils 2.7&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;incorrectly includes stdlib.h in binutils-2.7/binutils/arlex.c&lt;br /&gt;
on line 556.&lt;br /&gt;
and in binutils-2.7/ld/ldlex.c&lt;br /&gt;
on line 1212.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.7.2.3&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;incorrectly includes stdlib.h in ../gcc-2.7.2.3/cpplib.c&lt;br /&gt;
on line 73.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sed-3.02&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;add to sed/utils.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.76&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;texinfo-4.8:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;add to lib/strdup.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#define NULL 0&lt;br /&gt;
needs #include &amp;lt;missing_strstr.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;unzip-5.52:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;filio.c needs #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
make ultrix&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bison-1.28&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-4.6:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;main.c&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;
#include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
add EXTRA_LIBS = -liconv (see above for /usr/lib/libi.a)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m4-1.4.3:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--disable-nls&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.03:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--disable-nls&lt;br /&gt;
save /bin/sh to /bin/sh.ultrix&lt;br /&gt;
copy /usr/local/bin/bash to /bin/bash and /bin/sh&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zlib-1.2.8:&#039;&#039;&#039;&lt;br /&gt;
does not copy zlib.h and zconf.h&lt;br /&gt;
Copy by hand!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;readline-5.2:&#039;&#039;&#039;&lt;br /&gt;
xmalloc.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
time_t lives in &amp;lt;sys/types.&amp;gt;&lt;br /&gt;
history.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wants to build shared libraries for some reason.&lt;br /&gt;
Edit Makefile and remove TARGETS = shared and INSTALL_TARGETS = install-shared&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libiconv-1.9.2:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--disable-nls&lt;br /&gt;
srclib/setenv.c:&lt;br /&gt;
srclib/unsetenv.c:&lt;br /&gt;
add #include &amp;lt;sys/types.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tin-2.4.4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;pcre/dftables.c:&lt;br /&gt;
Ultrix fopen() doesn&#039;t understand argument &amp;quot;wb&amp;quot;.&lt;br /&gt;
Change to &amp;quot;w+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
add to pcre/pcre_globals.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
extern void *malloc(size_t);&lt;br /&gt;
extern void *realloc(void *, size_t);&lt;br /&gt;
extern void free(void *);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.05b:&#039;&#039;&#039;&lt;br /&gt;
--with-readline --with-installed-readline --disable-nls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pdksh-5.2.14:&#039;&#039;&#039;&lt;br /&gt;
--disable-emacs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m4-1.4.5:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;regcomp.c&lt;br /&gt;
Ultrix 3 doesn&#039;t know about MB_CUR_MAX&lt;br /&gt;
#define MB_CUR_MAX 1&lt;br /&gt;
regcomp.c&lt;br /&gt;
vasnprintf.c&lt;br /&gt;
&lt;br /&gt;
lib/error.c:&lt;br /&gt;
add:&lt;br /&gt;
#include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lib/regex_internal.c:&lt;br /&gt;
add:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
old m4-1.4.3/src/stackovf.c:&lt;br /&gt;
&lt;br /&gt;
  vec.sv_flags = (SV_ONSTACK&lt;br /&gt;
#ifdef SV_RESETHAND&lt;br /&gt;
                  | SV_RESETHAND&lt;br /&gt;
#endif&lt;br /&gt;
                 );&lt;br /&gt;
&lt;br /&gt;
new m4-1.4.5/src/stackovf.c:&lt;br /&gt;
&lt;br /&gt;
  vec.sv_flags = (SV_ONSTACK | SV_RESETHAND);&lt;br /&gt;
&lt;br /&gt;
backport:&lt;br /&gt;
  vec.sv_flags = (SV_ONSTACK&lt;br /&gt;
#ifdef SV_RESETHAND&lt;br /&gt;
                  | SV_RESETHAND&lt;br /&gt;
#endif&lt;br /&gt;
                 );&lt;br /&gt;
&lt;br /&gt;
some tests fail with doc/m4.texinfo. This is known. Ignore.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk-3.0.6:&#039;&#039;&#039;&lt;br /&gt;
--disable-nls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.77:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;glob/fnmatch.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#define NULL 0&lt;br /&gt;
&lt;br /&gt;
function.c and job.c:&lt;br /&gt;
#ifndef remove&lt;br /&gt;
#define remove unlink&lt;br /&gt;
#endif&lt;br /&gt;
remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.05:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;locale.c:&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;
#include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
#define NULL 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.8.1:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;incorrectly includes stdlib.h&lt;br /&gt;
change HAVE_STDLIB_H in auto-config.h&lt;br /&gt;
to #undef HAVE_STDLIB_H&lt;br /&gt;
change #define HAVE_STDDEF_H 1 to&lt;br /&gt;
#undef HAVE_STDDEF_H&lt;br /&gt;
&lt;br /&gt;
Makefile insists on using OLDCC as the MIPS C compiler&lt;br /&gt;
override host overrides... Not sure if this is a good idea...&lt;br /&gt;
FAILs compiling enquire.c with ./xgcc&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;patch-2.5.9:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;dirname.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
config.h&lt;br /&gt;
#define HAVE_STRUCT_UTIMBUF 1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;perl-5.004:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Configure -Dcc=gcc   to use gcc&lt;br /&gt;
 In file included from doio.c:21:&lt;br /&gt;
 /usr/include/sys/ipc.h:14: redefinition of `struct ipc_perm&#039;&lt;br /&gt;
 In file included from doio.c:26:&lt;br /&gt;
 /usr/include/sys/sem.h:91: redefinition of `struct semid_ds&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:103: redefinition of `struct sem&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:114: redefinition of `struct sem_undo&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:117: redefinition of `struct undo&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:127: redefinition of `struct seminfo&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:144: redefinition of `struct sembuf&#039;&lt;br /&gt;
 make: *** [doio.o] Error 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
compilation FAILED&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.95.3:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;get libio patch&lt;br /&gt;
copy patch to libio dir&lt;br /&gt;
apply patch like:&lt;br /&gt;
/usr/local/bin/patch &amp;lt; libio_patch.txt&lt;br /&gt;
configure --disable-nls --with-libiconv-prefix=/usr/local&lt;br /&gt;
--enable-languages=c,c++ mips-dec-ultrix3.1&lt;br /&gt;
&lt;br /&gt;
incorrectly includes stdlib.h&lt;br /&gt;
change HAVE_STDLIB_H in auto-config.h&lt;br /&gt;
to #undef HAVE_STDLIB_H&lt;br /&gt;
change #define HAVE_STDDEF_H 1 to&lt;br /&gt;
#undef HAVE_STDDEF_H&lt;br /&gt;
&lt;br /&gt;
libiberty/config.h&lt;br /&gt;
#undef HAVE_ATEXIT&lt;br /&gt;
#define NEED_ATEXIT 1&lt;br /&gt;
&lt;br /&gt;
change in&lt;br /&gt;
libiberty/config.h&lt;br /&gt;
gcc/auto-host.h&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FAILS in stage1: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ln -s .././../gcc-2.95.3/gcc/../libiberty/obstack.c obstack.c&lt;br /&gt;
 stage1/xgcc -Bstage1/ -B/usr/local/mips-dec-ultrix3.1/bin/ -c  -DIN_GCC     -O2 -g -O2  -DHAVE_CONFIG_H    -I. -I.././../gcc-2.95.3/gcc -I.././../gcc-2.95.3/gcc/config -I.././../gcc-2.95.3/gcc/../include obstack.c&lt;br /&gt;
 stage1/xgcc -Bstage1/ -B/usr/local/mips-dec-ultrix3.1/bin/  -DIN_GCC     -O2 -g -O2  -DHAVE_CONFIG_H  -o gencheck \&lt;br /&gt;
 gencheck.o ` case &amp;quot;obstack.o&amp;quot; in ?*) echo obstack.o ;; esac ` ` case &amp;quot;&amp;quot; in ?*) echo  ;; esac ` ` case &amp;quot;&amp;quot; in ?*) echo  ;; esac `  `  case &amp;quot;&amp;quot; in ?*) echo  ;; esac ` ` case &amp;quot;&amp;quot; in ?*) echo  ;; esac ` &lt;br /&gt;
 stage1/libgcc.a(__main.o): In function `__do_global_ctors&#039;:&lt;br /&gt;
 /usr/local/compile/gcc-2.95.3bin/gcc/.././../gcc-2.95.3/gcc/libgcc2.c(.text+0xf0): undefined reference to `atexit&#039;&lt;br /&gt;
 collect2: ld returned 1 exit status&lt;br /&gt;
 make[2]: *** [gencheck] Error 1&lt;br /&gt;
 make[2]: Leaving directory `/usr/local/compile/gcc-2.95.3bin/gcc&#039;&lt;br /&gt;
 make[1]: *** [bootstrap] Error 2&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/gcc-2.95.3bin/gcc&#039;&lt;br /&gt;
 make: *** [bootstrap] Error 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bzip2-1.0.6:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;change all remove() to unlink() in bzip2.c&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;missing_memmove.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
delete &amp;quot;-f&amp;quot; from Makefile&lt;br /&gt;
fopen() doesn&#039;t know about the argument rb or wb. Change to r+ an w+&lt;br /&gt;
also check for other open() like bzopen()&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.79.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
do not strip the make binary. this breaks make.&lt;br /&gt;
&lt;br /&gt;
function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
fix like make-3.77. Works.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-3.2:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;needs #include &amp;lt;sys/time.h&amp;gt; in readline/history.h&lt;br /&gt;
needs a few #inlcude &amp;lt;sys/types.h&amp;gt; for undefined size_t etc.&lt;br /&gt;
#undef HAVE_LOCAL_H&lt;br /&gt;
strftime.c&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/time.h&amp;gt;&lt;br /&gt;
Ultrix 3 does only have tzset() in a kernel sysV Envrionment. It is only&lt;br /&gt;
used in strftime.c, so uncomment all tzset().&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;jpeg-6b:&#039;&#039;&#039;&lt;br /&gt;
just plain compile. Do not use libtool. Libtool will fail.&lt;br /&gt;
The rest works and builds fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;jasper-1.900.1:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;src/libjasper/include/jasper:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 #define	EXIT_FAILURE	1	/* Failing exit status.  */&lt;br /&gt;
 #define	EXIT_SUCCESS	0	/* Successful exit status.  */&lt;br /&gt;
&lt;br /&gt;
imgcmp.c&lt;br /&gt;
imginfo.c&lt;br /&gt;
jasper.c&lt;br /&gt;
jiv.c&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mips-dec-ultrix3.1-gcc -g -O2 -o jasper jasper.o  ../libjasper/.libs/libjasper.a -lm  &lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_init.o): In function `jas_init&#039;:&lt;br /&gt;
 jas_init.c:154: undefined reference to `atexit&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_image.o): In function `jas_image_delcmpt&#039;:&lt;br /&gt;
 jas_image.c:649: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_image.o): In function `jas_image_addcmpt&#039;:&lt;br /&gt;
 jas_image.c:676: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_image.o): In function `jas_image_copycmpt&#039;:&lt;br /&gt;
 jas_image.c:803: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_cm.o): In function `jas_cmpxformseq_insertpxform&#039;:&lt;br /&gt;
 jas_cm.c:669: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_icc.o): In function `jas_iccattrtab_add&#039;:&lt;br /&gt;
 jas_icc.c:775: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_icc.o):jas_icc.c:809: more undefined references to `memmove&#039; follow&lt;br /&gt;
 make[2]: *** [jasper] Error 1&lt;br /&gt;
 make[2]: Leaving directory `/usr/local/compile/jasper-1.900.1/src/appl&#039;&lt;br /&gt;
 make[1]: *** [all-recursive] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/jasper-1.900.1/src&#039;&lt;br /&gt;
 make: *** [all-recursive] Error 1&lt;br /&gt;
&lt;br /&gt;
FAILS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ncurses-5.9:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;ncurses needs to link with libiconv_ult because of setlocale.&lt;br /&gt;
Thomas Dickey proposed setting before configure in the shel environment:&lt;br /&gt;
LIBS=&amp;quot;$LIBS -liconv_ult&amp;quot;; export LIBS&lt;br /&gt;
&lt;br /&gt;
fails in form/fty_num.c because of possibly ancient locale.h&lt;br /&gt;
uncomment this IF:&lt;br /&gt;
#if HAVE_LOCALE_H&lt;br /&gt;
#define isDecimalPoint(c) ((c) == ((L &amp;amp;&amp;amp; L-&amp;gt;decimal_point) ? *(L-&amp;gt;decimal_point)&lt;br /&gt;
 : &#039;.&#039;))&lt;br /&gt;
use:&lt;br /&gt;
#define isDecimalPoint(c) ((c) == &#039;.&#039;)&lt;br /&gt;
&lt;br /&gt;
also uncomment:&lt;br /&gt;
#if HAVE_LOCALE_H&lt;br /&gt;
          argn-&amp;gt;L = localeconv();&lt;br /&gt;
#else&lt;br /&gt;
use: &lt;br /&gt;
argn-&amp;gt;L = NULL;&lt;br /&gt;
&lt;br /&gt;
test/dots.c&lt;br /&gt;
test/dots_mvcur.c&lt;br /&gt;
#define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
test/ncurses.c&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
test/railroad.c&lt;br /&gt;
#define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
FAILS with tic -x.&lt;br /&gt;
Probably some unfixed fopen() calls in the sources...&lt;br /&gt;
&lt;br /&gt;
do a &amp;quot;find . -print | xargs grep fopen&amp;quot; and fix fopen arguments&lt;br /&gt;
still FAILS and can&#039;t open terminals.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libtool-1.5.24:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;ltdl.c: add:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
extern void *malloc(size_t);&lt;br /&gt;
extern void *realloc(void *, size_t);&lt;br /&gt;
extern void free(void *);&lt;br /&gt;
FAILS several test. Don&#039;t install&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fileutils-4.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;lib/quotearg.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/dirname.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/mbswidth.h&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/xalloc.h&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/strnlen.c&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
src/ls.c:&lt;br /&gt;
extern int strcoll( const char *__s1, const char *__s2 );&lt;br /&gt;
&lt;br /&gt;
strcoll lives in /usr/lib/libiconv_ult!&lt;br /&gt;
man/Makefile&lt;br /&gt;
missing perl wrong. remove man from Makefile&lt;br /&gt;
rest seems to work fine.&lt;br /&gt;
&lt;br /&gt;
do not strip the fileutils binaries. This breaks some of the tools.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;top-3.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;unpack to new dir!&lt;br /&gt;
build for 43bsd.&lt;br /&gt;
install group as bin.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libpng-1.0.39:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;png.c:&lt;br /&gt;
#include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
fix fopen() argument rb and wb to r+ and w+&lt;br /&gt;
pngtest.c&lt;br /&gt;
example.c&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gs6.01:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;fix fopen() argument rb and wb to r+ and w+ in many files&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 /usr/include/strings.h:56: conflicting types for `strspn&#039;&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/string.h:64: previous declaration of `strspn&#039;&lt;br /&gt;
 /usr/include/strings.h:57: conflicting types for `strcspn&#039;&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/string.h:65: previous declaration of `strcspn&#039;&lt;br /&gt;
 ./src/gp_unifs.c: In function `gp_enumerate_files_init&#039;:&lt;br /&gt;
 ./src/gp_unifs.c:206: warning: implicit declaration of function `memcpy&#039;&lt;br /&gt;
 ./src/gp_unifs.c: In function `gp_enumerate_files_next&#039;:&lt;br /&gt;
 ./src/gp_unifs.c:311: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 ./src/gp_unifs.c:313: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 ./src/gp_unifs.c:317: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 ./src/gp_unifs.c:329: warning: implicit declaration of function `stat&#039;&lt;br /&gt;
 ./src/gp_unifs.c:402: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 make: *** [obj/gp_unifs.o] Error 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;extern unsigned int vs extern int.&lt;br /&gt;
fix /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/string.h&lt;br /&gt;
to extern int.&lt;br /&gt;
FAILS.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libidn-1.26:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;gl/version-etc.h&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lib/tld.c&lt;br /&gt;
lib/tlds.c&lt;br /&gt;
#define NULL 0&lt;br /&gt;
&lt;br /&gt;
src/idn.c&lt;br /&gt;
src/idn_cmd.c&lt;br /&gt;
#define	EXIT_FAILURE	1	/* Failing exit status.  */&lt;br /&gt;
#define	EXIT_SUCCESS	0	/* Successful exit status.  */&lt;br /&gt;
&lt;br /&gt;
lib/punycode.c&lt;br /&gt;
#include &amp;lt;missing_memmove.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change Makefile and src/Makefile&lt;br /&gt;
LIBS = -liberty -liconv_ult&lt;br /&gt;
&lt;br /&gt;
lib/stringprep.h:&lt;br /&gt;
typedef int ssize_t;&lt;br /&gt;
&lt;br /&gt;
make without doc SUBDIR, because we don&#039;t have perl (yet)...&lt;br /&gt;
FAILs still...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-5.8:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--enable-gui=no --disable-gpm --without-x mips-dec-ultrix3.1&lt;br /&gt;
&lt;br /&gt;
ex_docmd.c:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
link with -liconv_ult, because setlocale is undefined&lt;br /&gt;
&lt;br /&gt;
does not work with --with-tlib=ncurses!&lt;br /&gt;
let it autodetect termlib&lt;br /&gt;
&lt;br /&gt;
check config.mk:&lt;br /&gt;
LIBS            = -ltermlib -liconv_ult&lt;br /&gt;
&lt;br /&gt;
doesn&#039;t do anything:&lt;br /&gt;
src/main.c&lt;br /&gt;
src/os_unix.c&lt;br /&gt;
#define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
FAILS: does not work correctly. Crashes often...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ssh-1.2.32:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;compile with X11R4 for --with-x to work!&lt;br /&gt;
without X11R4 use configure --without-x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change in config.h:&lt;br /&gt;
 #undef HAVE_ULTRIX_SHADOW_PASSWORDS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tcl-7.3 and tk-3.6:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;build both in parallel.&lt;br /&gt;
tk needs to have tcl in the same dir to build!&lt;br /&gt;
use gcc&lt;br /&gt;
&lt;br /&gt;
tkWm.c: In function `TkWmMapWindow&#039;:&lt;br /&gt;
tkWm.c:447: `WithdrawnState&#039; undeclared (first use this function)&lt;br /&gt;
&lt;br /&gt;
from linux standard base 4.0:&lt;br /&gt;
This should be in Xutils.h in well behaved systems:&lt;br /&gt;
#define WithdrawnState  0&lt;br /&gt;
&lt;br /&gt;
lives in X11/Xutil.h in X11R4!&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;X11R4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;unpack the distribution files:&lt;br /&gt;
cat *.?? | uncompress | (cd /home/X11R4/; tar xvf -)&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include; ln -s Xaw/Form.h ./&lt;br /&gt;
building the core X11 distribution works best with ULTRIX /bin/make&lt;br /&gt;
building contribs may need GNU make&lt;br /&gt;
xconsole: errors with line wraps...&lt;br /&gt;
xlock:&lt;br /&gt;
life.c:&lt;br /&gt;
sleep(delay * 1000000000);&lt;br /&gt;
&lt;br /&gt;
X11R4 seems to work fine. Rebuild packages using X with X11R4...&lt;br /&gt;
remove /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/X11/Intrinsic.h&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xpm-3.4k:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;use Makefile.noX&lt;br /&gt;
change CC=cc to gcc&lt;br /&gt;
change XpmI.h&lt;br /&gt;
remove #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
add #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
FAILS because no X11/extensions/shape.h&lt;br /&gt;
CrDatFrI.c:&lt;br /&gt;
missing s += strlen(s); at various points&lt;br /&gt;
&lt;br /&gt;
scan.c(.text+0x668): undefined reference to `strdup&#039;:&lt;br /&gt;
link with -liberty&lt;br /&gt;
&lt;br /&gt;
change installation directory to /usr... not /usr/local&lt;br /&gt;
libXpm.a is not correctly installed. Copy by hand to /usr/lib!&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libungif-4.1.4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;fix fopen arguments&lt;br /&gt;
 util/gif2epsn.c&lt;br /&gt;
 util/gif2ps.c&lt;br /&gt;
 util/gif2rgb.c&lt;br /&gt;
 util/gifasm.c&lt;br /&gt;
 util/gifbg.c&lt;br /&gt;
 util/gifclip.c&lt;br /&gt;
 util/gifcomb.c&lt;br /&gt;
 util/giffix.c&lt;br /&gt;
 util/gifflip.c&lt;br /&gt;
 util/gifhisto.c&lt;br /&gt;
 util/gifinter.c&lt;br /&gt;
 util/gifinto.c&lt;br /&gt;
 util/gifovly.c&lt;br /&gt;
 util/gifpos.c&lt;br /&gt;
 util/gifrsize.c&lt;br /&gt;
 util/giftext.c&lt;br /&gt;
 util/gifwedge.c&lt;br /&gt;
 util/raw2gif.c&lt;br /&gt;
 util/rgb2gif.c&lt;br /&gt;
 util/text2gif.c&lt;br /&gt;
 util/gifspnge.c&lt;br /&gt;
 util/giffiltr.c&lt;br /&gt;
 util/icon2gif.c&lt;br /&gt;
 util/gifcolor.c&lt;br /&gt;
 util/gifinfo.c&lt;br /&gt;
 util/gifclrmp.c&lt;br /&gt;
 util/gifrotat.c&lt;br /&gt;
 util/gif2x11.c&lt;br /&gt;
&lt;br /&gt;
#define	EXIT_FAILURE	1	/* Failing exit status.  */&lt;br /&gt;
#define	EXIT_SUCCESS	0	/* Successful exit status.  */&lt;br /&gt;
&lt;br /&gt;
link text2gif with -liberty, because it needs strdup():&lt;br /&gt;
text2gif.o: In function `main&#039;:&lt;br /&gt;
text2gif.c(.text+0x2e0): undefined reference to `strdup&#039;&lt;br /&gt;
root@minou:/usr/local/compile/libungif-4.1.4/util# mips-dec-ultrix3.1-gcc -I/usr/local/include -Wall -I/usr/local/include -o text2gif text2gif.o  -L/usr/local/lib ../lib/.libs/libungif.a -L/usr/lib -lX11 -liberty ../lib/libgetarg.a&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ghostscript-5.01:&#039;&#039;&#039; FAIL&lt;br /&gt;
 fix fopen()&lt;br /&gt;
 gs16spl.c&lt;br /&gt;
 gp_os2.c&lt;br /&gt;
 gp_mswin.c&lt;br /&gt;
 gp_iwatc.c&lt;br /&gt;
 gp_dvx.c&lt;br /&gt;
 gdevcgm.c&lt;br /&gt;
 add to compile flags: -DBSD4_2&lt;br /&gt;
 adapt makefile&lt;br /&gt;
&lt;br /&gt;
 does not work with X11R3? Works with X11R4.&lt;br /&gt;
 gdevxini.c:55: `XtPointer&#039; undeclared here (not in a function)&lt;br /&gt;
 gdevxini.c:55: initializer element for `resources[0].default_addr&#039; is not constant&lt;br /&gt;
 gdevxini.c:119: `XtRFloat&#039; undeclared here (not in a function)&lt;br /&gt;
 gdevxini.c:119: initializer element for `resources[18].resource_type&#039; is not constant&lt;br /&gt;
&lt;br /&gt;
 gdevxini.c:&lt;br /&gt;
 #include &amp;lt;X11/Xlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;X11/StringDefs.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
still FAILS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t1lib-5.1.2:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;/lib/type1/t1io.c:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
fix fopen() bugs in various files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
strftime-strftime-release-7.0: provides a replacement for strftime().&lt;br /&gt;
ULTRIX only provides tzset in a SystemV environment. Delete all lines with tzset.&lt;br /&gt;
copy strftime.c to /usr/include/missing_strftime.h&lt;br /&gt;
Surprise! strftime() also exists in libiconv_ult!&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
freetype-2.1.10:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;src/base/ftsystem.c:&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
fix fopen() bugs in various files&lt;br /&gt;
&lt;br /&gt;
include/freetype/config/ftstdlib.h:&lt;br /&gt;
#include &amp;lt;setjmp.h&amp;gt;&lt;br /&gt;
include/freetype/internal/ftvalid.h:&lt;br /&gt;
#include &amp;lt;setjmp.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parse error in /usr/local/compile/freetype-2.1.10/include/freetype/internal/ftvalid.h&lt;br /&gt;
FAILS. No solution yet.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xearth-1.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;do xmkmf and then edit the Makefile&lt;br /&gt;
needs strftime(). Link with -liconv_ult&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xbill-1.1:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;do xmkmf and then edit the Makefile&lt;br /&gt;
use Xaw instead of Motif.&lt;br /&gt;
library hell. Lots of undefined X references...&lt;br /&gt;
FAILS. Maybe does not work with X11R4?&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fvwm-1.24r:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;use gcc&lt;br /&gt;
do xmkmf and edit all the Makefiles...&lt;br /&gt;
modules/FvwmSave/FvwmSave.c:&lt;br /&gt;
modules/FvwmSaveDesk/FvwmSaveDesk.c:&lt;br /&gt;
fvwm/fvwm.c:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy sample.fvwmrc to /usr/local/share&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mutt-1.4.2.3:&#039;&#039;&#039; FAIL&lt;br /&gt;
 ./configure --disable-nls --with-libiconv-prefix=/usr/local --without-wc-funcs mips-de-ultrix3.1&lt;br /&gt;
&amp;lt;nowiki&amp;gt;makedoc.c:&lt;br /&gt;
sy/stat.h cannot be included twice.&lt;br /&gt;
remove from lib.h.&lt;br /&gt;
FAILs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zsh-4.3.10:&#039;&#039;&#039;&lt;br /&gt;
Src/utils.c:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#define MB_CUR_MAX 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xntp3-5.93e-export&#039;&#039;&#039;&lt;br /&gt;
use this to sync time: (maybe add to add to /etc/rc.local:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# NTPdate&lt;br /&gt;
echo &amp;quot;updating time with NTP&amp;quot;&lt;br /&gt;
/usr/local/bin/ntpdate -b ptbtime1.ptb.de ptbtime2.ptb.de &amp;gt;/dev/null&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-6.4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --disable-nls --enable-gui=no --with-x=no&lt;br /&gt;
&lt;br /&gt;
edit src/Makefile:&lt;br /&gt;
EXTRA_LIBS = /usr/lib/libiconv_ult.a&lt;br /&gt;
&lt;br /&gt;
src/eval.c:	add:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: ULTRIX]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=ULTRIX_3.1D&amp;diff=2983</id>
		<title>ULTRIX 3.1D</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=ULTRIX_3.1D&amp;diff=2983"/>
		<updated>2023-04-12T15:16:11Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;ULTRIX 3.1D&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ULTRIX release 3.1D was a special hardware release to support the then new DECstation 5000/200. It will run on some early DECstations like the original 3100 and 2100, 5000/200, and possibly on the 5400 and 5800. It is mostly 4.2BSD with several extensions by DEC and adaptations from SysV and 4.3BSD. The 5000/200 does not have room for internal SCSI disks, so external disks and storage expansion boxes were common.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Decstation5000_200.jpg|thumb|right|DECstation 5000/200]]&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
Ultrix 3.1D comes with X11R3(exact version?) and only a simple X that only supports the plain color graphics (DS3100 or PMAG-B).&lt;br /&gt;
Replace with X11R4:&lt;br /&gt;
 &amp;quot;The XtPointer typedef was added to X11 with Release 4.  This error&lt;br /&gt;
 indicates that your system has X11R3 or earlier.  You need to update to&lt;br /&gt;
 a more recent edition of X in order to compile NetHack&#039;s X11 interface.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
copy stddef.h from ULTRIX 4.5...&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
show all soft/hard errors:&lt;br /&gt;
 uerf -c err&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setting the correct timezone:&#039;&#039;&#039;&lt;br /&gt;
the only way to set the timezone on ULTRIX 3 is by building a new kernel.&lt;br /&gt;
&lt;br /&gt;
this is the correct setting for MET with daylight savings time (DST):&lt;br /&gt;
&lt;br /&gt;
 timezone	-1 dst 4&lt;br /&gt;
&lt;br /&gt;
note: date knows about the TZNAME environment variable. You can set it&lt;br /&gt;
to whatever you like and date will show a different string in the timezone&lt;br /&gt;
field, but it won&#039;t adjust the time:&lt;br /&gt;
&lt;br /&gt;
 # date&lt;br /&gt;
 Sun Jan 29 11:41:26 MET 2023&lt;br /&gt;
 # TZNAME=&amp;quot;FARTS&amp;quot;; export TZNAME&lt;br /&gt;
 # date&lt;br /&gt;
 Sun Jan 29 11:41:36 FARTS 2023&lt;br /&gt;
&lt;br /&gt;
This behavior is different from later ULTRIX releases.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building a new kernel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
make sure you don&#039;t have anything GNU in the PATH and no CPPFLAGS, CFLAGS, LDFLAGS.&lt;br /&gt;
&lt;br /&gt;
this ULTRIX release will produce a distinct error when linking the vmunix kernel:&lt;br /&gt;
&lt;br /&gt;
 loading vmunix&lt;br /&gt;
 /bin/ld:&lt;br /&gt;
 Object file format error in: ltt_usrreq.o: bad issBase in file table entry in FDISS_TO_STR&amp;lt;br&amp;gt;&lt;br /&gt;
 *** Error code 1&lt;br /&gt;
 &lt;br /&gt;
 Stop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have not been able to determine the source of the problem, but it can be fixed by excluding LAT from the kernel configuration. Chances are you won&#039;t need LAT anyway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this is an example of a working kernel configuration for a DECstation 5000/200 with 64MB RAM booting from rz0:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ident		&amp;quot;MINOU&amp;quot;&lt;br /&gt;
machine		mips&lt;br /&gt;
cpu		&amp;quot;DS5000&amp;quot;&lt;br /&gt;
maxusers	64&lt;br /&gt;
processors	1&lt;br /&gt;
maxuprc		50&lt;br /&gt;
physmem		64&lt;br /&gt;
timezone	-1 dst 4&lt;br /&gt;
&lt;br /&gt;
options		QUOTA&lt;br /&gt;
options		INET&lt;br /&gt;
options		EMULFLT&lt;br /&gt;
options		NFS&lt;br /&gt;
options		RPC&lt;br /&gt;
options		DLI&lt;br /&gt;
options		UFS&lt;br /&gt;
options		DECNET&lt;br /&gt;
&lt;br /&gt;
makeoptions	ENDIAN=&amp;quot;-EL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
config		vmunix	root on rz0a  swap on rz0b  dumps on rz0b  &lt;br /&gt;
&lt;br /&gt;
adapter         ibus0      at nexus?    &lt;br /&gt;
adapter         ibus1      at nexus?    &lt;br /&gt;
adapter         ibus2      at nexus?    &lt;br /&gt;
adapter         ibus5      at nexus?    &lt;br /&gt;
adapter         ibus6      at nexus?    &lt;br /&gt;
adapter         ibus7      at nexus?    &lt;br /&gt;
controller      asc0       at ibus?     vector ascintr &lt;br /&gt;
disk            rz0        at asc0      drive 0&lt;br /&gt;
disk            rz1        at asc0      drive 1&lt;br /&gt;
disk            rz2        at asc0      drive 2&lt;br /&gt;
disk            rz3        at asc0      drive 3&lt;br /&gt;
disk            rz4        at asc0      drive 4&lt;br /&gt;
disk            rz5        at asc0      drive 5&lt;br /&gt;
disk            rz6        at asc0      drive 6&lt;br /&gt;
disk            rz7        at asc0      drive 7&lt;br /&gt;
tape            tz0        at asc0      drive 0&lt;br /&gt;
tape            tz1        at asc0      drive 1&lt;br /&gt;
tape            tz2        at asc0      drive 2&lt;br /&gt;
tape            tz3        at asc0      drive 3&lt;br /&gt;
tape            tz4        at asc0      drive 4&lt;br /&gt;
tape            tz5        at asc0      drive 5&lt;br /&gt;
tape            tz6        at asc0      drive 6&lt;br /&gt;
tape            tz7        at asc0      drive 7&lt;br /&gt;
controller      asc1       at ibus?     vector ascintr &lt;br /&gt;
disk            rz8        at asc1      drive 0&lt;br /&gt;
disk            rz9        at asc1      drive 1&lt;br /&gt;
disk            rz10       at asc1      drive 2&lt;br /&gt;
disk            rz11       at asc1      drive 3&lt;br /&gt;
disk            rz12       at asc1      drive 4&lt;br /&gt;
disk            rz13       at asc1      drive 5&lt;br /&gt;
disk            rz14       at asc1      drive 6&lt;br /&gt;
disk            rz15       at asc1      drive 7&lt;br /&gt;
tape            tz8        at asc1      drive 0&lt;br /&gt;
tape            tz9        at asc1      drive 1&lt;br /&gt;
tape            tz10       at asc1      drive 2&lt;br /&gt;
tape            tz11       at asc1      drive 3&lt;br /&gt;
tape            tz12       at asc1      drive 4&lt;br /&gt;
tape            tz13       at asc1      drive 5&lt;br /&gt;
tape            tz14       at asc1      drive 6&lt;br /&gt;
tape            tz15       at asc1      drive 7&lt;br /&gt;
device          ln0        at ibus?     vector lnintr &lt;br /&gt;
device          ln1        at ibus?     vector lnintr &lt;br /&gt;
device          dc0        at ibus?     vector dcintr &lt;br /&gt;
&lt;br /&gt;
scs_sysid	 1&lt;br /&gt;
&lt;br /&gt;
pseudo-device	pty&lt;br /&gt;
pseudo-device	loop&lt;br /&gt;
pseudo-device	inet&lt;br /&gt;
pseudo-device	ether&lt;br /&gt;
pseudo-device	rpc&lt;br /&gt;
pseudo-device	nfs&lt;br /&gt;
pseudo-device	dli&lt;br /&gt;
pseudo-device	ufs&lt;br /&gt;
pseudo-device	decnet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
On ultrix 4.2 (and earlier) we don&#039;t have &#039;&#039;&#039;usleep()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
in the file clients/olwm/usleep.c&lt;br /&gt;
&lt;br /&gt;
replace the line&lt;br /&gt;
&lt;br /&gt;
 return usleep(usec);&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #ifndef ultrix&lt;br /&gt;
 return usleep(usec);&lt;br /&gt;
 #else&lt;br /&gt;
 return sleep(usec * 1000000);&lt;br /&gt;
 #endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--------------------------------------&lt;br /&gt;
&lt;br /&gt;
to &#039;&#039;&#039;enable root logins via telnet&#039;&#039;&#039; or non-secure ports, edit /etc/ttys:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 root@minou:/etc# cat ttys &lt;br /&gt;
 # @(#)ttys	1.1 (ULTRIX) 3/2/89&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 # name	getty		type		status		comments&lt;br /&gt;
 #&lt;br /&gt;
 console	&amp;quot;/etc/getty std.9600&amp;quot; vt100 on	secure	# console terminal&lt;br /&gt;
 tty00	&amp;quot;/etc/getty std.9600&amp;quot; vt100 on secure nomodem	# direct connect tty&lt;br /&gt;
 tty01	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty02	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty03	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty04	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty05	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty06	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 tty07	&amp;quot;/etc/getty std.9600&amp;quot; vt100 off secure nomodem	# direct connect tty&lt;br /&gt;
 ttyd0   &amp;quot;/etc/getty std.9600&amp;quot; vt100 off shared secure # modem line&lt;br /&gt;
 ttyp0	none		network secure&lt;br /&gt;
 ttyp1	none		network secure&lt;br /&gt;
 ttyp2	none		network secure&lt;br /&gt;
 ttyp3	none		network secure&lt;br /&gt;
 ttyp4	none		network secure&lt;br /&gt;
 ttyp5	none		network secure&lt;br /&gt;
 ttyp6	none		network secure&lt;br /&gt;
 ttyp7	none		network secure&lt;br /&gt;
 ttyp8	none		network secure&lt;br /&gt;
 ttyp9	none		network secure&lt;br /&gt;
 ttypa	none		network secure&lt;br /&gt;
 ttypb	none		network secure&lt;br /&gt;
 ttypc	none		network secure&lt;br /&gt;
 ttypd	none		network secure&lt;br /&gt;
 ttype	none		network secure&lt;br /&gt;
 ttypf	none		network secure&lt;br /&gt;
 ttyq0	none		network secure&lt;br /&gt;
 ttyq1	none		network secure&lt;br /&gt;
 ttyq2	none		network secure&lt;br /&gt;
 ttyq3	none		network secure&lt;br /&gt;
 ttyq4	none		network secure&lt;br /&gt;
 ttyq5	none		network secure&lt;br /&gt;
 ttyq6	none		network secure&lt;br /&gt;
 ttyq7	none		network secure&lt;br /&gt;
 ttyq8	none		network secure&lt;br /&gt;
 ttyq9	none		network secure&lt;br /&gt;
 ttyqa	none		network secure&lt;br /&gt;
 ttyqb	none		network secure&lt;br /&gt;
 ttyqc	none		network secure&lt;br /&gt;
 ttyqd	none		network secure&lt;br /&gt;
 ttyqe	none		network secure&lt;br /&gt;
 ttyqf	none		network secure&lt;br /&gt;
 # :0 &amp;quot;/usr/bin/login -P /usr/bin/Xprompter -C /usr/bin/dxsession&amp;quot; none on secure window=&amp;quot;/usr/bin/Xcfb&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----------------------------------------&lt;br /&gt;
&lt;br /&gt;
add to &#039;&#039;&#039;/etc/rc.local&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 # default route&lt;br /&gt;
 echo &#039;setting default route&#039; &amp;gt; /dev/console&lt;br /&gt;
 /etc/route add default 192.168.2.253 1&lt;br /&gt;
 # SSHd&lt;br /&gt;
 echo &#039;starting SSH daemon&#039; &amp;gt; /dev/console&lt;br /&gt;
 /usr/local/sbin/sshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
error in repaired Ultrix gcc header files:&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/sys/dir.h&lt;br /&gt;
gcc fixes this to u_long, but does not define it. Add:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
in many cases, config.guess can&#039;t detect the platform.&lt;br /&gt;
Specify as mips-dec-ultrix3.1&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
size_t is declared in &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ultrix also often needs:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
.cshrc:&lt;br /&gt;
&lt;br /&gt;
 if ($term == xterm-256color) then&lt;br /&gt;
 setenv TERM vt100&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
.profile&lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
 then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
symlink /usr/lib/libi.a to /usr/lib/libiconv_ult.a&lt;br /&gt;
if setlocale is undefined link with this library&lt;br /&gt;
for some reason gcc doesn&#039;t want to link just to libi.a&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
strstr.c from GNU tar...&lt;br /&gt;
copy to /usr/include/missing_strstr.h&lt;br /&gt;
&lt;br /&gt;
 /* strstr.c -- return the offset of one string within another&lt;br /&gt;
 Copyright (C) 1989, 1990 Free Software Foundation, Inc.&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2, or (at your option)&lt;br /&gt;
 any later version.&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */&lt;br /&gt;
 /* Written by Mike Rendell &amp;lt;michael@cs.mun.ca&amp;gt;.  */&lt;br /&gt;
&lt;br /&gt;
 /* Return the starting address of string S2 in S1;&lt;br /&gt;
   return 0 if it is not found. */&lt;br /&gt;
 char *&lt;br /&gt;
 strstr (s1, s2)&lt;br /&gt;
     char *s1;&lt;br /&gt;
     char *s2;&lt;br /&gt;
 {&lt;br /&gt;
  int i;&lt;br /&gt;
  char *p1;&lt;br /&gt;
  char *p2;&lt;br /&gt;
  char *s = s1;&lt;br /&gt;
  for (p2 = s2, i = 0; *s; p2 = s2, i++, s++)&lt;br /&gt;
    {&lt;br /&gt;
      for (p1 = s; *p1 &amp;amp;&amp;amp; *p2 &amp;amp;&amp;amp; *p1 == *p2; p1++, p2++)&lt;br /&gt;
        ;&lt;br /&gt;
      if (!*p2)&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  if (!*p2)&lt;br /&gt;
    return s1 + i;&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
-----------------&lt;br /&gt;
&lt;br /&gt;
Building some GNU software:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GCC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
start with gcc-1.42&lt;br /&gt;
use gcc to build some older version of tools: sed-1.18, gawk1, bison-1.25, make-3.75&lt;br /&gt;
use gcc1 to build gcc2&lt;br /&gt;
&lt;br /&gt;
ultrix 3 doesn&#039;t know about atexit().&lt;br /&gt;
Remove HAVE_ATEXIT before building gcc.&lt;br /&gt;
&lt;br /&gt;
build gcc in steps:&lt;br /&gt;
&lt;br /&gt;
 make &amp;quot;CC=/usr/local/bin/gcc&amp;quot; LANGUAGES=c&lt;br /&gt;
 make stage1&lt;br /&gt;
 make CC=&amp;quot;stage1/xgcc -Bstage1/&amp;quot; CFLAGS=&amp;quot;-g -O&amp;quot;&lt;br /&gt;
 make stage2&lt;br /&gt;
 make CC=&amp;quot;stage2/xgcc -Bstage2/&amp;quot; CFLAGS=&amp;quot;-g -O&amp;quot;&lt;br /&gt;
 make compare&lt;br /&gt;
 make install CC=&amp;quot;stage2/xgcc -Bstage2/&amp;quot; CFLAGS=&amp;quot;-g -O&amp;quot; LANGUAGES=c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc-2.3.3 typedefs size_t to long unsigned int in&lt;br /&gt;
/usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.3.3/include/stddef.h&lt;br /&gt;
&lt;br /&gt;
/usr/include/sys/types.h defines size_t as &amp;quot;int&amp;quot;&lt;br /&gt;
&lt;br /&gt;
add something like this in both header files:&lt;br /&gt;
note: changing original 25 year old header files is really ugly&lt;br /&gt;
&lt;br /&gt;
 #ifndef size_t_defined&lt;br /&gt;
 typedef int size_t;&lt;br /&gt;
 #define size_t_defined&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;binutils 2.7&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;incorrectly includes stdlib.h in binutils-2.7/binutils/arlex.c&lt;br /&gt;
on line 556.&lt;br /&gt;
and in binutils-2.7/ld/ldlex.c&lt;br /&gt;
on line 1212.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.7.2.3&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;incorrectly includes stdlib.h in ../gcc-2.7.2.3/cpplib.c&lt;br /&gt;
on line 73.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sed-3.02&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;add to sed/utils.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.76&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;texinfo-4.8:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;add to lib/strdup.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#define NULL 0&lt;br /&gt;
needs #include &amp;lt;missing_strstr.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;unzip-5.52:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;filio.c needs #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
make ultrix&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bison-1.28&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-4.6:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;main.c&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;
#include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
add EXTRA_LIBS = -liconv (see above for /usr/lib/libi.a)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m4-1.4.3:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--disable-nls&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.03:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--disable-nls&lt;br /&gt;
save /bin/sh to /bin/sh.ultrix&lt;br /&gt;
copy /usr/local/bin/bash to /bin/bash and /bin/sh&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zlib-1.2.8:&#039;&#039;&#039;&lt;br /&gt;
does not copy zlib.h and zconf.h&lt;br /&gt;
Copy by hand!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;readline-5.2:&#039;&#039;&#039;&lt;br /&gt;
xmalloc.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
time_t lives in &amp;lt;sys/types.&amp;gt;&lt;br /&gt;
history.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wants to build shared libraries for some reason.&lt;br /&gt;
Edit Makefile and remove TARGETS = shared and INSTALL_TARGETS = install-shared&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libiconv-1.9.2:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--disable-nls&lt;br /&gt;
srclib/setenv.c:&lt;br /&gt;
srclib/unsetenv.c:&lt;br /&gt;
add #include &amp;lt;sys/types.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tin-2.4.4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;pcre/dftables.c:&lt;br /&gt;
Ultrix fopen() doesn&#039;t understand argument &amp;quot;wb&amp;quot;.&lt;br /&gt;
Change to &amp;quot;w+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
add to pcre/pcre_globals.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
extern void *malloc(size_t);&lt;br /&gt;
extern void *realloc(void *, size_t);&lt;br /&gt;
extern void free(void *);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.05b:&#039;&#039;&#039;&lt;br /&gt;
--with-readline --with-installed-readline --disable-nls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pdksh-5.2.14:&#039;&#039;&#039;&lt;br /&gt;
--disable-emacs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m4-1.4.5:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;regcomp.c&lt;br /&gt;
Ultrix 3 doesn&#039;t know about MB_CUR_MAX&lt;br /&gt;
#define MB_CUR_MAX 1&lt;br /&gt;
regcomp.c&lt;br /&gt;
vasnprintf.c&lt;br /&gt;
&lt;br /&gt;
lib/error.c:&lt;br /&gt;
add:&lt;br /&gt;
#include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lib/regex_internal.c:&lt;br /&gt;
add:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
old m4-1.4.3/src/stackovf.c:&lt;br /&gt;
&lt;br /&gt;
  vec.sv_flags = (SV_ONSTACK&lt;br /&gt;
#ifdef SV_RESETHAND&lt;br /&gt;
                  | SV_RESETHAND&lt;br /&gt;
#endif&lt;br /&gt;
                 );&lt;br /&gt;
&lt;br /&gt;
new m4-1.4.5/src/stackovf.c:&lt;br /&gt;
&lt;br /&gt;
  vec.sv_flags = (SV_ONSTACK | SV_RESETHAND);&lt;br /&gt;
&lt;br /&gt;
backport:&lt;br /&gt;
  vec.sv_flags = (SV_ONSTACK&lt;br /&gt;
#ifdef SV_RESETHAND&lt;br /&gt;
                  | SV_RESETHAND&lt;br /&gt;
#endif&lt;br /&gt;
                 );&lt;br /&gt;
&lt;br /&gt;
some tests fail with doc/m4.texinfo. This is known. Ignore.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk-3.0.6:&#039;&#039;&#039;&lt;br /&gt;
--disable-nls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.77:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;glob/fnmatch.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#define NULL 0&lt;br /&gt;
&lt;br /&gt;
function.c and job.c:&lt;br /&gt;
#ifndef remove&lt;br /&gt;
#define remove unlink&lt;br /&gt;
#endif&lt;br /&gt;
remove() should remove both files and directories. unlink() only removes files.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.05:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;locale.c:&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;
#include &amp;lt;locale.h&amp;gt;&lt;br /&gt;
#define NULL 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.8.1:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;incorrectly includes stdlib.h&lt;br /&gt;
change HAVE_STDLIB_H in auto-config.h&lt;br /&gt;
to #undef HAVE_STDLIB_H&lt;br /&gt;
change #define HAVE_STDDEF_H 1 to&lt;br /&gt;
#undef HAVE_STDDEF_H&lt;br /&gt;
&lt;br /&gt;
Makefile insists on using OLDCC as the MIPS C compiler&lt;br /&gt;
override host overrides... Not sure if this is a good idea...&lt;br /&gt;
FAILs compiling enquire.c with ./xgcc&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;patch-2.5.9:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;dirname.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
config.h&lt;br /&gt;
#define HAVE_STRUCT_UTIMBUF 1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;perl-5.004:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Configure -Dcc=gcc   to use gcc&lt;br /&gt;
 In file included from doio.c:21:&lt;br /&gt;
 /usr/include/sys/ipc.h:14: redefinition of `struct ipc_perm&#039;&lt;br /&gt;
 In file included from doio.c:26:&lt;br /&gt;
 /usr/include/sys/sem.h:91: redefinition of `struct semid_ds&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:103: redefinition of `struct sem&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:114: redefinition of `struct sem_undo&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:117: redefinition of `struct undo&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:127: redefinition of `struct seminfo&#039;&lt;br /&gt;
 /usr/include/sys/sem.h:144: redefinition of `struct sembuf&#039;&lt;br /&gt;
 make: *** [doio.o] Error 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
compilation FAILED&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.95.3:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;get libio patch&lt;br /&gt;
copy patch to libio dir&lt;br /&gt;
apply patch like:&lt;br /&gt;
/usr/local/bin/patch &amp;lt; libio_patch.txt&lt;br /&gt;
configure --disable-nls --with-libiconv-prefix=/usr/local&lt;br /&gt;
--enable-languages=c,c++ mips-dec-ultrix3.1&lt;br /&gt;
&lt;br /&gt;
incorrectly includes stdlib.h&lt;br /&gt;
change HAVE_STDLIB_H in auto-config.h&lt;br /&gt;
to #undef HAVE_STDLIB_H&lt;br /&gt;
change #define HAVE_STDDEF_H 1 to&lt;br /&gt;
#undef HAVE_STDDEF_H&lt;br /&gt;
&lt;br /&gt;
libiberty/config.h&lt;br /&gt;
#undef HAVE_ATEXIT&lt;br /&gt;
#define NEED_ATEXIT 1&lt;br /&gt;
&lt;br /&gt;
change in&lt;br /&gt;
libiberty/config.h&lt;br /&gt;
gcc/auto-host.h&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FAILS in stage1: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ln -s .././../gcc-2.95.3/gcc/../libiberty/obstack.c obstack.c&lt;br /&gt;
 stage1/xgcc -Bstage1/ -B/usr/local/mips-dec-ultrix3.1/bin/ -c  -DIN_GCC     -O2 -g -O2  -DHAVE_CONFIG_H    -I. -I.././../gcc-2.95.3/gcc -I.././../gcc-2.95.3/gcc/config -I.././../gcc-2.95.3/gcc/../include obstack.c&lt;br /&gt;
 stage1/xgcc -Bstage1/ -B/usr/local/mips-dec-ultrix3.1/bin/  -DIN_GCC     -O2 -g -O2  -DHAVE_CONFIG_H  -o gencheck \&lt;br /&gt;
 gencheck.o ` case &amp;quot;obstack.o&amp;quot; in ?*) echo obstack.o ;; esac ` ` case &amp;quot;&amp;quot; in ?*) echo  ;; esac ` ` case &amp;quot;&amp;quot; in ?*) echo  ;; esac `  `  case &amp;quot;&amp;quot; in ?*) echo  ;; esac ` ` case &amp;quot;&amp;quot; in ?*) echo  ;; esac ` &lt;br /&gt;
 stage1/libgcc.a(__main.o): In function `__do_global_ctors&#039;:&lt;br /&gt;
 /usr/local/compile/gcc-2.95.3bin/gcc/.././../gcc-2.95.3/gcc/libgcc2.c(.text+0xf0): undefined reference to `atexit&#039;&lt;br /&gt;
 collect2: ld returned 1 exit status&lt;br /&gt;
 make[2]: *** [gencheck] Error 1&lt;br /&gt;
 make[2]: Leaving directory `/usr/local/compile/gcc-2.95.3bin/gcc&#039;&lt;br /&gt;
 make[1]: *** [bootstrap] Error 2&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/gcc-2.95.3bin/gcc&#039;&lt;br /&gt;
 make: *** [bootstrap] Error 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bzip2-1.0.6:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;change all remove() to unlink() in bzip2.c&lt;br /&gt;
 #include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;missing_memmove.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;missing_strerror.h&amp;gt;&lt;br /&gt;
delete &amp;quot;-f&amp;quot; from Makefile&lt;br /&gt;
fopen() doesn&#039;t know about the argument rb or wb. Change to r+ an w+&lt;br /&gt;
also check for other open() like bzopen()&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.79.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;glob/fnmatch.c:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
do not strip the make binary. this breaks make.&lt;br /&gt;
&lt;br /&gt;
function.c and job.c:&lt;br /&gt;
 #ifndef remove&lt;br /&gt;
 #define remove unlink&lt;br /&gt;
 #endif&lt;br /&gt;
fix like make-3.77. Works.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-3.2:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;needs #include &amp;lt;sys/time.h&amp;gt; in readline/history.h&lt;br /&gt;
needs a few #inlcude &amp;lt;sys/types.h&amp;gt; for undefined size_t etc.&lt;br /&gt;
#undef HAVE_LOCAL_H&lt;br /&gt;
strftime.c&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/time.h&amp;gt;&lt;br /&gt;
Ultrix 3 does only have tzset() in a kernel sysV Envrionment. It is only&lt;br /&gt;
used in strftime.c, so uncomment all tzset().&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;jpeg-6b:&#039;&#039;&#039;&lt;br /&gt;
just plain compile. Do not use libtool. Libtool will fail.&lt;br /&gt;
The rest works and builds fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;jasper-1.900.1:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;src/libjasper/include/jasper:&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 extern void *malloc(size_t);&lt;br /&gt;
 extern void *realloc(void *, size_t);&lt;br /&gt;
 extern void free(void *);&lt;br /&gt;
 &lt;br /&gt;
 #define	EXIT_FAILURE	1	/* Failing exit status.  */&lt;br /&gt;
 #define	EXIT_SUCCESS	0	/* Successful exit status.  */&lt;br /&gt;
&lt;br /&gt;
imgcmp.c&lt;br /&gt;
imginfo.c&lt;br /&gt;
jasper.c&lt;br /&gt;
jiv.c&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mips-dec-ultrix3.1-gcc -g -O2 -o jasper jasper.o  ../libjasper/.libs/libjasper.a -lm  &lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_init.o): In function `jas_init&#039;:&lt;br /&gt;
 jas_init.c:154: undefined reference to `atexit&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_image.o): In function `jas_image_delcmpt&#039;:&lt;br /&gt;
 jas_image.c:649: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_image.o): In function `jas_image_addcmpt&#039;:&lt;br /&gt;
 jas_image.c:676: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_image.o): In function `jas_image_copycmpt&#039;:&lt;br /&gt;
 jas_image.c:803: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_cm.o): In function `jas_cmpxformseq_insertpxform&#039;:&lt;br /&gt;
 jas_cm.c:669: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_icc.o): In function `jas_iccattrtab_add&#039;:&lt;br /&gt;
 jas_icc.c:775: undefined reference to `memmove&#039;&lt;br /&gt;
 ../libjasper/.libs/libjasper.a(jas_icc.o):jas_icc.c:809: more undefined references to `memmove&#039; follow&lt;br /&gt;
 make[2]: *** [jasper] Error 1&lt;br /&gt;
 make[2]: Leaving directory `/usr/local/compile/jasper-1.900.1/src/appl&#039;&lt;br /&gt;
 make[1]: *** [all-recursive] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/jasper-1.900.1/src&#039;&lt;br /&gt;
 make: *** [all-recursive] Error 1&lt;br /&gt;
&lt;br /&gt;
FAILS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ncurses-5.9:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;ncurses needs to link with libiconv_ult because of setlocale.&lt;br /&gt;
Thomas Dickey proposed setting before configure in the shel environment:&lt;br /&gt;
LIBS=&amp;quot;$LIBS -liconv_ult&amp;quot;; export LIBS&lt;br /&gt;
&lt;br /&gt;
fails in form/fty_num.c because of possibly ancient locale.h&lt;br /&gt;
uncomment this IF:&lt;br /&gt;
#if HAVE_LOCALE_H&lt;br /&gt;
#define isDecimalPoint(c) ((c) == ((L &amp;amp;&amp;amp; L-&amp;gt;decimal_point) ? *(L-&amp;gt;decimal_point)&lt;br /&gt;
 : &#039;.&#039;))&lt;br /&gt;
use:&lt;br /&gt;
#define isDecimalPoint(c) ((c) == &#039;.&#039;)&lt;br /&gt;
&lt;br /&gt;
also uncomment:&lt;br /&gt;
#if HAVE_LOCALE_H&lt;br /&gt;
          argn-&amp;gt;L = localeconv();&lt;br /&gt;
#else&lt;br /&gt;
use: &lt;br /&gt;
argn-&amp;gt;L = NULL;&lt;br /&gt;
&lt;br /&gt;
test/dots.c&lt;br /&gt;
test/dots_mvcur.c&lt;br /&gt;
#define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
test/ncurses.c&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
test/railroad.c&lt;br /&gt;
#define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
FAILS with tic -x.&lt;br /&gt;
Probably some unfixed fopen() calls in the sources...&lt;br /&gt;
&lt;br /&gt;
do a &amp;quot;find . -print | xargs grep fopen&amp;quot; and fix fopen arguments&lt;br /&gt;
still FAILS and can&#039;t open terminals.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libtool-1.5.24:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;ltdl.c: add:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
extern void *malloc(size_t);&lt;br /&gt;
extern void *realloc(void *, size_t);&lt;br /&gt;
extern void free(void *);&lt;br /&gt;
FAILS several test. Don&#039;t install&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fileutils-4.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;lib/quotearg.h:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/dirname.c:&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/mbswidth.h&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/xalloc.h&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
lib/strnlen.c&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
src/ls.c:&lt;br /&gt;
extern int strcoll( const char *__s1, const char *__s2 );&lt;br /&gt;
&lt;br /&gt;
strcoll lives in /usr/lib/libiconv_ult!&lt;br /&gt;
man/Makefile&lt;br /&gt;
missing perl wrong. remove man from Makefile&lt;br /&gt;
rest seems to work fine.&lt;br /&gt;
&lt;br /&gt;
do not strip the fileutils binaries. This breaks some of the tools.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;top-3.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;unpack to new dir!&lt;br /&gt;
build for 43bsd.&lt;br /&gt;
install group as bin.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libpng-1.0.39:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;png.c:&lt;br /&gt;
#include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
fix fopen() argument rb and wb to r+ and w+&lt;br /&gt;
pngtest.c&lt;br /&gt;
example.c&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gs6.01:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;fix fopen() argument rb and wb to r+ and w+ in many files&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 /usr/include/strings.h:56: conflicting types for `strspn&#039;&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/string.h:64: previous declaration of `strspn&#039;&lt;br /&gt;
 /usr/include/strings.h:57: conflicting types for `strcspn&#039;&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/string.h:65: previous declaration of `strcspn&#039;&lt;br /&gt;
 ./src/gp_unifs.c: In function `gp_enumerate_files_init&#039;:&lt;br /&gt;
 ./src/gp_unifs.c:206: warning: implicit declaration of function `memcpy&#039;&lt;br /&gt;
 ./src/gp_unifs.c: In function `gp_enumerate_files_next&#039;:&lt;br /&gt;
 ./src/gp_unifs.c:311: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 ./src/gp_unifs.c:313: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 ./src/gp_unifs.c:317: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 ./src/gp_unifs.c:329: warning: implicit declaration of function `stat&#039;&lt;br /&gt;
 ./src/gp_unifs.c:402: warning: function `memcpy&#039; was previously declared within a block&lt;br /&gt;
 make: *** [obj/gp_unifs.o] Error 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;extern unsigned int vs extern int.&lt;br /&gt;
fix /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/string.h&lt;br /&gt;
to extern int.&lt;br /&gt;
FAILS.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libidn-1.26:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;gl/version-etc.h&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lib/tld.c&lt;br /&gt;
lib/tlds.c&lt;br /&gt;
#define NULL 0&lt;br /&gt;
&lt;br /&gt;
src/idn.c&lt;br /&gt;
src/idn_cmd.c&lt;br /&gt;
#define	EXIT_FAILURE	1	/* Failing exit status.  */&lt;br /&gt;
#define	EXIT_SUCCESS	0	/* Successful exit status.  */&lt;br /&gt;
&lt;br /&gt;
lib/punycode.c&lt;br /&gt;
#include &amp;lt;missing_memmove.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change Makefile and src/Makefile&lt;br /&gt;
LIBS = -liberty -liconv_ult&lt;br /&gt;
&lt;br /&gt;
lib/stringprep.h:&lt;br /&gt;
typedef int ssize_t;&lt;br /&gt;
&lt;br /&gt;
make without doc SUBDIR, because we don&#039;t have perl (yet)...&lt;br /&gt;
FAILs still...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-5.8:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;--enable-gui=no --disable-gpm --without-x mips-dec-ultrix3.1&lt;br /&gt;
&lt;br /&gt;
ex_docmd.c:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
link with -liconv_ult, because setlocale is undefined&lt;br /&gt;
&lt;br /&gt;
does not work with --with-tlib=ncurses!&lt;br /&gt;
let it autodetect termlib&lt;br /&gt;
&lt;br /&gt;
check config.mk:&lt;br /&gt;
LIBS            = -ltermlib -liconv_ult&lt;br /&gt;
&lt;br /&gt;
doesn&#039;t do anything:&lt;br /&gt;
src/main.c&lt;br /&gt;
src/os_unix.c&lt;br /&gt;
#define	STDOUT_FILENO	1	/* Standard output.  */&lt;br /&gt;
&lt;br /&gt;
FAILS: does not work correctly. Crashes often...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ssh-1.2.32:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;compile with X11R4 for --with-x to work!&lt;br /&gt;
without X11R4 use configure --without-x&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change in config.h:&lt;br /&gt;
 #undef HAVE_ULTRIX_SHADOW_PASSWORDS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tcl-7.3 and tk-3.6:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;build both in parallel.&lt;br /&gt;
tk needs to have tcl in the same dir to build!&lt;br /&gt;
use gcc&lt;br /&gt;
&lt;br /&gt;
tkWm.c: In function `TkWmMapWindow&#039;:&lt;br /&gt;
tkWm.c:447: `WithdrawnState&#039; undeclared (first use this function)&lt;br /&gt;
&lt;br /&gt;
from linux standard base 4.0:&lt;br /&gt;
This should be in Xutils.h in well behaved systems:&lt;br /&gt;
#define WithdrawnState  0&lt;br /&gt;
&lt;br /&gt;
lives in X11/Xutil.h in X11R4!&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;X11R4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;unpack the distribution files:&lt;br /&gt;
cat *.?? | uncompress | (cd /home/X11R4/; tar xvf -)&lt;br /&gt;
&lt;br /&gt;
some include files seem to live in /usr/include/X11/Xaw, but appear to be expected in /usr/include/X11...&lt;br /&gt;
fix like: cd /usr/include; ln -s Xaw/Form.h ./&lt;br /&gt;
building the core X11 distribution works best with ULTRIX /bin/make&lt;br /&gt;
building contribs may need GNU make&lt;br /&gt;
xconsole: errors with line wraps...&lt;br /&gt;
xlock:&lt;br /&gt;
life.c:&lt;br /&gt;
sleep(delay * 1000000000);&lt;br /&gt;
&lt;br /&gt;
X11R4 seems to work fine. Rebuild packages using X with X11R4...&lt;br /&gt;
remove /usr/local/lib/gcc-lib/mips-dec-ultrix3.1/2.7.2.3/include/X11/Intrinsic.h&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xpm-3.4k:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;use Makefile.noX&lt;br /&gt;
change CC=cc to gcc&lt;br /&gt;
change XpmI.h&lt;br /&gt;
remove #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
add #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
FAILS because no X11/extensions/shape.h&lt;br /&gt;
CrDatFrI.c:&lt;br /&gt;
missing s += strlen(s); at various points&lt;br /&gt;
&lt;br /&gt;
scan.c(.text+0x668): undefined reference to `strdup&#039;:&lt;br /&gt;
link with -liberty&lt;br /&gt;
&lt;br /&gt;
change installation directory to /usr... not /usr/local&lt;br /&gt;
libXpm.a is not correctly installed. Copy by hand to /usr/lib!&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libungif-4.1.4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;fix fopen arguments&lt;br /&gt;
 util/gif2epsn.c&lt;br /&gt;
 util/gif2ps.c&lt;br /&gt;
 util/gif2rgb.c&lt;br /&gt;
 util/gifasm.c&lt;br /&gt;
 util/gifbg.c&lt;br /&gt;
 util/gifclip.c&lt;br /&gt;
 util/gifcomb.c&lt;br /&gt;
 util/giffix.c&lt;br /&gt;
 util/gifflip.c&lt;br /&gt;
 util/gifhisto.c&lt;br /&gt;
 util/gifinter.c&lt;br /&gt;
 util/gifinto.c&lt;br /&gt;
 util/gifovly.c&lt;br /&gt;
 util/gifpos.c&lt;br /&gt;
 util/gifrsize.c&lt;br /&gt;
 util/giftext.c&lt;br /&gt;
 util/gifwedge.c&lt;br /&gt;
 util/raw2gif.c&lt;br /&gt;
 util/rgb2gif.c&lt;br /&gt;
 util/text2gif.c&lt;br /&gt;
 util/gifspnge.c&lt;br /&gt;
 util/giffiltr.c&lt;br /&gt;
 util/icon2gif.c&lt;br /&gt;
 util/gifcolor.c&lt;br /&gt;
 util/gifinfo.c&lt;br /&gt;
 util/gifclrmp.c&lt;br /&gt;
 util/gifrotat.c&lt;br /&gt;
 util/gif2x11.c&lt;br /&gt;
&lt;br /&gt;
#define	EXIT_FAILURE	1	/* Failing exit status.  */&lt;br /&gt;
#define	EXIT_SUCCESS	0	/* Successful exit status.  */&lt;br /&gt;
&lt;br /&gt;
link text2gif with -liberty, because it needs strdup():&lt;br /&gt;
text2gif.o: In function `main&#039;:&lt;br /&gt;
text2gif.c(.text+0x2e0): undefined reference to `strdup&#039;&lt;br /&gt;
root@minou:/usr/local/compile/libungif-4.1.4/util# mips-dec-ultrix3.1-gcc -I/usr/local/include -Wall -I/usr/local/include -o text2gif text2gif.o  -L/usr/local/lib ../lib/.libs/libungif.a -L/usr/lib -lX11 -liberty ../lib/libgetarg.a&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ghostscript-5.01:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;fix fopen()&lt;br /&gt;
 gs16spl.c&lt;br /&gt;
 gp_os2.c&lt;br /&gt;
 gp_mswin.c&lt;br /&gt;
 gp_iwatc.c&lt;br /&gt;
 gp_dvx.c&lt;br /&gt;
 gdevcgm.c&lt;br /&gt;
add to compile flags: -DBSD4_2&lt;br /&gt;
adapt makefile&lt;br /&gt;
&lt;br /&gt;
does not work with X11R3? Works with X11R4.&lt;br /&gt;
 gdevxini.c:55: `XtPointer&#039; undeclared here (not in a function)&lt;br /&gt;
 gdevxini.c:55: initializer element for `resources[0].default_addr&#039; is not constant&lt;br /&gt;
 gdevxini.c:119: `XtRFloat&#039; undeclared here (not in a function)&lt;br /&gt;
 gdevxini.c:119: initializer element for `resources[18].resource_type&#039; is not constant&lt;br /&gt;
&lt;br /&gt;
gdevxini.c:&lt;br /&gt;
 #include &amp;lt;X11/Xlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;X11/StringDefs.h&amp;gt;&lt;br /&gt;
still FAILS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t1lib-5.1.2:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;/lib/type1/t1io.c:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
fix fopen() bugs in various files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
strftime-strftime-release-7.0: provides a replacement for strftime().&lt;br /&gt;
ULTRIX only provides tzset in a SystemV environment. Delete all lines with tzset.&lt;br /&gt;
copy strftime.c to /usr/include/missing_strftime.h&lt;br /&gt;
Surprise! strftime() also exists in libiconv_ult!&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
freetype-2.1.10:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;src/base/ftsystem.c:&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
fix fopen() bugs in various files&lt;br /&gt;
&lt;br /&gt;
include/freetype/config/ftstdlib.h:&lt;br /&gt;
#include &amp;lt;setjmp.h&amp;gt;&lt;br /&gt;
include/freetype/internal/ftvalid.h:&lt;br /&gt;
#include &amp;lt;setjmp.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parse error in /usr/local/compile/freetype-2.1.10/include/freetype/internal/ftvalid.h&lt;br /&gt;
FAILS. No solution yet.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xearth-1.1:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;do xmkmf and then edit the Makefile&lt;br /&gt;
needs strftime(). Link with -liconv_ult&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xbill-1.1:&#039;&#039;&#039; FAIL&lt;br /&gt;
&amp;lt;nowiki&amp;gt;do xmkmf and then edit the Makefile&lt;br /&gt;
use Xaw instead of Motif.&lt;br /&gt;
library hell. Lots of undefined X references...&lt;br /&gt;
FAILS. Maybe does not work with X11R4?&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fvwm-1.24r:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;use gcc&lt;br /&gt;
do xmkmf and edit all the Makefiles...&lt;br /&gt;
modules/FvwmSave/FvwmSave.c:&lt;br /&gt;
modules/FvwmSaveDesk/FvwmSaveDesk.c:&lt;br /&gt;
fvwm/fvwm.c:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy sample.fvwmrc to /usr/local/share&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mutt-1.4.2.3:&#039;&#039;&#039; FAIL&lt;br /&gt;
 ./configure --disable-nls --with-libiconv-prefix=/usr/local --without-wc-funcs mips-de-ultrix3.1&lt;br /&gt;
&amp;lt;nowiki&amp;gt;makedoc.c:&lt;br /&gt;
sy/stat.h cannot be included twice.&lt;br /&gt;
remove from lib.h.&lt;br /&gt;
FAILs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zsh-4.3.10:&#039;&#039;&#039;&lt;br /&gt;
Src/utils.c:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#define MB_CUR_MAX 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xntp3-5.93e-export&#039;&#039;&#039;&lt;br /&gt;
use this to sync time: (maybe add to add to /etc/rc.local:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# NTPdate&lt;br /&gt;
echo &amp;quot;updating time with NTP&amp;quot;&lt;br /&gt;
/usr/local/bin/ntpdate -b ptbtime1.ptb.de ptbtime2.ptb.de &amp;gt;/dev/null&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-6.4:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --disable-nls --enable-gui=no --with-x=no&lt;br /&gt;
&lt;br /&gt;
edit src/Makefile:&lt;br /&gt;
EXTRA_LIBS = /usr/lib/libiconv_ult.a&lt;br /&gt;
&lt;br /&gt;
src/eval.c:	add:&lt;br /&gt;
#include &amp;lt;missing_strstr.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: ULTRIX]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=OSF/1_1.0&amp;diff=2982</id>
		<title>OSF/1 1.0</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=OSF/1_1.0&amp;diff=2982"/>
		<updated>2023-04-12T15:14:17Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSF/1 ==&lt;br /&gt;
&lt;br /&gt;
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&#039;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&#039;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.&lt;br /&gt;
&lt;br /&gt;
[https://groups.google.com/forum/?hl=en#!original/bit.listserv.esl-l/BovGe3q9yWE/cqlcCYfxmbAJ]This is the original release announcement from 1992.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Decstation3100.jpg|thumb|right|DECstation 3100]]&lt;br /&gt;
[[Datei:Osf1_mips.jpg|thumb|right|OSF/1 with a VT220 serial console terminal]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OSF/1 installation on a DECstation 3100&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
create a directory &amp;quot;disk&amp;quot;.&lt;br /&gt;
cd to disk and create a new dir &amp;quot;RISC&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
copy the files from the tapes to the new distribution directories. Create new subdirs:&lt;br /&gt;
&lt;br /&gt;
 Tin0Install -&amp;gt; MPK&lt;br /&gt;
 Tin1Kits -&amp;gt; BASE&lt;br /&gt;
 Tin2Kits -&amp;gt; BASE (same dir as above)&lt;br /&gt;
 Tin3RT -&amp;gt; RT&lt;br /&gt;
&lt;br /&gt;
create a subdir &amp;quot;instctrl&amp;quot; in all dirs. Untar the respective f03.instctrl.tar there.&lt;br /&gt;
Rename all the files, so they can be found by the installation procedure, like:&lt;br /&gt;
 mv f30.OSFDCMT100.tar.Z OSFDCMT100&lt;br /&gt;
&lt;br /&gt;
The end result should look like this:&lt;br /&gt;
&lt;br /&gt;
 root@audrey:/export/binaries/dec/osf1/mips/osf1_1.0.1_mips/disk# find .   &lt;br /&gt;
 .&lt;br /&gt;
 ./RISC&lt;br /&gt;
 ./RISC/RT&lt;br /&gt;
 ./RISC/RT/OSFMANRT100&lt;br /&gt;
 ./RISC/RT/ORTDEV100&lt;br /&gt;
 ./RISC/RT/vmunix&lt;br /&gt;
 ./RISC/RT/ORTBIN100&lt;br /&gt;
 ./RISC/RT/boot&lt;br /&gt;
 ./RISC/RT/instctrl&lt;br /&gt;
 ./RISC/RT/instctrl/ORTDEV100.scp&lt;br /&gt;
 ./RISC/RT/instctrl/ORTDEV100.ctrl&lt;br /&gt;
 ./RISC/RT/instctrl/ORTBIN100.inv&lt;br /&gt;
 ./RISC/RT/instctrl/ORTBIN101.ctrl&lt;br /&gt;
 ./RISC/RT/instctrl/OSFMANRT100.scp&lt;br /&gt;
 ./RISC/RT/instctrl/OSF100.comp&lt;br /&gt;
 ./RISC/RT/instctrl/ORTBIN101.inv&lt;br /&gt;
 ./RISC/RT/instctrl/OSF.image&lt;br /&gt;
 ./RISC/RT/instctrl/ORT101.comp&lt;br /&gt;
 ./RISC/RT/instctrl/ORTBIN100.scp&lt;br /&gt;
 ./RISC/RT/instctrl/ORT100.comp&lt;br /&gt;
 ./RISC/RT/instctrl/ORTBIN100.ctrl&lt;br /&gt;
 ./RISC/RT/instctrl/OSFMANRT100.ctrl&lt;br /&gt;
 ./RISC/RT/instctrl/OSFMANRT100.inv&lt;br /&gt;
 ./RISC/RT/instctrl/ORTBIN101.scp&lt;br /&gt;
 ./RISC/RT/instctrl/ORTDEV100.inv&lt;br /&gt;
 ./RISC/RT/ORTBIN101&lt;br /&gt;
 ./RISC/RT/root&lt;br /&gt;
 ./RISC/BASE&lt;br /&gt;
 ./RISC/BASE/OSFCLINFS100&lt;br /&gt;
 ./RISC/BASE/OSFMITBIT100&lt;br /&gt;
 ./RISC/BASE/OSFSER100&lt;br /&gt;
 ./RISC/BASE/OSFSVID2100&lt;br /&gt;
 ./RISC/BASE/OSFLEARN100&lt;br /&gt;
 ./RISC/BASE/vmunix&lt;br /&gt;
 ./RISC/BASE/OSFSCCS100&lt;br /&gt;
 ./RISC/BASE/OSFSNMP100&lt;br /&gt;
 ./RISC/BASE/boot&lt;br /&gt;
 ./RISC/BASE/OSFDCMTEXT100&lt;br /&gt;
 ./RISC/BASE/OSFCDAPGMR100&lt;br /&gt;
 ./RISC/BASE/OSFBASE100&lt;br /&gt;
 ./RISC/BASE/OSFPRINT100&lt;br /&gt;
 ./RISC/BASE/OSFXCDADEV100&lt;br /&gt;
 ./RISC/BASE/OSFEMACSSRC100&lt;br /&gt;
 ./RISC/BASE/OSFX11100&lt;br /&gt;
 ./RISC/BASE/OSFACCT100&lt;br /&gt;
 ./RISC/BASE/OSFEXER100&lt;br /&gt;
 ./RISC/BASE/OSFMANWS100&lt;br /&gt;
 ./RISC/BASE/OSFMH100&lt;br /&gt;
 ./RISC/BASE/OSFPGMR100&lt;br /&gt;
 ./RISC/BASE/OSFNFS100&lt;br /&gt;
 ./RISC/BASE/OSFEMACS100&lt;br /&gt;
 ./RISC/BASE/OSFXDEV100&lt;br /&gt;
 ./RISC/BASE/OSFUUCP100&lt;br /&gt;
 ./RISC/BASE/instctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFINET100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXCDA100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDECW100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFACCT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMITBIT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEMACS100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSNMP100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFPRINT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFUUCP100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFACCT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEMACSSRC100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSER100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXCDADEV100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXDEV100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMH100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFPGMR100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFPGMR100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDCMTEXT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFUUCP100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDCMT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMITFONT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSCCS100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDCMTEXT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSER100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSCCS100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFLEARN100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBIN100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFNFS100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCLINFS100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANOS100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCOMM100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCDAPGMR100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEXER100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCDABASE100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMITFONT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEXER100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCLINFS100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXCDADEV100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANMIT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFINET100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCOMM100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXDEMOS100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMH100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXMIT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCLINET100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFPGMR100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANMIT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSNMP100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBASE100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANWS100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCLINFS100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFAFM100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBINCOM100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCDABASE100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANOP100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSVID2100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEMACS100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXCDA100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDCMTEXT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSF100.comp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCLINET100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANWS100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBINCOM100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXDEV100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANOP100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFINET100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBIN100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXMIT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCDAPGMR100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBASE100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXMIT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEMACSSRC100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFFONT15100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSF.image&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBIN100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANOS100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFNFS100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFLEARN100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFX11100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFLEARN100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDCMT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFAFM100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXDEV100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANOP100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXCDADEV100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANWS100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFFONT15100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFAFM100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDECW100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSVID2100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXMAIL100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSVID2100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFUUCP100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCDABASE100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEMACSSRC100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFFONT15100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFPRINT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFX11100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCDAPGMR100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXMAIL100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFNFS100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXCDA100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSCCS100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXDEMOS100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCLINET100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMH100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDECW100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBASE100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFBINCOM100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFX11100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSER100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXMAIL100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANMIT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFFONT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFXDEMOS100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFDCMT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFFONT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFSNMP100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFACCT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMITBIT100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEXER100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMITBIT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFCOMM100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFEMACS100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFFONT100.inv&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFPRINT100.ctrl&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMANOS100.scp&lt;br /&gt;
 ./RISC/BASE/instctrl/OSFMITFONT100.inv&lt;br /&gt;
 ./RISC/BASE/OSFDCMT100&lt;br /&gt;
 ./RISC/BASE/OSFBIN100&lt;br /&gt;
 ./RISC/BASE/OSFMANOS100&lt;br /&gt;
 ./RISC/BASE/OSFMANMIT100&lt;br /&gt;
 ./RISC/BASE/OSFMANOP100&lt;br /&gt;
 ./RISC/BASE/OSFCOMM100&lt;br /&gt;
 ./RISC/BASE/OSFAFM100&lt;br /&gt;
 ./RISC/BASE/OSFXDEMOS100&lt;br /&gt;
 ./RISC/BASE/OSFXCDA100&lt;br /&gt;
 ./RISC/BASE/OSFCDABASE100&lt;br /&gt;
 ./RISC/BASE/OSFBINCOM100&lt;br /&gt;
 ./RISC/BASE/root&lt;br /&gt;
 ./RISC/BASE/OSFFONT15100&lt;br /&gt;
 ./RISC/BASE/OSFFONT100&lt;br /&gt;
 ./RISC/BASE/OSFDECW100&lt;br /&gt;
 ./RISC/BASE/OSFMITFONT100&lt;br /&gt;
 ./RISC/BASE/OSFINET100&lt;br /&gt;
 ./RISC/BASE/OSFXMIT100&lt;br /&gt;
 ./RISC/BASE/OSFCLINET100&lt;br /&gt;
 ./RISC/BASE/OSFXMAIL100&lt;br /&gt;
 ./RISC/MPK&lt;br /&gt;
 ./RISC/MPK/ROOT&lt;br /&gt;
 ./RISC/MPK/OSFBASE101&lt;br /&gt;
 ./RISC/MPK/vmunix&lt;br /&gt;
 ./RISC/MPK/OSFMANOS101&lt;br /&gt;
 ./RISC/MPK/boot&lt;br /&gt;
 ./RISC/MPK/OSFX11101&lt;br /&gt;
 ./RISC/MPK/OSFMANWS101&lt;br /&gt;
 ./RISC/MPK/OSFMANOP101&lt;br /&gt;
 ./RISC/MPK/OSFBIN101&lt;br /&gt;
 ./RISC/MPK/OSFXMAIL101&lt;br /&gt;
 ./RISC/MPK/instctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANOS101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFXDEV101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANOP101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFPGMR101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFPGMR101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFDECW101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFXDEV101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFDECW101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFSER101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBASE101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFEMACSSRC101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANWS101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBINCOM101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFSER101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBINCOM101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANOS101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFUUCP101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFX11101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFXMAIL101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANOS101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFX11101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFEMACSSRC101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBIN101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFSER101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFX11101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSF101.comp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSF.image&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFDECW101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFUUCP101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANWS101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFUUCP101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBIN101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBASE101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFEMACSSRC101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFPGMR101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFXDEV101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFXMAIL101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBASE101.ctrl&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBIN101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANWS101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFXMAIL101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANOP101.scp&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFMANOP101.inv&lt;br /&gt;
 ./RISC/MPK/instctrl/OSFBINCOM101.inv&lt;br /&gt;
 ./RISC/MPK/OSFXDEV101&lt;br /&gt;
 ./RISC/MPK/OSFDECW101&lt;br /&gt;
 ./RISC/MPK/OSFPGMR101&lt;br /&gt;
 ./RISC/MPK/BOOT&lt;br /&gt;
 ./RISC/MPK/OSFEMACSSRC101&lt;br /&gt;
 ./RISC/MPK/root&lt;br /&gt;
 ./RISC/MPK/OSFUUCP101&lt;br /&gt;
 ./RISC/MPK/VMUNIX&lt;br /&gt;
 ./RISC/MPK/OSFBINCOM101&lt;br /&gt;
 ./RISC/MPK/OSFSER101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a suitable installation directory, but you will likely have no means to boot it on a real DECstation.&lt;br /&gt;
So, we will call &amp;quot;ris&amp;quot; to the rescue. ULTRIX provides a great way to setup a remote installation server using &amp;quot;ris - Remote installation service&amp;quot;. 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:&lt;br /&gt;
&lt;br /&gt;
 root@io:~# ris&lt;br /&gt;
 REMOTE INSTALLATION SERVICE (RIS) MENU&lt;br /&gt;
 a -  Add Client &lt;br /&gt;
 r -  Remove Client &lt;br /&gt;
 s -  Show Products in Remote Installation Environments&lt;br /&gt;
 m -  Modify Client&lt;br /&gt;
 i -  Install Software &lt;br /&gt;
 d -  Delete Software&lt;br /&gt;
 e -  Exit       &lt;br /&gt;
&lt;br /&gt;
choose &amp;quot;i&amp;quot; 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.&lt;br /&gt;
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 &amp;quot;RT&amp;quot; in my opinion.&lt;br /&gt;
You can choose if you want to extract and copy the filesets to the server&#039;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.&lt;br /&gt;
Then, call &amp;quot;ris&amp;quot; again to choose &amp;quot;a&amp;quot; in the menu to add a client. Give you client&#039;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.&lt;br /&gt;
Make sure your client is added to the servers /etc/hosts file.&lt;br /&gt;
&lt;br /&gt;
/etc/hosts should be beautiful like this:&lt;br /&gt;
&lt;br /&gt;
 192.168.2.123   ds3100  ds3100.domain.tld&lt;br /&gt;
&lt;br /&gt;
but NOT like this:&lt;br /&gt;
&lt;br /&gt;
 192.168.2.123    ds3100.domain.tld  ds3100&lt;br /&gt;
&lt;br /&gt;
If there are any errors during setup, you might get the following error during the installation of the client:&lt;br /&gt;
&lt;br /&gt;
 Cannot find rzux1 in risdb file.  Check the sytem manager of                    &lt;br /&gt;
 your host server.&lt;br /&gt;
&lt;br /&gt;
Check to make sure:&lt;br /&gt;
the client is in the /etc/hosts of the server&lt;br /&gt;
the r services have to be enabled in /etc/inetd.conf on the server&lt;br /&gt;
/usr/adm/ris/.rhosts should include the client&lt;br /&gt;
/usr/adm/ris/clients/risdb should include the client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can now boot the client from the server. For a DECstation 3100, the proper command is:&lt;br /&gt;
&lt;br /&gt;
 boot -f mop()&lt;br /&gt;
&lt;br /&gt;
Other DECstations will require other commands.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
--------------------------&lt;br /&gt;
&lt;br /&gt;
allow root logins from terminal other than the system console:&lt;br /&gt;
&lt;br /&gt;
 # /etc/ttys&lt;br /&gt;
 # 		 &amp;quot;@(#)ttys	1.0	(OSF/1)	05/11/90&amp;quot;&lt;br /&gt;
 #&lt;br /&gt;
 # NOTE: This file is largely obsolete, its function having been taken&lt;br /&gt;
 # over by /etc/inittab.  Its only remaining purpose is to mark which&lt;br /&gt;
 # tty lines are secure (i.e., allow root logins).  To disallow root&lt;br /&gt;
 # logins on a given line, remove the &amp;quot;secure&amp;quot; keyword.&lt;br /&gt;
 #&lt;br /&gt;
 # name	getty	type	status	comments&lt;br /&gt;
 #&lt;br /&gt;
 console	none	none 	secure	# console&lt;br /&gt;
 tty00	none	none	secure  # direct tty&lt;br /&gt;
 tty01	none	none	secure  # direct tty&lt;br /&gt;
 tty02	none	none	secure  # direct tty&lt;br /&gt;
 tty03	none	none	secure  # direct tty&lt;br /&gt;
 tty04	none	none	secure  # direct tty&lt;br /&gt;
 tty05	none	none	secure  # direct tty&lt;br /&gt;
 tty06	none	none	secure  # direct tty&lt;br /&gt;
 tty07	none	none	secure  # direct tty&lt;br /&gt;
 ttyd0   none	none    secure  # modem line&lt;br /&gt;
 ttyp0	none	network	secure&lt;br /&gt;
 ttyp1	none	network	secure&lt;br /&gt;
 ttyp2	none	network	secure&lt;br /&gt;
 ttyp3	none	network	secure&lt;br /&gt;
 ttyp4	none	network	secure&lt;br /&gt;
 ttyp5	none	network	secure&lt;br /&gt;
 ttyp6	none	network	secure&lt;br /&gt;
 ttyp7	none	network	secure&lt;br /&gt;
 ttyp8	none	network	secure&lt;br /&gt;
 ttyp9	none	network	secure&lt;br /&gt;
 ttypa	none	network	secure&lt;br /&gt;
 ttypb	none	network	secure&lt;br /&gt;
 ttypc	none	network	secure&lt;br /&gt;
 ttypd	none	network	secure&lt;br /&gt;
 ttype	none	network	secure&lt;br /&gt;
 ttypf	none	network	secure&lt;br /&gt;
 ttyq0	none	network	secure&lt;br /&gt;
 ttyq1	none	network	secure&lt;br /&gt;
 ttyq2	none	network	secure&lt;br /&gt;
 ttyq3	none	network	secure&lt;br /&gt;
 ttyq4	none	network	secure&lt;br /&gt;
 ttyq5	none	network	secure&lt;br /&gt;
 ttyq6	none	network	secure&lt;br /&gt;
 ttyq7	none	network	secure&lt;br /&gt;
 ttyq8	none	network	secure&lt;br /&gt;
 ttyq9	none	network	secure&lt;br /&gt;
 ttyqa	none	network	secure&lt;br /&gt;
 ttyqb	none	network	secure&lt;br /&gt;
 ttyqc	none	network	secure&lt;br /&gt;
 ttyqd	none	network	secure&lt;br /&gt;
 ttyqe	none	network	secure&lt;br /&gt;
 ttyqf	none	network	secure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
OSF/1 V1.0 will not accept any other HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building a new kernel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/conf&lt;br /&gt;
 /usr/sys/bin/config NAME &lt;br /&gt;
 then cd to the ../NAME directory and:&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 then copy the kernel to /&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable serial console:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some people say that OSF/1 does not support serial consoles on MIPS. I have personally seen that it just won&#039;t work with a DECstation 5000 some years ago, but never found a definitive answer.&lt;br /&gt;
However, it does work for the DECstation 3100 and OSF/1 V1.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure the hardware:&lt;br /&gt;
&lt;br /&gt;
pull the framebuffer RAM module.&lt;br /&gt;
&lt;br /&gt;
In the firmware (in theory):&lt;br /&gt;
The 3100 needs:&lt;br /&gt;
 setenv console 8&lt;br /&gt;
&lt;br /&gt;
other DECstations will need:&lt;br /&gt;
 setenv console &amp;quot;s&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
keep the mouse connected or install a mouse loopback connector.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;3..&amp;quot; in the selftest declaring &amp;quot;FAILURE&amp;quot;. You need to push the reset button then to get to the &amp;quot;&amp;gt;&amp;gt;&amp;quot; prompt. Even as it uses the serial port as system console, this prevents it it from auto-booting. Just entering &amp;quot;auto&amp;quot; will make the system boot up fine from the &amp;quot;&amp;gt;&amp;gt;&amp;quot; prompt.&lt;br /&gt;
&lt;br /&gt;
Configure the OSF/1 software:&lt;br /&gt;
&lt;br /&gt;
X11 is started by an entry in /etc/inittab:&lt;br /&gt;
&lt;br /&gt;
 #cons:1234:respawn:/usr/sbin/getty console console pmconsole&lt;br /&gt;
 xdm:23:respawn:/sbin/sh /sbin/xdm.init respawn &amp;gt; /dev/console 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
to disable X11 and enable serial login change to:&lt;br /&gt;
&lt;br /&gt;
 cons:1234:respawn:/usr/sbin/getty console console pmconsole&lt;br /&gt;
 #xdm:23:respawn:/sbin/sh /sbin/xdm.init respawn &amp;gt; /dev/console 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
This will essentially keep xdm from starting and enable a login: prompt on the console, either graphical or serial.&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
.cshrc:&lt;br /&gt;
&lt;br /&gt;
 setenv PATH /usr/local/bin:/usr/ccs/bin:/sbin:/usr/sbin:/usr/bin:/usr/bin/X11&lt;br /&gt;
&lt;br /&gt;
 if ($term == xterm-256color) then&lt;br /&gt;
 setenv TERM vt100&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
 if ($term == pmconsole) then&lt;br /&gt;
 setenv TERM vt100&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
.bashrc:&lt;br /&gt;
 # set a fancy prompt&lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
.profile:&lt;br /&gt;
&lt;br /&gt;
 PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/bin/X11&lt;br /&gt;
 if [ $TERM = &amp;quot;xterm-256color&amp;quot; ]&lt;br /&gt;
 then TERM=vt100; export TERM&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 PS1=&#039;\u@\h:\w\$ &#039;&lt;br /&gt;
 export PS1&lt;br /&gt;
 &lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/local/include -O&amp;quot;&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/usr/local/lib&amp;quot;&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/local/include&amp;quot;&lt;br /&gt;
 export CFLAGS LDFLAGS CPPFLAGS&lt;br /&gt;
 &lt;br /&gt;
 EDITOR=vim&lt;br /&gt;
 export EDITOR&lt;br /&gt;
 &lt;br /&gt;
 LANG=C&lt;br /&gt;
 LC_CTYPE=de_DE.88591&lt;br /&gt;
 export LANG LC_CTYPE&lt;br /&gt;
 &lt;br /&gt;
 stty cs8 -istrip&lt;br /&gt;
&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disklabel a second disk:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
write new disklabel:&lt;br /&gt;
 disklabel -w /dev/rz1c rz25&lt;br /&gt;
&lt;br /&gt;
edit a disklabel:&lt;br /&gt;
 disklabel -e /dev/rz1c&lt;br /&gt;
&lt;br /&gt;
read the current disklabel:&lt;br /&gt;
 disklabel -r /dev/rz1c&lt;br /&gt;
 # /dev/rz1c:&lt;br /&gt;
 type: SCSI&lt;br /&gt;
 disk: rz25&lt;br /&gt;
 label: &lt;br /&gt;
 flags:&lt;br /&gt;
 bytes/sector: 512&lt;br /&gt;
 sectors/track: 62&lt;br /&gt;
 tracks/cylinder: 9&lt;br /&gt;
 sectors/cylinder: 558&lt;br /&gt;
 cylinders: 1492&lt;br /&gt;
 rpm: 3600&lt;br /&gt;
 interleave: 1&lt;br /&gt;
 trackskew: 0&lt;br /&gt;
 cylinderskew: 0&lt;br /&gt;
 headswitch: 0		# milliseconds&lt;br /&gt;
 track-to-track seek: 0	# milliseconds&lt;br /&gt;
 drivedata: 0 &lt;br /&gt;
 7 partitions:&lt;br /&gt;
 #        size   offset    fstype   [fsize bsize   cpg]&lt;br /&gt;
 a:     1024        0    unused     1024  8192       	# (Cyl.    0 - 1*)&lt;br /&gt;
 b:   131072     1024      swap                    	# (Cyl.    1*- 236*)&lt;br /&gt;
 c:   832527        0    4.2BSD     1024  8192    16 	# (Cyl.    0 - 1491*)&lt;br /&gt;
 d:   700431   132096    4.2BSD     1024  8192    16 	# (Cyl.  236*- 1491*)&lt;br /&gt;
 e:   222896   386736    unused     1024  8192       	# (Cyl.  693*- 1092*)&lt;br /&gt;
 f:   222895   609632    unused     1024  8192       	# (Cyl. 1092*- 1491*)&lt;br /&gt;
 g:   668687   163840    unused     1024  8192       	# (Cyl.  293*- 1491*)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------&lt;br /&gt;
edit fstab:&lt;br /&gt;
&lt;br /&gt;
 /dev/rz0a	/	ufs rw 1 1&lt;br /&gt;
 /dev/rz0g	/usr	ufs rw 1 2&lt;br /&gt;
 /dev/rz0b	swap1	ufs sw 0 2&lt;br /&gt;
 /dev/rz1b	swap2	ufs sw 0 2&lt;br /&gt;
 /dev/rz1d	/usr/local ufs rw 1 2&lt;br /&gt;
&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Building GNU software:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OSF/1 V1.0 ships with the MIPS C-Compiler 2.20. Thus, we are not completely lost.&lt;br /&gt;
&lt;br /&gt;
if config.guess can&#039;t detect the OS, give &amp;quot;mips-dec-osf1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m4-1.4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.75&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;flex-2.5.4a&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.7.2.3:&#039;&#039;&#039;&lt;br /&gt;
 ./configure --enable-languages=c --disable-nls mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
Note: I found out that c++ and f77 do not work correctly.&lt;br /&gt;
shared libraries on OSF/1 don&#039;t work! Assembler errors like &amp;quot;undefined assembler operation: .gpword&amp;quot; are likely due to the use of &amp;quot;-fPIC&amp;quot;, which does not work correctly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sed-3.0.2:&#039;&#039;&#039;&lt;br /&gt;
will not build correctly with the native cc. Use gcc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;grep-2.3:&#039;&#039;&#039;&lt;br /&gt;
 gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../intl -DLOCALEDIR=\&amp;quot;/usr/local/share/locale\&amp;quot;    -g -O2 -c btowc.c&lt;br /&gt;
 btowc.c:41: parse error before `btowc&#039;&lt;br /&gt;
 btowc.c: In function `btowc&#039;:&lt;br /&gt;
 btowc.c:44: `WEOF&#039; undeclared (first use this function)&lt;br /&gt;
 btowc.c:44: (Each undeclared identifier is reported only once&lt;br /&gt;
 btowc.c:44: for each function it appears in.)&lt;br /&gt;
 btowc.c:44: `wint_t&#039; undeclared (first use this function)&lt;br /&gt;
 btowc.c:47: parse error before `c&#039;&lt;br /&gt;
 make[2]: *** [btowc.o] Error 1&lt;br /&gt;
 make[2]: Leaving directory `/usr/local/compile/grep-2.3/src&#039;&lt;br /&gt;
 make[1]: *** [all-recursive] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/grep-2.3&#039;&lt;br /&gt;
 make: *** [all-recursive-am] Error 2&lt;br /&gt;
&lt;br /&gt;
There is an ifdef broken here. fix btowc.c by deleting the ifdef around the typdef unsigned int wint_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;texinfo-4.8:&#039;&#039;&#039; FAIL&lt;br /&gt;
&lt;br /&gt;
 mips-dec-osf1-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../intl    -g -O2 -c substring.c&lt;br /&gt;
 In file included from substring.c:20:&lt;br /&gt;
 system.h:268: conflicting types for `getpwnam&#039;&lt;br /&gt;
 /usr/include/pwd.h:75: previous declaration of `getpwnam&#039;&lt;br /&gt;
 make[2]: *** [substring.o] Error 1&lt;br /&gt;
 make[2]: Leaving directory `/usr/local/compile/texinfo-4.8/lib&#039;&lt;br /&gt;
 make[1]: *** [all-recursive] Error 1&lt;br /&gt;
 make[1]: Leaving directory `/usr/local/compile/texinfo-4.8&#039;&lt;br /&gt;
 make: *** [all] Error 2&lt;br /&gt;
&lt;br /&gt;
uncomment in system.h:&lt;br /&gt;
 struct passwd *getpwnam (const char *name);&lt;br /&gt;
&lt;br /&gt;
still FAILS&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk-3.0.6:&#039;&#039;&#039;&lt;br /&gt;
 copy install-sh to /usr/local/bin/install&lt;br /&gt;
&lt;br /&gt;
 gcc -c -DGAWK -I. -I.  -DHAVE_CONFIG_H -g -O2 array.c&lt;br /&gt;
 In file included from array.c:40:&lt;br /&gt;
 awk.h:872: conflicting types for `strncasecmp&#039;&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-osf1/2.7.2.3/include/string.h:164: previous declaration of `strncasecmp&#039;&lt;br /&gt;
&lt;br /&gt;
 uncomment in awk.h:&lt;br /&gt;
 /* extern int strncasecmp P((const char *s1, const char *s2, register size_t n)); */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;binutils-2.12.2:&#039;&#039;&#039;&lt;br /&gt;
 --disable-nls mips-dec-osf1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note: binutils do not work correctly with OSF/1 on MIPS. Do not use.&#039;&#039;&#039;&lt;br /&gt;
one concession to convenience is GNU nm, because &amp;quot;nm -o&amp;quot; is just great. I have copied this to &amp;quot;/usr/local/bin/nm.gnu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bison-1.28:&#039;&#039;&#039;&lt;br /&gt;
 --disable-nls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tar-1.11.8:&#039;&#039;&#039;&lt;br /&gt;
 --disable-nls&lt;br /&gt;
 make install fails. Copy by hand.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m4-1.4.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.03&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tar-1.11.8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.77&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libiconv-1.9.2:&#039;&#039;&#039;&lt;br /&gt;
 --disable-nls mips-dec-osf1&lt;br /&gt;
 do not build shared libraries. libiconv wants to build a shared lib for osf anyway.&lt;br /&gt;
 Edit Makefile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ncurses-5.9:&#039;&#039;&#039;&lt;br /&gt;
 ./configure --without-cxx --without-cxx-binding --without-ada mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-4.6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bash-2.05b:&#039;&#039;&#039;&lt;br /&gt;
 fc.def:&lt;br /&gt;
 uncomment unlink on line 88:&lt;br /&gt;
 /* extern int unlink __P((const char *)); */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fileutils-4.1:&#039;&#039;&#039;&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;byacc-20180609:&#039;&#039;&#039;&lt;br /&gt;
gcc-2.7 can&#039;t understand the __attribute__((noreturn))&lt;br /&gt;
delete that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tin-2.4.4snap4:&#039;&#039;&#039;&lt;br /&gt;
 ./configure --enable-nntp-only --with-domain --disable-nls --with-nntp-default --with-screen=ncurses --with-editor=/usr/local/bin/vim&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vim-5.8&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;psksh-5.2.14&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;readline-6.1:&#039;&#039;&#039;&lt;br /&gt;
 build only static libraries&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zsh-4.3.10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tar-1.15.1:&#039;&#039;&#039;&lt;br /&gt;
 gcc -DHAVE_CONFIG_H -DLIBDIR=\&amp;quot;/usr/local/lib\&amp;quot; -I. -I. -I..     -g -O2 -c argp-fmtstream.c&lt;br /&gt;
 In file included from argp-namefrob.h:80,&lt;br /&gt;
                 from argp-fmtstream.c:34:&lt;br /&gt;
 strcase.h:39: conflicting types for `strncasecmp&#039;&lt;br /&gt;
 /usr/local/lib/gcc-lib/mips-dec-osf/2.7.2.3/include/string.h:164: previous declaration of `strncasecmp&#039;&lt;br /&gt;
 make[3]: *** [argp-fmtstream.o] Error 1&lt;br /&gt;
&lt;br /&gt;
uncomment strncasecmp in lib/strcase.h.&lt;br /&gt;
&lt;br /&gt;
add to lib/argp-fmtstream.c&lt;br /&gt;
 include &amp;lt;snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;slang-1.4.9&#039;&#039;&#039;&lt;br /&gt;
 ./configure --disable-shared mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;unzip-5.52&#039;&#039;&#039;&lt;br /&gt;
edit the unix/Makefile and change cc to gcc. Then use&lt;br /&gt;
 make -f unix/Makefile generic&lt;br /&gt;
 make -f unix/Makefile install&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zip-2.32&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;autoconf-2.13&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;make-3.79.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libiconv-1.11&#039;&#039;&#039;&lt;br /&gt;
 ./configure --disable-shared --disable-nls --enable-static mips-dec-osf1 &amp;amp;&amp;amp; make &lt;br /&gt;
needs a lot of memory. Might fail with this error: &amp;quot;virtual memory exhausted&amp;quot;. In this case, get more memory or more swap space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bison-1.875:&#039;&#039;&#039;&lt;br /&gt;
builds, but fails most of the tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pcre-8.45:&#039;&#039;&#039;&lt;br /&gt;
add to pcregrep.c:&lt;br /&gt;
 #include &amp;lt;snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gcc-2.8.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note: DO NOT USE --without-gnu-as! For some reason the configure will then assume&lt;br /&gt;
that you WANT to use GNU as and the new gcc will create AS code that the MIPS&lt;br /&gt;
assemble can&#039;t process.&lt;br /&gt;
&lt;br /&gt;
fix gcc configuration with CPP definitions:&lt;br /&gt;
gcc-2.8.1/config/mips/mips.h:&lt;br /&gt;
add the missing definition &amp;quot;-D__LANGUAGE_C__&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ../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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;X11R6.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I ended up building X11R6.1, because the system X11 is really old.&lt;br /&gt;
Note: when you go for X11R6, you may see problems when you try to use the old OSF/1 Motif libraries.&lt;br /&gt;
&lt;br /&gt;
edit xc/config/cf/site.def: and add:&lt;br /&gt;
&lt;br /&gt;
 #define ForceNormalLib YES&lt;br /&gt;
 #define HasSharedLibraries NO&lt;br /&gt;
&lt;br /&gt;
this will prevent building shared libraries.&lt;br /&gt;
created static libraries will not work as is. create a table of contents before linking&lt;br /&gt;
any programs with &amp;quot;ar ts&amp;quot;. after that, go to xc/programs and do a &amp;quot;make clean &amp;amp;&amp;amp; make&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
xc/programs/xterm needs to be linked with -lutil.&lt;br /&gt;
It will fail with:&lt;br /&gt;
 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  &lt;br /&gt;
 ld:&lt;br /&gt;
 Using archive ../../usrlib/libXaw.a for -lXaw&lt;br /&gt;
 Using archive ../../usrlib/libXmu.a for -lXmu&lt;br /&gt;
 Using archive ../../usrlib/libXt.a for -lXt&lt;br /&gt;
 Using archive ../../usrlib/libSM.a for -lSM&lt;br /&gt;
 Using archive ../../usrlib/libICE.a for -lICE&lt;br /&gt;
 Using archive ../../usrlib/libXext.a for -lXext&lt;br /&gt;
 Using archive ../../usrlib/libX11.a for -lX11&lt;br /&gt;
 Using archive /usr/ccs/lib/libtermcap.a for -ltermcap&lt;br /&gt;
 Unresolved:&lt;br /&gt;
 openpty&lt;br /&gt;
&lt;br /&gt;
but it will still link the binaries. Those binaries just create a segmentation fault.&lt;br /&gt;
The solution is to do the &amp;quot;ar ts&amp;quot; for all the new libraries.&lt;br /&gt;
&lt;br /&gt;
build Xaw3d as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building new X11 applications:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
for new software it can be better to use gcc.&lt;br /&gt;
change the config files in: /usr/X11R6.1/lib/X11/config&lt;br /&gt;
site.def and osf1.cf.&lt;br /&gt;
make sure it sets &amp;quot;#define HasGcc2 YES&amp;quot; and does not use the &amp;quot;-Xa&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
that way, &amp;quot;xmkmf -a&amp;quot; will work for new packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
rebuild all the things that use X11. Use these environment variables:&lt;br /&gt;
&lt;br /&gt;
 CFLAGS=&amp;quot;-I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11 -O&amp;quot;&lt;br /&gt;
 LDFLAGS=&amp;quot;-L/usr/local/lib -L/usr/X11R6.1/lib&amp;quot;&lt;br /&gt;
 CPPFLAGS=&amp;quot;-I/usr/local/include -I/usr/X11R6.1/include -I/usr/X11R6.1/include/X11&amp;quot;&lt;br /&gt;
 export CFLAGS LDFLAGS CPPFLAGS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xpm-3.4k:&#039;&#039;&#039;&lt;br /&gt;
just do:&lt;br /&gt;
 xmkmf -a &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
don&#039;t forget:&lt;br /&gt;
 ar ts ./lib/libXpm.a&lt;br /&gt;
 ln -s /usr/local/lib/X11/libXpm.a /usr/X11R6.1/lib/X11/&lt;br /&gt;
 ln -s /usr/local/lib/X11/libXpm.a /usr/X11R6.1/lib/X11/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;jpeg-6b&#039;&#039;&#039;&lt;br /&gt;
 ./configure --disable-shared --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1&lt;br /&gt;
don&#039;t forget to do&lt;br /&gt;
 make install&lt;br /&gt;
 make install-lib&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libpng-1.2.31:&#039;&#039;&#039;&lt;br /&gt;
 ./configure --disable-shared mips-dec-osf1 &lt;br /&gt;
&lt;br /&gt;
build only static libs&lt;br /&gt;
add top png.c:&lt;br /&gt;
 #include &amp;lt;snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;jasper-1.900.1:&#039;&#039;&#039;&lt;br /&gt;
 ./configure --with-x --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;libungif-4.1.4:&#039;&#039;&#039;&lt;br /&gt;
 ./configure --with-x --disable-shared --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tiff-3.8.2:&#039;&#039;&#039;&lt;br /&gt;
the libtool scruipt includes makes problems. Build libtool-2.2.8 first and&lt;br /&gt;
then copy /usr/local/bin/libtool to the tiff directory.&lt;br /&gt;
&lt;br /&gt;
tiff want to build some C++ code even without --enable-cxx that doesn&#039;t work.&lt;br /&gt;
you need to edit the makefile to prevent the cxx libraries from being built.&lt;br /&gt;
&lt;br /&gt;
 ./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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t1lib-5.1.2:&#039;&#039;&#039;&lt;br /&gt;
 ./configure --with-x --disable-shared --x-includes=/usr/X11R6.1/include --x-libraries=/usr/X11R6.1/lib mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;glib-1.2.10&#039;&#039;&#039;&lt;br /&gt;
--disable-nls --disable-shared --disable-threats&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gtk+-1.2.10&#039;&#039;&#039;&lt;br /&gt;
 --with-x --disable-nls --disable-shared mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tk8.3.5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xearth-1.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;nedit:&#039;&#039;&#039;&lt;br /&gt;
needs Motif.&lt;br /&gt;
&#039;&#039;&#039;Nedit 5&#039;&#039;&#039; apparently doesn&#039;t work with the Motif version that comes with this OSF/1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nedit-3.1.1:&#039;&#039;&#039;&lt;br /&gt;
X libraries need to be linked in the correct order:&lt;br /&gt;
&lt;br /&gt;
 # 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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;m4-1.4.7&#039;&#039;&#039;&lt;br /&gt;
 ./configure --disable-nls mips-dec-osf1 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
has a problem with wide chars.&lt;br /&gt;
solution: temporarily move wchar.h and wcstr.h out of the way and change it back later.&lt;br /&gt;
&lt;br /&gt;
strcase.h: uncomment&lt;br /&gt;
 /*&lt;br /&gt;
 extern int strncasecmp (const char *s1, const char *s2, size_t n);&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xntp3-5.93e-export:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
put in /sbin/rc3.d:&lt;br /&gt;
&lt;br /&gt;
 S99xntp:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;updating time with NTP&amp;quot;&lt;br /&gt;
 /usr/sbin/ntpdate -b ptbtime1.ptb.de ptbtime2.ptb.de &amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tin-2.6.3:&#039;&#039;&#039;&lt;br /&gt;
 ./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 &amp;amp;&amp;amp; make build&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk-3.1.8:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
config.h:&lt;br /&gt;
delete WCHAR&lt;br /&gt;
&lt;br /&gt;
awk.h:  Zeile 1206:&lt;br /&gt;
uncomment strncasecmp.&lt;br /&gt;
&lt;br /&gt;
replace.c:&lt;br /&gt;
uncomment mktime:&lt;br /&gt;
&lt;br /&gt;
 #ifndef HAVE_MKTIME&lt;br /&gt;
 /* mktime.c defines main() if DEBUG is set */&lt;br /&gt;
 #undef DEBUG&lt;br /&gt;
 /* #include &amp;quot;missing_d/mktime.c&amp;quot; */&lt;br /&gt;
 #endif /* HAVE_MKTIME */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gettext-0.14.6&#039;&#039;&#039;&lt;br /&gt;
 ./configure --with-libiconv-prefix=/usr/local mips-dec-osf1 &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
there is a problem installing in &amp;quot;gettext-tools/examples&amp;quot;. just delete&lt;br /&gt;
this subdir in the makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;openssl-0.9.8zg:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
configure with zlib for mips-ultrix-gcc&lt;br /&gt;
&lt;br /&gt;
crypto/bio/bss_bio.c:&lt;br /&gt;
 typedef int ssize_t;&lt;br /&gt;
&lt;br /&gt;
 make[2]: Entering directory `/usr/local/compile/openssl-0.9.8zg/apps&#039;&lt;br /&gt;
 ( :; LIBDEPS=&amp;quot;${LIBDEPS:--L.. -lssl  -L.. -lcrypto -lz}&amp;quot;; LDCMD=&amp;quot;${LDCMD:-gcc}&amp;quot;; LDFLAGS=&amp;quot;${LDFLAGS:--DZLIB -O3 -DL_ENDIAN}&amp;quot;;LIBPATH=`for x in $LIBDEPS; do if echo $x | grep &#039;^ *-L&#039; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then echo $x | sed -e &#039;s/^ *-L//&#039;; fi; done | uniq`; &lt;br /&gt;
 LIBPATH=`echo $LIBPATH | sed -e &#039;s/ /:/g&#039;`; 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} )&lt;br /&gt;
 collect2: ld returned 1 exit status&lt;br /&gt;
 /usr/lib/cmplrs/cc/ld:&lt;br /&gt;
 Undefined:&lt;br /&gt;
 ftime&lt;br /&gt;
 make[2]: *** [link_app.] Error 1&lt;br /&gt;
&lt;br /&gt;
ftime lives in libbsd.a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gdbm-1.8.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gperf-2.7.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ghostview-1.5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xproto-6.6.2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;renderext-0.9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;renderproto-0.9.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xrender-0.8.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xpacman&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;indent-1.10.0:&#039;&#039;&#039;&lt;br /&gt;
 ./configure mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;plotutils-2.1.6&#039;&#039;&#039;&lt;br /&gt;
 ./configure --with-x --disable-shared mips-dec-osf1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: OSF1]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2981</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2981"/>
		<updated>2023-04-12T15:11:24Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to prevent people having to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
if you have a SPARCstation IPC, you will need a SCSI patch, in order to install 4.0.3c:&lt;br /&gt;
&lt;br /&gt;
https://halfmanhalftaco.com/2017/08/26/SunOS-403c-on-IPC/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2980</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2980"/>
		<updated>2023-04-12T14:30:55Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to prevent people having to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This file has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) &amp;lt;machine/setjmp.h&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2979</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2979"/>
		<updated>2023-04-12T14:22:59Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to prevent people having to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This files has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) setjmp.h:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2978</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2978"/>
		<updated>2023-04-12T14:21:59Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
&lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to prevent people having to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected&lt;br /&gt;
        # eject&lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This files has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) setjmp.h:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2977</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2977"/>
		<updated>2023-04-12T14:21:03Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
&lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to prevent people having to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected &lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        # disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        # . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        # reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This files has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) setjmp.h:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2976</id>
		<title>SunOS 4.0.3c SPARC</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=SunOS_4.0.3c_SPARC&amp;diff=2976"/>
		<updated>2023-04-12T14:15:04Z</updated>

		<summary type="html">&lt;p&gt;Luna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Installing SunOS 4.0.3c on a SPARCstation 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SPARCstation 1 was released in 1989 and was the first of a long line of iconic pizza box style workstations. SunOS 4.0.3c was a special hardware support release for this new &amp;quot;sun4c&amp;quot; architecture. It was originally available on QIC tape and floppy disks. The floppy disk version has survived the test of time and disk images are now available from your abandonware repository of choice.&lt;br /&gt;
&lt;br /&gt;
The SS1 needs an Open Boot Prom (OBP) version 1.X. A version 2.X can&#039;t boot SunOS 4.0 anymore and require SunOS 4.1.1 or newer. If you have an IPC, you can &amp;quot;setenv version2? false&amp;quot; to enable a 1.X compatibility mode. Unfortunately, this feature is not available on the SS1.&lt;br /&gt;
&lt;br /&gt;
As far as the hardware goes, the SS1 comes with a 20MHz SPARCv7 CPU. I assume that you have loaded it with as much 4MB SIMMs as possible (up to 64MB). Base configuration in &#039;89 was 8MB, which was generally seen as &amp;quot;not enough&amp;quot;. In terms of graphics, 4.0.3c will likely support bwtwo, cgthree, and the original double width cgsix. The Field Engineer&#039;s Handbook says that you shouldn&#039;t run an SS1 without any disks and sbus cards, so I would recommend always having &amp;quot;something&amp;quot; in there, even if you don&#039;t intend to use it. This might be an issue if you for example use an empty machine with serial console and a SCSI-to-SD adapter. It originally came with internal 100MB 3.5&amp;quot; disks, which were seen as &amp;quot;not big enough&amp;quot;. Larger external disks were common as well.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sparcstation1.png|thumb|right|Sun SPARCstation 1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_1.gif|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sun_ad_ss1_2.jpg|thumb|right|Sun promo picture 1989]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fixing the NVRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
this machine uses an M48T02 NVRAM, so naturally for a 30-year-old machine the battery is most likely empty. You can still buy replacement NVRAMs (these days often of unknown quality if you end up with a part from a  Chinese eBay seller) or you can fix the NVRAM if you have the necessary hardware/soldering skills. After that, the NVRAM needs reprogramming:&lt;br /&gt;
&lt;br /&gt;
enter this series of commands at the &amp;quot;ok&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
press enter after these commands:&lt;br /&gt;
&lt;br /&gt;
 set-defaults&lt;br /&gt;
 setenv diag-switch? false&lt;br /&gt;
 f idprom@ 1 xor f mkp&lt;br /&gt;
&lt;br /&gt;
then at last enter this command. Press enter and it will do &amp;quot;nothing&amp;quot;. Then you need to confirm with &amp;quot;control-D&amp;quot;, &amp;quot;control-R&amp;quot;. If it DOESN&#039;T print a copyright message, it worked.&lt;br /&gt;
&lt;br /&gt;
 8 0 20 B2 E9 08 B2E908 mkpl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;disks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disks need to have a Sun disklabel. SunOS 4 relies on a format.dat and can technically only label disks it knows, because it doesn&#039;t have an auto-detect feature. Solaris however uses the same disklabel and its format utility can autodetect disk geometry and label every disk. I generally recommend booting something like Solaris 2.4 to 2.7 and use it to format and partition the disks. The SunOS 4 installation process can then just keep the existing disklabel.&lt;br /&gt;
&lt;br /&gt;
A full installation of SunOS 4.0.3c will use about 65MB + swap space. SunOS 4 uses the old BSD swap mechanism where it can only use as much memory as it has swap space. The old rule was to have twice as much swap space as the machine has RAM. These days, I would be generous with swap, because sometimes building software will need a huge amount of memory.&lt;br /&gt;
&lt;br /&gt;
SunOS releases &amp;lt; 4.1.1 (with a patch) can only use disks up to 1GB. To make my life easier, I decided to use a ZuluSCSI SCSI-to-SD-card adapter. I recommend creating some disk images of about 1000MB size and use these settings in your zuluscsi.ini:&lt;br /&gt;
&lt;br /&gt;
 [SCSI]&lt;br /&gt;
 Debug = 0&lt;br /&gt;
 SelectionDelay = 255&lt;br /&gt;
 PhyMode = 0&lt;br /&gt;
 Quirks = 0&lt;br /&gt;
 EnableUnitAttention = 0&lt;br /&gt;
 EnableSCSI2 = 1 # Enable faster speeds of SCSI2&lt;br /&gt;
 EnableSelLatch = 0&lt;br /&gt;
 MapLunsToIDs = 0&lt;br /&gt;
 MaxSyncSpeed = 10 # Set to 5 or 10 to enable synchronous SCSI mode&lt;br /&gt;
 &lt;br /&gt;
 [SCSI0]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
&lt;br /&gt;
 [SCSI3]&lt;br /&gt;
 Vendor = &amp;quot;QUANTUM&amp;quot;&lt;br /&gt;
 Product = &amp;quot;FIREBALL1000S&amp;quot;&lt;br /&gt;
 Version = &amp;quot;0700&amp;quot;&lt;br /&gt;
 Type = 0     # 0: Fixed&lt;br /&gt;
 SectorsPerTrack = 54&lt;br /&gt;
 HeadsPerCylinder = 15&lt;br /&gt;
 &lt;br /&gt;
 [SCSI6]&lt;br /&gt;
 Product = &amp;quot;Zulu CD-ROM&amp;quot;&lt;br /&gt;
 Type = 2&lt;br /&gt;
&lt;br /&gt;
Note that the adjustment of Sectors/Heads is necessary to be able to properly format the disk in SunOS. Disk images should be HD0.img, HD3.img, and so on. The cd-rom image should be CD6_512.iso. The will emulate a proper 512-byte/sector cd-rom. ID6 is the default SCSI ID for cd-roms on Suns.&lt;br /&gt;
&lt;br /&gt;
SPARCstations switch up SCSI ids. SCSI ID 3 becomes disk (sd0) and SCSI ID 0 becomes disk3 (sd3). The assumed story behind this is that originally the older Sun3 machines used to boot from SCSI ID 0. Since all disks were external, people wanted to reuse their disks with newer SPARCs. To make transition easier, Sun decided to switch the new default SCSI ID from 0 to 3. In order to prevent people having to learn new commands, they also changed all the SCSI designations. Whatever the actual truth is, it is still confusing to have ID3 show up as sd0. For the purpose of this installation, I assume that you partitioned sd0 with /, swap, and some /var. sd1 will have /usr. Create as many disks as you like, if you want more filesystems.&lt;br /&gt;
&lt;br /&gt;
 Filesystem            kbytes    used   avail capacity  Mounted on&lt;br /&gt;
 /dev/sd0a             251271    2979  223164     1%    /&lt;br /&gt;
 /dev/sd1g             980035   61254  820777     7%    /usr&lt;br /&gt;
 /dev/sd3a             980035  535317  346714    61%    /export&lt;br /&gt;
 /dev/sd0e             477188      54  429415     0%    /var&lt;br /&gt;
 /dev/sd2a             980035   46733  835298     5%    /usr/local&lt;br /&gt;
&lt;br /&gt;
Note that the SunOS 4.0.3c generic kernel will assume that SCSI ID 4 and ID5 are tape drives. To change that, you would need a custom kernel.&lt;br /&gt;
&lt;br /&gt;
boot from a cd-rom:&lt;br /&gt;
 boot sd(0,6,2)&lt;br /&gt;
&lt;br /&gt;
boot from a floppy disk:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing SunOS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I assume you want to install SunOS using the available floppy images and real floppy disks. Descriptions how to extract the installation files and setup netbooting have been provided elsewhere:&lt;br /&gt;
http://www.9600bps.org/solaris/sunos403c_diskless.html&lt;br /&gt;
https://kb.pocnet.net/wiki/SunOS_4_network_boot_howto&lt;br /&gt;
&lt;br /&gt;
So, get your floppy disks ready and be brave!&lt;br /&gt;
install_disk_A.img and install_disk_B.img are needed to boot the machine.&lt;br /&gt;
install_disk_C.img and install_disk_D.img are the miniroot.&lt;br /&gt;
sunos_disk_1.img to sunos_disk_19.img are the SunOS installation sets.&lt;br /&gt;
&lt;br /&gt;
SunOS has a special quirk: It won&#039;t properly work with the common terminal setting of 8N1. You need to set the terminal 7E1 or you will only get messed up output after booting the kernel.&lt;br /&gt;
&lt;br /&gt;
Insert the install_disk_A and boot the machine:&lt;br /&gt;
 boot fd()&lt;br /&gt;
&lt;br /&gt;
it will ask for install_disk_B and drop you into a shell. You could then &amp;quot;format&amp;quot; the disks, but I assume that you have already done to using Solaris. Sun actually provided a README to install SunOS here. I changed the example to properly match &amp;quot;sd0&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 1. use &amp;quot;format&amp;quot; to format and/or label the disk as needed &lt;br /&gt;
 2. &amp;quot;eject&amp;quot; the munixfs diskette (&amp;quot;B&amp;quot;) if not already ejected &lt;br /&gt;
 3. set the variable &amp;quot;disk&amp;quot; to sd0, sd1 or whatever is appropriate&lt;br /&gt;
        example# disk=sd0&lt;br /&gt;
 4. run the extract script by sourceing it&lt;br /&gt;
        example# . /extract&lt;br /&gt;
 5. follow its instructions&lt;br /&gt;
 6. when the shell prompts (with &amp;quot;#&amp;quot;), enter:&lt;br /&gt;
        reboot &amp;quot;sd(0,0,1) -sw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
this will extract the miniroot, copy the miniroot to the swap partition and reboot from that partition. If you mess up the SunOS installation later, the miniroot will still be there. You can restart the installation process simply be booting from the swap partition again (&amp;quot;boot sd(0,0,1) -sw&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Once you boot into the miniroot, SunOS MUNIX will again just drop you into a shell. Enter &amp;quot;suninstall&amp;quot; to start the installation process. The installation process is pretty much the same as with later SunOS releases. Make sure you keep the existing disklabels, choose fd0 as the installation media and feed the machine the other 19 floppy disks. The good thing is, should a disk be unreadable at this point, suninstall will just give you an error and offer you the possibility to try that disk again. That way you can just rewrite the image to a new floppy disk, but you won&#039;t have to restart the whole installation process.&lt;br /&gt;
Let it work and have some patience and it will most likely install just fine. Reboot from the disk (&amp;quot;boot disk&amp;quot;) and login to SunOS 4.0.3c.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Sunos403c.png|thumb|right|SunOS 4.0.3c]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;system configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
some important binaries are in /usr/5bin. Adjust .cshrc:&lt;br /&gt;
 set path=(/usr/local/bin /usr/ucb /bin /usr/bin /usr/5bin /etc /usr/etc)&lt;br /&gt;
&lt;br /&gt;
SunOS 4.0.3c won&#039;t accept a different $HOME directory for root other than /.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/etc/hosts:&lt;br /&gt;
enter your host names here. SunOS 4 can&#039;t use DNS by default. It was assumed that people would use NIS = YP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;build a custom kernel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/sys/sun4c/conf&lt;br /&gt;
 cp GENERIC MYCONFIG&lt;br /&gt;
 vi MYCONFIG  #  edit as you like. You will probably want more &amp;quot;maxusers&amp;quot;. Set &amp;quot;maxusers&amp;quot; to the amount of RAM in MB you have.&lt;br /&gt;
 config MYCONFIG&lt;br /&gt;
 cd ../MYCONFIG&lt;br /&gt;
 make depend &amp;amp;&amp;amp; make&lt;br /&gt;
 mv /vmunix /vmunix.generic&lt;br /&gt;
 mv vmunix /&lt;br /&gt;
&lt;br /&gt;
then reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;installing patches&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a number of patches were available for SunOS 4.0.3c. Some of them are seriously recommended, if you know what you are doing. I recommend creating a full backup of the disk or disk image before you start. You will need to rebuild the kernel in the end.&lt;br /&gt;
&lt;br /&gt;
there is a problem with /usr/include/machine/setjmp.h. It will be fixed incorrectly by gcc&#039;s fixincludes. This files has been slightly changed in SunOS 4.1.3, but it is basically the same. I recommend just replacing (remember to backup) setjmp.h:&lt;br /&gt;
&lt;br /&gt;
 /*	@(#)setjmp.h 1.5 89/09/08 SMI; from UCB 4.1 83/05/03	*/&lt;br /&gt;
 &lt;br /&gt;
 #ifndef	__sparc_setjmp_h&lt;br /&gt;
 #define	__sparc_setjmp_h&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).&lt;br /&gt;
  * All else recovered by under/over(flow) handling.&lt;br /&gt;
  */&lt;br /&gt;
 #define	_JBLEN	9&lt;br /&gt;
 &lt;br /&gt;
 typedef	int jmp_buf[_JBLEN];&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * One extra word for the &amp;quot;signal mask saved here&amp;quot; flag.&lt;br /&gt;
  */&lt;br /&gt;
 typedef	int sigjmp_buf[_JBLEN+1];&lt;br /&gt;
 &lt;br /&gt;
 int	setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	_setjmp(/* jmp_buf env */);&lt;br /&gt;
 int	sigsetjmp(/* sigjmp_buf env, int savemask */);&lt;br /&gt;
 void	longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	_longjmp(/* jmp_buf env, int val */);&lt;br /&gt;
 void	siglongjmp(/* sigjmp_buf env, int val */);&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * Routines that call setjmp have strange control flow graphs,&lt;br /&gt;
  * since a call to a routine that calls resume/longjmp will eventually&lt;br /&gt;
  * return at the setjmp site, not the original call site.  This&lt;br /&gt;
  * utterly wrecks control flow analysis.&lt;br /&gt;
  */&lt;br /&gt;
 #pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)&lt;br /&gt;
 &lt;br /&gt;
 #endif	/* !__sparc_setjmp_h */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;building software&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
general notes:&lt;br /&gt;
&lt;br /&gt;
config.guess can&#039;t autodetect the OS. Just give sparc-sun-sunos4.0.3.&lt;br /&gt;
SunOS cc can&#039;t use -O and -g together. GNU autoconf will then generally use -g. I recommend to use optimization instead. You will probably need to fix the Makefiles yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sed-3.0.2:&lt;br /&gt;
 sed/utils.h:&lt;br /&gt;
 needs:  #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bash-2.03:&lt;br /&gt;
 lib/readline/shell.c:&lt;br /&gt;
 #define NULL 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
flex-2.5.4&lt;br /&gt;
&lt;br /&gt;
m4-1.4&lt;br /&gt;
&lt;br /&gt;
make-3.75&lt;br /&gt;
&lt;br /&gt;
bison-1.28&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5&lt;br /&gt;
&lt;br /&gt;
gzip-1.2.4a&lt;br /&gt;
&lt;br /&gt;
pdksh-5.2.14&lt;br /&gt;
&lt;br /&gt;
tar-1.11.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
top-3.5.1:&lt;br /&gt;
&lt;br /&gt;
os.h:&lt;br /&gt;
 uncomment inclusion of stdlib.h, because we don&#039;t have that here.&lt;br /&gt;
&lt;br /&gt;
utils.c:&lt;br /&gt;
 #include &amp;lt;missing_snprintf.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gcc-2.4.5 and gcc-2.5.8 also work.&lt;br /&gt;
&lt;br /&gt;
gcc-2.6.3:&lt;br /&gt;
 configure --enable-languages=c,c++ sparc-sun-sunos4.0.3 &amp;amp;&amp;amp; make bootstrap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;to be continued&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: UNIX]]&lt;br /&gt;
[[Kategorie: SunOS]]&lt;/div&gt;</summary>
		<author><name>Luna</name></author>
	</entry>
</feed>