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

It was pretty clear from that message that name resolution was not working. No wonder since I did not provide our DNS servers.

Update 2014-03-28: You can forget the rest of this article. There is a much easier workaround to get DNS to work than the one I described below. Just add the line ‘137.254.56.21 pkg.oracle.com’ in your /etc/hosts file before IPS is called to install additional packages as described in this post.

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!

3 thoughts on “Solaris 11 network install without DHCP

  1. Pingback: revisiting Solaris 11 Automatic Installer without DHCP | portrix systems

Leave a Reply

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