Installation von OpenSTEP 4.2 auf den ersten 8GB einer 20GB Platte



Wenn man einfach OS tun läßt, was es will, so erzeugt es eine 8GB Partition, die allerdings nicht lebensfähig ist: beim ersten fsck geht sie zu Bruch. Also beser 2*4GB Partitionen anlegen. Das ist aber garnicht so einfach.

Boot von floppy, aber beim ersten prompt -s für single user angeben.
Als Treiber den neuesten (V4.03) dual IDE Treiber von der beta-Diskette verwenden.

fdisk /dev/rhd0h -useAllSectors
eine NeXTSTEP Partition mit 8055 Länge erzeugen.
abspeichern.

Jetzt müssen wir das disk label schreiben. Eigentlich brauchen wir dafür einen disktab-entry, aber weil das CDROM nur read-only ist, kann ich die /etc/disktab nicht verändern. Also von Hand:
disk -f -u -p 8257032 /dev/rhd0h
label
write
bei der Frage nach der Länge 8257032 angeben.
Label schreiben, Programm beenden.

Jetzt formatieren wir die beiden Partitionen:
/usr/etc/newfs -n -v /dev/rhd0a
/usr/etc/newfs -n -v /dev/rhd0b

Nun noch den boot-block schreiben:
disk -B /usr/standalone/i386/boot /dev/rhd0a
disk -B0 /usr/standalone/i386/boot0 /dev/rhd0a
disk -B1 /usr/standalone/i386/boot1 /dev/rhd0a
wichtig ist es dabei, den boot block explizit anzugeben, weil der default boot block ja die Installationsroutine enthält.

Jetzt die neue Platte mounten:
mount -n /dev/hd0a /xxx
dabei mit -n den Eintrag in /etc/fstab unterdrücken, weil /etc ja immer noch read-only ist.

Jetzt per gnutar ein rudimentäres System aufspielen:
cd /xxx
gnutar -cvpslf - -C / . | gnutar -xvpslf -

Jetzt /etc/fstab anpassen:
cd /xxx/etc
cat > fstab
/dev/hd0a / 4.3 rw,noquota,noauto 0 1

Jetzt fehlendes Devices link nachziehen:
cd /xxx/private
ln -s Drivers/i386 Devices

Jetzt noch das file /xxx/private/Drivers/i386/System.config/Default.table erzeugen:
"Version" = "4.00";
"Boot Drivers" = "EISABus PCIBus PCIC PS2Keyboard Floppy ISASerialPort Intel824X0 EIDE";
"Active Drivers" = "PS2Mouse BusMouse SerialPointingDevice ParallelPort VGA";
"Kernel" = "mach_kernel";
"Kernel Flags" = "";
"Boot Graphics" = "No";
"Install Mode" = "No";
"APM" = "No";
"Language" = "English";
dazu grep, ed und cat verwenden (weil vi ja wegen des fehlenden /tmp immer noch nicht geht).

Damit er beim booten nicht glaubt, von einem CDROM zwecks installieren zu booten, muss ihm das directory NeXTCD geraubt werden:
cd /xxx
rm -rf NextCD

Jetzt:
reboot
und beim boot-prompt config=Default eingeben
Auf Installieren drücken: es wird aber nichts installiert.
reboot
wieder mit config=Default

Jetzt kommt er hoch und per Configure.app (auch expert modus) kann ich die richtigen devices einstellen:
"Kernel Flags" = "";
"Boot Graphics" = "No";
"Shutdown Graphics" = "No";
"Version" = "4.00";
"Active Drivers" = "SerialPointingDevice EtherExpress16 MatroxMGA2064WDisplayDriver PortServer SBSoundMidi ParallelPort";
"APM" = "No";
"Instance" = "0";
"Install Mode" = "No";
"Kernel" = "mach_kernel";
"Language" = "English";
"Boot Drivers" = "PS2Keyboard PCIBus EISABus Floppy ISASerialPort EIDE";
Außerdem auf einen anderen EIDE-Treiber umstellen. Alle anderen Einträge löschen!

Nach einem
reboot
(ohne config=Default) sollte nun alles OK sein.

Nun von CD alle user, dann developer und dann patch4 packages einspielen.

Jetzt Linux in den restlichen 12 GB installieren, LiLo zum booten verwenden (weil der NeXT-Loader nicht über 8GB kommt).



Restaurierung nach einem Plattencrash

Wenn nach einem Plattencrash alles verloren ist, dann zuerst nach obigem Schema wieder zwei 4GB Partitionen einrichten und OpenStep aufspielen (nur user, nicht developer, patch nicht erforderlich). Eventuell Treiber für Festplatte und Netzwerk nachziehen.

Nun das letzte full backup einspielen. ACHTUNG: das backup-file kann > 2GB sein! Dann passt es nicht als ganzes auf OpenStep, da hier die file size auf 2GB begrenzt ist. In diesem Fall das file mit dd aufteilen (auf dem System, das das backup-file hat):

dd if=last_full.taz of=part1.taz count=4194304
dd if=last_full.taz of=part2.taz skip=4194304
gtar tzf last_full.taz | grep -v "^data/"> last_full.lst

dann die beiden part-files und das listing-file auf die non-root partition übertragen.
In single user mode booten (weil wir ja die laufenden Systemfiles ändern werden).
Jetzt nur die root-Partition auspacken. Dazu verwenden wir ein file listing:

cat /data/part?.taz | gtar -xzpsvf - -T /data/last_full.lst

Warten, bis das tar normal aufhört (damit es alle file ownerships richtig setzt).
Ganz wichtig: jetzt die neuen boot Blöcke aufspielen:

disk -B /usr/standalone/i386/boot /dev/rhd0a
disk -B0 /usr/standalone/i386/boot0 /dev/rhd0a
disk -B1 /usr/standalone/i386/boot1 /dev/rhd0a

In den boot blocks werden wichtige Einstellungen für den Grafiktreiber vorgenommen. Ohne die neuen boot-blocks funktioniert z.B. der VESA-Treiber nicht!!

reboot in multi-user-mode.

Nun die files auf der 2. Partition (/data) löschen (damit es zu keinem Plattenüberlauf kommt) und per Netzwerk das last_full.taz on-the-fly holen und nur die 2. Partition auspacken:

cd /
ssh backupserver 'dd if=last_full.taz of=-' | gtar -xzpsvf - data

Das sollte es gewesen sein!