Solaris 11 network install without DHCP

The next step in my little project to install Solaris 11 on an old sparc server involves the actual installation over the network. Once I had my virtual machine with solaris 11 up, the documentation on how to set up your automated installation server is quite good and straight forward. The neccessary packages were already installed in the template i was using. I wanted to do everything without setting up a DHCP server for two reasons: I tend to set up services like DHCP for testing and then forget about shutting it off again which can only lead to confusion later. Also, I wanted to save the hassle and prove that it is possible to install without DHCP. There are already a ton of documents and blogs about the “regular” method and very little about static IP configs.

So the only thing I really had to on the install server itself was to create the installation service:

root@sol11-install:~# installadm create-service -a sparc -n s11-sparc

Creating service from: pkg:/install-image/solaris-auto-install
OK to use default image path: /export/auto_install/s11-sparc? [y/N]: y
Download: install-image/solaris-auto-install ... Done
Install Phase ... Done
Package State Update Phase ... Done
Image State Update Phase ... Done
Reading Existing Index ... Done
Indexing Packages ... Done

Creating service: s11-sparc

Image path: /export/auto_install/s11-sparc

Service discovery fallback mechanism set up
Creating SPARC configuration file
Refreshing install services

Creating default-sparc alias.

No local DHCP configuration found. This service is the default
alias for all SPARC clients. If not already in place, the following should
be added to the DHCP configuration:
Boot file : http://192.168.42.52:5555/cgi-bin/wanboot-cgi

Service discovery fallback mechanism set up
Creating SPARC configuration file
Refreshing install services

At this point I was ready to start the installation via the server’s ALOM console. To avoid using DHCP, I was able to set network parameters manually. Unfortunately, you are not able to specify DNS servers that way, so that was one thing I expected to break later in the process.

sc> console -f
Warning: User < > currently has write permission to this console and forcibly removing them will terminate any current write actions and all work will be lost. Would you like to continue? [y/n]y
Enter #. to return to ALOM.

{0} ok setenv network-boot-arguments host-ip=192.168.42.54,router-ip=192.168.42.1,subnet-mask=255.255.255.0,file=http://192.168.42.52:5555/cgi-bin/wanboot-cgi
network-boot-arguments = host-ip=192.168.42.54,router-ip=192.168.42.1,subnet-mask=255.255.255.0,file=http://192.168.42.52:5555/cgi-bin/wanboot-cgi
{0} ok boot net - install

Sun Fire T200, No Keyboard
Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
OpenBoot 4.30.4.d, 8192 MB memory available, Serial #69089878.
Ethernet address 0:14:4f:1e:3a:56, Host ID: 841e3a56.

Boot device: /pci@780/pci@0/pci@1/network@0 File and args: - install
1000 Mbps full duplex Link up

1000 Mbps full duplex Link up

Requesting Ethernet address for: 46.30.25.52

100%[======================================>] 126,752,256 46.4M/s in 2.6s

2012-07-27 09:41:07 (46.4 MB/s) - `/tmp/solaris.zlib' saved [126752256/126752256]

Downloading solarismisc.zlib
--2012-07-27 09:41:07-- http://46.30.25.52:5555/export/auto_install/s11-sparc//solarismisc.zlib
Connecting to 46.30.25.52:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20636672 (20M) [text/plain]
Saving to: `/tmp/solarismisc.zlib'

100%[======================================>] 20,636,672 38.3M/s in 0.5s

2012-07-27 09:41:08 (38.3 MB/s) - `/tmp/solarismisc.zlib' saved [20636672/20636672]

Downloading .image_info
--2012-07-27 09:41:08-- http://46.30.25.52:5555/export/auto_install/s11-sparc//.image_info
Connecting to 46.30.25.52:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 65 [text/plain]
Saving to: `/tmp/.image_info'

100%[======================================>] 65 --.-K/s in 0s

2012-07-27 09:41:08 (1.70 MB/s) - `/tmp/.image_info' saved [65/65]

Done mounting image
Configuring devices.
Hostname: solaris
Service discovery phase initiated
Service name to look up: default-sparc
Service discovery finished successfully
Process of obtaining install manifest initiated
Using the install manifest obtained via service discovery

Automated Installation started
The progress of the Automated Installation will be output to the console
Detailed logging is in the logfile at /system/volatile/install_log
Press RETURN to get a login prompt at any time.

solaris console login: 09:42:24 Install Log: /system/volatile/install_log
09:42:24 Using XML Manifest: /system/volatile/ai.xml
09:42:24 Using profile specification: /system/volatile/profile
09:42:24 Using service list file: /var/run/service_list
09:42:24 Starting installation.
09:42:24 0% Preparing for Installation
09:42:25 100% manifest-parser completed.
09:42:25 0% Preparing for Installation
09:42:25 0% Preparing for Installation
09:42:25 0% Preparing for Installation
09:42:25 0% Preparing for Installation
09:42:25 1% Preparing for Installation
09:42:25 1% Preparing for Installation
09:42:25 1% Preparing for Installation
09:42:26 2% Preparing for Installation
09:42:26 2% Preparing for Installation
09:42:26 2% Preparing for Installation
09:42:26 3% Preparing for Installation
09:42:26 3% Preparing for Installation
09:42:26 3% Preparing for Installation
09:42:26 4% Preparing for Installation
09:42:26 4% Preparing for Installation
09:42:26 4% Preparing for Installation
09:42:35 7% target-discovery completed.
09:42:35 === Executing Target Selection Checkpoint ==
09:42:35 Selected Disk(s) : c2t0d0
09:42:35 13% target-selection completed.
09:42:35 17% ai-configuration completed.
09:42:36 19% var-shared-dataset completed.
09:42:59 21% target-instantiation completed.
09:43:00 21% Beginning IPS transfer
09:43:00 Creating IPS image
09:43:01 Error occurred during execution of 'generated-transfer-1167-1' checkpoint.
09:43:01 Failed Checkpoints:
09:43:01
09:43:01 generated-transfer-1167-1
09:43:01
09:43:01 Checkpoint execution error:
09:43:01
09:43:01 Framework error: code: 6 reason: Couldn't resolve host 'pkg.oracle.com'
09:43:01 URL: 'http://pkg.oracle.com/solaris/release/versions/0/'.
09:43:01
09:43:01 Automated Installation Failed. See install log at /system/volatile/install_log
Automated Installation failed
Please refer to the /system/volatile/install_log file for details
Jul 27 09:43:02 solaris svc.startd[9]: application/auto-installer:default failed fatally: transitioned to maintenance (see 'svcs -xv' for details)

SUNW-MSG-ID: SMF-8000-YX, TYPE: defect, VER: 1, SEVERITY: major
EVENT-TIME: Fri Jul 27 09:43:02 UTC 2012
PLATFORM: SUNW,Sun-Fire-T200, CSN: -, HOSTNAME: solaris
SOURCE: software-diagnosis, REV: 0.1
EVENT-ID: d4052e5b-916c-661f-f012-9ea3b4ae8510
DESC: A service failed - a start, stop or refresh method failed.
AUTO-RESPONSE: The service has been placed into the maintenance state.
IMPACT: svc:/application/auto-installer:default is unavailable.
REC-ACTION: Run 'svcs -xv svc:/application/auto-installer:default' to determine the generic reason why the service failed, the location of any logfiles, and a list of other services impacted. Please refer to the associated reference document at http://sun.com/msg/SMF-8000-YX for the latest service procedures and policies regarding this diagnosis.

It was pretty clear from that message that name resolution was not working. No wonder since I did not provide our DNS servers. I did not want to fiddle around with svcprops at this time in the installation, so I cheated my way out of this by adding the ip address for pkg.oracle.com in /etc/hosts and restarted the installation. Which did not work at first because the dump device was already set up for the newly created zpool but auto-install tried to destroy and re-create the zpool which it could not because the dump device was already in use. I got around that by importing another zpool I had available on my system and telling dumpadm to use the device on that pool. Which let to yet another problem because that pool also contained mountpoints for /export and other filesystems which prevented the auto-installer from mounting these on the newly created zpool until i disabled the mountpoints on the imported pool. After that, things went very smoothly:

09:47:45 Unable to destroy Zvol 'rpool/dump' as it is under dumpadm control
09:47:48 cannot destroy 'rpool': pool is busy
09:47:48 Error occurred during execution of 'target-instantiation' checkpoint.
09:47:48 Failed Checkpoints:
09:47:48
09:47:48 target-instantiation
09:47:48
09:47:48 Checkpoint execution error:
09:47:48
09:47:49 Command '['/usr/sbin/zpool', 'destroy', 'rpool']' returned unexpected exit status 1
09:47:49
09:47:49 Automated Installation Failed. See install log at /system/volatile/install_log
Automated Installation failed
Please refer to the /system/volatile/install_log file for details
[ Jul 27 09:47:49 Method "start" exited with status 95. ]
root@solaris:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 4.13G 62.3G 31K /rpool
rpool/ROOT 94K 62.3G 31K legacy
rpool/ROOT/solaris 63K 62.3G 32K /
rpool/ROOT/solaris/var 31K 62.3G 31K /var
rpool/dump 4.13G 62.4G 4.00G -
rpool/export 63K 62.3G 32K /export
rpool/export/home 31K 62.3G 31K /export/home
root@solaris:~# zpool import zp01
root@solaris:~# dumpadm -d /dev/zvol/dsk/zp01/dump
Dump content: kernel pages
Dump device: /dev/zvol/dsk/zp01/dump (dedicated)
Savecore directory: /var/crash
Savecore enabled: no
Save compressed: on
root@solaris:~# svcadm clear auto-installer

Once that was done, I rebooted one last time and was led through a dialog that asked me about basic network settings, timezone and passwords. Tada – done!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>