Linux als Jumpstartserver

Aangezien ik van een ex-collega van mij (dank je Ties!) een Sun Ultra 60 :unix:solaris:10:ultra60_240.jpg heb gekregen, heb ik weer wat betere hardware om Solaris 10 te proberen. De Ultra 60 is helaas niet uitgevoerd met een DVD-speler en de Solaris 10 versie die ik bezit is wel op DVD, dus is een netwerk-installatie de oplossing!

Jumpstart van Solaris is ons allemaal wel bekend, maar hoe richt ik nu een Linux machine dusdanig in, dat deze dienst kan doen als Jumpstart server voor Solaris (SPARC) machines? Na wat zoeken heb ik genoeg informatie gevonden om dit via mijn bestaande dhcp-server voor elkaar te krijgen. Op deze pagina beschrijf ik hoe ik dit voor elkaar heb gekregen.

Inrichten dhcp-server

Om de dhcp-server te laten reageren op arp/rarp met daarin de gegevens die een Sun nodig heeft voor een netwerk-boot, heb ik het volgende toegevoegd (uiteraard voor het subnet waarin de Sun zal booten) aan /etc/dhcpd.conf, de configuratie van de ISC DHCP-server:

In het stuk bij de definitie van ranges staat het volgende:

# Jumpstart Support
option space SUNW;
option SUNW.root-mount-options code 1 = text;
option SUNW.root-server-ip-address code 2 = ip-address;
option SUNW.root-server-hostname code 3 = text;
option SUNW.root-path-name code 4 = text;
option SUNW.swap-server-ip-address code 5 = ip-address;
option SUNW.swap-file-path code 6 = text;
option SUNW.boot-file-path code 7 = text;
option SUNW.posix-timezone-string code 8 = txt;
option SUNW.boot-read-size code 9 = unsigned integer 16;
option SUNW.install-server-ip-address code 10 = ip-address;
option SUNW.install-server-hostname code 11 = text;
option SUNW.install-path code 12 = text;
option SUNW.sysid-config-file-server code 13 = text;
option SUNW.JumpStart-server code 14 = text;
option SUNW.terminal-name code 15 = text;
option SUNW.SbootURI code 16 = text;\\

Daarna kan in de betreffende range het volgende worden toegevoegd:

group {
next-server 192.168.0.7;
use-host-decl-names on;
vendor-option-space SUNW;
option SUNW.install-server-hostname “grumpy”;
option SUNW.install-server-ip-address 192.168.0.7;
option SUNW.install-path “/data2/JS/sol10/08_10”;
option SUNW.root-server-hostname “grumpy”;
option SUNW.root-server-ip-address 192.168.0.7;
option SUNW.root-path-name “/data2/JS/sol10/08_10/Solaris_10/Tools/Boot”;
host ultra { hardware ethernet 08:00:20:9b:f2:09; fixed-address 192.168.0.99;
option SUNW.sysid-config-file-server = “grumpy:/data2/JS/sol10/configs/server/ultra”; }
}

Kopieren Solaris 10 DVD

De inhoud van de Solaris 10 DVD moet nog gekopieerd worden op de lokale schijf, zodat voortaan de DVD niet meer nodig is wanneer een nieuwe server geinstalleerd wordt.

Tools in orde maken

Voor Solaris 10 scripts moeten de volgende softlinks gezet worden:

ln -s /bin/tar /bin/bar
ln -s /bin/sed /usr/bin/sed
ln -s /usr/bin/gdb /usr/bin/adb

Maak een bestand /bin/mach met de volgende inhoud:
#!/bin/bash

uname -p

Maak /bin/mach daarna executable mbv chmod +x /bin/mach

Het kopieren van de DVD is gedaan mbv de volgende commando's (de DVD is gemount onder /mnt/cdrom):

cd /mnt/cdrom/Solaris_10/Tools
./setup_install_server /data2/JS/sol10/08_10

Activeren tftpboot-server

Om de 1e boot-image te kunnen krijgen, zal wel een tftpboot-server geactiveerd moeten worden.

Installeer het package tftp-server of zorg dat je in.tftpd ergens vandaan haalt en compileert.

De volgende regel toegevoegen aan /etc/inetd.conf:

tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -v -s /data2/JS/tftpboot -r blksize

Of zorg voor een bestand /etc/xinetd.d/tftp met de volgende inhoud:

service tftp {

      socket_type             = dgram
      protocol                = udp
      wait                    = yes
      user                    = root
      server                  = /usr/sbin/in.tftpd
      server_args             = -s /data2/JS/tftpboot
      disable                 = no
      per_source              = 11
      cps                     = 100 2
      flags                   = IPv4

}

Zorg ook dat de tftpboot directory de juiste boot-image bevat:

# cd /data2/JS/sol10/08_10/Solaris_10/Tools/Boot
# cp platform/sun4u/inetboot /data2/JS/tftpboot
# cd /data2/JS/tftpboot
# ln -sf inetboot SUNW.Ultra-60

Om een juiste verwijzing (mbv softlink) te zetten naar deze inetboot voor een machine met een bekend ip-adres, kan het volgende worden ingetikt (voor 192.168.0.17):

printf %02x 192 168 0 17|tr [:lower:] [:upper:]

De uitkomst hiervan is: C0A80011

Voeg hiervoor ook een softlink toe naar inetboot:

# ln -sf inetboot C0A80011

Vanaf Solaris 10 oktober 2008 (ook bekend als Solaris 10 U6) is de boot-directory flink veranderd. Om tftp goed te laten werken, moet ook de platform-directory incl. boot_archive naar de tftpboot-directory worden gekopieerd. Dit kan als volgt:

cd /data2/JS/sol10/08_10/Solaris_10/Tools/Boot

cp -rp platform /data2/JS/tftpboot

cd /data2/JS/tftpboot/platform/sun4u

ln -sf /data2/JS/sol10/08_10/boot/sparc.miniroot boot_archive

cd /data2/JS/tftpboot/platform/sun4us

ln -sf /data2/JS/sol10/08_10/boot/sparc.miniroot boot_archive

cd /data2/JS/tftpboot/platform/sun4v

ln -sf /data2/JS/sol10/08_10/boot/sparc.miniroot boot_archive

NFS

Uiteraard moeten ook een aantal filesystemen via NFS geshared worden om de volledige DVD via het netwerk beschikbaar te maken.

Dit kan door de volgende entry aan /etc/exports toe te voegen:

/data2/JS 192.168.0.0/24(ro,sync,no_root_squash)

NFS en Red Hat Fedora Core

De defaultinstelling van NFS op Red Hat Fedora Core (versie 9 ten tijde van deze installatie), zet NFS v4 aan. Blijkbaar kan Solaris 10 hier bij net-booten niet goed mee omgaan. Om dit tijdelijk te omzeilen, moet de volgende entry in /etc/sysconfig/nfs worden aangezet:

# Turn off v4 protocol support

RPCNFSDARGS=“-N 4”

De client

Voor de client heb ik een basis sysidcfg opgezet welke te vinden is in /data2/JS/sol10/configs/server/ultra

De inhoud van deze sysidcfg is als volgt:

system_locale=en_US
timezone=Europe/Amsterdam
timeserver=192.168.0.7
network_interface=primary {dhcp protocol_ipv6=no}
terminal=dtterm
name_service=NONE
security_policy=none

Ook moet een profile worden aangemaakt, ik heb een default profile genaamd any_machine neergezet in deze directory, de inhoud van het bestand ziet er als volgt uit:

install_type initial_install
system_type standalone
partitioning default
cluster SUNWCall
cluster SUNWCxgl delete
package SUNWaudmo add
pool newpool auto auto auto mirror c0t0d0s0 c0t1d0s0
bootenv installbe bename sol10_u6

Zoals je ziet, maakt dit profile gebruik van zfs, dus ook voor de rootdisk.

Nu moeten alleen nog de rules en rules.ok worden aangemaakt. De laatste wordt altijd door een check-script gemaakt, meegeleverd op de Solaris DVD. De rules.ok moet handmatig worden gemaakt, geen checks dus of je rules-file goed is, dus mijn tip: maak geen fouten!. De inhoud van mijn rules bestand ziet er als volgt uit:

any - - any_machine -

De rules.ok kan je zelf aan maken door eerst een sum van rules te doen en dit getal te gebruiken bij de laatste parameter in rules.ok. Het bestand rules.ok staat in /data2/JS/sol10/configs. Bij mij ziet dit er dus als volgt uit:

any - - server/ultra/any_machine -
# version=2 checksum=30745

Waar version op slaat, moet ik nog uitzoeken, maar op deze manier werkt het Jumpstarten prima!

Nadat deze bestanden zijn aangemaakt, kan er genoten worden van het werk. Let wel op dat je de machine niet standaard start met boot net - install maar met het commando boot net:dhcp - install:!:

ZFS Tip: De installatie moet in text mode worden gedaan wanneer ZFS op de rootdisk wordt geinstalleerd. Het bootcommando hiervoor is dan:
boot net:dhcp - install nowin


Navigatie
Eigen Gereedschappen