• Uncategorized

Instalacja Solarisa 10 przez Custom JumpStart

Custom JumpStart to obecnie najczęściej wykorzystywany przeze mnie sposób instalacji Solarisa. Polega on na przygotowaniu serwera instalacji i zdefiniowaniu reguł dla poszczególnych klientów. Klientów możemy rozróżniać ze względu na architekturę, ilość pamięci RAM, ilość i/lub pojemność dysków itp. itd. Można też zrobić reguły dla konkretnych klientów, identyfikując ich np. po nazwie albo adresie IP. Zbiór słów kluczowych dla reguł można znaleźć w dokumentacji. Custom JumpStart jest rewelacyjnym sposobem instalacji jeśli mamy kilka(naście/set/tysięcy) maszyn do instalacji i/lub chcemy mieć taką samą konfigurację.

Pierwszym etapem w procesie instalacji JumpStart to przygotowanie serwera instalacji. Oczywiście najpierw należy ściągnąć odpowiednią wersję systemu (patrz Instalacja Solarisa z CD/DVD) i wypalić ją na CD/DVD lub podmontować obraz ISO. Jeśli na serwerze, z którego będziemy instalować następne maszyny mamy uruchomionego automountera, to po włożeniu CD/DVD do napędu w katalogu /cdrom będziemy mieli zamontowaną zawartość płyty – z tym raczej nie powinno być problemu. Ja jednak nie lubię chodzić do serwerowni ani niepotrzebnie wypalać płyt, więc ściągam obraz ISO odpowiedni dla architektury docelowej wrzucam go przez SFTP na serwer (który może być nawet w innej architekturze) i tam go montuje na urządzeniu wirtualnym:

# lofiadm -a `pwd`/sol-10-u7-ga-sparc-dvd.iso
/dev/lofi/1
# mount -F hsfs -r /dev/lofi/1 /cdrom

Zakładam więc w tym miejscu, że w katalogu /cdrom mamy podmontowany nośnik z systemem Solaris 10. Uruchamiam więc tworzenie serwera instalacji, jako katalog docelowy wybieram /data/install/Sol10-U7-SP (Solaris 10 Update7 SPARC):

# cd /cdrom/Solaris_10/Tools
# ./setup_install_server /data/install/Sol10-U7-SP
Verifying target directory...
Calculating the required disk space for the Solaris_10 product
Calculating space required for the installation boot image
Copying the CD image to disk...
Copying Install Boot Image hierarchy...
Copying /boot netboot hierarchy...
Install Server setup complete

Teraz czas na przygotowanie reguł dla instalacji JumpStart. Najlepiej skopiować sobie przykładowe reguły i dostosować je do własnych potrzeb. Znajdziemy je w podkatalogu Misc serwera instalacji utworzonego w poprzednim kroku:

# cp -RPp /data/install/Sol10-U7-SP/Solaris_10/Misc/jumpstart_sample /data/install/jumpstart

Następnie przygotowujemy plik opisu instalacji, wygląda to mniej więcej tak:

install_type    initial_install
system_type     server

partitioning    explicit
#usedisk                c1t0d0 c1t1d0
metadb          c1t0d0s7 count 4
metadb          c1t1d0s7 count 4
filesys         mirror:d0 c1t0d0s0 c1t1d0s0 8192        /       logging
filesys         c1t0d0s1 16384  swap
filesys         c1t1d0s1 16384  swap
filesys         mirror:d50 c1t0d0s5 c1t1d0s5 16384      /var    logging
filesys         mirror:d60 c1t0d0s6 c1t1d0s6 16384      /usr    logging
filesys         mirror:d30 c1t0d0s3 c1t1d0s3 512        /globaldevices logging
filesys         mirror:d40 c1t0d0s4 c1t1d0s4 free       /local  logging

cluster         SUNWCreq
#
package         SUNWauda        delete
package         SUNWcnsr        delete
package         SUNWcnsu        delete
...
package         SUNWaccr
package         SUNWaccu
package         SUNWadmap
package         SUNWadmc
...

pokrótce mówiąc, powyższe spowoduje: zainstalowanie systemu od nowa (initial_install) w systemie serwerowym, z określonym ściśle partycjonowaniem dysku (explicit). Na dyskach c1t0d0 i c1t1d0 zostaną utworzone slice’y na repliki baz (metadb) oraz mirrorowane slice’y na systemy plików. Odpowiednio: 8 GB na /, po 16 GB na /usr, /var i swap. Pozostawiam 512 MB na /globaldevices pod instalację klastrową. Reszta będzie podmontowana jako /local. Zostaną zainstalowane pakiety core, czyli praktycznie te wymagana do uruchomienia systemu. Resztę pakietów do usunięcia i instalacji wyszczególniam explicite.
Oczywiście partycjonowanie dysku zależy od potrzeb systemu/użytkownika i wielkości dysku, można też wybrać partycjonowanie automatyczne. Podobnie listę pakietów należy dostosować do swoich potrzeb. Listę słów kluczowych można oczywiście znaleźć w dokumentacji na stronach SUN.
W nowszych wersjach systemu Solaris 10 (od Update 6, 10/08) można już tworzyć root filesystem w systemie plików ZFS. W tym celu zamiast całej sekcji od partitioning do filesys włącznie można zastąpić jedną linią, która utworzy odpowiednią pulę dyskową i założy filesystemy:

pool            zfsroot auto 16g auto mirror c1t0d0s0 c1t1d0s0

Uwaga: pulę na root filesystem tworzymy podając slice’y a nie na całe dyski. Jest to opisane w dokumentacji.
Plik zapisujemy na dysku w katalogu jumpstart, ja nadałem nazwę V890_servers, gdyż będę go używał do instalowania wszystkich serwerów Sun Fire V890. Można sobie też przygotować skrypty pre- i postinstalacyjne, które zostaną wykonane odpowiednio przed lub po zakończeniu instalacji. Ja przygotowałem sobie skrypt, który oszczędza mi trochę pracy i ustawia środowisko, kawałek poniżej:

#!/bin/sh

echo "Setting /etc/default PATH and SUPATH variables"
echo "PATH=/usr/local/bin:/usr/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb" >> /a/etc/default/login
echo "SUPATH=/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb" >> /a/etc/default/login
echo "PATH=/usr/local/bin:/usr/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb" >> /a/etc/default/su
echo "SUPATH=/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb" >> /a/etc/default/su


Zapisuję go w katalogu jumpstart jako V890_finish.sh i dopisuję do pliku rules aby z tych plików korzystał:

model   SUNW,Sun-Fire-V890      -  V890_servers V890_finish.sh

Słowa kluczowe i przykłady zastosowania można znaleźć w samym pliku rules i oczywiście w dokumentacji. Po każdej zmianie w pliku rules należy dokonać jego walidacji skryptem ./check, który powinien znajdywać się w katalogu jumpstart. Jeśli wszystko jest w porządku to powstanie plik rules.ok.

Polecam też przygotowanie pliku sysidcfg, nie jest to wymagane przy instalacji JumpStart, ale zwalnia nas z obowiązku odpowiadania na pytania konfiguracyjne podczas instalacji. Plik ten musi się nazywać sysidcfg więc jeśli chcemy instalować więcej niż jeden serwer to trzeba te pliki umieszczać w osobnych katalogach. Ja wrzucam to do /data/install/profiles/nazwa-serwera/sysidcfg. Opis słów kluczowych i wartości można oczywiście znaleźć w dokumentacji, u mnie wygląda to mniej więcej tak:

system_locale=C
#install_locale=pl_PL.UTF-8 # lepiej ustawic locale na C
timezone=Poland
timeserver=localhost
terminal=vt100
#nfs4_domain=DYNAMIC # lepiej ustawic, bo pozniej bywaja klopoty z NFS
nfs4_domain=priv.moja.domena.tld
name_service=NONE
network_interface=eri0 { primary
        hostname=nazwa
        ip_address=192.168.1.10
        netmask=255.255.255.0
        default_route=NONE
        protocol_ipv6=no }
network_interface=qfe0 { 
        hostname=nazwa.moja.domena.tld
        ip_address=ADD.RE.SS.IP
        netmask=255.255.255.0
        default_route=ADD.RE.SS.RTR
        protocol_ipv6=no }
security_policy=NONE
service_profile=limited_net

Oczywiście ustawiamy nazwy interfejsów, serwera i adresy IP właściwe dla naszych potrzeb, ja podałem tu przykładowe, interfejs eri0 dla sieci prywatnej 192.168.1.0 i qfe0 dla sieci publicznej. Podstawowym interfejsem jest tu eri0 i instalacja odbędzie się po sieci prywatnej.
Wcześniej można/trzeba jeszcze wyeksportować odpowiednie katalogi po NFSie:

# share -F nfs -o ro=@192.168.1.0,anon=0 /data/install/Sol10-U7-SP
# share -F nfs -o ro=@192.168.1.0,anon=0 /data/install/jumpstart
# share -F nfs -o ro=@192.168.1.0,anon=0 /data/install/profiles

i dodać klienta do serwera instalacji, MAC adres bierzemy z podstawowego interfejsu klienta (u mnie eri0), zakładamy, że serwer instalacji ma adres 192.168.1.4:

# cd /data/install/Sol10-U7-SP/Solaris_10/Tools/
# ./add_install_client -e 0:14:4f:MA:C:AD -s 192.168.1.4:/data/install/Sol10-U7-SP \
 -c 192.168.1.4:/data/install/jumpstart \
 -p 192.168.1.4:/data/install/profiles/nazwa-serw nazwa-serw sun4u
Adding "share -F nfs -o ro,anon=0 /data/install/Sol10-U7-SP/Solaris_10/Tools/Boot" to /etc/dfs/dfstab
share_nfs: /data/install/Sol10-U7-SP/Solaris_10/Tools/Boot: parent-directory (/data/install/Sol10-U7-SP) already shared
cleaning up preexisting install client "nazwa-serw"
updating /etc/bootparams

W tym miejscu proces przygotowania do instalacji można uznać za zakończony. Teraz logujemy się na konsolę klienta (serwera), na którym chcemy zainstalować system i z poziomu BootPROM wydajemy polecenie instalacji:

{10} ok boot net - install
Resetting ...

Po kilku linijkach self-testu i przedstawieniu się systemu powinniśmy zobaczyć coś takiego:

Rebooting with command: boot net - install
Boot device: /pci@9,700000/network@1,1  File and args: - install
Requesting Internet Address for 0:14:4f:MA:C:AD
Requesting Internet Address for 0:14:4f:MA:C:AD
Requesting Internet Address for 0:14:4f:MA:C:AD
/

jeśli w ostatniej linijce mamy zmieniające się znaki /-|\ dające efekt obrotu, to znaczy, że nasza instalacja wystartowała poprawnie i możemy iść do domu/na kawę/whatever.
Po jakimś (nie wiedzieć czemu bardzo długim) czasie powinien pokazać się banner:

SunOS Release 5.10 Version Generic_139555-08 64-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Configuring devices.
SUNW,eri0 : 100 Mbps half duplex link up

i informacja o próbach konfiguracji kart sieciowych oraz dalsze kroki instalacji. Wszystko dzieje się automagicznie, chyba że w pliku sysidcfg brakuje opcji konfiguracyjnych, które są wymagane (np. hasło roota – wtedy należy wprowadzić je i potwierdzić).

...
Skipped interface ge0
Attempting to configure interface eri0...
Configured interface eri0
Reading ZFS config: done.
Setting up Java. Please wait...
Serial console, reverting to text install
Beginning system identification...
Searching for configuration file(s)...
Using sysid configuration file 192.168.1.4:/data/install/profiles/nazwa-serw/sysidcfg
Search complete.
Discovering additional network configuration...
Completing system identification...
Starting remote procedure call (RPC) services: done.
System identification complete.
Starting Solaris installation program...
Searching for JumpStart directory...
Using rules.ok from 192.168.1.4:/data/install/jumpstart.
Checking rules.ok file...
Using profile: V890_servers
Using finish script: V890_finish.sh
Executing JumpStart preinstall phase...
Searching for SolStart directory...
Checking rules.ok file...
Using begin script: install_begin
Using finish script: patch_finish
Executing SolStart preinstall phase...
Executing begin script "install_begin"...
Begin script install_begin execution completed.
...
	- Selecting all disks
	- Configuring boot device
	- Configuring / (c1t0d0s0)
	- Configuring  (c1t1d0s0)
	- Automatically configuring disks for Solaris operating system
	- Deselecting unmodified disk (c1t2d0)
	- Deselecting unmodified disk (c1t3d0)
	- Deselecting unmodified disk (c1t4d0)
...
Verifying disk configuration

Verifying space allocation
	- Total software size:  1057.69 Mbytes

Preparing system for Solaris install

Configuring disk (c1t0d0)
	- Creating Solaris disk label (VTOC)

Configuring disk (c1t1d0)
	- Creating Solaris disk label (VTOC)
	- Creating pool zfsroot
	- Creating swap zvol for pool zfsroot
	- Creating dump zvol for pool zfsroot

Creating and checking file systems
	- Creating zfsroot/ROOT/s10s_u7wos_08 dataset

Beginning Solaris software installation

Starting software installation
	SUNWlucfg........................done.  1057.61 Mbytes remaining.
	SUNWcsu..........................done.  1042.15 Mbytes remaining.
...
Completed software installation

Solaris 10 software installation succeeded

Customizing system files
	- Mount points table (/etc/vfstab)
	- Unselected disk mount points (/var/sadm/system/data/vfstab.unselected)
	- Network host addresses (/etc/hosts)
	- Environment variables (/etc/default/init)

Cleaning devices

Customizing system devices
	- Physical devices (/devices)
	- Logical devices (/dev)

Installing boot information
	- Installing boot blocks (c1t0d0s0)
	- Installing boot blocks (/dev/rdsk/c1t0d0s0)
	- Installing boot blocks (/dev/rdsk/c1t1d0s0)

Installation log location
	- /a/var/sadm/system/logs/install_log (before reboot)
	- /var/sadm/system/logs/install_log (after reboot)

Installation complete
Executing SolStart postinstall phase...
Executing finish script "patch_finish"...

Finish script patch_finish execution completed.
Executing JumpStart postinstall phase...
Executing finish script "V890_finish.sh"...

tutaj zaczyna się działanie skryptu postinstalacyjnego, u mnie nazywa się on V890_finish.sh:

Setting /etc/default PATH and SUPATH variables
Setting /etc/netmasks
Setting /etc/profile EDITOR and MANPATH variables
...
Finish script V890_finish.sh execution completed.

The begin script log 'begin.log'
is located in /var/sadm/system/logs after reboot.

The finish script log 'finish.log'
is located in /var/sadm/system/logs after reboot.

Creating boot_archive for /a
updating /a/platform/sun4u/boot_archive
15+0 records in
15+0 records out
syncing file systems... done
rebooting...
Resetting ...

Po reboocie powinniśmy znów zobaczyć banner, informację o ładowaniu opisów usług (SMF), tworzeniu kluczy SSH i prompt logowania na konsolę:

SunOS Release 5.10 Version Generic_139555-08 64-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: nazwa-serw
SUNW,eri0 : 100 Mbps full duplex link up
Configuring devices.
Loading smf(5) service descriptions: 120/120
Reading ZFS config: done.
Mounting ZFS filesystems: (5/5)
Creating new rsa public/private host key pair
Creating new dsa public/private host key pair

nazwa-serw console login:

Oczywiście powyższe jest zależne od wersji Solarisa, tego jakie pakiety zostały zainstalowane, jaki system plików został wybrany itd. Ale ogólnie rzecz biorąc świadczy to, że system został zainstalowany.
Jeśli komuś uda się ta sztuka za pierwszym razem, to chylę czoła, zwykle trzeba poświęcić sporo czasu na wytworzenie właświwego profilu instalacji i konfiguracji, ale później i tak się to opłaca, bo na kolejnych maszynach robimy już tylko boot net - install, idziemy do domu i przychodzimy rano na gotowe. Zresztą stara zasada informatyczna/elektroniczna mówi, że jak program/układ zadziała za pierwszym razem to na pewno jest wadliwy 😉
Ja na przykład przy tej konkretnej instalacji postanowiłem użyć systemu ZFS na root filesystem i natknąłem się na błąd:

ERROR: (_app_set_slice) Disk is not selected

spowodowane było to tym, że na jednym z dysków, na których jest root filesystem był już założony label EFI (cały dysk był wcześniej wykorzystywany w puli ZFS). Oczywiście jest w dokumentacji wzmianka o tym w ograniczeniach, ale sądziłem, że instalator sobie z tym poradzi. Okazuje się zresztą, że nie tylko ja się na tym wyłożyłem, bo znalazłem też o tym wątek na forum. Aby to naprawić trzeba uruchomić format -e i ustawić etykiety SMI na dyskach wykorzystywanych do bootowania.

You may also like...

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.