SunOS Install Media

von Peter Koch, März 1995 (übersetzt ins Deutsche März 2000)

1. Einleitung

Ein Computer braucht ein Betriebssystem, um seine Aufgaben zu erfüllen. Kauft man eine Maschine, egal ob neu oder gebraucht, dann findet man oft ein vorinstalliertes System, seltener kommt die Maschine ohne Betriebssystem. In den meisten Fällen ist es wünschenswert, die Maschine komplett neu zu installieren. Das hat zwei Gründe: Zum einen bekommt man eine Vorstellung davon, was auf der Maschine drauf ist und zum anderen sollte man nicht fremden Leuten eine Arbeit überlassen, die so wichtig ist wie das ganze Betriebssystem.

In den seltenen Fällen, wo die Platte kaputt geht (oder ein Anfänger /boot löscht) braucht man eine Möglichkeit, die Maschine wieder in Gang zu bekommen und die Sicherungsbänder zurückspielen zu könen. Das Installationsmedium erlaubt es einem, Boot-Probleme zu beseitigen oder eine defekte Platte neu zu formattieren.

WIr unterhalten uns hier heute über SunOS 4.1.1 für die Sun3-Serie von Computern der Firma Sun Microsystems Inc. Sun hat vor einiger Zeit die Betreuung der Sun3-Serie gänzlich fallengelassen, aber diese Maschinen sind meist noch in funktionsfähigem Zustand (dieser Artikel entstand auf einer Sun 3/60) und sind immer noch nützlich für Leute, die keine tausende von Mark für einen neuen PC oder eine SPARC ausgeben können.

Dieser Artikel behandelt die Installationsmedien für SunOS 4.1.1 im Allgemeinen. Er soll Leuten helfen, die Probleme haben oder ihr Betriebssystem neu installieren wollen.

2. Vorhandene Medien

SunOS 4.1.1 wurde auf Band oder auf CD verkauft. Leider haben viele Sun3-Besitzer weder ein Bandgerät noch ein CD-Laufwerk. Schlimmer noch: die alten Sun3 können nur von bestimmten Bandgeräten (QIC-24) booten und CD-Laufwerke funktionieren fast nie. Es gibt natürlich noch die Möglichkeit, vom Netz zu booten, aber dies setzt ja einen Boot-Server voraus und dies verschiebt das Problem nur auf diesen.

Der schlaue Systemadministrator hat auf einer zweiten Platte auch immer eine zweite Boot-Partition. Bei Schwierigkeiten hilf das schon viel. Es ist sogar möglich, eine Festplatte als Installationsmedium aufzubereiten. Sun hat das nie unterstützt, aber es funktioniert.

3. Vorhandene Geräte

Wie bereits erwähnt gibt es eine Reihe von Geräten, von denen eine Sun booten kann und die sich zur Installation eignen. Wir werden sie nun kurz beschreiben. Im weiteren Verlauf werde ich die kurzen Namen verwenden, wie sie im GENERIC Kernel konfiguriert sind. Wie die SCSI-Geräte, ihre SCSI-ID und der Boot-String zusammenhängen, soll die nun folgende Tabelle verdeutlichen:
Device  SCSI-id PROM boot command
sd0     0       sd(0,0,slice)
sd2     1       sd(0,8,slice)
sd4     2       sd(0,10,slice)
sd6     3       sd(0,18,slice)
st0     4       st(0,0,file)
st1     5       st(0,8,file)
sr0     6       sd(0,30,slice)

3.1 Bandlaufwerke

Viele Unix-Betreiber legen Wert darauf, ihre Daten nicht durch einen dummen Zufall zu verlieren und machen daher regelmässig eine Sicherung auf Band. Bänder sind zuverlässig und preiswert. Daher ist es nicht unwahrscheinlich, in der Nähe einer Sun3 ein Bandlaufwerk zu finden. Wir wollen uns auf die gängigen SCSI-Laufwerke beschränken, denn die anderen (xt und mt) sind schwer, selten und heute überholt. Andererseits kann der alte Server, an dem diese Bandlaufwerke hängen, eventuell davon booten und so sollte man diese Geräte nicht von vornherein übergehen.
Device          MB      Comment
Archive Phyton  60      QIC-11 und QIC-24
Wangtec         60      QIC-11 und QIC-24
Archive Phyton  150     QIC-150, kann QIC-11 und QIC-24 lesen
Wangtec         150     QIC-150, kann QIC-11 und QIC-24 lesen
Exabyte 8200    2000    8mm
Exabyte 8205    5000    8mm
Exabyte 8500    5000    8mm
Exabyte 8505    12000   8mm
DDS-1 DAT       2000    4mm
DDS-2 DAT       4000    4mm
DDS-3 DAT       12000   4mm
Jede Sun3 kann von einem QIC-24 Bandlaufwerk booten, wenn die Maschine einen SCSI-Controller hat. Manche Sun3 könen auch von einem QIC-150 booten. Dazu braucht man neuere PROMs.

3.2 CD-Laufwerke

Obwohl die wenigsten Sun3 von CD booten können, ist auf der SunOS 4.1.1-CD sowohl für sun3 als auch für sun3x eine Boot-Partition drauf. Wer also neuere PROMs hat und ein CD-Laufwerk, der mag es probieren:
        >b sd(0,30,4)   sun3 architecture
        >b sd(0,30,3)   sun3x architecture

3.3 Festplatten

Jede Sun3 mit SCSI-Controller kann von Platte booten. Bei älteren PROM Revisionen gehen aber nicht alle SCSI-IDs. Manche VME-Bus-Maschinen haben einen der alten Sun2-SCSI-Controller drin, welcher nur Platten mit abgeschalteter Parität bootet. Zudem verläuft das Kabel ganz im Inneren der Maschine. Um eine andere Platte anzustöpseln, muss man die Maschine aufschrauben. Das ist aber immer noch besser, als keinen SCSI-Controller zu haben.

3.4 Disketten

Die Sun 3/80 kann ein Diskettenlaufwerk haben. Aber davon kann sie nicht booten.

3.5 Ethernet

Da dieses Gerät eine andere Maschine voraussetzt, verschiebt sich das Problem nur auf diese. Daher werden wir dies hier nicht diskutieren. Dennoch ist es eine weitere Möglichkeit, eine Maschine zu booten oder zu installieren. Suninstall kann mit fernen Bandgeräten und CD-Laufwerken arbeiten und macht mal eine Platte Ärger, so ist das Ethernet eine gute Alternative, um die Maschine ans Laufen zu bekommen und die Platte zu reparieren.

4. PROM-Versionen

Die folgende Tabelle listet PROM-Versionen mit Kommentaren von mir. Die Liste ist keinesfalls vollständig; wenn Sie einen weiteren Eintrag beitragen möchten, so senden Sie mir einfach eine e-Mail.
Machine Version Comment

3/50    1.3     can only boot from sd0 and QIC-24
3/50    2.7     can boot from any disk and QIC-150

3/60    1.6     can boot from any disk and QIC-24
3/60    2.8     can boot from any disk and QIC-150
3/60    3.0     can boot from QIC-150 and cdrom

3/80    2.9.2   can't boot from QIC-150 but from cdrom
3/80    3.0.2   can't boot from QIC-150 but from cdrom
3/80    3.0.3   can boot from QIC-150 and from cdrom

3/260   2.0     can't boot from QIC-150 or cdrom
3/260   3.0     can boot from QIC-150 and cdrom

3/470   3.0     can boot from QIC-150 and cdrom

5. Die Boot-Sequenz

Es ist von grossem Vorteil, wenn man weiss, wie eine Sun vom Installationsmedium bootet. Dies eröffnet einem dann Möglichkeiten, weitere Kniffe anzuwenden. Ich werde die Boot-Sequenz nun Schritt für Schritt für die verschiedenen Medien beschreiben.

5.1 Munix

Dieser Schritt ist nicht notwendig, wenn man von Platte bootet. Genauergestagt, an dieser Stelle erlaubt einem das Boot-Medium eine noch jungfräuliche Festplatte in einen brauchbaren Zustand zu versetzen, sprich die Platte zu formattieren und zu partitionieren. Dazu muss der Kernel ganz ohne Platte auskommen!

Man legt Band oder CD in das entsprechende Laufwerk. Vom Band bootet man so:

        >b st()
Dies läd die erste Datei vom Band (tpboot) in den Speicher und führt sie aus. tpboot läd dann die dritte Datei (munix) in den Speicher und startet sie.

Mit der CD tippt man:

        >b sd(0,30,4)           (sun3)
        >b sd(0,30,3)           (sun3x)
Dies läd munix (und auch das munixfs) direkt.

Munix ist ein ganz spezieller Kernel (ein vmunix ohne v)! Er residiert nur im Speicher und sein Root-Dateisystem liegt in einer RAM-Disk. Vom Band wird das Root-Dateisystem als vierte Datei geladen, von CD ist es im Kernel integriert. Zwei spezielle Treiber sind hier involviert: ns (no swap) und rd (ramdisk). Benutzer einer X-Kernel-Distribution haben bestimmt schonmal davon gehört. Leider sind diese beiden nicht Teil der SunOS-Distribution, daher ist es nicht möglich einen munix-Kernel selber zu bauen.

5.2 Miniroot

Das Munix erlaubt einem drei Dinge: Die Festplatte zu formattieren, die Miniroot zu laden oder in eine Shell zu springen. Es ist schon lustig, sich hier mal umzutun. Man hat ein wirklich auf das allernötigste abgespeckte Unix vor sich. Aber weiter: Nachdem man die Platte nun hergerichtet hat, wird die Miniroot (Datei Nummer 5) auf die b-Partition der ausgewählten Platte kopiert. Dazu wird folgendes Kommando benutzt:
        #dd if=/dev/nrst8 of=/dev/rsd0b bs=100k conv=sync
Danach wird rebootet:
        >b sd(0,0,1) -sw
Der Miniroot-Kernel benutzt die b-Partition sowohl für sein Root-Dateisystem als auch zum swappen. Das kann nur funktionieren, wenn die b-Partition ein gutes Stück grösser als die Miniroot selber (7 MB) ist. Ich empfehle 4 mal die Grösse des Hauptspeichers und da die kleinste Sun3 4 MB hat, sind das mindestens 16 MB.

5.3 Suninstall

Ist die Miniroot am Laufen, ruft man "suninstall" auf. Man wählt verschiedene Dinge aus (z.B. welche Software-Pakete gewünscht werden und so) und dann kommt der grosse Unterschied zwischen CD und Band: Während die CD einfach nach /usr/etc/install/tar gemountet wird, muss jede Datei einzeln vom Band geholt, dabei mit uncompress unkomprimiert und mit tar ausgepackt werden.

6. Das Inhaltsverzeichnis

Sun benutzt XDR (eXtended Data Representation), um das Inhaltsverzeichnis Architekturunabhängig anzulegen. Auf der CD gibt es eine Datei namens "xdrtoc", auf jedem Band ist sie als Datei #2 zu finden. Eine xdrtoc-Datei enthält folgendes: Einen Kopf mit diversen Informationen (z.B. die Bandnummer) und fuür jede Datei auf dem Band einen Eintrag mit Länge, Beschreibung, Position und Typ. Der Typ kann sein: image, text tar und tarZ (mit compress komprimierte tar-Datei). Man kann eine xdrtoc-Datei mit /usr/etc/install/xdrtoc in menschlich lesbare Form bringen:
        #/usr/etc/install/xdrtoc < /tmp/xdrtoc
Die Erstellung von xdrtoc-Dateien ist hingegen schwierig. Ich habe "hexvi" und "beav" benutzt, um vorhandene Dateien zu modifizieren. Das hat prima funktioniert. Im Anhang C findet man eine Reihe nützlicher xdrtoc-Dateien.

7. Daten vom Installationsmedium extrahieren

Will man die Daten des Installationsmediums modifizieren, so muss man sie erst einmal herauskitzeln.

7.1 Installationsband

Man kann die Dateien mit Hilfe von "dd" vom Band ablesen. "dd" hat einen wirklich merkwürdigen Parameter-Stil; man sollte sich mal damit vertraut machen (RTFM). Es gibt auch ein nettes kleines Programm namens "copytape", welches einem die Handarbeit abnimmt.

7.2 Installations-CD

Bei der CD kann man einfach "tar" benutzen:
        #mount -r -t hsfs /dev/sr0 /cdrom
        #cd /cdrom
        #tar cf - . | ( cd /tmp ; tar xpf - )
Was einem dann noch fehlt, sind munix und munixfs. Leider sind die nur sehr schwer von der CD zu bekommen.

8. Alternativen

Wenn der Kernel mal läuft, dann funktionieren sehr viel mehr Bandgeräte und CD-Laufwerke. Das Boot-PROM ist wirklich strohdumm und schränkt einen stark ein. Schafft man es also, irgendwie anders die Miniroot zu laden, dann kann man solche Bandgeräte oder CD-Laufwerke, aber auch eine Festplatte (wie man die macht, erzähle ich später) benutzen. Auch habe ich erfolgreich "gzip" statt "compress" benutzt, um die Archivdateien zu packen. Dann passt SunOS 4.1.1 sogar auf ein einzelnes QIC-24-Band (60 MB).

8.1 Installationsplatte

Mit einem Trick kann man auch eine Festplatte als Installationsmedium benutzen. Man gaukelt dem "suninstall" einfach eine CD vor. Dazu genuegt eine 150 MB Platte, wenn man die Daten mit gzip komprimiert, langt sogar eine 80 MB Platte. Die Platte teilt man in eine grosse a-Partition und eine kleinere b-Partition (ca. 16 MB für die miniroot und als swap) ein. Dann kopiert man die Daten (nur jeweils eine einzige Architektur, Beispiel: sun3x) von der CD drauf:
        #newfs /dev/rsd2a
        #mount -r -t hsfs /dev/sr0 /cdrom
        #mount /dev/sd2a /mnt
        #cd /cdrom
        #tar cf - _copyright export/share \
                        export/exec/proto_root_sunos_4_1_1 \
                        export/exec/sun3_sunos_4_1_1 \
                        export/exec/kvm/sun3x_sunos_4_1_1 \
                | ( cd /mnt ; tar xpf -)
        #echo "sun3x_sunos_4_1_1" >/mnt/avail_arches
Wer nur die Bänder (oder diese Dateien) hat, kann in Anhang A nachsehen, wie diese zu arrangieren sind. Was noch fehlt, ist die Miniroot auf der b-Partition:
        #cd /mnt/export/exec/kvm/sun3x_sunos_4_1_1
        #dd if=miniroot.sun3x of=/dev/rsd2b bs=100k conv=sync
Nun kann man von dieser Platte die Miniroot booten:
        #halt
        >b sd(0,8,1) -sw
Sobald die Eingabeaufforderung kommt, mountet man die a-Partition:
        #/etc/mount -r /dev/sd2a /usr/etc/install/tar
Damit "suninstall" die a-Partition nicht versehentlich unmountet (und es versucht das mehrfach!), benennen wir einfach das "unmount"-Kommando um:
        #mv /etc/umount /etc/um
        #suninstall
Jetzt kann die Installation ablaufen. Danach sollte man noch das "umount"-Kommando wiederherstellen:
        #mv /etc/um /etc/umount
        #reboot

8.2 GNU zip verwenden

Auf den Bändern sind die Dateien komprimierte tar-Archive. Wenn man die Dateien statt mit "compress" mit "gzip" komprimiert, sinkt der Platzbedarf von 69 MB auf 50 MB. Damit passen alle Dateien auf ein einziges QIC-24 Band. Dazu ist es natürlich notwendig, in der Miniroot "uncompress" und "zcat" durch statisch gebundene Versionen von "gzip" zu ersetzen. Das funktioniert, da "gzip" die selben Parameter versteht wie "compress/uncompress":
        #cd /tmp
        #dd if=tape1.05 of=/dev/rsd2e bs=100k
        #ftp 
        >bin
        >cd /pub/gnu
        >get gzip-1.2.4.tar
        >bye
        #tar xvf gzip-1.2.4.tar
        #cd gzip-1.2.4
        #./configure
Jetzt muss im Makefile die Option "-static" bei den LDFLAGS eingefügt werden, sodass "gzip" statisch gebunden wird. Danach fährt man wiefolgt fort:
        #make
        #strip gzip
        #mount /dev/sd2e /mnt
        #rm /mnt/usr/ucb/uncompress /mnt/usr/ucb/zcat
        #cp gzip /mnt/usr/ucb/uncompress
        #ln /mnt/usr/ucb/uncompress /mnt/usr/ucb/zcat
        #umount /mnt
        #dd if=/dev/rsd2e of=tape1.05 bs=100k count=70
        #foreach i (`file *|grep compress|sed -e "s/:.*$//"`)
        #mv $i $i.Z
        #uncompress $i.Z
        #gzip $i
        #end
        #rm tape1.29 tape1.30 tape2.01 tape2.02
Nun kopiert man noch die "xdrtoc" Datei für QIC-150 nach tape1.02 und kann die Dateien auf das QIC-24 schreiben.

8.3 Unkomprimierte Dateien

Auf langsamen Maschinen wie der Sun 3/50 ist das Dekomprimieren das Nadelöhr bei der Installation. Hat man ein Bandgerät mit grosser Kapazität und Geschwindigkeit, wie z.B. ein DAT oder Exabyte, so kann man die Installation erheblich beschleunigen, indem man die Dateien unkomprimiert darauf speichert. Man braucht nur eine neue "xdrtoc" Datei.

9. Anpassen der Miniroot

Die Miniroot ist ein ganz normales Dateisystem und man kann es auch verändern, wenn man eine freie Partition (z.B. sd2e) hat:
        #dd if=/tmp/miniroot of=/dev/rsd2e bs=100k
        #mount /dev/sd2e /mnt
Hier kann man diverse Verbesserungen machen und danach die Miniroot zurück in die Datei schreiben:
        #umount /mnt
        #dd if=/dev/rsd2e of=/tmp/miniroot bs=100k count=70
Ich habe eine Reihe von Änderungen an der Miniroot vorgenommen: Ein paar neue Kommandos wie gzip oder tcsh, ein Kernel mit Treibern von Drittanbietern u.s.w.

Anhang A

Die folgende Liste zeigt, wie die Dateien auf der CD mit den Dateien auf den Bändern korrespondieren:
tape files      cdrom files
--------------------------------------------------------------------
-               ./avail_arches
tape1.08        ./export/exec/kvm/sun3_sunos_4_1_1/kvm
tape1.05        ./export/exec/kvm/sun3_sunos_4_1_1/miniroot_sun3
tape1.12        ./export/exec/kvm/sun3_sunos_4_1_1/sys
tape1.02        ./export/exec/kvm/sun3_sunos_4_1_1/xdrtoc
tape1.06        ./export/exec/proto_root_sunos_4_1_1
tape1.24        ./export/exec/sun3_sunos_4_1_1/debugging
tape1.16        ./export/exec/sun3_sunos_4_1_1/demo
tape2.03        ./export/exec/sun3_sunos_4_1_1/games
tape1.27        ./export/exec/sun3_sunos_4_1_1/graphics
tape1.09        ./export/exec/sun3_sunos_4_1_1/install
tape1.10        ./export/exec/sun3_sunos_4_1_1/networking
tape1.18        ./export/exec/sun3_sunos_4_1_1/openwindows_demo
tape1.19        ./export/exec/sun3_sunos_4_1_1/openwindows_fonts
tape2.06        ./export/exec/sun3_sunos_4_1_1/openwindows_programmers
tape1.17        ./export/exec/sun3_sunos_4_1_1/openwindows_users
tape1.23        ./export/exec/sun3_sunos_4_1_1/rfs
tape2.05        ./export/exec/sun3_sunos_4_1_1/security
tape1.26        ./export/exec/sun3_sunos_4_1_1/shlib_custom
tape1.14        ./export/exec/sun3_sunos_4_1_1/sunview_demo
tape1.25        ./export/exec/sun3_sunos_4_1_1/sunview_programmers
tape1.13        ./export/exec/sun3_sunos_4_1_1/sunview_users
tape1.11        ./export/exec/sun3_sunos_4_1_1/system_v
tape1.15        ./export/exec/sun3_sunos_4_1_1/text
tape1.22        ./export/exec/sun3_sunos_4_1_1/tli
tape1.20        ./export/exec/sun3_sunos_4_1_1/user_diag
tape1.07        ./export/exec/sun3_sunos_4_1_1/usr
tape1.28        ./export/exec/sun3_sunos_4_1_1/uucp
tape2.04        ./export/exec/sun3_sunos_4_1_1/versatec
tape1.21        ./export/share/sunos_4_1_1/manual
tape1.29+
tape2.10        ./_copyright
tape2.08        ./patches/sunos_4_1_1/patch_cplusplus_2_0
tape2.07        ./patches/sunos_4_1_1/patch_ipc
tape2.09        ./patches/sunos_4_1_1/patch_taac
-               ./patches/sunos_4_1_1/_readme

Anhang B

Die folgende Liste zeigt, wie die Dateien auf den Bändern mit den Dateien auf der CD korrespondieren:
tape files      cdrom files
---------------------------------------------------------------------
tape1.01        /usr/kvm/stand/tpboot.sun3
tape1.02        ./export/exec/kvm/sun3_sunos_4_1_1/xdrtoc
tape1.03        munix   (vmunix on partition d of CDROM)
tape1.04        munixfs (hm... it is somewhere on part. d too)
tape1.05        ./export/exec/kvm/sun3_sunos_4_1_1/miniroot_sun3
tape1.06        ./export/exec/proto_root_sunos_4_1_1
tape1.07        ./export/exec/sun3_sunos_4_1_1/usr
tape1.08        ./export/exec/kvm/sun3_sunos_4_1_1/kvm
tape1.09        ./export/exec/sun3_sunos_4_1_1/install
tape1.10        ./export/exec/sun3_sunos_4_1_1/networking
tape1.11        ./export/exec/sun3_sunos_4_1_1/system_v
tape1.12        ./export/exec/kvm/sun3_sunos_4_1_1/sys
tape1.13        ./export/exec/sun3_sunos_4_1_1/sunview_users
tape1.14        ./export/exec/sun3_sunos_4_1_1/sunview_demo
tape1.15        ./export/exec/sun3_sunos_4_1_1/text
tape1.16        ./export/exec/sun3_sunos_4_1_1/demo
tape1.17        ./export/exec/sun3_sunos_4_1_1/openwindows_users
tape1.18        ./export/exec/sun3_sunos_4_1_1/openwindows_demo
tape1.19        ./export/exec/sun3_sunos_4_1_1/openwindows_fonts
tape1.20        ./export/exec/sun3_sunos_4_1_1/user_diag
tape1.21        ./export/share/sunos_4_1_1/manual
tape1.22        ./export/exec/sun3_sunos_4_1_1/tli
tape1.23        ./export/exec/sun3_sunos_4_1_1/rfs
tape1.24        ./export/exec/sun3_sunos_4_1_1/debugging
tape1.25        ./export/exec/sun3_sunos_4_1_1/sunview_programmers
tape1.26        ./export/exec/sun3_sunos_4_1_1/shlib_custom
tape1.27        ./export/exec/sun3_sunos_4_1_1/graphics
tape1.28        ./export/exec/sun3_sunos_4_1_1/uucp
tape1.29        ./_copyright
tape2.01        xdrtoc
tape2.02        xdrtoc
tape2.03        ./export/exec/sun3_sunos_4_1_1/games
tape2.04        ./export/exec/sun3_sunos_4_1_1/versatec
tape2.05        ./export/exec/sun3_sunos_4_1_1/security
tape2.06        ./export/exec/sun3_sunos_4_1_1/openwindows_programmers
tape2.07        ./patches/sunos_4_1_1/patch_ipc
tape2.08        ./patches/sunos_4_1_1/patch_cplusplus_2_0
tape2.09        ./patches/sunos_4_1_1/patch_taac
tape2.10        ./_copyright

Anhang C

Hier kann man all die nützlichen "xdrtoc" Dateien herunterlanden, die im Artikel beschrieben sind. Für QIC-24 gibt es zwei Dateien, für jedes Band eine.