OpenSolaris 2009.06 und der Automated Installer

Endlich ist OpenSolaris mit der Ausgabe 2009.06 auch für die sparc Plattform verfügbar. Derzeit gibt es aber keine CD Installation für sparc und deshalb muss man auf den Automated Installer zurückgreifen. Sowohl für die sparc Version als auch für die x86 Version gibt es dafür iso Images (Links: x86.iso und sparc.iso). Von der x86 Version gibt es – wie gehabt zusätzlich Live CD images.
Der Automated Installer ist ein neuer Installationsmechanismus, der gar nichts mehr mit der klassischen Solaris Installation zu tun hat. Deshalb ist auch keine Jumpstart (und somit auch keine JET) Installation möglich. Trotzdem ist die Konfiguration erfreulich einfach und übersichtlich gehalten.
Der Installationsserver muss derzeit zwangsläufig auf einem OpenSolaris (egal welche Plattform) Server laufen, ein Client muss WAN-boot fähig sein. In meinem Fall werde ich wohl einige Maschinen mit einem frischen Firmware/PROM updaten müssen, da nicht alle Server WAN Boot unterstützten. Hat man ein Solaris am Laufen kriegt man mit folgendem Befehl raus, ob das OpenProm WAN Boot unterstützt:


# eeprom | grep network-boot-arguments
network-boot-arguments: data not available
#

Falls der beschriebene grep keine Ausgabe hat, muss das PROM upgedated werden (oder, im Schlimmsten Fall, wird kein WAN Boot unterstützt).
Auf dem OpenSolaris Installationsserver wird mit


# pfexec pkg install SUNWinstalladm-tools

der Automated Installer (samt zugehörigen Apache und anderen Tools) installiert. Anschließend legt man die „ai“ ISO Images irgendwo auf Platte. Möglicherweise kann es sinnvoll sein, sich ein eigenes ZFS anzulegen:


zfs create mypool/install/images

Außerdem wird ein Verzeichnis benötigt in dem die Konfigurationsdateien (pro Architektur oder Client) liegen werden:


zfs create mypool/install/config

Um eine default Installation (ohne eigene Benutzer, mit default root Passwort, Standard Paketinstallation) zu machen und ein Gefühl zu kriegen wie die Installation vor sich geht, genügen folgende Befehle


# installadm create-service -n 0906_x86
/mypool/install/images/osol-0906-ai-x86.iso
/mypool/install/config/osol-0906-ai-x86

bzw.


# installadm create-service -n 0906_sparc /mypool/install/images/osol-0906-ai-sparc.iso /mypool/install/config/osol-0906-ai-sparc

ersteres für x86, letzteres für sparc. Dieser Befehl richtet im config Verzeichnis alle notwendigen Dateien und configs ein und gibt den Sun-dchp Befehl aus, der auf dem dhcp Server (in meinem Fall ist der dhcp Server ein eigener Server) auszuführen ist. Allerdings wird im Makro nicht der DNS Server mit angegeben. Das sollte man aber tun. Hier ein Beispiel der Ausgabe


# installadm create-service -n 0906_sparc -s \
/mypool/install/images/osol-0906-ai-sparc.iso  \
/mypool/install/config/0906_sparc

Setting up the target image at /mypool/install/config/0906_sparc ...
Registering the service 0906_sparc._OSInstall._tcp.local

Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named dhcp_macro_0906_sparc with:
   Boot server IP (BootSrvA) : 131.x.x.x
   Boot file      (BootFile) : http://131.x.x.x:5555/cgi-bin/wanboot-cgi
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, dhcp_macro_0906_sparc:
   /usr/sbin/dhtadm -g -A -m dhcp_macro_0906_sparc -d \
:BootSrvA=131.x.x.x:BootFile=\"http://131.x.x.x:5555/cgi-bin/wanboot-cgi\":

Note: Be sure to assign client IP address(es) if needed
(e.g., if running Sun's DHCP server, run pntadm(1M)).
Service discovery fallback mechanism set up
Creating SPARC configuration file

Der Befehl auf dem dhcp Server würde nun lauten:

/usr/sbin/dhtadm -g -A -m dhcp_macro_0906_sparc -d :BootSrvA=131.x.x.x:BootFile=\“http://131.x.x.x:5555/cgi-bin/wanboot-cgi\“:DNSserv=131.x.x.x:

Wie gesagt, inklusive einem DNS Server EIntrag.
Auf einer Sparc Maschine ist nun alles was man tun muss im OpenProm vom Netz zu booten:


{0} ok boot net:dhcp
Rebooting with command: boot net:dhcp                                 
Boot device: /pci@1f,700000/network@2:dhcp  File and args: 
100 Mbps FDX Link up
Timed out waiting for BOOTP/DHCP reply
 wanboot info: WAN boot messages->console
 wanboot info: configuring /pci@1f,700000/network@2:dhcp

100 Mbps FDX Link up
 wanboot info: Starting DHCP configuration
 wanboot info: DHCP configuration succeeded
 wanboot progress: wanbootfs: Read 366 of 366 kB (100%)
 wanboot info: wanbootfs: Download complete
Fri Jun  5 10:00:06 wanboot progress: miniroot: Read 175868 of 175868 kB (100%)
Fri Jun  5 10:00:06 wanboot info: miniroot: Download complete
SunOS Release 5.11 Version snv_111b 64-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hardware watchdog enabled
Hostname: opensolaris
Remounting root read/write
Probing for device nodes ...
Preparing automated install image for use
....
....

Zu beachten ist vielleicht noch, dass die Default Installation den ZFS rpool nicht über die ganze Platte sondern auf slice 0 der ersten Platte legen möchte. Somit sollte dieser slice groß genug sein bzw. gleich die gesamte Platte umfassen. Außerdem soll eine sparc Maschine wohl kein EFI-labeleled Boot Platte mögen (das habe ich allerdings selbst nicht probiert, in meiner ersten Testinstallation hatte die Platte ein SMI Label (ist default)).
Nach der Installation (ca. eine Stunde, ein großer Teil der Pakete wird über das Internet nachgeladen) und dem reboot sollte man nicht vergessen das default root-Passwort (=opensolaris) zu ändern und den default Benutzer „jack“ (Passwort: jack) zu löschen. Zwar kann sich der root Benutzer (solange er als rolle und nicht als Benutzer in /etc/user_attrs eingetragen ist) nicht einloggen – trotzdem sollte man das Passwort umsetzen. Am Besten sich gleich nach dem reboot als jack/jack einloggen, das root Passwort ändern, einen neuen Benutzer anlegen (nicht vergessen diesem neuen Benutzer entspr. Admin Rechte in /etc/user_attrs zu geben!) und den Benutzer jack dann löschen.
Der rpool besteht in der default Installation aus einer einizgen Platte. Wenn man – wie bei Servern üblich – zwei Platten im System hat, sollte man den pool unbedingt mirroren:


# zpool attach rpool c6t0d0s0 c6t1d0s0

(wobei die Platte c6t0d0 jene ist, die den rpool bildet und c6t1d0 die zweite Mirror Hälfte ist). Ein „zpool add“ würde nicht zum Ziel führen, da der pool dann keine Redundanz hätte und die zweite Platte nur als concatenation hinzugefügt würde. Nach dem Hinzufügen der zweiten Mirror hälfte muss noch der boot Block auf die neue Platte geschrieben werden:


# installboot /usr/platform/`uname -i`/lib/fs/zfs/boo
tblk /dev/rdsk/c6t1d0s0

Das Resilvering dauert nun eine Zeit lang aber in der zwischenzeit ist das System bereits voll einsatzfähig.
Hat man nun einiges an Erfahrung mit der Automated Installer Prozedur gesammelt kann man sich an den nächsten Schritt machen und angepasste Installationen erstellen. Doch dazu sei erstmal auf die Doku des Automated Installers verwiesen.