<!-- 
The contents of this Documentation are subject to the Public Documentation
License Version 1.01 (the "License"); you may only use this Documentation if
you comply with the terms of this License. A copy of the License is
available at http://www.opensolaris.org/os/community/documentation/license.
-->

<chapter id="index"><title>Introduction to the Automated Installer</title><highlights><para>If you want to install the OpenSolaris operating system (OS) on multiple
client systems on a network, you can use the automated installer (AI) to accomplish
that task. The automated installer performs essentially &ldquo;hands-free&rdquo;
network installations of the OpenSolaris OS. You can install the OpenSolaris
OS onto x86 systems or SPARC systems in a network.</para><itemizedlist><listitem><para>If you have not used the automated installer before, review
the following introduction to this tool. Then, see <olink type="auto-generated" targetptr="tasks" remap="internal"></olink>.</para>
</listitem><listitem><para>If you have already set up an install server, you can go to
the instructions for <olink type="auto-generated" targetptr="administer" remap="internal"></olink>.</para>
</listitem>
</itemizedlist>
</highlights><sect1 id="whatis"><title>What is the Automated Installer?</title><para>The automated installer is used to automate the installation of the
OpenSolaris OS on one or more SPARC and x86 systems over a network. The installations
can differ in architecture, packages installed, disk capacity, and other parameters.</para><para>The minimal configuration necessary to use the automated installer is
to have one system as the install server and one client on which to install.
On the server, you set up an <emphasis>installation service</emphasis>, which
is associated with <emphasis>manifests</emphasis>, or specifications, for
specific x86 installations or SPARC installations. Manifests can include information
such as target device, additional packages, partition information, and other
parameters. When the client boots, this boot initiates a search for a manifest
that matches the client's machine specifications. When a matching manifest
is found, the client is installed with the OpenSolaris release according to
the specifications in the manifest files.</para>
</sect1><sect1 id="use"><title>How Do I Use the Automated Installer?</title><para>Perform the following tasks:</para><itemizedlist><listitem><para>First, set up an <emphasis>install server</emphasis> on your
network. See <olink targetptr="setup" remap="internal"></olink>.</para><para>This install server
manages the resources needed for automated installations to client systems
in a network.</para><para>Use the <command>installadm create-service</command> command to set
up an install server and create an installation <emphasis>service</emphasis>. An installation service, or install service, is a network entity that specifies
the parameters for a particular type of installation. These specifications
are defined in XML <emphasis>manifest</emphasis> files.</para><para>The automated installer uses <emphasis>AI ISO images</emphasis> to create
the install services. An AI ISO image is a collection of software in a single
file. An AI ISO image is usable for installations.</para>
</listitem><listitem><para>Once an install server and an installation service are set
up, you can install the OpenSolaris release to a client on the network, per
the default specifications in the service, by booting the client system. See <olink targetptr="clientinstall" remap="internal"></olink>.</para>
</listitem><listitem><para>If you want to perform various types of installations in a
network, you can create and manage additional install services tailored for
each type of installation by using the <command>installadm create-service</command> command. For example, you can set up an install service that installs the
OpenSolaris OS to x86 clients and an install service that installs the OpenSolaris
OS to SPARC clients. See <olink targetptr="administer" remap="internal"></olink>.</para>
</listitem><listitem><para>If you have clients with varying machine specifications, you
can manually create or modify manifests so that the manifests cover those
specific machine specifications. Then, you can use the <command>installadm
add</command> command to add your new manifests to an install service. See <olink targetptr="manifest" remap="internal"></olink>.</para>
</listitem><listitem><para>If you want a specific client to use a specific install service,
you can associate a service with a client by using the <command>installadm
create-client</command> command. See <olink targetptr="client" remap="internal"></olink>.</para>
</listitem><listitem><para>To resolve problems encountered while using the automated
installer, see <olink targetptr="trouble" remap="internal"></olink>.</para>
</listitem>
</itemizedlist><sect2><title><command>installadm</command> Utility</title><para>The <command>installadm</command> utility enables you to accomplish
the following tasks:</para><itemizedlist><listitem><para>Set up install services and installation images, and set up
and update a DHCP server</para>
</listitem><listitem><para>Configure your server</para>
</listitem><listitem><para>Set up  or remove custom clients</para>
</listitem><listitem><para>Add or delete manifest files</para>
</listitem><listitem><para>Enable or disable install services</para>
</listitem><listitem><para>List services or list manifests for an install service</para>
</listitem>
</itemizedlist><para>For more information, see the <olink type="auto-generated" targetptr="installadm" remap="internal"></olink>.</para>
</sect2>
</sect1><sect1 id="clientinstall"><title>How a Client is Installed</title><para>Once you have set up an install server with one or more install services,
and you've customized the installation specifications for the install services
to suit your needs, you are ready to install the OpenSolaris OS to client
systems on the network. You only need to boot the client, and the process
runs to completion without further input from you.</para><para>The following flowchart illustrates how a client system is installed.
The client browses for available install services, seeking a service where
the installation criteria in the service's manifest file matches the characteristics
of the client system. When a match is found, the installation is performed
on the client system, using a boot image and manifest specifications provided
by the install service.</para><figure id="flowchart"><title>Client Installation Steps</title><mediaobject><imageobject><imagedata entityref="aiflow.tiff"/>
</imageobject><textobject><simpara>Graphic illustrates the steps for client installation</simpara>
</textobject>
</mediaobject>
</figure><para>For further information, see <olink targetptr="clients" remap="internal"></olink>.</para>
</sect1><sect1 id="benefits"><title>Automated Installation Benefits</title><para>The automated installer provides support for network installations,
where one installation specification can be applied to multiple systems.</para><itemizedlist mark="bullet"><para>The automated installer includes the following features that support
multiple client installations in a network:</para><listitem><para>The automated installer uses DNS services, so that, when you
boot a client, any new install services that were added to the network before
the client booted are automatically available to the client. No individual
client configuration is necessary for clients to access install services.</para>
</listitem><listitem><para>Installation setup is decentralized. You can maintain multiple,
disparate locations for installation services and for client configuration.
Installation services can be created on several machines, enabling you to
make available multiple install services of the same type and release. The
client is notified of all available install services on the network when the
client boots.</para>
</listitem><listitem><para>If all of your client systems have the same hardware characteristics,
then the default installation specifications that you setup using the <command>installadm create-service</command> command can be used for all client installations.
If you want to install the OpenSolaris OS on clients with varying hardware
characteristics, you can create custom manifests tailored for specific hardware
characteristics. Then, using the <command>installadm add</command> command,
you can add the custom manifest to an install service to make it available
on the network for client installations.</para>
</listitem><listitem><para>Depending on your network configuration, basic setup of an
install server and an initial install service can be a straightforward process.
For further information about simple setup and advanced setup options, see <olink targetptr="setup" remap="internal"></olink>.</para>
</listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="tasks"><title>Automated Installer Task Map</title><highlights><para>The automated installer is used to automate the installation of the
OpenSolaris OS on one or more SPARC and x86 systems over a network. The minimal
configuration necessary to use the automated installer is to have one system
as an install server and one client on which to install. On the install server,
you set up install services with associated manifests that provide specifications
for client installations. Client installations can differ in architecture,
packages installed, disk capacity, and other parameters.</para><para>The following task map walks you through the overall process of setting
up and using the automated installer.</para>
</highlights><sect1 id="tasks1"><title>Automated Install (Tasks)</title><table frame="topbot" pgwide="1" id="taskstbl"><title>Task Map</title><tgroup cols="3" colsep="0" rowsep="0"><colspec colwidth="19.95*"/><colspec colwidth="28.32*"/><colspec colwidth="50.72*"/><thead><row rowsep="1"><entry><para>Task</para>
</entry><entry><para>Question</para>
</entry><entry><para>Reference</para>
</entry>
</row>
</thead><tbody><row><entry><para>Check hardware.</para>
</entry><entry><para>Do you have the necessary hardware for your install server and clients?</para>
</entry><entry><para>Any system that meets the requirements can be used as an automated install
server or client, including laptops, desktops, virtual machines, and enterprise
servers.</para><itemizedlist><listitem><para>See the install server requirements at <olink targetptr="basic" remap="internal"></olink>.</para>
</listitem><listitem><para>See the client requirements at <olink targetptr="clientreq" remap="internal"></olink>.</para>
</listitem>
</itemizedlist>
</entry>
</row><row><entry><para>Install OpenSolaris 2009.06 OS.</para>
</entry><entry><para>Is the OpenSolaris 2009.06 OS installed on your install server?</para>
</entry><entry><para>You can use either a SPARC system or an x86 system as your install server.</para><note><para>You can set up an x86 install server to install to x86 clients
and to SPARC clients. Or, you can use a SPARC install server to install to
x86 clients and to SPARC clients. But, you must first set up an x86 install
server, in order to be able to set up a SPARC install server.</para>
</note><para>You must have the OpenSolaris 2009.06 release installed on the system
that you plan to use as your install server. See Step 1 in <olink targetptr="initial" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Set up a static IP address.</para>
</entry><entry><para>Do you have a static IP address set up for your install server?</para>
</entry><entry><para>If you don't have a static IP address set up for your install server,
see Step 2 in <olink targetptr="initial1" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Get the install server tools package.</para>
</entry><entry><para>Is the latest <literal>SUNWinstalladm-tools</literal> package installed
on your install server?</para>
</entry><entry><para>For instructions about installing the latest <literal>SUNWinstalladm</literal> package, see Step 3 in <olink targetptr="initial1" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Get an AI ISO image.</para>
</entry><entry><para>Do you have the AI ISO image you want to use as input for the <command>installadm create-service</command> command?</para>
</entry><entry><para>For instructions about downloading the AI ISO image, see Step 4 in <olink targetptr="initial1" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Set up an install service.</para>
</entry><entry><para>Have you run <command>installadm create-service</command> command to
set up your install service?</para>
</entry><entry><para>For instructions, see <olink targetptr="setup" remap="internal"></olink> and <olink targetptr="administer" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Customize client installations.</para>
</entry><entry><para>Do you need to run the <command>installadm create-client</command> command
to customize your client installations?</para>
</entry><entry><para>For instructions, see <olink targetptr="client" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Replace default manifests.</para>
</entry><entry><para>Are the specifications in the default manifest suitable for your clients?</para>
</entry><entry><para>If the default manifest specifications are not suitable for your clients,
you can create a custom manifest. See <olink targetptr="manifest" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Assign custom manifests.</para>
</entry><entry><para>Do you want to replace the default manifest with a custom manifest?</para>
</entry><entry><para>If you want to assign custom manifests for use by specific clients,
see <olink targetptr="criteria" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Start installations.</para>
</entry><entry><para>Are you ready to start client installations?</para>
</entry><entry><para>Boot the client from the network. For x86 clients, select the network
device to boot from. For SPARC clients, at the OK open boot prompt, type <command>boot net:dhcp</command>. See <olink targetptr="clients" remap="internal"></olink>.</para>
</entry>
</row><row><entry><para>Troubleshooting</para>
</entry><entry><para>Was there a problem with your installation?</para>
</entry><entry><para>Refer to <olink targetptr="trouble" remap="internal"></olink>. See, also, <olink targetptr="clients" remap="internal"></olink>.</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1>
</chapter><chapter id="setup"><title>Automated Installer Setup
Instructions</title><highlights><para>The automated installer enables you to set up an install server on your
system. Then, you can use this install server to install the OpenSolaris OS
on multiple client systems.</para>
</highlights><sect1 id="basic"><title>Server Setup</title><para>Use the following instructions to set up a system as an install server.
Note the following:</para><note><para>Any system that meets these setup requirements can be used as
an automated install server, including laptops, desktops, virtual machines,
and enterprise servers.</para>
</note><itemizedlist><listitem><para>You need a DHCP server in order to set up automated installations.
The install server can be set up as a DHCP server. Or, if you already have
a DHCP server in your network, you can use that DHCP server to provide initial
configuration to the install clients.</para>
</listitem><listitem><para>The install server must have a static IP address.</para>
</listitem><listitem><para>The default router should be set on the install server.</para>
</listitem><listitem><para>The OpenSolaris 2009.06 release must be installed on the install
server.</para>
</listitem><listitem><para>4 GB of free disk space is recommended on the install server
after the OpenSolaris 2009.06 release has been installed.</para>
</listitem><listitem><para>If you plan to perform automated installations on SPARC client
systems, those systems must support WAN boot. Your SPARC server must first
be set up as a SPARC client, therefore, that SPARC system must support WAN
boot. For more SPARC information, see Step 1 below and see <olink targetptr="wanboot" remap="internal"></olink></para>
</listitem>
</itemizedlist><para>Complete the following initial steps to prepare your system to be an
automated install server. After performing these initial steps, complete the
setup by using either simple instructions or advanced instructions, depending
on your system configuration. The simple and advanced instructions are described
after the initial steps.</para><note><para>The OpenSolaris 2009.06 automated installer is not backward compatible
with ISO images or automated installer tools from earlier OpenSolaris releases.
Use OpenSolaris 2009.06 automated installer tools and procedures with the
OpenSolaris 2009.06 operating system and 2009.06 ISO images only.</para>
</note>
</sect1><sect1 id="initial"><title>How to Set Up an Install Server (Initial Steps)</title><task id="initial1"><title>Initial Setup</title><procedure><step><para>Install the OpenSolaris 2009.06 operating system (OS) on the system
that you will use as your install server. Or, upgrade your OpenSolaris system
to the 2009.06 release.</para><para>Use either the following x86 instructions
or SPARC instructions:</para><stepalternatives><step><para>For x86 systems, download the OpenSolaris Live CD image from <ulink url="http://www.opensolaris.com/get/" type="url"></ulink> and install the
OpenSolaris OS on your system.</para><para>Live CD images are also available
at <ulink url="http://opensolaris.org/os/downloads/" type="url"></ulink> for
the current release and for OpenSolaris developer builds.</para><para>For instructions about installing a Live CD image onto your system or
upgrading an existing OpenSolaris OS, see <ulink url="http://dlc.sun.com/osol/docs/content/2009.06/getstart/" type="text">Getting Started
With OpenSolaris</ulink>.</para><note><para>To use the automated installer, you must have root access on your
system.</para>
</note>
</step><step><para>No Live CD images are available for SPARC systems. Use the following
alternate procedure to install the OpenSolaris OS on a SPARC system and set
up a SPARC install server:</para><note><para>If you plan to install to SPARC client systems, those systems
must support WAN boot. For more information, see <olink targetptr="wanboot" remap="internal"></olink></para>
</note><substeps><step><para>Download an x86 Live CD image and install the OpenSolaris OS on
an x86 system.</para>
</step><step><para>Download a SPARC AI ISO image to the x86 system as described in
step 4.</para>
</step><step><para>Set up the x86 system as an install server by using the instructions
below. Reference the SPARC AI ISO image in the <command>installadm create-service</command> command as a source image, so that SPARC clients can install the OpenSolaris
OS by using this image.</para>
</step><step><para>Boot your SPARC client as follows:</para><screen>OK <command>boot net:dhcp</command></screen><para>The SPARC client boots and install the OpenSolaris OS.</para>
</step><step><para>Continue to step 2 and set up the SPARC system as an install server.</para>
</step>
</substeps>
</step>
</stepalternatives>
</step><step><para>If your server is not already configured to use a static IP address,
perform the following steps:</para><note><para>Alternately, see <olink targetptr="switch" remap="internal"></olink></para>
</note><substeps><step><para>Go to the main task bar Menu and select System&gt;Administration&gt;Network
to launch the Network Administration dialog box.  And, select Manual to launch
the Network Settings tool.</para>
</step><step><para>In the Connections tab, complete the following steps:</para><substeps><step><para>Highlight the interface to configure with a static IP address,
and select the Properties button.</para>
</step><step><para>Check the Enable box to enable this connection.</para>
</step><step><para>Check the Activate box to activate on boot.</para>
</step><step><para>Enter the IP address, Subnet mask, and Gateway in the appropriate
boxes.</para>
</step><step><para>Select OK.</para>
</step>
</substeps>
</step><step><para>In the General tab, fill in the system's hostname and domain name.</para>
</step><step><para>In the DNS tab, if you use DNS to resolve hostnames, add the IP
addresses of the DNS servers for the network.</para>
</step><step><para>In the Hosts tab, complete the following steps:</para><substeps><step><para>Select Add to add an entry for this system's hostname.</para>
</step><step><para>Enter the IP address in the IP Address box.</para>
</step><step><para>Type the system's hostname on the first line in the Alias box.
Then, type &ldquo;&lt;hostname&gt;.local&rdquo; on the second line in the Alias
box, replacing &lt;hostname&gt; with your hostname. Then, type the word, &ldquo;loghost,&rdquo;
on the third line in the Alias box. Select OK.</para>
</step><step><para>Highlight the IPv4 loopback IP Address entry that has the address, <literal>127.0.0.1</literal>, and select the Properties button. Remove all lines from
the Aliases box, except for the line that reads &ldquo;localhost.&rdquo; Select
OK.</para>
</step><step><para>Highlight the IPv6 loopback IP address entry that has the address, <literal>::1</literal>, and select the Properties button. Remove all lines from the
Aliases box, except for the line that reads &ldquo;localhost.&rdquo; Select
OK.</para>
</step>
</substeps>
</step><step><para>Select OK to close the Network Settings dialogue box.</para>
</step><step><para>If you use DNS to resolve hostnames, enable DNS in the name service
switch file on this system as follows:</para><screen># <command>cp <replaceable>/etc/nsswitch.dns</replaceable> <replaceable>/etc/nsswitch.conf</replaceable></command></screen>
</step><step><para>Reboot your system.</para>
</step>
</substeps>
</step><step><para>Install the latest <literal>SUNWinstalladm-tools</literal> package
by using Package Manager, or by using the following command:</para><screen># <command>pkg install <replaceable>SUNWinstalladm-tools</replaceable></command></screen>
</step><step><para>Download an AI ISO image for x86 clients or for SPARC clients
from <ulink url="http://www.opensolaris.com/get/" type="url"></ulink>.</para><para>The automated installer will use this AI ISO image to install the OpenSolaris
OS to your client systems.</para><note><para>The build number or release of the AI ISO image must be the same
build number or release of the OpenSolaris operating system that you plan
to install.</para>
</note><para>Store the AI ISO image on your local file system. For example, store
the image at <filename>/export/aiimages/osol-0906-ai-x86.iso</filename>.</para>
</step>
</procedure><taskrelated role="additional-action"><para>After you have completed the initial setup described above, choose one
of the following options for completing the install server setup:</para><itemizedlist><listitem><para><emphasis role="strong">Simple Instructions</emphasis> &ndash;
If you want to set up one server and only one type of client, use the simple
instructions. Or, if this is your first experience setting up an install server,
use these simple instructions. These instructions assume an extremely simple
network setup where the network consists of a single subnet, and the install
server also acts as the DHCP server for the network and uses DNS to resolve
hostnames. See <olink type="auto-generated" targetptr="simple" remap="internal">How to Complete
Server Setup (Simple Instructions)</olink>.</para>
</listitem><listitem><para><emphasis role="strong">Advanced Instructions</emphasis> &ndash;
If you already have a DHCP server set up, use the advanced instructions. For
networks where the DHCP server is a separate system from the install server,
additional administration tasks on the DHCP server are required to properly
set up the automated install environment. The DHCP server is expected to be
able to provide DNS information to the install clients. See <olink type="auto-generated" targetptr="advancedsetup" remap="internal">How to Complete Server Setup
(Advanced Instructions)</olink>.</para>
</listitem>
</itemizedlist>
</taskrelated>
</task>
</sect1><sect1 id="simple"><title>How to Complete Server Setup (Simple Instructions)</title><para>If you want to set up one server and only one type of client, use the
following simple instructions. Or, if this is your first experience setting
up an install server, use these simple instructions. These instructions assume
an extremely simple network setup where the network consists of a single subnet,
and the install server also acts as the DHCP server for the network and uses
DNS to resolve hostnames.</para><task id="simple1"><title>Completing Server Setup</title><taskprerequisites><para> Complete the initial setup instructions provided in <olink type="auto-generated" targetptr="initial" remap="internal"></olink>.</para>
</taskprerequisites><procedure remap="single-step"><step><para>Set up an install service by using either the following x86 procedure
or SPARC procedure:</para><stepalternatives><step><para>To set up an install service for x86 clients, use the following
procedure:</para><substeps><step><para>Create an install service by using the <command>installadm create-service</command> command as in the following example:</para><screen># <command>installadm create-service <option>n</option> <replaceable>0906x86</replaceable> <option>i</option> <replaceable>172.1.0.10</replaceable> <option>c</option> <replaceable>5</replaceable></command> \
<command><option>s</option> <replaceable>/export/aiimages/osol-0906-ai-x86.iso</replaceable> <replaceable>/export/aiserver/osol-0906-ai-x86</replaceable></command></screen><para>In this example, the command sets up a new install service named <literal>0906x86</literal>. The command also sets up a DHCP server on this system,
if one hasn't been set up yet.  A new DHCP macro, <filename>dhcp_macro_0906x86</filename>, for the install service will be created. The install service will serve
5 IP addresses, starting from 172.1.0.10.</para><itemizedlist><para>In this example, the command options perform as follows:</para><listitem><para>Using the <option>n</option> option, the command specifies
a name, <literal>0906x86</literal>, for the new install service.</para><note><para>If you do not supply a service name, <command>installadm create-service</command> creates a unique name for the install service using the format, <literal>_install_service_&lt;port_number&gt;</literal>.</para>
</note>
</listitem><listitem><para>Using the <option>i</option> option, the command sets up a
new DHCP server. The IP addresses are set up starting from <literal>172.1.0.10</literal>.</para>
</listitem><listitem><para>Using the <option>c</option> option, the command sets up a
total number of 5 IP addresses in the DHCP table.</para>
</listitem><listitem><para>Using the <option>s</option> option and its argument, <filename>/export/aiimages/osol-0906-ai-x86.iso</filename>, the command specifies the
location of an AI ISO image. In this case, the AI ISO image is an x86 image.
This AI ISO image, however, is compacted and is not ready for client installations.</para>
</listitem><listitem><para>The last command-line argument, <literal>/export/aiserver/osol-0906-ai-x86</literal>, specifies the location where the command unpacks and stores the image that
was specified by the <option>s</option> option. The resulting net image in
this location enables client installations.</para>
</listitem>
</itemizedlist>
</step><step><para>Boot the client from the network.</para><note><para>It may be necessary to modify the BIOS configuration to select
network booting.</para>
</note>
</step><step><para>When the client boots, select the network device to boot from.</para>
</step>
</substeps>
</step><step><para>To set up an install service for SPARC clients, use the following
procedure:</para><substeps><step><para>Create an install service by using the <command>installadm create-service</command> command, as in the following example:</para><screen># <command>installadm create-service <option>n</option> <replaceable>0906sparc</replaceable> <option>i</option> <replaceable>172.1.0.10</replaceable> <option>c</option> <replaceable>5</replaceable></command> \
<command><option>s</option> <replaceable>/export/aiimages/osol-0906-ai-sparc.iso</replaceable> <replaceable>/export/aiserver/osol-0906-ai-sparc</replaceable></command></screen><para>In this example, the command sets up a new install service named <literal>0906sparc</literal>. The command also sets up a DHCP server on this system,
if one hasn't been set up yet. A macro, <literal>dhcp_macro_0906sparc</literal>, for the install service will be created in the DHCP server, and 5 IP addresses,
starting from 172.1.0.10, will be allocated to that macro.</para><itemizedlist><para>In this example, the command options perform as follows:</para><listitem><para>Using the <option>n</option> option, the command specifies
a name, <literal>0906sparc</literal>, for the new install service.</para>
</listitem><listitem><para>Using the <option>i</option> option, the command sets up a
new DHCP server. The IP addresses, starting from <literal>172.1.0.10</literal>, are set up.</para>
</listitem><listitem><para>Using the <option>c</option> option, the command sets up a
total number of 5 IP addresses in the DHCP table.</para>
</listitem><listitem><para>Using the <option>s</option> option, the command specifies
an AI ISO image, <filename>/export/aiimages/osol-0906-ai-sparc.iso</filename>, that can be used to install the OpenSolaris OS to a client. In this case,
the AI ISO image is a SPARC image. This AI ISO image, however, is compacted
and is not ready for client installations.</para>
</listitem><listitem><para>In the last field, the command specifies a location, <filename>/export/aiserver/osol-0906-ai-sparc</filename>, where the command unpacks
and stores the image that was specified by the <option>s</option> option .
The net image in this location enables client installations.</para>
</listitem>
</itemizedlist>
</step><step><para>For SPARC clients, boot with the following command from the open
boot prompt:</para><screen>OK <command>boot net:dhcp</command></screen>
</step>
</substeps>
</step>
</stepalternatives>
</step>
</procedure><taskrelated role="troubleshooting"><para>For further information, see <olink targetptr="administer" remap="internal"></olink>.
See, also, <olink type="auto-generated" targetptr="trouble" remap="internal"></olink>.</para>
</taskrelated>
</task>
</sect1><sect1 id="advancedsetup"><title>How to Complete Server Setup (Advanced Instructions)</title><para>If you already have DHCP server set up, use the following advanced instructions.
For networks where the DHCP server is a separate system from the install server,
additional administration tasks on the DHCP server are required to properly
set up the automated install environment. In these cases, the following advanced
instructions for completing setup replaces the simple instructions above.</para><task id="advancedsetup1"><title>Completing Server Setup</title><taskprerequisites><para>Complete the initial setup instructions provided in <olink type="auto-generated" targetptr="initial" remap="internal"></olink>.</para>
</taskprerequisites><procedure><step><para>Create an install service using either the following x86 or SPARC
instructions:</para><stepalternatives><step><para>For an x86 install service, use the <command>installadm create-service</command> command, as in this example:</para><screen># <command>installadm create-service <option>n</option> <replaceable>0906x86</replaceable> <option>s</option> <replaceable>/export/aiimages/osol-0906-ai-x86.iso</replaceable></command> \
<command><replaceable>/export/aiserver/osol-0906-ai-x86</replaceable></command></screen><para>The following displays:</para><screen>Setting up the target image at /export/aiserver/osol-0906-ai-x86 ...
Registering the service 0906x86._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_0906x86 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : 0906x86
   GRUB Menu      (GrubMenu) : menu.lst.0906x86
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, dhcp_macro_0906x86:
   /usr/sbin/dhtadm -g -A -m dhcp_macro_0906x86 \
-d :BootSrvA=10.6.68.29:BootFile=0906x86:GrubMenu=menu.lst.0906x86:

Additionally, if the site specific symbol GrubMenu
is not present, please add it as follows:
   /usr/sbin/dhtadm -g -A -s GrubMenu -d Site,150,ASCII,1,0

Note: Be sure to assign client IP address(es) if needed
(e.g., if running Sun's DHCP server, run pntadm(1M)).
copying boot file to /tftpboot/pxegrub.I86PC.OpenSolaris-1
Service discovery fallback mechanism set up</screen><para>In this example, the command creates an install service named <filename>0906x86</filename>, using the AI ISO image previously downloaded at <filename>/export/aiimages/osol-0906-ai-x86.iso</filename>, and stores the resultant
net image at <filename>/export/aiserver/0906x86</filename>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906x86</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server.</para><para>If you are setting up a Sun DHCP server and client IP addresses need
to be assigned, you may need to use the <command>pntadm(1M)</command> command.
For more information, see the <command>pntadm(1M)</command> man page.</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> and <command>pntadm</command> commands. For more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</step><step><para>For a SPARC install service, use the <command>installadm create-service</command> command as in this example:</para><screen># <command>installadm create-service <option>n</option> <replaceable>0906sparc</replaceable></command> \
<command><option>s</option> <replaceable>/export/aiimages/osol-0906-ai-sparc.iso</replaceable> <replaceable>/export/aiserver/osol-0906-ai-sparc</replaceable></command></screen><para>The following displays:</para><screen>Automated Installations will not work with the current server network setup.
Setting up the target image at /export/aiserver/osol-0906-ai-sparc ...
Registering the service 0906sparc._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_0906sparc with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : http://10.6.68.29:5555/cgi-bin/wanboot-cgi
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, dhcp_macro_0906sparc:
   /usr/sbin/dhtadm -g -A -m dhcp_macro_0906sparc \
-d :BootSrvA=10.6.68.29:BootFile=\"http://10.6.68.29: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</screen><para>In this example, the command creates an install service named <filename>0906sparc</filename>, using the AI ISO image previously downloaded at <filename>/export/aiimages/osol-0906-ai-sparc.iso</filename>, and stores the resultant
net image at <filename>/export/aiserver/osol-0906-ai-sparc</filename>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906sparc</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server.</para><para>If you are setting up a Sun DHCP server and client IP addresses need
to be assigned, you may need to use the <command>pntadm(1M)</command> command.
For more information, see the <command>pntadm(1M)</command> man page.</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> and <command>pntadm</command> commands. For more information, see the <command>dhcpmgr(1M)</command> man page.</para><note><para>For SPARC install services, the first install service created
on an install server is the service that will be used for all client installations
that use the install server. If you want a client to use a different install
service from this install server, you must use the <command>installadm create-client</command> command to create a client-specific configuration. See <olink targetptr="client" remap="internal"></olink>.</para>
</note>
</step>
</stepalternatives>
</step><step><para>Optional: Set up a custom install client to use the install service.</para><para>See the following x86 and SPARC examples.</para><stepalternatives><step><para>To set up a custom x86 install client, run the <command>installadm
create-client</command> command as shown in the following example:</para><screen># <command>installadm create-client <option>e</option> <replaceable>0:10:18:0f:28:26</replaceable> <option>n</option> <replaceable>0906x86</replaceable></command> \
<command><option>t</option> <replaceable>/export/aiserver/osol-0906-ai-x86</replaceable></command></screen><para>The following displays:</para><screen>Setting up X86 client...
Service discovery fallback mechanism set up

Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named 010010180F2826 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : 010010180F2826
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, 010010180F2826:
   /usr/sbin/dhtadm -g -A -m 010010180F2826 \
-d :BootSrvA=10.6.68.29:BootFile=010010180F2826:GrubMenu=menu.lst.010010180F2826:

Note: Be sure to assign client IP address(es) if needed
(e.g., if running Sun's DHCP server, run pntadm(1M)).</screen><para>In this example, the command creates a client-specific setup for the
system with a MAC address of <literal>0:10:18:0f:28:26</literal>. This client
will use the install service previously setup, named <filename>0906x86</filename>, and the install image at <filename>/export/aiserver/osol-0906-ai-x86</filename>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>010010180F2826</filename>, which needs to be added to the DHCP server.  If
you are using a Sun DHCP server, you can create the above macro on your DHCP
server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server:</para><para>If you are setting up a Sun DHCP server and client IP addresses need
to be assigned, you may need to use the <command>pntadm(1M)</command> command.
For more information, see the <command>pntadm(1M)</command> man page.</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> and <command>pntadm</command> commands. For more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</step><step><para>To set up a custom SPARC install client, run the <command>installadm
create-client</command> command as shown in the following example:</para><screen># <command>installadm create-client <option>e</option> <replaceable>0:e0:81:5d:bf:e0</replaceable></command> \
<command><option>t</option> <replaceable>/export/aiserver/osol-0906-ai-sparc</replaceable> <option>n</option> <replaceable>0906sparc</replaceable></command></screen><para>The following displays:</para><screen>Setting up SPARC client...
Creating SPARC configuration file

Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named 0100E0815DBFE0 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : http://10.6.68.29:5555/cgi-bin/wanboot-cgi
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, 0100E0815DBFE0:
   /usr/sbin/dhtadm -g -A -m 0100E0815DBFE0 \
-d :BootSrvA=10.6.68.29:BootFile=\"http://10.6.68.29: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)).</screen><para>In this example, the command creates a client-specific setup for the
system with a MAC address of <filename>0:e0:81:5d:bf:e0</filename>. This client
will use the install service previously setup, named <filename>0906sparc</filename>, and the install image at <filename>/export/aiserver/osol-0906-ai-sparc</filename>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906x86</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server:</para><para>If you are setting up a Sun DHCP server and client IP addresses need
to be assigned, you may need to use the <command>pntadm(1M)</command> command.
For more information, see the <command>pntadm(1M)</command> man page.</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> and <command>pntadm</command> commands. For more information, see the <command>dhcpmgr(1M)</command> man page. man page.</para>
</step>
</stepalternatives>
</step><step><para>Boot the client from the network.</para><substeps><step><para>For x86 clients, select the network device to boot from when the
client boots.</para><note><para>It may be necessary to modify the BIOS configuration to select
network booting.</para>
</note>
</step><step><para>For SPARC clients, boot with the following command from the open
boot prompt:</para><screen>OK <command>boot net:dhcp</command></screen>
</step>
</substeps>
</step>
</procedure><taskrelated role="troubleshooting"><para>For further information, see <olink targetptr="administer" remap="internal"></olink>.
See, also, <olink type="auto-generated" targetptr="trouble" remap="internal"></olink>.</para>
</taskrelated>
</task>
</sect1>
</chapter><chapter id="administer"><title>How to Administer an
Automated Install Server</title><highlights><para>Once you have set up an automated install server, you are ready to perform
the following administrative tasks when needed. The basic tasks are as follows:</para><itemizedlist><listitem><para>Set up install services and installation images, and set up
and update a DHCP server</para>
</listitem><listitem><para>Set up  or remove clients</para>
</listitem><listitem><para>Add or delete manifest files</para>
</listitem><listitem><para>Enable or disable install services</para>
</listitem><listitem><para>List services or list manifests for an install service</para>
</listitem><listitem><para>Administer install services by using the AI SMF service</para>
</listitem>
</itemizedlist><para>See the instructions and examples provided in the following sections.</para>
</highlights><sect1 id="add"><title>How to Add Install Services</title><para>Use one of the following procedures:</para><itemizedlist><listitem><para><olink targetptr="add1" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="additional" remap="internal"></olink></para>
</listitem>
</itemizedlist><sect2 id="add1"><title>How to Add an Install Service Correlated to IP Addresses</title><para>You can use the <command>installadm create-service</command> command
with <option>i</option> and <option>c</option> options to accomplish any of
the following:</para><itemizedlist><listitem><para>You want your install server to act as your DHCP server, and
you want to set up the proper DHCP settings on the server.</para>
</listitem><listitem><para>You want to correlate specific IP addresses with an install
service. Using the <option>i</option> and <option>c</option> options, the <command>installadm create-service</command> command assigns a starting IP address
and a total number of IP address to be made available to clients of the install
service.</para>
</listitem><listitem><para>You want to add more IP addresses that will correlate with
an install service.</para>
</listitem>
</itemizedlist><para>Use the command with the following options:</para><screen><command>installadm create-service [<option>i</option> <replaceable>dhcp_ip_start</replaceable> <option>c</option> <replaceable>count_of_ipaddr</replaceable>] [<option>s</option> <replaceable>srcimage</replaceable>] <replaceable>targetdir</replaceable></command></screen><itemizedlist><listitem><para>Using the <option>i</option> option, the command sets up a
new DHCP server. The IP addresses, starting from <replaceable>dhcp_ip_start</replaceable>, are set up.</para>
</listitem><listitem><para>Using the <option>c</option> option, the command sets up a
total number of IP addresses in the DHCP table equal to the value of the <replaceable>count_of_ipaddr</replaceable>. The first IP address is the value of <replaceable>dhcp_ip_start</replaceable> that is provided by the <option>i</option> option.</para>
</listitem><listitem><para>Using the <option>s</option> option, the command specifies
an AI ISO image, <replaceable>srcimage</replaceable>, to use for setting up
the install service. The source image is compacted and not ready for use in
installations. The command expands this image and places the resultant net
image in the <replaceable>targetdir</replaceable> location. This net image
enables client installations.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="service"><title>Example: How to Set Up a Server and Multiple x86
Clients</title><para>This example describes how the <command>installadm create-service</command> command can be used to set up one server that can install five x86 clients
in, for example, a classroom setting. The following describes the general
steps to this process. Then, specific command details are provided to illustrate
this process.</para><itemizedlist><para>This example has the following conditions:</para><listitem><para>The server and clients are in the same subnet.</para>
</listitem><listitem><para>You want to install the OpenSolaris 2009.06 release on the
first disk of each client.</para>
</listitem><listitem><para>All clients are identical systems, so no additional client
customizations are needed.</para>
</listitem><listitem><para>You need to set up a DHCP server on the installation server.</para>
</listitem>
</itemizedlist><para><emphasis role="strong">Run the following command to set up an install
service, providing the required initial image source and a target directory.</emphasis></para><para>Because this is the first install service created on this system, you
also must provide a starting IP address and a total number of IP addresses
to be made available for the clients.</para><screen><command>installadm create-service [<option>n</option> <replaceable>svcname</replaceable>] [<option>s</option> <replaceable>srcimage</replaceable>] [<option>i</option> <replaceable>dhcp_ip_start</replaceable></command> \
<command><option>c</option> <replaceable>count_of_ipaddr</replaceable>] <replaceable>targetdir</replaceable></command></screen><para>This single command sets up an install service on your system.</para><para><emphasis role="strong">See the following example:</emphasis></para><screen># <command>installadm create-service <option>n</option> <replaceable>0906x86</replaceable> <option>i</option> <replaceable>10.6.68.201</replaceable> <option>c</option> <replaceable>5</replaceable></command> \
<command><option>s</option> <replaceable>/export/aiimages/osol-0906-ai-x86.iso</replaceable> <replaceable>/export/aiserver/osol-0906-ai-x86</replaceable></command></screen><para>In this example, the terminal displays the progress as follows:</para><screen>Setting up the target image at /export/aiserver/osol-0906-ai-x86 ...
Registering the service 0906x86._OSInstall._tcp.local
Creating DHCP Server
Created DHCP configuration file.
Created dhcptab.
Added "Locale" macro to dhcptab.
Added server macro to dhcptab - line1-x4100.
DHCP server started.
Added network macro to dhcptab - 10.0.0.0.
Created network table.
copying boot file to /tftpboot/pxegrub.I86PC.OpenSolaris-1
Service discovery fallback mechanism set up</screen><para>The options in this example accomplish the following:</para><table frame="topbot" pgwide="1" id="gikbr"><title>Example Components</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="36.10*"/><colspec colwidth="63.90*"/><thead><row rowsep="1"><entry><para>Options</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><option>s</option> <literal>export/aiimages/osol-0906-ai-x86.iso</literal> </para>
</entry><entry><para>Using the <option>s</option> option, the command identifies the path
to an AI ISO image, <literal>export/aiimages/osol-0906-ai-x86.iso</literal>. This image is compacted and not usable for installations. The command unpacks
the image and stores the resultant net image in a target directory, <literal>/export/aiserver/osol-0906-ai-x86</literal>. This net image enables client
installations.</para>
</entry>
</row><row><entry><para><option>n</option> <literal>0906x86</literal></para>
</entry><entry><para>Using the <option>n</option> option, the command specifies a name, <literal>0906x86</literal>, for the new install service.</para>
</entry>
</row><row><entry><para><option>i</option> <literal>10.6.68.201</literal> <option>c</option> <literal>5</literal></para>
</entry><entry><itemizedlist><listitem><para>Using the <option>i</option> and <option>c</option> options,
the <command>installadm</command> command creates a DHCP server and macro.</para>
</listitem><listitem><para>The <option>i</option> option assigns a starting IP address
of <literal>10.6.68.201</literal>.</para>
</listitem><listitem><para>The <option>c</option> option allocates 5 IP addresses for
clients.</para>
</listitem><listitem><para>The command creates a macro, <literal>dhcp_macro_0906x86</literal>.</para><note><para>You can view the DHCP configuration results in the DHCP table
in the DHCP Manager by using the <command>/usr/sadm/admin/bin/dhcpmgr</command> utility.</para>
</note>
</listitem>
</itemizedlist>
</entry>
</row>
</tbody>
</tgroup>
</table><itemizedlist><para>The progress displays provides additional information:</para><listitem><para>The command creates default manifest files that are based
on the installation image. Additionally, the command associates the manifest
files with the install service. The progress display shows that the command
created an install service named <literal>0906x86</literal>.</para>
</listitem><listitem><para>The command creates a boot file, <literal>0906x86</literal>, under <command>/tftpboot</command>, and creates a <filename>menu.lst</filename> file. The client searches for and locates this boot file name through DHCP.</para><note><para>You can examine this information in the <literal>menu.lst</literal> file. In this example, the file would be called <filename>/tftpboot/menu.lst.0906x86</filename>.</para>
</note>
</listitem><listitem><para>The command also creates a link from the net image at <filename>/export/aiserver/osol-0906-ai-x86</filename> to a web server that is running
on port 5555.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="additional"><title>How to Add Install Services Without Specific
IP Addresses</title><para>If you already have the correct DHCP settings on your system, and you
do not want to specify additional IP addresses for clients, only a source
image and a target directory are required to set up an additional install
service. For example, if you want to have multiple install services on an
install server, you do not always need to add more IP addresses when you add
more services.</para><para>The syntax for this minimal command is as follows:</para><screen># <command>installadm create-service</command> [<option>s</option> <replaceable>srcimage</replaceable>] <replaceable>targetdir</replaceable></screen><para>Using the <option>s</option> option, the command specifies an ISO image, <replaceable>srcimage</replaceable>, to use for setting up the install service. The source
image is compacted and not ready for use in installations. The command expands
this image and places the resultant net image in the <replaceable>targetdir</replaceable> location. This net image enables client installations.</para><note><para>The command outputs the name of a client-specific macro and its
values. You need to add this information to the DHCP server.  To create the
macro on your DHCP server, use the DHCP Manager or run the <command>dhtadm</command> commands that are provided in the command output.</para>
</note>
</sect2><sect2 id="diffsystem"><title>Example: How to Set Up a Server to Install SPARC
and x86 Clients</title><para>This example describes how to set up one server that can install both
SPARC and x86 clients in, for example, a lab setting. The following describes
the general steps to this process. Then, specific examples are provided to
illustrate this process.</para><para>This example has the following conditions:</para><itemizedlist><listitem><para>The server and clients may not be on the same subnet.</para>
</listitem><listitem><para>You want to install the OpenSolaris OS on SPARC and x86 clients.</para>
</listitem><listitem><para>The DHCP server is remote.</para>
</listitem><listitem><para>You want to set up individual clients and assign specific
IP addresses to these clients.</para>
</listitem>
</itemizedlist><para><emphasis role="strong">Run the following commands to set up a SPARC
install service and an x86 install service.</emphasis></para><note><para>Because the DHCP server in this example is not set up by <command>installadm</command> commands, you should not provide a starting IP address
and a total number of IP addresses to be made available for the clients.</para>
</note><orderedlist><listitem><para>Set up a SPARC install service as follows:</para><screen># <command>installadm create-service <option>n</option> <replaceable>0906sparc</replaceable></command> \
<command><option>s</option> <replaceable>/export/aiimages/osol-0906-ai-sparc.iso</replaceable></command> \
<command><replaceable>/export/aiserver/osol-0906-ai-sparc</replaceable></command></screen><para>The following displays:</para><screen>Setting up the target image at /export/aiserver/osol-0906-ai-sparc ...
Registering the service 0906sparc._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_0906sparc with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : http://10.6.68.29:5555/cgi-bin/wanboot-cgi
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, dhcp_macro_0906sparc:
   /usr/sbin/dhtadm -g -A -m dhcp_macro_0906sparc \
-d :BootSrvA=10.6.68.29:BootFile=\"http://10.6.68.29: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</screen><para>In this example, the command creates an install service named <literal>0906sparc</literal>, using the AI ISO image previously downloaded at <literal>/export/aiimages/osol-0906-ai-sparc.iso</literal>, and storing the resultant
net image at <literal>/export/aiserver/osol-0906-ai-sparc</literal>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906sparc</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server:</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> command. For
more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</listitem><listitem><para>Set up an x86 install service as follows:</para><screen># <command>installadm create-service <option>n</option> <replaceable>0906x86</replaceable></command> \
<command><option>s</option> <replaceable>/export/aiimages/osol-0906-ai-x86.iso</replaceable></command> \
<command><replaceable>/export/aiserver/osol-0906-ai-x86</replaceable></command></screen><para>The following displays:</para><screen>Setting up the target image at /export/aiserver/osol-0906-ai-x86 ...
Registering the service 0906x86._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_0906x86 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : 0906x86
   GRUB Menu      (GrubMenu) : menu.lst.0906x86
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, dhcp_macro_0906x86:
   /usr/sbin/dhtadm -g -A -m dhcp_macro_0906x86 \
-d :BootSrvA=10.6.68.29:BootFile=0906x86:GrubMenu=menu.lst.0906x86:

Additionally, if the site specific symbol GrubMenu
is not present, please add it as follows:
   /usr/sbin/dhtadm -g -A -s GrubMenu -d Site,150,ASCII,1,0

Note: Be sure to assign client IP address(es) if needed
(e.g., if running Sun's DHCP server, run pntadm(1M)).
copying boot file to /tftpboot/pxegrub.I86PC.OpenSolaris-1
Service discovery fallback mechanism set up</screen><para>In this example, the command creates an install service named <literal>0906x86</literal>, using the AI ISO image previously downloaded at <literal>/export/aiimages/osol-0906-ai-x86.iso</literal>, and storing the resultant
net image at <literal>/export/aiserver/osol-0906-ai-x86</literal>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906x86</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server:</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> command. For
more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</listitem><listitem><para>Set up two SPARC clients with MAC addresses of <literal>0:14:4f:1d:b9:14</literal> and <literal>0:14:4f:22:90:50</literal> as follows:</para><orderedlist><listitem><para>Set up the first SPARC client:</para><screen># <command>installadm create-client <option>e</option> <replaceable>0:e0:81:5d:bf:e0</replaceable></command> \
<command><option>t</option> <replaceable>/export/aiserver/osol-0906-ai-sparc</replaceable> <option>n</option> <replaceable>0906sparc</replaceable></command></screen><para>The following displays:</para><screen>Setting up SPARC client...
Creating SPARC configuration file

Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named 0100E0815DBFE0 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : http://10.6.68.29:5555/cgi-bin/wanboot-cgi
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, 0100E0815DBFE0:
   /usr/sbin/dhtadm -g -A -m 0100E0815DBFE0 -d \
:BootSrvA=10.6.68.29:BootFile=\"http://10.6.68.29: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)).</screen><para>In this example, the command creates a client-specific setup for the
system with a MAC address of <literal>0:e0:81:5d:bf:e0</literal>. This client
will use the install service previously setup, named <literal>0906sparc</literal>, and the install image at <filename>/export/aiserver/osol-0906-ai-sparc</filename>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906sparc</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server:</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> command. For
more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</listitem><listitem><para>Set up the second SPARC client:</para><screen># <command>installadm create-client <option>e</option> <replaceable>0:e0:81:5d:bf:e0</replaceable></command> \
<command><option>t</option> <replaceable>/export/aiserver/osol-0906-ai-sparc</replaceable> <option>n</option> <replaceable>0906sparc</replaceable></command></screen><para>The following displays:</para><screen>Setting up SPARC client...
Creating SPARC configuration file

Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named 0100E0815DBFE0 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : http://10.6.68.29:5555/cgi-bin/wanboot-cgi
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, 0100E0815DBFE0:
   /usr/sbin/dhtadm -g -A -m 0100E0815DBFE0 -d \
:BootSrvA=10.6.68.29:BootFile=\"http://10.6.68.29: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)).</screen><para>In this example, the command creates a client-specific setup for the
system with MAC address of <literal>0:e0:81:5d:bf:e0</literal>. This client
will use the install service previously setup, named <literal>0906sparc</literal>, and the install image at <filename>/export/aiserver/osol-0906-ai-sparc</filename>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906sparc</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server:</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> command. For
more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</listitem>
</orderedlist>
</listitem><listitem><para>Create the x86 client with a MAC address of <literal>0:d:56:f2:c3:de</literal> as follows:</para><screen># <command>installadm create-client <option>e</option> <replaceable>0:10:18:0f:28:26</replaceable> <option>n</option> <replaceable>0906x86</replaceable></command> \
<command><option>t</option> <replaceable>/export/aiserver/osol-0906-ai-x86</replaceable></command></screen><para>The following displays:</para><screen>Setting up X86 client...
Service discovery fallback mechanism set up

Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named 010010180F2826 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : 010010180F2826
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, 010010180F2826:
   /usr/sbin/dhtadm -g -A -m 010010180F2826 -d \
:BootSrvA=10.6.68.29:BootFile=010010180F2826:GrubMenu=menu.lst.010010180F2826:

Note: Be sure to assign client IP address(es) if needed
(e.g., if running Sun's DHCP server, run pntadm(1M)).</screen><screen>If not already configured, enable network boot by creating
a macro named 01000D56F2C3DE with:
Boot server IP (BootSrvA) : 10.6.35.226
Boot file (BootFile) : 01000D56F2C3DE</screen><para>In this example, the command creates a client-specific setup for the
system with MAC address of <literal>0:d:56:f2:c3:de</literal>. This client
will use the install service previously setup, named <literal>0906x86</literal>, and the install image at <filename>/export/aiserver/osol-0906-ai-x86</filename>.</para><para>As shown above, this command outputs the name and values of a macro, <filename>dhcp_macro_0906x86</filename>, which needs to be added to the DHCP server.
 If you are using a Sun DHCP server, you can create the above macro on your
DHCP server either by using the DHCP Manager or by running the <command>dhtadm</command> commands, provided in the above output, on your DHCP server:</para><para>On systems which support graphic interfaces, you can use the DHCP Manager, <command>dhcpmgr</command>, instead of the <command>dhtadm</command> command. For
more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</listitem>
</orderedlist>
</sect2>
</sect1><sect1 id="delete"><title>How to Delete Install Services</title><para>The following command deletes an install service from your system:</para><screen># <command>installadm delete-service [<option>x</option>] <replaceable>svcname</replaceable></command></screen><para>With the <option>x</option> option, this command deletes an install
service and also removes the associated target image.</para><para>The <replaceable>svcname</replaceable> is a required field that specifies
the name of the install service to be removed.</para>
</sect1><sect1 id="list"><title>How to List Install Services on the Server</title><para>The following command displays a list of all enabled install services
on your subnet.</para><screen># <command>installadm list [<option>n</option> <replaceable>svcname</replaceable>]</command></screen><para>Using the <option>n</option> option, the command displays the names
of any manifests that are associated with the specified install service, <replaceable>svcname</replaceable>.</para>
</sect1><sect1 id="enable"><title>How to Enable and Disable Install Services</title><para>You can enable and disable install services on a system as follows:</para><sect2 id="enable2"><title>Enable an Install Service</title><para>Use the following command to enable a specified install service.</para><screen># <command>installadm enable <replaceable>svcname</replaceable></command></screen><para>The <replaceable>svcname</replaceable> field is required to specify
the name of the install service to be enabled.</para><para>This command also enables the web server associated with the service.</para>
</sect2><sect2 id="disable"><title>Disable an Install Service</title><para>Use the following command to disable a specified install service.</para><screen># <command>installadm disable <replaceable>svcname</replaceable></command></screen><para>The <replaceable>svcname</replaceable> field is required to specify
the name of the install service to be disabled.</para><para>This command also disables the web server associated with the service.</para>
</sect2>
</sect1><sect1 id="smf"><title>How to Administer Install Services by Using the AI
SMF Service</title><para>The automated installer includes the SMF service, <literal>svc:/system/install/server:default</literal>. This SMF service contains the data specific to each install service, such
as the following:</para><itemizedlist><listitem><para>Install service name</para>
</listitem><listitem><para>Image path</para>
</listitem><listitem><para>Boot file</para>
</listitem><listitem><para>Status of the install service</para>
</listitem><listitem><para>Webserver port</para>
</listitem>
</itemizedlist><sect2 id="smf2"><title>Using the AI SMF Service</title><para>You can perform the following tasks by using the automated installer's
SMF service:</para><itemizedlist><listitem><para>To see a list of the install services, run the following command:</para><screen># <command>svccfg <option>s</option> <replaceable>svc:/system/install/server:default</replaceable> <replaceable>listpg</replaceable></command></screen>
</listitem><listitem><para>Each install service is represented by an SMF property group, <literal>AI&lt;install service name&gt;</literal>. To see the data for a specific install
service, run the following command:</para><screen># <command>svccfg <option>s</option> <replaceable>svc:/system/install/server:default listprop</replaceable> <replaceable>property_group_name</replaceable></command></screen>
</listitem><listitem><para>The AI SMF service is enabled whenever you run the <command>installadm create-service</command> command. Also, the AI SMF service is
enabled anytime you run any of the other <command>installadm</command> command
options that impact existing install services. Alternately, you can enable
the SMF service by running the following command:</para><screen># <command>svcadm enable <replaceable>svc:/system/install/server:default</replaceable></command></screen><para>The service goes into maintenance mode if there are no install services
currently enabled on the install server.</para>
</listitem><listitem><para>You can disable the SMF service by running the following command:</para><screen># <command>svcadm disable <replaceable>svc:/system/install/server:default</replaceable></command></screen>
</listitem>
</itemizedlist><para>For further information about administering install services, see <olink type="auto-generated" targetptr="trouble" remap="internal"></olink>.</para>
</sect2>
</sect1>
</chapter><chapter id="client"><title>How to Administer a Custom
Install Client</title><highlights><para>You can install the OpenSolaris OS to multiple client systems by using
your install server. If all your client systems have the same hardware characteristics,
then the default installation specifications that you setup by using the <command>installadm create-service</command> command can be used for all client installations.
However, client setup is required if you want to install the OpenSolaris OS
to clients with varying hardware characteristics. For example, if you want
to install to both x86 clients and to SPARC clients, client setup is required.</para><note><para>If you plan to install to SPARC client systems, those systems
must support WAN boot. For more information, see <olink targetptr="wanboot" remap="internal"></olink></para>
</note>
</highlights><sect1 id="cclient"><title>How to Set Up an Install Client</title><para>You can use the <command>installadm create-client</command> command
to create specific client configurations and to limit the install services,
or to explicitly specify an install service name and image path, that a particular
type of client can discover.</para><para>In order to create custom client specifications, you need to provide
the following information:</para><itemizedlist><listitem><para>MAC address for the client.</para>
</listitem><listitem><para>Path of the net image to be used by the automated installer
for this client.</para>
</listitem><listitem><para>Name of the install service for the client to use for installation.</para>
</listitem><listitem><para>For x86 clients, you can optionally specify boot properties.</para>
</listitem>
</itemizedlist><para><emphasis role="strong">Use the following command to provide custom
client settings.</emphasis></para><para><command>installadm create-client [<option>b</option> <replaceable>property=value,...</replaceable>] <option>e</option> <replaceable>macaddr</replaceable> <option>t</option> <replaceable>imagepath</replaceable> <option>n</option> <replaceable>svcname</replaceable></command></para><para>This command has the following options:</para><itemizedlist mark="bullet"><listitem><para>Use the <option>e</option> option to specify the MAC address, <literal>macaddr</literal> , of the client.</para>
</listitem><listitem><para>Use the <option>t</option> option to specify the path, <literal>imagepath</literal>, for the net image to be used with the automated installer.</para><note><para>This net image was created when you set up an install service
by using the <command>installadm create-service</command> command.</para>
</note>
</listitem><listitem><para>Use the <option>n</option> option to specify an install service, <literal>svcname</literal>, for the client to use for installation.</para>
</listitem><listitem><para>For x86 systems only, the <option>b</option> option may be
used to set one or more property values, <replaceable>property=value,...</replaceable>,  in the client-specific <filename>menu.lst file</filename> in <filename>/tftpboot</filename>.  Use  this option to set boot properties that are specific
to this client. This option can accept multiple <literal>property=value</literal> pairs.</para>
</listitem>
</itemizedlist>
</sect1><sect1 id="scenario"><title>Example: Creating a Custom Install Client</title><para>The following example illustrates a specific case where you set up an
x86 client that references a specific install service name and a specific
source image location.</para><para><emphasis role="strong">Use the following example command.</emphasis></para><screen># <command>installadm create-client <option>b</option> <replaceable>"console=ttya"</replaceable> <option>e</option> <replaceable>0:e0:81:5d:bf:e0</replaceable></command> \
<command><option>t</option> <replaceable>/export/aiserver/osol-0906-ai-x86</replaceable> <option>n</option> <replaceable>0906x86</replaceable></command></screen><para>The terminal displays the following output:</para><screen>Setting up X86 client...
Service discovery fallback mechanism set up

Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named 0100E0815DBFE0 with:
   Boot server IP (BootSrvA) : 10.6.68.29
   Boot file      (BootFile) : 0100E0815DBFE0
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, 0100E0815DBFE0:
   /usr/sbin/dhtadm -g -A -m 0100E0815DBFE0 -d \
:BootSrvA=10.6.68.29:BootFile=0100E0815DBFE0:GrubMenu=menu.lst.0100E0815DBFE0:

Note: Be sure to assign client IP address(es) if needed
(e.g., if running Sun's DHCP server, run pntadm(1M)).</screen><itemizedlist mark="none"><listitem><para>Using the <option>b</option> option, the command sets the
console value, <literal>console=ttya</literal>, in the client-specific <filename>menu.lst file</filename> in <filename>/tftpboot</filename>.</para>
</listitem><listitem><para>Using the <option>e</option> option, the command specifies
the MAC address, <literal>0:e0:81:5d:bf:e0</literal>, of a particular client
that you want to customize.</para>
</listitem><listitem><para>Using the <option>n</option> option, the command specifies
an install service name, <literal>0906x86</literal>, that you want the client
to use for installation.</para>
</listitem><listitem><para>Using the <option>t</option> option, the command specifies
the path, <literal>/export/aiserver/osol-0906-ai-x86</literal>, for a net
image that you want to be used for the installation.</para><note><para>This net image was created when you set up an install service
by using the <command>installadm create-service</command> command.</para>
</note>
</listitem>
</itemizedlist><para>You can view the DHCP configuration results in the DHCP table in the
DHCP Manager by using the <command>/usr/sadm/admin/bin/dhcpmgr</command> utility.</para><para>Go to the <filename>/tftpboot</filename> directory and view the results
of the command as follows.</para><screen># cd /tftpboot
# ls -l
lrwxrwxrwx  13:23 0100E0815DBFE0 -&gt; pxegrub.I86PC.OpenSolaris-1
drwxr-xr-x  13:26 I86PC.OpenSolaris-1
-rw-r--r--  13:23 menu.lst.0100E0815DBFE0
-rwxr-xr-x  13:23 pxegrub.I86PC.OpenSolaris-1
-rw-r--r--  13:23 rm.0100E0815DBFE0

# cat menu.lst.0100E0815DBFE0
default=0
timeout=30
min_mem64=1536
title OpenSolaris 0906x86
        kernel /I86PC.OpenSolaris-1/platform/i86pc/kernel/unix -B 
console=ttya,install_media=http://135.134.0.10.:5555:/export/aiserver/osol-0906-ai-x86,
install_boot=http://135.134.0.10.:555:/export/aiserver/osol-0906-ai-x86/boot,
install_service=0906x86,livemode=text
       module /I86PC.OpenSolaris-1/x86.microroot</screen><para>See the following additional examples about how to set up custom x86
and SPARC clients:</para><itemizedlist><listitem><para><olink targetptr="service" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="diffsystem" remap="internal"></olink></para>
</listitem>
</itemizedlist>
</sect1><sect1 id="delclient"><title>How to Delete an Install Client</title><para>Use the following command to delete an existing install client.</para><screen># <command>installadm delete-client <replaceable>macaddr</replaceable></command></screen><para>This command deletes an existing client's specific service information
that was previously set up using the <command>installadm create-client</command> command.</para><para>The <literal>macaddr</literal> field is required to specify the MAC
address for the install client.</para><para>For help with client installations, see <olink targetptr="clients" remap="internal"></olink> and <olink targetptr="fails" remap="internal"></olink></para>
</sect1>
</chapter><chapter id="manifest"><title>How to Administer the Manifest Files
for an Install Service</title><highlights><para>When you create install services by using the <command>installadm create-service</command> command, these services contain XML <emphasis>manifest files</emphasis>.
These XML manifest files contain default specifications for installing the
OpenSolaris OS to client systems. You can copy the default manifest files
and manually edit the copies to create custom installation specifications
for particular client systems.</para>
</highlights><sect1 id="manifest1"><title>Types of Manifests</title><para>In the automated installer application, three kinds of manifests are
provided in each install service; <emphasis>AI manifests</emphasis>, <emphasis>SC manifests</emphasis>, and <emphasis>criteria manifests</emphasis>.</para><itemizedlist><listitem><para>The <emphasis>AI manifest</emphasis> is an XML document that
defines the client installation. Some of the parameters defined are disk target,
disk partitions and an Image Packaging System (IPS) repository. The AI manifest
schema is based on Relax NG syntax and is installed on the install server
as part of the <filename>SUNWauto-install-common</filename> package. This
package is installed automatically when you install the <filename>SUNWinstalladm-tools</filename> package on the install server. A copy of the AI schema is available at <filename>/usr/share/auto_install/ai_schema.rng</filename>.</para>
</listitem><listitem><para>The <emphasis>SC manifest</emphasis> or System Configuration
manifest contains the information needed to configure the system after installation
is completed. Some of the configuration parameters supported are timezone,
root password, and adding a user to the installed system. The SC manifest
uses DTD syntax. A copy of the schema is available at <filename>/usr/share/lib/xml/dtd/service_bundle.dtd.1</filename>.</para>
</listitem><listitem><para> The <emphasis>criteria manifest</emphasis> encompasses the
AI manifest file and the SC manifest file and associates them with a client.
The client sends its hardware characteristics to the install service and gets
the criteria manifest file that matches those characteristics. Then the client
is installed using the specifications from the criteria manifest. The criteria
manifest schema can be found at <filename>/usr/share/auto_install/criteria_schema.rng</filename> on the install server.</para>
</listitem>
</itemizedlist>
</sect1><sect1 id="customai"><title>How to Create New AI Manifests</title><para>When you create an install service by using the <command>installadm
create-service</command> command, an AI manifest is automatically copied to
the install service. This manifest has default settings that are sufficient
for client installations. However, you can change the specifications in an
existing manifest to create specific installations for specific clients.</para><para>The default AI manifest that is provided with install services is as
follows:</para><example><title>Default AI Manifest</title><screen>&lt;ai_criteria_manifest&gt;
    &lt;ai_embedded_manifest&gt;
        &lt;ai_manifest name=&quot;default&quot;&gt;
            &lt;ai_pkg_repo_default_authority&gt;
                &lt;main url=&quot;http://pkg.opensolaris.org/release&quot; authname=&quot;opensolaris.org&quot;/&gt;
                &lt;mirror url=&quot;&quot;/&gt;
            &lt;/ai_pkg_repo_default_authority&gt;
            &lt;ai_install_packages&gt;
                &lt;pkg name=&quot;entire&quot;/&gt;
                &lt;pkg name=&quot;SUNWcsd&quot;/&gt;
                &lt;pkg name=&quot;SUNWcs&quot;/&gt;
                &lt;pkg name=&quot;babel_install&quot;/&gt;
            &lt;/ai_install_packages&gt;
            &lt;ai_uninstall_packages&gt;
                    &lt;pkg name=&quot;babel_install&quot;/&gt;
                    &lt;pkg name=&quot;slim_install&quot;/&gt;
            &lt;/ai_uninstall_packages&gt;
            &lt;ai_auto_reboot&gt;
                false
            &lt;/ai_auto_reboot&gt;
        &lt;/ai_manifest&gt;
    &lt;/ai_embedded_manifest&gt;
    &lt;sc_embedded_manifest name = &quot;AI&quot;&gt;
        &lt;!-- &lt;"xml version='1.0'"&gt;
        &lt;!DOCTYPE service_bundle SYSTEM &quot;/usr/share/lib/xml/dtd/service_bundle.dtd.1&quot;&gt;
        &lt;service_bundle type=&quot;profile&quot; name=&quot;name&quot;&gt;
            &lt;service name=&quot;ai_properties&quot; version=&quot;1&quot; type=&quot;service&quot;&gt;
                &lt;instance name=&quot;default&quot; enabled=&quot;true&quot;&gt;
                    &lt;property_group name=&quot;ai&quot; type=&quot;application&quot;&gt;
                        &lt;propval name=&quot;username&quot; type=&quot;astring&quot; value=&quot;jack&quot;/&gt;
                        &lt;propval name=&quot;userpass&quot; type=&quot;astring&quot; value=&quot;9Nd/cwBcNWFZg&quot;/&gt;
                        &lt;propval name=&quot;description&quot; type=&quot;astring&quot; value=&quot;default_user&quot;/&gt;
                        &lt;propval name=&quot;rootpass&quot; type=&quot;astring&quot; \
value=&quot;$5$VgppCOxA$ycFmYW4ObRRHhtsGEygDdexk5bugqgSiaSR9niNCouC&quot;/&gt;
                        &lt;propval name=&quot;timezone&quot; type=&quot;astring&quot; value=&quot;US/Pacific&quot;/&gt;
                        &lt;propval name=&quot;hostname&quot; type=&quot;astring&quot; value=&quot;opensolaris&quot;/&gt;
                    &lt;/property_group&gt;
                &lt;/instance&gt;
             &lt;/service&gt;
        &lt;/service_bundle&gt;
    --&gt;
    &lt;/sc_embedded_manifest&gt;
&lt;/ai_criteria_manifest&gt;</screen>
</example><sect2 id="aifields"><title>AI Manifest Contents</title><para>The AI manifest is an XML file that contains a series of fields and
field values. Each field and value is enclosed inside XML tags.</para><para>The XML tags all contain a start tag, such as <literal>&lt;name&gt;</literal>, and an ending tag, such as <literal>&lt;/name&gt;</literal>. Within each
tag, a tag name is given, then that tag's value is given. A tag is a parameter
that specifies a piece of information about the manifest itself or about the
manifest's installation specifications. Each tag has a value that can be edited
to modify the manifest information or to modify the installation specifications
in the manifest.</para><para>For example, see this line in the manifest:</para><screen>&lt;ai_manifest name="default&quot;&gt;</screen><para>This <literal>&lt;ai_manifest name&gt;</literal> tag assigns a name to
the manifest. The value that is given for this tag is &ldquo;default.&rdquo;
You can change this value.</para><note><para>The <literal>&lt;ai_manifest name&gt;</literal> tag with the value, &ldquo;default,&rdquo;
indicates that the manifest is the default manifest. There can be only one
default manifest per install service. You can modify or replace the default
manifest.</para>
</note><itemizedlist><para>Note the following information about other fields in the AI manifest:</para><listitem><para>You can use the <literal>&lt;ai_target_device&gt;</literal> tag
to specify a particular target disk on which to install the OpenSolaris OS.
See <olink type="auto-generated" targetptr="iediskrepo" remap="internal"></olink>. If you do
not specify a target disk, the automated installer chooses a default target
for installing the OpenSolaris OS.</para><orderedlist><para>The default target disk is selected as follows:</para><listitem><para>The installer gets the recommended size for installing the
OpenSolaris OS from the AI libraries. Currently, the recommended size is 12
GB.</para>
</listitem><listitem><para>The installer searches for available disks on the client.</para><note><para>The installer selects only the following types of disks:</para><itemizedlist><listitem><para>For SPARC clients, the installer searches for disks with a
VTOC label.</para>
</listitem><listitem><para>For x86 clients, the installer searches for Solaris partitions.</para>
</listitem>
</itemizedlist>
</note>
</listitem><listitem><para>When the first disk is found, the installer checks the size
of that disk.</para><itemizedlist><listitem><para>If the size is greater than or equal to the recommended size,
the installer selects the disk and returns to the installation procedure.</para>
</listitem><listitem><para>If the size is less than the recommended size, the installer
goes to the next disk to check the size.</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>If there is no match, the automated installation fails.</para>
</listitem>
</orderedlist>
</listitem><listitem><para>The tag, <literal>&lt;ai_pkg_repo_default_authority&gt;</literal>, defines the IPS repository from which the installation will be performed.
You need to provide the URL of the IPS repository and the authority. In the
default AI manifest, the IPS repository is set to <ulink url="http://pkg.opensolaris.org/release/" type="url"></ulink>, and the authority is defined
as <literal>opensolaris.org</literal>.</para>
</listitem><listitem><para>In the tag, <literal>&lt;ai_install_packages&gt;</literal>, the
default manifest instructs the automated installer to install the following
packages to the client:</para><itemizedlist><listitem><para><literal>entire</literal></para>
</listitem><listitem><para><literal>SUNWcsd</literal></para>
</listitem><listitem><para><literal>SUNWcs</literal></para>
</listitem><listitem><para><literal>babel_install</literal></para>
</listitem>
</itemizedlist>
</listitem><listitem><para>The tag, <literal>&lt;ai_uninstall_packages&gt;</literal>, lists
packages, <literal>babel_install</literal> and <literal>slim_install</literal>, that will be uninstalled from the client.</para><note><para>Why does the default manifest first install the <literal>babel_install</literal> package, then uninstall it?</para><para><literal>babel_install</literal> is a cluster consisting of a set of packages. When the <literal>babel_install</literal> cluster is installed, all the packages in the cluster are installed. However,
you cannot uninstall packages that belong to a cluster. By uninstalling the
cluster definition, the individual packages can be deleted later. <literal>babel_install</literal> is used for convenience to install all the required
packages, but the cluster definition is not needed after installation of packages
are completed. The default manifest removes the cluster definition, so that
further customization of the packages can be done.</para><para><literal>slim_install</literal> is another cluster. And, <literal>slim_install</literal> is part of <literal>babel_install</literal> which is installed by the default manifest. The default
manifest uninstalls <literal>slim_install</literal>, in order to permit customization.</para>
</note>
</listitem><listitem><para>The tag, <literal>&lt;ai_auto_reboot&gt;</literal>, can be used
to request automatic reboot after successful installation. The default value
is <literal>false</literal>, meaning that the client doesn't automatically
reboot after successful installation. If this value is changed to <literal>true</literal>, the client automatically reboots after successful installation.</para>
</listitem><listitem><para>The second part of the default AI manifest is an embedded
SC manifest, beginning at the line:</para><screen>&lt;sc_embedded_manifest name = &quot;AI&quot;&gt;</screen><para>For instructions about how to modify the SC manifest, see <olink targetptr="customsc" remap="internal"></olink>.</para>
</listitem>
</itemizedlist><note><para>For a complete summary of the AI manifest contents and possible
values, see <olink type="auto-generated" targetptr="aimanifest" remap="internal"></olink>.</para>
</note>
</sect2><sect2 id="changeai"><title>How to Replace the Default AI Manifest</title><para>You can replace the default AI manifest for an install service with
a manifest that you created and revised to suit specific client specifications.
Use the following procedure:</para><orderedlist><listitem><para>Copy the automated installer's default manifest from the target
image path that is associated with the install service you plan to use.</para><para>The target image path can be determined with the following command:</para><screen># <command>svccfg <option>s</option> <replaceable>svc:/system/install/server:default</replaceable> <replaceable>listprop</replaceable> <replaceable>AI&lt;svcname&gt;/image_path</replaceable></command></screen><para>For example, see the following command and output:</para><screen># <command>svccfg <option>s</option> <replaceable>svc:/system/install/server:default</replaceable> <replaceable>listprop</replaceable> <replaceable>AIsvc1/image_path</replaceable></command> \
<command><replaceable>AIsvc1/image_path</replaceable> <replaceable>astring</replaceable> <replaceable>/export/aiserver/svc1</replaceable></command></screen><para>In the above example, the install service, <literal>svc1</literal>,
has an image path of <literal>/export/aiserver/svc1</literal>. The default
manifest, <literal>default.xml</literal>, located in this image path is at:</para><screen><filename>/export/aiserver/svc1/auto_install/default.xml</filename></screen><note><para>Only install services that were created with OpenSolaris 2009.06
images contain the <literal>default.xml</literal> manifest file in the image
path. For services created with older images, you can copy the <literal>default.xml</literal> manifest located on the install server at  <literal>/usr/share/auto_install/default.xml</literal>.</para>
</note>
</listitem><listitem><para>Keep the <literal>&lt;ai_manifest name&gt;</literal> tag in your
manifest copy set to the value of <literal>default</literal>.</para>
</listitem><listitem><para>Revise the <literal>&lt;ai_embedded_manifest&gt;</literal> and <literal>&lt;sc_embedded_manifest&gt;</literal> sections of your copy as needed.</para>
</listitem><listitem><para>Use the <command>installadm add</command> command to replace
the default manifest for an existing install service with your copy as follows:</para><screen># <command>/usr/sbin/installadm add <option>m</option> <replaceable>manifest_file</replaceable> <option>n</option> <replaceable>svc_name</replaceable></command></screen><para>Where <literal>manifest_file</literal> is the name of the manifest copy
that you created and modified, and where <literal>svc_name</literal> is the
name of the install service.</para><para>The <command>installadm add</command> command validates your manifest
before replacing the default manifest.</para>
</listitem>
</orderedlist><note><para>The build number or release of the OpenSolaris operating system
that you specify in the AI manifest must match the build number or release
of the AI ISO image that you specify in the <command>installadm create-service</command> command with the <option>s</option> option. For further information, see <olink targetptr="version" remap="internal"></olink>.</para>
</note>
</sect2><sect2 id="aioptions"><title>Examples of Modifying AI Manifest Contents</title><para>The following examples show other options for modifying the contents
of AI manifests.</para><note><para>The examples in this section are partial excerpts from AI manifest
files, showing only the fields being discussed in that example. Only the last
example shows a complete AI manifest.</para>
</note><para>For a complete list of the AI manifest contents and possible values,
see <olink type="auto-generated" targetptr="aimanifest" remap="internal"></olink>.</para><itemizedlist><listitem><para><olink targetptr="iediskrepo" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iempxio" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="ievtoc" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iereboot" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iepartition" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="createpart" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="ieslices" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="createvtoc" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iepreserve" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="repo" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="mirror" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="ieproxy" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iepkg" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="version" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iemorerepo" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="allfields" remap="internal"></olink></para>
</listitem>
</itemizedlist><sect3 id="iediskrepo"><title>Defining an Install Target</title><para>To specify a target on a client for installing the OpenSolaris OS, use
the tag, <literal>&lt;ai_target_device&gt;</literal>, as follows:</para><screen>&lt;ai_target_device&gt;
     &lt;target_device_name&gt;c0t0d0&lt;/target_device_name&gt;
&lt;/ai_target_device&gt;</screen><para>If you do not specify a target disk, the automated installer chooses
a default target for installing the OpenSolaris OS. See <olink type="auto-generated" targetptr="targetdisk" remap="internal"></olink>.</para>
</sect3><sect3 id="iempxio"><title>Using an MPXIO Name as the Install Target</title><para>An MPXIO name, such as <literal>c0t0000002037CD9F72d0</literal>, can
be used instead of <literal>cXtXdX</literal> since the MPXIO name for the
device doesn't change between releases. To use the MPXIO device name as the
target device, use the MPXIO name, as per the following snippet:</para><screen>&lt;ai_target_device&gt;
     &lt;target_device_name&gt;c0t0000002037CD9F72d0&lt;/target_device_name&gt;
&lt;/ai_target_device&gt;</screen>
</sect3><sect3 id="ievtoc"><title>Selecting a VTOC Slice to Install OpenSolaris</title><para>If a slice isn't specified, the automated installer, by default, selects
slice 0 on the client to install the OpenSolaris OS. If you would like to
install the OpenSolaris OS on a different slice, you can specify the slice
in the AI manifest in the <literal>&lt;ai_target_device&gt;</literal> tag.</para><para>This example instructs the installer to install the OpenSolaris OS on
slice 4.</para><screen>&lt;ai_target_device&gt;
     &lt;target_device_name&gt;c0t0000002037CD9F72d0&lt;/target_device_name&gt;
     &lt;target_device_install_slice_number&gt;4&lt;/target_device_install_slice_number&gt;
&lt;/ai_target_device&gt;</screen>
</sect3><sect3 id="iereboot"><title>Automatic Reboot After Installation</title><para>By default, the automated installer doesn't reboot the client after
successful installation of an OpenSolaris OS. However, if you want the client
to automatically reboot after a successful installation of the OpenSolaris
OS, add the XML tag, <literal>&lt;ai_auto_reboot&gt;</literal>, in the AI manifest,
and set the reboot value in that tag to <literal>true</literal>, as per the
following snippet:</para><screen>&lt;ai_auto_reboot&gt;
     true
&lt;/ai_auto_reboot&gt;</screen>
</sect3><sect3 id="iepartition"><title>Deleting an <literal>fdisk</literal> Partition
(X86 only)</title><note><para>Partition operations are meaningful only for X86 clients.</para>
</note><para>You can delete existing partitions during client installation. Use the
tag, <literal>&lt;ai_device_partitioning&gt;</literal>, and specify the <literal>delete</literal> action in the tag to delete a partition during installation.</para><screen>&lt;ai_device_partitioning&gt;
      &lt;partition_action&gt;delete&lt;/partition_action&gt;
      &lt;partition_number&gt;3&lt;/partition_number&gt;
&lt;/ai_device_partitioning&gt;</screen>
</sect3><sect3 id="createpart"><title>Creating an <literal>fdisk</literal> Partition
(X86 only)</title><note><para>Partition operations are meaningful only for X86 clients.</para>
</note><para>You can create a new partition during client installation. Use the tag, <literal>&lt;ai_device_partitioning&gt;</literal>, and specify the <literal>create</literal> action in the tag to create a partition during installation.</para><para>The following example creates a Solaris partition. This example uses
Gigabytes (GB) as the unit for partition size. You could use megabytes (MB),
terabytes (TB), or sectors to define a partition. </para><screen>&lt;ai_device_partitioning&gt;
      &lt;partition_action&gt;create&lt;/partition_action&gt;
      &lt;partition_type&gt;SOLARIS&lt;/partition_type&gt;
      &lt;partition_size&gt;30&lt;/partition_size&gt;
      &lt;partition_size_units&gt;GB&lt;/partition_size_units&gt;
&lt;/ai_device_partitioning&gt;</screen>
</sect3><sect3 id="ieslices"><title>Deleting a VTOC Slice</title><para>You can delete an existing VTOC slice during client installation. Use
the tag, <literal>&lt;ai_device_vtoc_slices&gt;</literal>, and specify the <literal>delete</literal> action in the tag to delete a slice during installation.</para><note><para>The size element is required, but only for XML validation.</para>
</note><screen>&lt;ai_device_vtoc_slices&gt;
       &lt;slice_action&gt;delete&lt;/slice_action&gt;
       &lt;slice_number&gt;0&lt;/slice_number&gt;
       &lt;slice_size&gt;20&lt;/slice_size&gt;
&lt;/ai_device_vtoc_slices&gt;</screen>
</sect3><sect3 id="createvtoc"><title>Creating a VTOC Slice</title><para>You can create a new VTOC slice during client installation. Use the
tag, <literal>&lt;ai_device_vtoc_slices&gt;</literal>, and specify the <literal>create</literal> action in the tag to create a slice during installation.
The following example shows how to create a new slice 5.</para><para>This example uses GB (Gigabytes) as the unit for slice size.</para><screen>&lt;ai_device_vtoc_slices&gt;
       &lt;slice_action&gt;create&lt;/slice_action&gt;
       &lt;slice_number&gt;5&lt;/slice_number&gt;
       &lt;slice_size&gt;20&lt;/slice_size&gt;
       &lt;slice_size_units&gt;GB&lt;/slice_size_units&gt;
&lt;/ai_device_vtoc_slices&gt;</screen>
</sect3><sect3 id="iepreserve"><title>Preserving VTOC Slices</title><para>You can preserve an existing VTOC slice during client installation.
Use the tag, <literal>&lt;ai_device_vtoc_slices&gt;</literal>, and specify the &ldquo;preserve&rdquo;
action in the tag to preserve an existing slice during installation. The following
example shows how to preserve VTOC slice 7.</para><screen>&lt;ai_device_vtoc_slices&gt;
       &lt;slice_action&gt;preserve&lt;/slice_action&gt;
       &lt;slice_number&gt;7&lt;/slice_number&gt;
&lt;/ai_device_vtoc_slices&gt;</screen>
</sect3><sect3 id="repo"><title>Specifying an IPS Repository</title><para>The automated installer client must install packages from an IPS repository.
The IPS repository can be defined in the AI manifest by using the tag <literal>&lt;ai_pkg_repo_default_authority&gt;</literal>. This example specifies the
repository located at <ulink url="http://pkg.opensolaris.org" type="url"></ulink>. The name of this repository is <literal>opensolaris.org</literal>.</para><screen>&lt;ai_manifest name=&quot;ai_manifest1&quot;&gt;
      &lt;ai_pkg_repo_default_authority&gt;
          &lt;main url=&quot;http://pkg.opensolaris.org&quot; authname=&quot;opensolaris.org&quot;/&gt;
      &lt;/ai_pkg_repo_default_authority&gt;
&lt;/ai_manifest&gt;</screen>
</sect3><sect3 id="mirror"><title>Specifying an IPS Repository Mirror</title><para>You can add a mirror to an IPS repository in the AI manifest as in this
example:</para><screen>&lt;ai_manifest name=&quot;ai_manifest1&quot;&gt;
      &lt;ai_pkg_repo_default_authority&gt;
          &lt;main url=&quot;http://pkg.opensolaris.org&quot; authname=&quot;opensolaris.org&quot;/&gt;
          &lt;mirror url="http://mymirror.test"&gt;
      &lt;/ai_pkg_repo_default_authority&gt;
&lt;/ai_manifest&gt;</screen>
</sect3><sect3 id="ieproxy"><title>Specifying an HTTP Proxy to Reach an IPS Repository</title><para>The client needs to reach the IPS repository defined in the AI manifest
to install the OpenSolaris OS. In a normal configuration, the DHCP server
sends DNS information to the client. This information is used to resolve the
IPS repository name to an IP address. In cases where DNS is not set up, an
HTTP proxy can be used to resolve the IPS repository name and complete the
client installation. The XML tag, <literal>&lt;ai_http_proxy&gt;</literal>, and
value in the manifest can contain the URL of the proxy as follows:</para><screen>&lt;ai_manifest name=&quot;http_proxy&quot;&gt;
     &lt;ai_pkg_repo_default_authority&gt;
         &lt;main url=&quot;http://pkg.opensolaris.org&quot; authname=&quot;opensolaris.org&quot;/&gt;
     &lt;/ai_pkg_repo_default_authority&gt;
     &lt;ai_http_proxy url="http://129.101.77.121:8080"/&gt;
&lt;/ai_manifest&gt;</screen>
</sect3><sect3 id="iepkg"><title>Specifying Packages to be Installed</title><para>The following packages are needed for a successful installation of the
OpenSolaris OS and are included in the AI default manifest:</para><itemizedlist><listitem><para><literal>entire</literal></para>
</listitem><listitem><para><literal>SUNWcsd</literal></para>
</listitem><listitem><para><literal>SUNWcs</literal></para>
</listitem><listitem><para><literal>babel_install</literal></para>
</listitem>
</itemizedlist><para>In the <literal>&lt;ai_install_packages&gt;</literal> tag, you can additional
packages to be added during installation. However, you need to retain the
default packages along with the additional packages.</para><para>In the following example, the <literal>openoffice</literal> and the <literal>SUNWTcl</literal> packages are added as part of the OpenSolaris installation.</para><screen>&lt;ai_manifest name=&quot;ai_packages&quot;&gt;
     &lt;ai_install_packages&gt;
         &lt;pkg name="entire"/&gt;
         &lt;pkg name="SUNWcsd"/&gt;
         &lt;pkg name="SUNWcs"/&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="openoffice"/&gt;
         &lt;pkg name="SUNWTcl"/&gt;
     &lt;/ai_install_packages&gt;
     &lt;ai_uninstall_packages&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="slim_install"/&gt;
     &lt;/ai_uninstall_packages&gt;
&lt;/ai_manifest&gt;</screen><note><para>The default manifest first installs the <literal>babel_install</literal> package, then uninstalls it.  <literal>babel_install</literal> is a cluster
consisting of set of packages. When the <literal>babel_install</literal> cluster
is installed, all the packages in the cluster are installed. However, you
cannot uninstall packages that belong to a cluster. By uninstalling the cluster
definition, the individual packages can be deleted later. <literal>babel_install</literal> is used for convenience to install all the required packages, but the cluster
definition is not needed once installation of packages is completed. The default
manifest removes the cluster definition, so that further customization of
the packages can be done.</para><para><literal>slim_install</literal> is another
cluster. And, <literal>slim_install</literal> is part of <literal>babel_install</literal> which is installed by the default manifest. The default manifest then uninstalls <literal>slim_install</literal>, in order to permit customization.</para>
</note>
</sect3><sect3 id="version"><title>Specifying Packages to Install a Specific Version
of OpenSolaris</title><para>If the packages are specified as package names in the manifest without
a version noted, the automated installer installs the latest version of the
packages. If you want to install a specific version of the OpenSolaris OS,
you can specify the version in the package <literal>entire</literal>.</para><para>The IPS repositories include the full FMRI for each version of a package.
Use the FMRI string to specify a specific version of the package, <literal>entire</literal>, in the AI manifest.</para><para> The following example specifies that OpenSolaris build 111 be installed
to the client.</para><screen>&lt;ai_manifest name=&quot;ai_packages&quot;&gt;
     &lt;ai_install_packages&gt;
         &lt;pkg name="entire@0.5.11-0.111"/&gt;
         &lt;pkg name="SUNWcsd"/&gt;
         &lt;pkg name="SUNWcs"/&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="openoffice"/&gt;
         &lt;pkg name="SUNWTcl"/&gt;
     &lt;/ai_install_packages&gt;
     &lt;ai_uninstall_packages&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="slim_install"/&gt;
     &lt;/ai_uninstall_packages&gt;
&lt;/ai_manifest&gt;</screen><note><para>The build number or release of the AI ISO image that you specify
in the <command>installadm create-service</command> command must be the same
build number or release of the OpenSolaris operating system that you specify
in the AI manifest.</para>
</note>
</sect3><sect3 id="iemorerepo"><title>Installing From More Than One IPS Repository</title><para>You can install custom packages from an IPS repository other than the
repository that was used for installation by specifying additional IPS repositories
in the AI manifest. Use the tag, <literal>&lt;ai_pkg_repo_additional_authority&gt;</literal>, to add additional repositories to the AI manifest.</para><screen>&lt;ai_manifest name=&quot;example1&quot;&gt;
    &lt;ai_pkg_repo_default_authority&gt;
        &lt;main url=&quot;http://pkg.opensolaris.org&quot; authname=&quot;opensolaris.org&quot;/&gt;
    &lt;/ai_pkg_repo_default_authority&gt;
    &lt;ai_pkg_repo_additional_authority&gt;
        &lt;main url=&quot;http://pkg.mydomain&quot; authname=&quot;mydomain&quot;/&gt;
    &lt;/ai_pkg_repo_additional_authority&gt;
&lt;/ai_manifest&gt;</screen><note><para>Sometimes a package might be included in more than one repository.
IPS searches for that package in the repositories according to the order of
the repository in the manifest. When a package match that includes version
number is found, then IPS stops the search and installs that package.</para>
</note>
</sect3><sect3 id="allfields"><title>A Complete AI Manifest</title><para>The following example shows a complete AI manifest where all the primary
fields are in use.</para><screen>&lt;ai_manifest name=&quot;ai_manifest1&quot;&gt;
     &lt;ai_target_device&gt;
         &lt;target_device_name&gt;c0t0d0&lt;/target_device_name&gt;
     &lt;/ai_target_device&gt;    			&lt;!-- delete partition 3 --&gt;
     &lt;ai_device_partitioning&gt;
         &lt;partition_action&gt;delete&lt;/partition_action&gt;
         &lt;partition_number&gt;3&lt;/partition_number&gt;
     &lt;/ai_device_partitioning&gt;
     &lt;ai_device_partitioning&gt;   			&lt;!-- Create solaris partition --&gt;
         &lt;partition_action&gt;create&lt;/partition_action&gt;
         &lt;partition_size&gt;30&lt;/partition_size&gt;
         &lt;partition_size_units&gt;GB&lt;/partition_size_units&gt;
         &lt;partition_type&gt;SOLARIS&lt;/partition_type&gt;
     &lt;/ai_device_partitioning&gt;
     &lt;ai_device_vtoc_slices&gt;    			&lt;!-- Create VTOC slice 4 --&gt;
         &lt;slice_action&gt;create&lt;/slice_action&gt;
         &lt;slice_number&gt;0&lt;/slice_number&gt;
         &lt;slice_size&gt;30&lt;/slice_size&gt;
         &lt;slice_size_units&gt;GB&lt;/slice_size_units&gt;
     &lt;/ai_device_vtoc_slices&gt;
     &lt;ai_pkg_repo_default_authority&gt;   			&lt;!-- IPS repository --&gt;
         &lt;main url=&quot;http://pkg.opensolaris.org&quot; authname=&quot;opensolaris.org&quot;/&gt;
     &lt;/ai_pkg_repo_default_authority&gt;
     &lt;ai_http_proxy url="http://129.101.77.121:8080"/&gt;   	&lt;!-- Use http proxy to install pkgs from IPS --&gt;
     &lt;ai_auto_reboot&gt;true&lt;/ai_auto_reboot&gt;    		&lt;!-- Automatic reboot after successful installation --&gt;
     &lt;ai_install_packages&gt;
         &lt;pkg name="entire"
         &lt;pkg name="SUNWcsd"/&gt;
         &lt;pkg name="SUNWcs"/&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="SUNWTcl"/&gt;
     &lt;/ai_install_packages&gt;
     &lt;ai_uninstall_packages&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="slim_install"/&gt;
     &lt;/ai_uninstall_packages&gt;
&lt;/ai_manifest&gt;</screen>
</sect3>
</sect2>
</sect1><sect1 id="customsc"><title>How to Create Custom SC Manifest Files</title><para>The SC manifest file provides system configuration specifications for
the installed system. You can customize the configuration settings by editing
the variable after <literal>value=</literal> for each of the properties. Below
is a complete SC manifest file. Just copy this file and make changes to the
attributes to edit the user/password, root password, and timezone fields.</para><sect2 id="current"><title>Modifying the 2009.06 SC Manifest</title><para>For the OpenSolaris 2009.06 release, encrypted passwords are used in
the manifest. In the example below, the encrypted user password is &ldquo;jack&rdquo;,
and the root password is &ldquo;opensolaris&rdquo;.</para><note><para>One method of generating encrypted passwords for the OpenSolaris
OS is to create a user of the intended name and password on the OpenSolaris
OS, copy the password from the <filename>/etc/shadow</filename> file between
the 1st and 2nd colons of the user's record, and add that information into
the 'userpass' or 'rootpass' values in the manifest.</para>
</note><para>In the following SC manifest example, you could change the user name
from &ldquo;jack&rdquo; to &ldquo;mike&rdquo; in the <literal>username</literal> property.</para><screen>&lt;?xml version='1.0'?&gt;
&lt;!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'&gt;
&lt;service_bundle type='profile' name='name'&gt;
    &lt;service name='ai_properties' version='1' type='service'&gt;
        &lt;instance name='default' enabled='false'&gt;
             &lt;property_group name='ai' type='application'&gt;
                 &lt;propval name='username' type='astring' value='jack' /&gt;
                 &lt;propval name='description' type='astring' value='default user' /&gt;
                 &lt;propval name='userpass' type='astring' value='9Nd/cwBcNWFZg' /&gt;
                 &lt;propval name='rootpass' type='astring' \
value='$5$VgppCOxA$ycFmYW4ObRRHhtsGEygDdexk5bugqgSiaSR9niNCouC' /&gt;
                 &lt;propval name='timezone' type='astring' value='US/Pacific' /&gt;
                 &lt;propval name='hostname' type='astring' value='opensolaris' /&gt;
             &lt;/property_group&gt;
        &lt;/instance&gt;
    &lt;/service&gt;
&lt;/service_bundle&gt;</screen>
</sect2>
</sect1><sect1 id="criteria"><title>How to Assign Manifests to a Client</title><para>If you want to create new AI manifests and SC manifests, you need to
assign the manifests for use with a particular client. Use the following basic
procedure:</para><orderedlist><listitem><para>Create your AI manifest. You can copy and use the default
manifest that is provided in <olink targetptr="customai" remap="internal"></olink>. Or, you
can copy and use the sample manifest that uses all parameters in <olink targetptr="allfields" remap="internal"></olink>.</para><para>Save your AI manifest in a file
named <filename>ai_manifest1.xml</filename>.</para>
</listitem><listitem><para>Create an SC manifest by copying and modifying the example
in <olink targetptr="current" remap="internal"></olink>. </para><para>Save your SC manifest
in a file named <filename>sc_mainfest1.xml</filename>.</para>
</listitem><listitem><para>Create a criteria manifest based on the specifications of
the client. You can use the example in <olink targetptr="ieipadd" remap="internal"></olink> as the first draft for a new criteria manifest. Then see the other examples
below to modify your draft.</para><para> The criteria manifest file is the
bridge that connects the AI manifest file and the SC manifest file with a
client. Use the criteria manifest file to add the manifests to an install
service. The client sends its hardware characteristics to the install service
and gets the manifest file that you assigned to the service.</para><para>The criteria manifest includes the file location of your AI manifest
and your SC manifest inside the criteria manifest. See the criteria manifest
examples below that refer to the AI manifest, <filename>ai_manifest1.xml</filename>, and the SC manifest, <filename>sc_mainfest1.xml</filename>.</para>
</listitem><listitem><para>Add the criteria manifest to the install service by running
the following command:</para><screen># <command>installadm add <option>m</option> <replaceable>manifest.xml</replaceable> <option>n</option> <replaceable>svcname</replaceable></command></screen><para>Where <literal>manifest.xml</literal> file is the name of your criteria
manifest, and that manifest is being assigned to the install service named <literal>svcname</literal>.</para>
</listitem>
</orderedlist><sect2 id="criteriaie"><title>Criteria Manifest Examples</title><para>The following examples show options for creating a criteria manifest.
Each example below is a complete criteria manifest.</para><itemizedlist><listitem><para><olink targetptr="ieipadd" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iemac" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="ierange" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="macrange" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iememory" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="iearch" remap="internal"></olink></para>
</listitem>
</itemizedlist><sect3 id="ieipadd"><title>Criteria Based on the Client IP Address</title><para>You can use this example as the first draft of a new criteria manifest.
Use the other examples to modify your draft.</para><para>The following example assigns <filename>ai_manifest1</filename> and <filename>sc_manifest1</filename> to the client with IP address, <literal>10.6.68.127</literal>. </para><screen>&lt;ai_criteria_manifest&gt;
    &lt;ai_criteria name=&quot;IPV4&quot;&gt;
        &lt;value&gt;10.6.68.127&lt;/value&gt;
    &lt;/ai_criteria&gt;
    &lt;ai_manifest_file URI=&quot;./ai_manifest1.xml&quot;/&gt;
    &lt;sc_manifest_file name=&quot;AI&quot; URI=&quot;./sc_manifest1.xml&quot;/&gt;
&lt;/ai_criteria_manifest&gt;</screen><note><para>In criteria manifests, include the full path for any manifest
file names that are referenced. In the examples in this section, the referenced
manifest files reside in the current directory. The path for a manifest file
in the current directory uses the format, <literal>./ai_manifest1.xml</literal>.</para>
</note>
</sect3><sect3 id="iemac"><title>Criteria Based on the Client MAC Address</title><para>The following example assigns <filename>ai_manifest1</filename> and <filename>sc_manifest1</filename> to the client with MAC address <literal>0:14:4f:20:53:94</literal>.</para><screen>&lt;ai_criteria_manifest&gt;
    &lt;ai_criteria name=&quot;MAC&quot;&gt;
        &lt;value&gt;0:14:4F:20:53:94&lt;/value&gt;
    &lt;/ai_criteria&gt;
    &lt;ai_manifest_file URI=&quot;./ai_manifest1.xml&quot;/&gt;
    &lt;sc_manifest_file name=&quot;AI&quot; URI=&quot;./sc_manifest1.xml&quot;/&gt;
&lt;/ai_criteria_manifest&gt; </screen>
</sect3><sect3 id="ierange"><title>Criteria Based on the Client IP Address Range</title><para>The following example assigns <filename>ai_manifest1</filename> and <filename>sc_manifest1</filename> to clients in the IP address range, <literal>10.6.68.1</literal> to <literal>10.6.68.200</literal>. Since there is more than 1 value, the
tag, <literal>&lt;range&gt;</literal>, should be used.</para><screen>&lt;ai_criteria_manifest&gt;
    &lt;ai_criteria name=&quot;IPV4&quot;&gt;
        &lt;range&gt;
            10.6.88.1
            10.6.68.200
        &lt;/range&gt;
    &lt;/ai_criteria&gt;
    &lt;ai_manifest_file URI=&quot;./ai_manifest1.xml&quot;/&gt;
    &lt;sc_manifest_file name=&quot;AI&quot; URI=&quot;./sc_manifest1.xml&quot;/&gt;
&lt;/ai_criteria_manifest&gt;</screen>
</sect3><sect3 id="macrange"><title>Criteria Based on the Client MAC Address Range</title><para>The following example assigns <filename>ai_manifest1</filename> and <filename>sc_manifest1</filename> to clients in the MAC address range, <literal>0:14:4F:20:53:94</literal> to <literal>0:14:4F:20:53:A0</literal>. Since there is more than 1 value,
the tag, <literal>&lt;range&gt;</literal>, should be used.</para><screen>&lt;ai_criteria_manifest&gt;
   &lt;ai_criteria name="MAC"&gt;
       &lt;range&gt;
           0:14:4F:20:53:94
           0:14:4F:20:53:A0
       &lt;/range&gt;
   &lt;/ai_criteria&gt;
   &lt;ai_manifest_file URI="./ai_manifest1.xml"/&gt;
   &lt;sc_manifest_file name="AI" URI="./sc_manifest1.xml"/&gt;
&lt;/ai_criteria_manifest&gt; </screen>
</sect3><sect3 id="iememory"><title>Criteria Based on the Client Memory Size</title><para>The following example assigns <filename>ai_manifest1</filename> and <filename>sc_manifest1</filename> to clients that have at least 2 Gbytes memory. The <literal>None</literal> keyword is used to express no bounding value. The value in
the <literal>&lt;range&gt;</literal> tag is expressed in megabytes, in this case,
2048 MB.</para><screen>&lt;ai_criteria_manifest&gt;
    &lt;ai_criteria name=&quot;MEM&quot;&gt;
         &lt;range&gt;
            2048
            unbounded
         &lt;/range&gt;
    &lt;/ai_criteria&gt;
    &lt;ai_manifest_file URI=&quot;./ai_manifest1.xml&quot;/&gt;
    &lt;sc_manifest_file name=&quot;AI&quot; URI=&quot;./sc_manifest1.xml&quot;/&gt;
&lt;/ai_criteria_manifest&gt;</screen>
</sect3><sect3 id="iearch"><title>Criteria Based on the Client Architecture</title><para>The following example assigns <filename>ai_manifest1</filename> and <filename>sc_manifest1</filename> to clients with an architecture of <literal>i86pc</literal>.</para><screen>&lt;ai_criteria_manifest&gt;
    &lt;ai_criteria name=&quot;ARCH&quot;&gt;
        &lt;value&gt;i86pc&lt;/value&gt;
    &lt;/ai_criteria&gt;
    &lt;ai_manifest_file URI=&quot;./ai_manifest1.xml&quot;/&gt;
    &lt;sc_manifest_file name=&quot;AI&quot; URI=&quot;./sc_manifest1.xml&quot;/&gt;
&lt;/ai_criteria_manifest&gt;</screen>
</sect3>
</sect2>
</sect1><sect1 id="associate"><title>How to Customize Client Installations Using Manifests</title><para>Client installations can be customized by assigning different manifests
to different clients' install services. The <command>installadm add</command> command assigns a specific manifest to a client. See the following example.</para><sect2 remap="assign"><title>Assigning a Manifest to a Client</title><orderedlist><listitem><para>Create a criteria manifest file, <filename>criteria_mac.xml</filename>, that connects a new AI manifest file, <filename>ai_manifest1.xml</filename>, to a client. See examples in <olink targetptr="criteriaie" remap="internal"></olink>.</para>
</listitem><listitem><para>Check which install services are running on the subnet by
using the following command:</para><screen># <command>installadm list</command></screen><para>The install services running on the system are displayed:</para><screen>service_032509</screen><para>In this example, <filename>service_032509</filename> is running on the
system.</para>
</listitem><listitem><para>Add the manifest files and the criteria defined by <filename>criteria_mac.xml</filename> to the install service, <filename>service_032509</filename>, by using the following command:</para><screen># <command>installadm add <option>m</option> <replaceable>criteria_mac.xml</replaceable> <option>n</option> <replaceable>service_032509</replaceable></command></screen>
</listitem><listitem><para>Run the following command to see that the AI manifest file, <filename>ai_manifest1.xml</filename>, has been added to the install service.</para><note><para>Only the AI manifest name, from the XML <literal>&lt;ai_manifest&gt;</literal> tag, is registered with the automated installer's database. The criteria
manifest's name is not stored in this database. And, the SC manifest is part
of the AI manifest. Therefore, the following command output displays only
the AI manifest name</para>
</note><screen># <command>installadm list <option>n</option> <replaceable>service_032509</replaceable></command></screen><para>The following output shows that the manifest is assigned to the install
service.</para><screen>Manifest
--------
ai_manifest1.xml</screen>
</listitem>
</orderedlist>
</sect2><sect2 id="remove"><title>How to Remove an AI Manifest File From an Install
Service</title><para>If you want to remove an AI manifest file from an install service, use
the following command.</para><screen># <command>installadm remove <option>m</option> <replaceable>manifestname</replaceable> <option>n</option> <replaceable>servicename</replaceable></command></screen><para>For example, to remove a manifest named <literal>ai_manifest1</literal> from the install service, <literal>service_032509</literal>, use the following
command:</para><screen># <command>installadm remove <option>m</option> <replaceable>ai_manifest1</replaceable> <option>n</option> <replaceable>service_032509</replaceable></command></screen>
</sect2>
</sect1>
</chapter><chapter id="clients"><title>How to Manage Client Installations</title><highlights><para>After you have set up an install server and an install service, and,
if desired, modified the manifests for the install service, you are ready
to install the OpenSolaris OS to your client systems. Review the following
information about automated installations to client systems and what problems
might be seen.</para><itemizedlist><listitem><para><olink targetptr="clientreq" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="sparcclient" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="x86client" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="bothclient" remap="internal"></olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="clientreq"><title>Client System Requirements</title><para>The client systems for automated installation must meet the following
requirements:</para><note><para>Any system that meets these requirements can be used as an automated
install client, including laptops, desktops, virtual machines, and enterprise
servers.</para>
</note><table frame="topbot" id="ginjf"><title>Client Requirements</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="27.46*"/><colspec colwidth="72.54*"/><thead><row rowsep="1"><entry><para>Platform</para>
</entry><entry><para>Requirement</para>
</entry>
</row>
</thead><tbody><row><entry><para>SPARC Clients</para>
</entry><entry><itemizedlist><listitem><para>Supports WAN Boot in the Open Boot Prompt</para><para>See <olink targetptr="wanboot" remap="internal"></olink></para>
</listitem><listitem><para>Minimum memory: 1 GB</para>
</listitem><listitem><para>Minimum disk space: 12 GB</para>
</listitem>
</itemizedlist>
</entry>
</row><row><entry><para>x86 Clients</para>
</entry><entry><itemizedlist><listitem><para>Minimum memory: 512 MB</para>
</listitem><listitem><para>Minimum disk space: 12 GB</para>
</listitem>
</itemizedlist>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="sparcclient"><title>SPARC Client Installations</title><para>Review the following information about SPARC client installations:</para><itemizedlist><listitem><para><olink targetptr="sparcboot" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="sparcsee" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="sparcerr" remap="internal"></olink></para>
</listitem>
</itemizedlist><sect2 id="sparcboot"><title>What Happens During the SPARC Client Boot Sequence?</title><para>Boot the client from the network. For SPARC clients, at the open boot
prompt, type:</para><screen>OK <command>boot net:dhcp</command></screen><para>The technical details of what occurs during the automated installer
(AI) boot of a SPARC client are as follows:</para><orderedlist><listitem><para>The client boots and gets IP address and the bootfile, <literal>wanboot-cgi</literal>, from the DHCP server.</para>
</listitem><listitem><para><literal>wanboot-cgi</literal> reads <literal>wanboot.conf</literal> and sends the location of the WAN Boot binary to the client.</para>
</listitem><listitem><para>The WAN Boot binary is downloaded using HTTP, and the client
boots the WAN Boot program.</para>
</listitem><listitem><para>WAN Boot gets the <literal>boot_archive</literal> file, and
Solaris is booted.</para>
</listitem><listitem><para>Net image archives, <literal>solaris.zlib</literal> and <literal>solarismisc.zlib</literal>, are downloaded using HTTP.</para>
</listitem><listitem><para>The AI SMF service does the client discovery and gets the
install service by using multicast DNS, a DNS service.</para>
</listitem><listitem><para>The client contacts the server, <literal>http server</literal>, by using the information in the install service, and gets the AI manifest.</para>
</listitem><listitem><para>The AI install program is invoked with the AI manifest to
perform the installation of the OpenSolaris OS to the client.</para>
</listitem>
</orderedlist>
</sect2><sect2 id="sparcsee"><title>What Should I See During the SPARC Client AI Boot
Sequence?</title><para>The SPARC client installation is initiated by typing at the open boot
prompt:</para><screen>OK <command>boot net:dhcp</command></screen><para>The output from the boot sequence displays as follows:</para><screen>{3} ok boot net:dhcp

Sun Fire(TM) T1000, No Keyboard
Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.23.4, 8184 MB memory available, Serial #69329298.
Ethernet address 0:14:4f:21:e1:92, Host ID: 8421e192.

Rebooting with command: boot net:dhcp
Boot device: /pci@7c0/pci@0/network@4:dhcp  File and args: 
1000 Mbps FDX Link up
1000 Mbps FDX Link up
&lt;time unavailable&gt; wanboot info: WAN boot messages-&gt;console
&lt;time unavailable&gt; wanboot info: Starting DHCP configuration
&lt;time unavailable&gt; wanboot info: DHCP configuration succeeded
&lt;time unavailable&gt; wanboot progress: wanbootfs: Read 366 of 366 kB (100%)
&lt;time unavailable&gt; wanboot info: wanbootfs: Download complete
Tue Aug  5 17:12:09 wanboot progress: miniroot: Read 165251 of 165251 kB (100%)
Tue Aug  5 17:12:09 wanboot info: miniroot: Download complete
SunOS Release 5.11 Version snv_111 64-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: opensolaris
Remounting root read/write
Probing for device nodes ...
Preparing automated install image for use
Downloading solaris.zlib archive
--11:09:11--  http://10.6.35.226:5555//export/home \
/images/osol-0906-ai-sparc//solaris.zlib
           =&gt; `/tmp/solaris.zlib'
Connecting to 10.6.35.226:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 82,679,296 (79M) [text/plain]

100%[====================================&gt;] 82,679,296    33.39M/s             

11:09:13 (33.36 MB/s) - `/tmp/solaris.zlib' saved [82679296/82679296]

Downloading solarismisc.zlib archive
--11:09:13--  http://10.6.35.226:5555//export/home/images \
/osol-0906-ai-sparc//solarismisc.zlib
           =&gt; `/tmp/solarismisc.zlib'
Connecting to 10.6.35.226:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 620,032 (606K) [text/plain]

100%[====================================&gt;] 620,032       --.--K/s             

11:09:13 (36.48 MB/s) - `/tmp/solarismisc.zlib' saved [620032/620032]

--11:09:13--  http://10.6.35.226:5555//export/home/images/ \
osol-0906-ai-sparc//install.conf
           =&gt; `/tmp/install.conf'
Connecting to 10.6.35.226:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 39 [text/plain]

100%[====================================&gt;] 39            --.--K/s             

11:09:13 (953.58 KB/s) - `/tmp/install.conf' saved [39/39]

Done mounting automated install image
Configuring devices.
Reading ZFS config: done.

Automated Installation started
The progress of the Automated Installation can be followed by 
viewing the logfile at /tmp/install_log</screen>
</sect2><sect2 id="sparcerr"><title>SPARC Booting Errors and Possible Causes</title><para>This section describes errors or problems you might see when booting
a  SPARC client and possible causes:</para><para><olink targetptr="timeout" remap="internal"></olink></para><para><olink targetptr="load" remap="internal"></olink></para><para><olink targetptr="alert" remap="internal"></olink></para><para><olink targetptr="forbid" remap="internal"></olink></para><para><olink targetptr="source" remap="internal"></olink></para><sect3 id="timeout"><title>1. Timed out Waiting for BOOTP/DHCP Reply</title><para>If a DHCP server is not responding to a SPARC client's request, the
following messages display:</para><screen>Sun Fire(TM) T1000, No Keyboard
   Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
   OpenBoot 4.23.4, 8184 MB memory available, Serial #69329298.
   Ethernet address 0:14:4f:21:e1:92, Host ID: 8421e192.

   Rebooting with command: boot net:dhcp
   Boot device: /pci@7c0/pci@0/network@4:dhcp  File and args: 
   1000 Mbps FDX Link up
   Timed out waiting for BOOTP/DHCP reply
   Timed out waiting for BOOTP/DHCP reply
   Timed out waiting for BOOTP/DHCP reply
   Timed out waiting for BOOTP/DHCP reply</screen><para>The timeout message indicates that the client is sending a DHCP request,
and no response has been made to that request. This error is probably caused
by a DHCP configuration problem. Check whether your client is configured correctly
in the DHCP server.</para>
</sect3><sect3 id="load"><title>2. Boot Load Failed</title><para>If the AI client starts downloading the <literal>boot_archive</literal>, but then fails with the error, &ldquo;Boot load failed,&rdquo; as shown
below, that indicates that the client DHCP information is configured incorrectly.</para><screen>Rebooting with command: boot net:dhcp
   Boot device: /pci@7c0/pci@0/network@4:dhcp  File and args: 
   1000 Mbps FDX Link up
   HTTP: Bad Response: 500 Internal Server Error
   Evaluating: 

   Boot load failed</screen><para>This error could happen if another DHCP server is responding to the
client. Check the DHCP configuration for this client. If the configuration
appears to be correct, determine whether there is another DHCP server in the
subnet. If you are running Sun's DHCP server, you can run the DHCP daemon
in debug mode with the command:</para><screen># <command>/usr/lib/inet/in.dhcpd <option>dv</option></command></screen>
</sect3><sect3 id="alert"><title>3. Internal Server Error or WAN Boot Alert</title><para>After the AI client has obtained the IP address and initial parameters
to start downloading the boot archive, the client might be unable to find
or download the <literal>boot_archive</literal>.</para><itemizedlist><listitem><para>If the client cannot find the <literal>boot_archive</literal>, the following error displays:</para><screen>Rebooting with command: boot net:dhcp
      Boot device: /pci@7c0/pci@0/network@4:dhcp  File and args: 
      1000 Mbps FDX Link up
      &lt;time unavailable&gt; wanboot info: WAN boot messages-&gt;console
      &lt;time unavailable&gt; wanboot info: Starting DHCP configuration
      &lt;time unavailable&gt; wanboot info: DHCP configuration succeeded
      &lt;time unavailable&gt; wanboot progress: wanbootfs: Read 366 of 366 kB (100%)
      &lt;time unavailable&gt; wanboot info: wanbootfs: Download complete
      Tue Aug  5 20:46:43 wanboot alert: miniinfo: Request returned code 500
      Tue Aug  5 20:46:44 wanboot alert: Internal Server Error \
(root filesystem image missing)</screen>
</listitem><listitem><para>If the AI client finds the <literal>boot_archive</literal> file but cannot access the file, then the following error is displayed:</para><screen>Rebooting with command: boot net:dhcp
      Boot device: /pci@7c0/pci@0/network@4:dhcp  File and args: 
      1000 Mbps FDX Link up
      &lt;time unavailable&gt; wanboot info: WAN boot messages-&gt;console
      &lt;time unavailable&gt; wanboot info: Starting DHCP configuration
      &lt;time unavailable&gt; wanboot info: DHCP configuration succeeded
      &lt;time unavailable&gt; wanboot progress: wanbootfs: Read 366 of 366 kB (100%)
      &lt;time unavailable&gt; wanboot info: wanbootfs: Download complete
      Tue Aug  5 20:53:02 wanboot alert: miniroot: Request returned code 403
      Tue Aug  5 20:53:03 wanboot alert: Forbidden</screen>
</listitem>
</itemizedlist><para>For both of these problems, fix the <literal>boot_archive</literal> file
configured for this client. Check the path name and permissions of the <literal>boot_archive</literal> at <literal>$IMAGE/boot/boot_archive</literal>.</para>
</sect3><sect3 id="forbid"><title>4. Error Message 403: Forbidden</title><para>This message, &ldquo;ERROR 403: Forbidden,&rdquo; can be seen if the
AI client successfully downloads the <literal>boot_archive</literal> and boots
the OpenSolaris kernel, but fails to get one of the net image archives. An
error message is displayed indicating which file is causing the problem. For
example, in the output below, the <literal>solaris.zlib</literal> file does
not exist at the specified location.</para><screen>Rebooting with command: boot net:dhcp
   Boot device: /pci@7c0/pci@0/network@4:dhcp  File and args: 
   1000 Mbps FDX Link up
   1000 Mbps FDX Link up
   &lt;time unavailable&gt; wanboot info: WAN boot messages-&gt;console
   &lt;time unavailable&gt; wanboot info: Starting DHCP configuration
   &lt;time unavailable&gt; wanboot info: DHCP configuration succeeded
   &lt;time unavailable&gt; wanboot progress: wanbootfs: Read 366 of 366 kB (100%)
   &lt;time unavailable&gt; wanboot info: wanbootfs: Download complete
   Tue Aug  5 21:43:37 wanboot progress: miniroot: Read 165251 of 165251 kB (100%)
   Tue Aug  5 21:43:38 wanboot info: miniroot: Download complete
   SunOS Release 5.11 Version snv_111 64-bit
   Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
   Use is subject to license terms.
   Hostname: opensolaris
   Remounting root read/write
   Probing for device nodes ...
   Preparing automated install image for use
   Downloading solaris.zlib archive
   --15:40:37--  http://10.6.35.226:5555//export/home/images/ai_sparc_111/solaris.zlib
           =&gt; `/tmp/solaris.zlib'
   Connecting to 10.6.35.226:5555... connected.
   HTTP request sent, awaiting response... 403 Forbidden
   15:40:37 ERROR 403: Forbidden.

   FAILED
   Requesting System Maintenance Mode
   (See /lib/svc/share/README for more information.)
   Console login service(s) cannot run</screen><itemizedlist><para>This problem can be caused by one of the following conditions:</para><listitem><para>The image path configured in WAN boot is not correct.</para>
</listitem><listitem><para>The image path doesn't exist or is incomplete.</para>
</listitem><listitem><para>Access is denied due to permission issues.</para>
</listitem>
</itemizedlist><para>Check your DHCP configuration or the contents of the target directory
you specified when you ran <command>installadm create-service</command>. Check
your WAN boot configuration.</para>
</sect3><sect3 id="source"><title>5. Couldn't Determine the Source of the Automated
Install Image</title><para>If the Sun DHCP server is not used, for example, if an ISC DHCP server
is used, then the image path is not sent to the client unless the client asks
for the path.  If the client does not ask for the path, the following sample
output displays:</para><screen>Rebooting with command: boot net:dhcp
   Boot device: /pci@1e,600000/pci@0/pci@1/pci@0/network@4:dhcp  File and args:
   1000 Mbps FDX Link up
   Timed out waiting for BOOTP/DHCP reply
   1000 Mbps FDX Link up
   &lt;time unavailable&gt; wanboot info: WAN boot messages-&gt;console
   &lt;time unavailable&gt; wanboot info: Starting DHCP configuration
   &lt;time unavailable&gt; wanboot info: DHCP configuration succeeded
   &lt;time unavailable&gt; wanboot progress: wanbootfs: Read 366 of 366 kB (100%)
   &lt;time unavailable&gt; wanboot info: wanbootfs: Download complete
   Thu Mar 26 07:48:13 wanboot progress: miniroot: Read 171484 of 171484 kB (100%)
   Thu Mar 26 07:48:13 wanboot info: miniroot: Download complete
   SunOS Release 5.11 Version snv_111 64-bit
   Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
   Use is subject to license terms.
   Hostname: opensolaris
   Remounting root read/write
   Probing for device nodes ...
   Preparing automated install image for use
   Couldn't determine source of automated install image  
   Requesting System Maintenance Mode
   (See /lib/svc/share/README for more information.)
   Console login service(s) cannot run 
      	</screen>
</sect3>
</sect2>
</sect1><sect1 id="x86client"><title>x86 Client Installations</title><para>Review the following information about x86 client installations:</para><itemizedlist><listitem><para><olink targetptr="x86boot" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="x86boot2" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="x86err" remap="internal"></olink></para>
</listitem>
</itemizedlist><sect2 id="x86boot"><title>What Happens During the x86 Client Boot Sequence?</title><para>Boot the client from the network. For x86 clients, select the network
device to boot from.</para><note><para>It may be necessary to modify the BIOS configuration to select
network booting.</para>
</note><para>The technical details of what occurs during the automated installer
(AI) boot of an x86 client are as follows:</para><orderedlist><listitem><para>The client boots and gets an IP address and the bootfile, <literal>pxegrub</literal>, from the DHCP server.</para>
</listitem><listitem><para><literal>pxegrub</literal> is loaded and reads <filename>menu.lst</filename> file by using TFTP.</para>
</listitem><listitem><para><literal>pxegrub</literal> gets the <literal>boot_archive</literal> file and Solaris is booted by using TFTP.</para>
</listitem><listitem><para>The net image archives, <literal>solaris.zlib</literal> and <literal>solarismisc.zlib</literal>, are downloaded using HTTP.</para>
</listitem><listitem><para>The client contacts the install service through the AI HTTP
server, and gets the install service by using multicast DNS, a DNS service.</para>
</listitem><listitem><para>The client contacts the server, <literal>http server</literal>, by using the information in the install service and gets the AI manifest.</para>
</listitem><listitem><para>The AI install program is invoked with the AI manifest to
perform the installation.</para>
</listitem>
</orderedlist>
</sect2><sect2 id="x86boot2"><title>What Should I see During the x86 Client AI Boot
Sequence?</title><para>The x86 client installation is initiated by booting from the network,
either by pressing the appropriate function key, for example, some systems
use F12 to boot from the network, or by changing the boot order in the BIOS.</para><para>The first screen displays the following message when the client receives
 the correct DHCP response:</para><screen>Intel(R) Boot Agent PXE Base Code (PXE-2.1 build 0.86)
Copyright(C) 1997-2007, Intel Corporation

CLIENT MAC ADDR 00 14 4F 29 04 12 GUID FF2000008 FFFF FFFF FFFF 7BDA264F1400
CLIENT IP: 10.6.68.29   MASK: 255.255.255.0    DHCP IP:  10.6.68.49
GATEWAY: 10.6.68.1</screen><para>Next, the display shows the AI image that will be booted. Typically,
there should  be only one entry such as:</para><screen>OpenSolaris 2009.06 snv_111 X86</screen><para>Once the image is selected, the following messages are displayed.</para><note><para>The image is selected automatically after a timeout.</para>
</note><screen>SunOS Release 5.11 Version snv_111 64-bit
Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: opensolaris
Remounting root read/write
Probing for device nodes ...
Preparing automated install image for use
Downloading solaris.zlib archive
--11:09:11--  http://10.6.35.226:5555//export/home \
/images/osol-0906-ai-x86//solaris.zlib
           =&gt; `/tmp/solaris.zlib'
Connecting to 10.6.35.226:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 82,679,296 (79M) [text/plain]

100%[====================================&gt;] 82,679,296    33.39M/s             

11:09:13 (33.36 MB/s) - `/tmp/solaris.zlib' saved [82679296/82679296]

Downloading solarismisc.zlib archive
--11:09:13--  http://10.6.35.226:5555//export/home/images \
/osol-0906-ai-x86//solarismisc.zlib
           =&gt; `/tmp/solarismisc.zlib'
Connecting to 10.6.35.226:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 620,032 (606K) [text/plain]

100%[====================================&gt;] 620,032       --.--K/s             

11:09:13 (36.48 MB/s) - `/tmp/solarismisc.zlib' saved [620032/620032]

--11:09:13--  http://10.6.35.226:5555//export/home/images/ \
osol-0906-ai-x86//install.conf
           =&gt; `/tmp/install.conf'
Connecting to 10.6.35.226:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 39 [text/plain]

100%[====================================&gt;] 39            --.--K/s             

11:09:13 (953.58 KB/s) - `/tmp/install.conf' saved [39/39]

Done mounting automated install image
Configuring devices.
Reading ZFS config: done.

Automated Installation started
The progress of the Automated Installation can be followed by 
viewing the logfile at /tmp/install_log</screen>
</sect2><sect2 id="x86err"><title>x86 Booting Errors and Possible Causes</title><para>Review the following information about x86 booting errors:</para><para><olink targetptr="nodhcp" remap="internal"></olink></para><para><olink targetptr="violation" remap="internal"></olink></para><para><olink targetptr="hangs" remap="internal"></olink></para><para><olink targetptr="forbid2" remap="internal"></olink></para><sect3 id="nodhcp"><title>1. No DHCP or ProxyDHCP Offers Were Received</title><para>If a DHCP server is not responding to an x86 client's request, you see
the following messages:</para><screen>Intel(R) Boot Agent PXE Base Code (PXE-2.1 build 0.86)
   Copyright(C) 1997-2007, Intel Corporation

   CLIENT MAC ADDR 00 14 4F 29 04 12 GUID FF2000008 FFFF FFFF FFFF 7BDA264F1400
   DHCP......... No DHCP or ProxyDHCP offers were received
   PXE-MOF: Exiting Intel Boot Agent</screen><para>The timeout message indicates that the client is sending a DHCP request
and not getting a response. This issue is probably due to an error in the
DHCP configuration. Check to see if your client is configured correctly in
the DHCP server.</para>
</sect3><sect3 id="violation"><title>2. TFTP Error or System Hangs After GATEWAY Message</title><para>The DHCP server provides an IP address and a location of the initial
boot program as part of the DHCP response.</para><itemizedlist><listitem><para>If the boot program doesn't exist, then the AI client boot
cannot proceed. The following message displays:</para><screen>Intel(R) Boot Agent PXE Base Code (PXE-2.1 build 0.86)
     Copyright(C) 1997-2007, Intel Corporation

     CLIENT MAC ADDR 00 14 4F 29 04 12 GUID FF2000008 FFFF FFFF FFFF 7BDA264F1400
     CLIENT IP: 10.6.68.29   MASK: 255.255.255.0    DHCP IP:  10.6.68.49
     GATEWAY: 10.6.68.1
     TFTP.
     PXE-T02:    Access Violation
     PXE-E3C: TFTP Error - Access violation
     PXE-MOF: Exiting Intel Boot Agent</screen>
</listitem><listitem><para>If the boot program exists, but it's an incorrect program,
the AI client hangs after displaying this message:</para><screen>Intel(R) Boot Agent PXE Base Code (PXE-2.1 build 0.86)
     Copyright(C) 1997-2007, Intel Corporation

     CLIENT MAC ADDR 00 14 4F 29 04 12 GUID FF2000008 FFFF FFFF FFFF 7BDA264F1400
     CLIENT IP: 10.6.68.29   MASK: 255.255.255.0    DHCP IP:  10.6.68.49
     GATEWAY: 10.6.68.1</screen>
</listitem>
</itemizedlist>
</sect3><sect3 id="hangs"><title>3. System Hangs After GRUB Menu Entry is Selected</title><para>If the client is able to do the initial boot, but the OpenSolaris kernel
cannot be booted, the system hangs after the user selects the entry from the
GRUB menu.</para><para>On the install server, check whether the <literal>menu.lst</literal> file for this client is pointing to a valid boot archive. The boot directory
of the image on the server should be loop&hyphen;back mounted under the<filename> /tftpboot</filename> directory as shown in this snippet from <command>df
-k</command>:</para><screen><literal>/export/home/images/osol-0906-ai-x86/boot</literal> \
<literal>60450439 21678071 38772368 36% /tftpboot/I86PC.OpenSolaris-12</literal></screen><para>If you know the name of the target directory that you used in the <command>installadm create-service</command> command, then you can use that information
to find out whether that target directory is mounted. Also, check whether
you can access the <literal>/tftpboot/I86PC.OpenSolaris-12/boot_archive</literal> file.</para>
</sect3><sect3 id="forbid2"><title>4. HTTP Request Sent Results in 403 Forbidden</title><para>On the install server, if one of the install programs doesn't exist
in the location specified in the<literal> menu.lst</literal> file under <filename>/tftpboot</filename>, then the client is able to boot, but is not able to
download that file. An error message is displayed indicating which file is
causing the problem. For example, in the output below, the <filename>solaris.zlib</filename> file does not exist at the specified location.</para><screen>SunOS Release 5.11 Version snv_111 64-bit
   Copyright 1983-2009 Sun Microsystems, Inc.  All rights reserved.
   Use is subject to license terms.
   Hostname: opensolaris
   Remounting root read/write
   Probing for device nodes ...
   Preparing automated install image for use
   Downloading solaris.zlib archive
   --15:40:37--  http://10.6.35.226:5555//export/home/images/ai_x86_111/solaris.zlib
           =&gt; `/tmp/solaris.zlib'
   Connecting to 10.6.35.226:5555... connected.
   HTTP request sent, awaiting response... 403 Forbidden
   15:40:37 ERROR 403: Forbidden.

   FAILED
   Requesting System Maintenance Mode
   (See /lib/svc/share/README for more information.)
   Console login service(s) cannot run</screen><para>Check the contents of the target directory that you specified when you
ran the <command>installadm create-service</command> command.</para>
</sect3>
</sect2>
</sect1><sect1 id="bothclient"><title>SPARC and x86 Client Installation Messages and
Errors</title><para>The following situations and display messages are common to both SPARC
and X86 installations.</para><para><olink targetptr="aistart" remap="internal"></olink></para><para><olink targetptr="success" remap="internal"></olink></para><para><olink targetptr="failed" remap="internal"></olink></para><para><olink targetptr="valid" remap="internal"></olink></para><para><olink targetptr="missing" remap="internal"></olink></para><para><olink targetptr="errfail" remap="internal"></olink></para><sect2 id="aistart"><title>1. Automated Installation Started Message</title><para>If the client is able to successfully boot and download the install
files, then the following displays:</para><screen>Automated Installation started
   The progress of the Automated Installation can be followed by viewing the
   logfile at /tmp/install_log</screen><para>You can login as root with the password, &ldquo;opensolaris,&rdquo;
to monitor the <filename>install_log</filename>. Once the installation of
packages from IPS has started, there may not be updates to this log file for
an extended period. You can continue to monitor progress by following the
IPS updates in the log file, <filename>/var/svc/log/application-auto-installer:default.log</filename>.</para>
</sect2><sect2 id="success"><title>2. Auto Install Succeeded Message</title><para>If you see the message, &ldquo;Auto install succeeded. You may wish
to reboot the system at this time,&rdquo; then the installation is successful.
You can manually reboot., Or, if you have setup automatic reboot in the AI
manifest, then the system reboots at this time.</para>
</sect2><sect2 id="failed"><title>3. Automated Installation Failed Message</title><para>If there is a failure during installation, then the following message
displays:</para><screen>Automated Installation failed. Please refer to /tmp/install_log file for
   details
   Apr  9 14:28:09 opensolaris svc.startd[7]: application/auto-installer:default
   failed fatally: transitioned to maintenance (see 'svcs -xv' for details)</screen>
</sect2><sect2 id="valid"><title>4. Unable to Contact Valid Package Server Message</title><para>If there is a failure during installation, check the log file, <filename>/tmp/install_log</filename>. If the AI client could not access the package
server for installing packages, you may see the following error messages:</para><screen>installation will be performed from http://pkg.opensolaris.org (opensolaris.org)
   list of packages to be installed is: 
                entire
                SUNWcsd
                SUNWcs
                babel_install
   pkg: The URL 'http://pkg.opensolaris.org' does not appear to point to a
   valid pkg server.
   Please check the server's address and client's network configuration.
   Additional details:

   Unable to contact valid package server: http://pkg.opensolaris.org/
   Encountered the following error(s):
   Transport errors encountered when trying to contact depot server.
   Reported the following errors:
   Could not retrieve versions from 'opensolaris.org'
   URLError, reason: (8, 'node name or service name not known')
   Unable to initialize the pkg image area at /a</screen><para>The problem may caused by one of the following reasons:</para><itemizedlist><listitem><para>The <literal>pkg_server</literal> is down. Try to access the <literal>pkg_server</literal> and check status.</para>
</listitem><listitem><para>If you are using DNS, check whether the AI client is setup
with DNS:</para><screen># <command>svcs <option>a</option> | grep <replaceable>/network/dns/client</replaceable></command></screen><para>If the install service is disabled, then the client is not setup with
DNS. Check your DHCP server configuration to see whether DNS information is
sent with the DHCP offer. If not, add the DNS information to the client's
DHCP macro.</para>
</listitem><listitem><para>If you are not using DNS, add the HTTP proxy information to
the AI manifest and try the installation again. See <olink targetptr="ieproxy" remap="internal"></olink>.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="missing"><title>5. <filename>install_log</filename> Reports Missing
Package</title><para>If one of the packages specified in the AI manifest cannot be located
in the IPS repositories, then the installer fails before installing any packages
on the disk. In the following example, the installer could not find the package, <literal>SUNWTestPkg</literal>, in the IPS repository.  You may see the following
error message in the <literal>install_log</literal>:</para><screen>&lt;AI Feb 12 20:15:40&gt; installation will be performed from
   http://pkg.opensolaris.org/dev (opensolaris.org)
   &lt;AI Feb 12 20:15:40&gt; list of packages to be installed is:
   &lt;AI Feb 12 20:15:40&gt; entire
                SUNWcsd
                SUNWcs
                babel_install
   &lt;AI Feb 12 20:15:40&gt; SUNWTestPkg
   &lt;OM Feb 12 20:15:40&gt; Set zfs root pool device
   &lt;OM Feb 12 20:15:40&gt; creating zpool
   &lt;OM Feb 12 20:15:43&gt; /usr/sbin/zfs get -Hp -o value available rpool
   &lt;OM Feb 12 20:15:43&gt; Creating swap and dump on ZFS volumes
   &lt;OM Feb 12 20:16:00&gt; TI process completed successfully
   &lt;OM Feb 12 20:16:00&gt; Transfer process initiated
   &lt;TRANSFERMOD Feb 12 20:16:59&gt; IPS initilization finished
   &lt;TRANSFER_MOD Feb 12 20:52:33&gt; pkg missing
   &lt;TRANSFERMOD Feb 12 20:52:33&gt; IPS transfer failed
   &lt;TRANSFERMOD Feb 12 20:52:33&gt; IPS transfer finished
   &lt;OM Feb 12 20:52:33&gt; Transfer failed with error 15
   &lt;AI Feb 12 20:52:42&gt; om_perform_install failed with error 114
   &lt;AI Feb 12 20:52:42&gt; Auto install failed</screen><para>Check whether the package in question is a valid package. If this package
is available on a different IPS repository, add that IPS repository in the
AI manifest by using the tag, <literal>&lt;ai_pkg_repo_default_authority&gt;</literal>.</para>
</sect2><sect2 id="errfail"><title>6. Install Fails With Error 800 Message</title><para>The error, &ldquo;<literal>om_perform_install_failed</literal> with
error 800,&rdquo; indicates that the installer successfully installed all
the packages, but one of installer tasks that prepares the system prior to
reboot has failed. Scan the <literal>install_log</literal> for other failures.
Usually when this error is returned, one of Install Completion Tasks (ICTs)
has failed.</para><para>This error can also indicate that the version of the AI ISO image that
is used for the automated installation is different from the version of the
OpenSolaris OS being installed. The AI ISO image version must match the OpenSolaris
OS version. Check the <literal>install_log</literal> to see whether there
is any message indicating that the version of the AI ISO image is different
from the OpenSolaris OS version being installed. If so, change the AI ISO
image to correspond to the OpenSolaris version you are trying to install.
For instructions, see <olink targetptr="match" remap="internal"></olink></para><para>For further troubleshooting information, see <olink targetptr="fails" remap="internal"></olink></para>
</sect2>
</sect1>
</chapter><chapter id="trouble"><title>Troubleshooting and FAQs
for the Automated Installer</title><highlights><para>The following section covers common questions and answers about the
automated installer.</para><para><emphasis role="strong">Troubleshooting Issues:</emphasis></para><para><olink targetptr="dhcperr" remap="internal"></olink></para><para><olink targetptr="fails" remap="internal"></olink></para><para><emphasis role="strong">Frequently Asked Questions:</emphasis></para><para><olink targetptr="switch" remap="internal"></olink></para><para><olink targetptr="wanboot" remap="internal"></olink></para><para><olink targetptr="image" remap="internal"></olink></para><para><olink targetptr="modifymanifest" remap="internal"></olink></para><para><olink targetptr="match" remap="internal"></olink></para><para><olink targetptr="pool" remap="internal"></olink></para><para><olink targetptr="cleanup" remap="internal"></olink></para><para><olink targetptr="unconf" remap="internal"></olink></para><para><olink targetptr="verbose" remap="internal"></olink></para><para><olink targetptr="remote" remap="internal"></olink></para><para><olink targetptr="boot1" remap="internal"></olink></para><para><olink targetptr="encrypt" remap="internal"></olink></para><para><olink targetptr="back" remap="internal"></olink></para><para><olink targetptr="targetdisk" remap="internal"></olink></para>
</highlights><sect1 id="setupfaq"><title>Troubleshooting Issues</title><sect2 id="dhcperr"><title>1. <command>installadm create-service</command> Fails With DHCP Errors</title><para>Error message displays as follows:</para><screen># installadm create-service -n sparc_install_service -i
192.168.135.21 -c 2 -s /export/images/osol-0906-109-ai-sparc.iso
/data/AI/sparc/snv_109
Setting up the target image at /data/AI/sparc/snv_109 ...
Registering the service sparc_install_service._OSInstall._tcp.local
Creating DHCP Server
Created DHCP configuration file.
Dhcptab already exists.
Added server macro to dhcptab - sms1.
dhcpconfig: Error - starting the DHCP server. entity not found
dhtadm: GrubMenu already exists.
pntadm: Table for 192.168.135.0 does not exist.
pntadm: Table for 192.168.135.0 does not exist.
Could not retrieve DHCP information from dhcp server
  Please create a DHCP macro named dhcp_macro_sparc_install_service with:
  Boot server IP (BootSrvA) : 192.168.135.10
  Boot file      (BootFile) : http://192.168.135.10:5555/cgi-bin/wanboot-cgi
Failed to assign DHCP macro to IP address. Please assign manually.
pntadm: Table for 192.168.135.0 does not exist.
pntadm: Table for 192.168.135.0 does not exist.
Creating SPARC configuration file</screen><itemizedlist><para>The <command>installadm</command> command was not able to set up the
network table for the addresses. Check to see if this problem is due to one
of the following issues:</para><listitem><para>Check whether the SMF service, <literal>dhcp-server</literal>, is available on the system. Run the following command:</para><screen># <command>svcs <option>a</option> | grep <replaceable>dhcp-server</replaceable></command></screen>
</listitem><listitem><para>Check whether <filename>/etc/netmasks</filename> has the wrong
netmasks for the network that is being setup, in the above output, <literal>192.168.135.0</literal>.</para>
</listitem><listitem><para>Check that the node name is set to have the loopback address
of <literal>127.0.0.1.</literal>.</para>
</listitem><listitem><para>Check which OpenSolaris release is installed on your install
server. The install server must have the OpenSolaris 2009.06 release.</para>
</listitem>
</itemizedlist><para>Make any needed corrections to fix the problems that you found. Then,
run the following command to cleanup the failed service.</para><screen><command>installadm delete-service <option>x</option></command></screen><para>Then, you can rerun the <command>installadm create-service</command> command.</para>
</sect2><sect2 id="fails"><title>2. What if the Client Installation Fails?</title><sect3 id="dns"><title>Check DNS</title><para>Check whether DNS is configured on your client. You could use the <command>nslookup</command> utility to resolve <literal>pkg.opensolaris.org</literal>. If your DNS is not working, your DHCP setup for this is not correct. On
the DHCP server, check whether DNS information is passed to the client.</para><para>You must ensure that the DHCP server contains a macro providing a valid
DNS domain and DNS servers to the clients.  This macro will typically be named
with the DHCP server's hostname, and provide the following options: <literal>DNSdmain</literal> and <literal>DNSserv</literal>.</para>
</sect3><sect3 id="ipscheck"><title>Check IPS Repository</title><para>The install client needs to reach the IPS repository defined in the
AI manifest in order to install the OpenSolaris OS. In a normal configuration,
the DHCP server sends the DNS information to the client. This DNS information
is used to resolve the IPS repository name to an IP address.</para><para>In cases where DNS is not setup, an HTTP proxy can be used to resolve
the IPS repository name to an IP address and complete the installation. The
XML tag, <literal>&lt;ai_http_proxy&gt;</literal>, and value in the AI manifest
can contain the URL of the proxy as follows:</para><screen>&lt;ai_manifest name="http_proxy"&gt;
           ..........
           ..........
           &lt;ai_pkg_repo_default_authority&gt;
               &lt;main url="http://pkg.opensolaris.org" authname="opensolaris.org"/&gt;
           &lt;/ai_pkg_repo_default_authority&gt;
           &lt;ai_http_proxy url="€http://129.101.77.121:8080"€/&gt;
&lt;/ai_manifest&gt;</screen><para>The error message in the failed installation displays as follows:</para><screen>&lt;OM Oct 28 13:54:08&gt; Transfer process initiated
&lt;TRANSFER_MOD_E Oct 28 13:54:10&gt; Unable to initialize the pkg image area at /a
&lt;TRANSFER_MOD Oct 28 13:54:10&gt; TValueError or TABort
&lt;TRANSFERMOD Oct 28 13:54:10&gt; IPS initialization failed</screen><para>This error indicates that the client could not resolve the name of the
IPS repository. On the failed machine, try to reach the IPS repository you
have set up. The default repository is <ulink url="http://pkg.opensolaris.org" type="url"></ulink> in the AI manifest for this client.</para>
</sect3><sect3 id="logs"><title>Check the Installation Logs</title><para>You can review the installation log at one of the following locations:</para><itemizedlist><listitem><para>If the installation failed, you can find the log at <filename>/tmp/install_log</filename>.</para>
</listitem><listitem><para>If the installation was successful, you can find the log at <filename>/var/sadm/system/logs/install_log</filename> after you reboot the client.</para>
</listitem>
</itemizedlist>
</sect3><sect3 id="more"><title>Check Client Boot Errors</title><para>Review the following additional information about errors that occur
when the client system is booting:</para><itemizedlist><listitem><para><olink targetptr="sparcerr" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="x86err" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="bothclient" remap="internal"></olink></para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1><sect1 id="faq"><title>Frequently Asked Questions</title><sect2 id="switch"><title>1. How do I Switch to a Static IP System if I Don't
Have Access to the System's Desktop?</title><para>The following steps can be used to configure a wired network interface
to have a static IP address.</para><orderedlist><listitem><para>Run the following series of commands:</para><screen># <command>svcadm disable <replaceable>network/physical:nwam</replaceable></command>
# <command>svcadm enable <replaceable>network/physical:default</replaceable></command>
# <command>echo <replaceable>&lt;IP_addr&gt; &gt; /etc/hostname.&lt;ifname&gt;</replaceable></command>
# <command>echo <replaceable>&lt;hostname&gt; &gt; /etc/nodename</replaceable></command></screen>
</listitem><listitem><para>Run the following command:</para><screen># <command>vi <replaceable>/etc/hosts</replaceable></command></screen><para>And, append this line to the file:</para><screen><literal>&lt;IP_addr&gt; &lt;hostname&gt; &lt;hostname&gt;.local loghost</literal></screen><para>Then, edit the entries for the loopback addresses, so that these entries
contain only 'localhost' as the alias. In other words, edit the line for the
'::1' entry to show the following:</para><screen>::1 localhost</screen><para>And, edit the line for the <literal>127.0.0.1</literal> entry to show
the following:</para><screen>127.0.0.1 localhost</screen>
</listitem><listitem><para>Run the following command:</para><screen># <command>vi <replaceable>/etc/netmasks</replaceable></command></screen><para>And, append this line to the file:</para><screen><literal>&lt;network&gt; &lt;netmask&gt;</literal></screen>
</listitem><listitem><para>Run the following commands:</para><screen># <command>ifconfig <replaceable>&lt;ifname&gt; plumb</replaceable></command>
# <command>ifconfig <replaceable>&lt;ifname&gt; &lt;IP_addr&gt; netmask &lt;netmask&gt; up</replaceable></command></screen>
</listitem><listitem><para>If you use DNS to resolve hostnames, perform these additional
steps:</para><orderedlist><listitem><para>Configure the file, <filename>/etc/resolv.conf(4)</filename>, to work with the DNS servers for your network.  You may need to consult
your network     administrator for this information.</para><para>An example
of the <filename>/etc/resolv.conf</filename> file may look like this:</para><screen>domain mycompany.com
       nameserver 192.168.1.118
       nameserver 192.168.2.220 </screen>
</listitem><listitem><para>Run the following command:</para><screen># <command>cp <replaceable>/etc/nsswitch.dns</replaceable> <replaceable>/etc/nsswitch.conf</replaceable></command></screen>
</listitem>
</orderedlist>
</listitem><listitem><para>Configure a default route:</para><para>If your network does
not have a discoverable default router, you need to set a static default route
on your system. You may need to consult your network administrator for this
information.  </para><para>To set up a static default route, add your network's default router
IP address to the <filename>/etc/defaultrouter(4)</filename> file as shown
in the following commands:</para><screen># <command>echo <replaceable>&lt;default_route_IP_addr&gt; &gt;&gt; /etc/defaultrouter</replaceable></command>
# <command>route add <replaceable>default &lt;default_route_IP_addr&gt;</replaceable></command></screen>
</listitem>
</orderedlist>
</sect2><sect2 id="wanboot"><title>2. Does my SPARC Client Support WAN boot?</title><para>The automated installer requires WAN boot support for SPARC clients.
You can check whether your client open boot prompt supports WAN boot by checking
whether <literal>network-boot-arguments</literal> is a valid variable that
can be set in the eeprom. If the variable <literal>network-boot-arguments</literal> is displayed, or if it returns the output <literal>network-boot-arguments:
data not available</literal>, the open boot prompt supports WAN boot installations.</para><screen># <command>eeprom | grep <replaceable>network-boot-arguments</replaceable></command>
network-boot-arguments: data not available</screen><para>If there is no output to the above command, then WAN Boot is not supported.</para>
</sect2><sect2 id="image"><title>3. Where do I find the AI ISO Image that I Need?</title><para>Download an AI ISO image for x86 clients or for SPARC clients from <ulink url="http://www.opensolaris.com/get/" type="url"></ulink>. The automated installer
will use this AI ISO image to install the OpenSolaris OS to your client systems.</para><para>Store the AI ISO image on your local file system. For example, store
the image at <filename>/export/aiimages/osol-0906-ai-x86.iso</filename>. </para>
</sect2><sect2 id="modifymanifest"><title>4. How do I Modify the Manifest File to
Point to Repository of my Choice?</title><para>You can modify the following default repository information in the manifest
file:</para><screen>&lt;ai_pkg_repo_default_authority&gt;
     &lt;main url="http://pkg.opensolaris.org" authname="opensolaris.org"/&gt;
&lt;/ai_pkg_repo_default_authority&gt;</screen><para>If your IPS repository is <literal>pkg.mycompany.com</literal> and the
authorization is <literal>mycompany.com</literal>, change <literal>pkg.opensolaris.org</literal> to <literal>pkg.mycompany.com</literal> and <literal>opensolaris.org</literal> to <literal>mycompany.com</literal>.</para><screen>&lt;ai_pkg_repo_default_authority&gt;
     &lt;main url="http://pkg.mycompany.com" authname="mycompany.com"/&gt;
&lt;/ai_pkg_repo_default_authority&gt;</screen>
</sect2><sect2 id="match"><title>5. How do I Install a Particular OpenSolaris Development
Build?</title><para>Development builds of the OpenSolaris operating system are available
in-between releases. See <ulink url="http://www.opensolaris.org/os/downloads/" type="url"></ulink>.</para><para>The build number or release of the AI ISO image that you specify in
the <command>installadm create-service</command> command with the <option>s</option> option must be the same build number or release of the OpenSolaris
operating system that you specify in the AI manifest.</para><para>Check the build number or release for the AI ISO image when you download
the image.</para><para>In the AI manifest, if you want to install a specific version of the
OpenSolaris OS, you can specify the version in the package <literal>entire</literal>. The IPS repositories include the full FMRI for each version of a package.
Use the FMRI string to specify a specific version of the package, <literal>entire</literal>, in the AI manifest.</para><para>The following example specifies that OpenSolaris build 111 be installed
to the client.</para><screen>&lt;ai_manifest name=&quot;ai_packages&quot;&gt;
     &lt;ai_install_packages&gt;
         &lt;pkg name="entire@0.5.11-0.111"/&gt;
         &lt;pkg name="SUNWcsd"/&gt;
         &lt;pkg name="SUNWcs"/&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="openoffice"/&gt;
         &lt;pkg name="SUNWTcl"/&gt;
     &lt;/ai_install_packages&gt;
     &lt;ai_uninstall_packages&gt;
         &lt;pkg name="babel_install"/&gt;
         &lt;pkg name="slim_install"/&gt;
     &lt;/ai_uninstall_packages&gt;
&lt;/ai_manifest&gt;</screen>
</sect2><sect2 id="pool"><title>6. How do I Locate the Default AI Manifest for an
Install Service?</title><para>The default AI manifest for each install service is called <emphasis>default.xml</emphasis>. This file is located at <filename>/var/ai/&lt;port&gt;/AI_data</filename>, where <literal>&lt;port&gt;</literal> is the port number of the install service.
You can use the following procedure to locate this file.</para><orderedlist><listitem><para>Find the name of the install service that has the default
manifest that you want to modify.</para><para>The name of the install service
is the name that you provided in the <command>installadm create-service</command> command when you created the install service. If you didn't provide an install
service name, the <command>installadm create-service</command> assigned a
service name for your service.</para><para>You can view a the list of enabled install services on your subnet by
using the following command:</para><screen># <command>/usr/sbin/installadm list</command></screen>
</listitem><listitem><para>Find the port number where this install service is running.
You can get your port number using the following command, where <literal>&lt;svc_name&gt;</literal> is the service name.</para><screen># <command>svccfg <replaceable>svc:/system/install/server:default</replaceable> <replaceable>listprop</replaceable> <replaceable>AI&lt;svc_name&gt;</replaceable></command></screen><para>For example, if the service name is <emphasis>0906sparc</emphasis>,
you can run the following command to get the properties of the <emphasis>0906sparc</emphasis>:</para><screen># <command>svccfg <replaceable>svc:/system/install/server:default</replaceable> <replaceable>listprop</replaceable></command> <emphasis>AI0906sparc</emphasis></screen><para>Extract the port number from the value, <literal>txt_record</literal>.</para>
</listitem>
</orderedlist><note><para>Do not modify the default AI manifest file. You can, however,
copy this file and create a new default manifest for an install ervice. For
instructions, see <olink targetptr="changeai" remap="internal"></olink>.</para>
</note>
</sect2><sect2 id="cleanup"><title>7. How Can I Cleanup a Failed Service?</title><para>If <command>installadm create-service</command> fails to create an install
service, use the following procedures to clean up.</para><orderedlist><listitem><para>Run <command>installadm delete-service</command> to remove
the failed install service:</para><screen># <command>installadm delete-service [<option>x</option>] <replaceable>svcname</replaceable></command></screen>
</listitem><listitem><para>If that command fails with the following message:</para><screen>The specified service does not exist: &lt;svcname&gt;</screen><para>Try the following procedure:</para><orderedlist><listitem><para>Check if the automated installer webserver had been started
for the service.</para><para>First, search for the port number used for the
webserver by finding the <literal>dns-sd</literal> process associated with
webserver.  An example of how to do this search by using the <command>ps(1)</command> command, and the resulting output, is as follows:</para><screen># <literal>ps -ef | grep dns-sd | grep " svc2 "</literal> \
<literal>root 11216  1  0  Apr   15  pts/2   0:00</literal> \
<literal>/usr/bin/dns-sd -R svc2 _OSInstall._tcp local</literal> \
<literal>46502 aiwebserver=192.168.2.1</literal></screen>
</listitem><listitem><para>Kill this process, as in this example:</para><screen># <command>kill <option>9</option> <replaceable>11216</replaceable></command></screen><para>The example output shows that the webserver for the serivce, <filename>svc2</filename>,  is being served off of port 46502.</para>
</listitem><listitem><para>Now search for the webserver process that's associated with
this port number, and kill that process.  See the following example:</para><screen><literal># ps -ef | grep installadm/webserver | grep 46502</literal> \
<literal>root 11026     1   1   Apr  15 pts/2   71:35</literal> \
<literal>/usr/bin/python2.4</literal> \
<literal>/usr/lib/installadm/webserver -p 46502 /var/ai/46502</literal>
<literal># kill -9 11026</literal></screen>
</listitem><listitem><para>Now, remove the data directory for the install service, which
also has that port number found above, 4652, it its path:</para><screen># <command>rm <option>rf</option> <replaceable>/var/ai/46502</replaceable></command></screen>
</listitem>
</orderedlist>
</listitem><listitem><para>If you want to delete the target image path directory that
was specified for the failed install service, remove the <literal>&lt;targetdir&gt;</literal> that you use in the <command>installadm create-service</command> command:</para><screen># <command>rm <option>rf</option> <replaceable>targetdir</replaceable></command></screen>
</listitem>
</orderedlist><para>As a further step, see <olink targetptr="unconf" remap="internal"></olink></para>
</sect2><sect2 id="unconf"><title>8. How do I Cleanup DHCP Configurations for a SPARC
Install Service?</title><para>When you run the <command>installadm create-service</command> command
with the <option>i</option> and <option>c</option> options, the DHCP server
is configured . To cleanup the DHCP configurations for a failed or deleted
SPARC install service, log into the DHCP Manager and manually remove the DHCP
macros for the install service. And, remove any IP addresses that were configured
when you created the install service.</para><para>For more information, see the <command>dhcpmgr(1M)</command> man page.</para>
</sect2><sect2 id="verbose"><title>9. How do I Run Automated Installations in Debug
Verbose Mode?</title><para>You can run the installer in verbose debug mode, in order to capture
more information about the installation in the <literal>install_log</literal> file.</para><para>When you use the <command>installadm create-service</command> command
to create an install service, or you use the <command>installadm create-client</command> command to set up a custom client, these commands populate the install configuration
file. For x86 systems, this file is the GRUB <literal>menu.lst</literal> file.
For SPARC systems, this file is the <literal>install.conf</literal> file.
In order to enable debug mode, you need to set the <literal>install_debug</literal> option to <literal>enable</literal> in this install configuration file,
as per the following instructions.</para><itemizedlist><listitem><para>For x86 systems, the <literal>menu.lst</literal> configuration
file is created in the <filename>/tftpboot/</filename> directory with one
of the following filename formats:</para><itemizedlist><listitem><para>If you used the <command>installadm create-service -n &lt;service_name&gt;</command> command, the filename is <filename>menu.lst.&lt;service_name&gt;</filename>.</para>
</listitem><listitem><para>If you used the <command>installadm create-client -e &lt;mac&gt;</command> command, the filename is <filename>menu.lst.01&lt;mac&gt;</filename>.</para>
</listitem>
</itemizedlist><para>In this file, the options are provided as kernel parameters, such as
the following:</para><screen>kernel$ ... -B install_media=...,livessh=enable,install_debug=enable</screen><para>Since the <literal>install_debug</literal> option in the above example
is set to <literal>enable</literal>, the installer will run in verbose debug
mode.</para>
</listitem><listitem><para>For SPARC systems, the <literal>install.conf</literal> file
is populated in the <filename>ai_image_dest</filename> directory when an install
service is created by using an <command>installadm create-service</command> command, such as the following:</para><screen># <command>installadm create-service [<option>n</option> <replaceable>svc_name</replaceable>] [<option>s</option> <replaceable>ai_iso_image</replaceable>] <replaceable>ai_image_dest</replaceable></command></screen><para>In the <literal>install.conf</literal> file, the options are defined
as name-value pairs, such as the following:</para><screen>$ <command>cat <replaceable>&lt;ai_image_dest&gt;/install.conf</replaceable></command>
...
<command><replaceable>install_debug=enable</replaceable></command>
...</screen><para>Since the <literal>install_debug</literal> option in the above example
is set to <literal>enable</literal>, the installer will run in verbose debug
mode.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="remote"><title>10. How do I Enable Remote Access to an AI Client
by Using <literal>ssh</literal>?</title><para>You can enable network access to an automated install client by using <literal>ssh</literal>. You can use this access to remotely observe an installation
process.</para><para>Enable this access by setting the option, <literal>livessh</literal>, to <literal>enable</literal> in the installation configuration file. When
this access is enabled, you can log in to the AI client by using the username
and password, &ldquo;jack/jack&rdquo;.</para><itemizedlist><listitem><para>For x86 systems, the <literal>menu.lst</literal> configuration
file is created in the <filename>/tftpboot/</filename> directory with one
of the following filename formats:</para><itemizedlist><listitem><para>If you used the <command>installadm create-service -n &lt;service_name&gt;</command> command, the filename is <filename>menu.lst.&lt;service_name&gt;</filename>.</para>
</listitem><listitem><para>If you used the <command>installadm create-client -e &lt;mac&gt;</command> command, the filename is <filename>menu.lst.01&lt;mac&gt;</filename>.</para>
</listitem>
</itemizedlist><para>In this file, the options are provided as kernel parameters, such as
the following:</para><screen><literal>kernel$ ... -B install_media=...,livessh=enable,install_debug=enable</literal></screen><para>The <literal>livessh</literal> option is this excerpt is set to <literal>enable</literal>.</para>
</listitem><listitem><para>For SPARC systems, the <literal>install.conf</literal> file
is populated in the <filename>ai_image_dest</filename> directory when an install
service is created by using an <command>installadm create-service</command> command such as the following:</para><screen># installadm create-service [-n &lt;service_name&gt;] [-s &lt;ai_iso_image&gt;] &lt;ai_image_dest&gt;</screen><para>In the <literal>install.conf</literal> file, the options are defined
as name-value pairs, such as:</para><screen>$ <command>cat <replaceable>&lt;ai_image_dest&gt;/install.conf</replaceable></command>
...
<command><replaceable>livessh=enable</replaceable></command>
...</screen><para>The <literal>livessh</literal> option is this excerpt is set to <literal>enable</literal>.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="boot1"><title>11. How do I Boot the Install Environment Without
Starting an Installation?</title><para>You can boot to single-user mode using <option>s</option> as an option
to the kernel. Use the following instructions:</para><caution><para>Make sure to use the <option>s</option> option so that an installation
will not begin.</para>
</caution><orderedlist><listitem><para>Specify the <option>s</option> option as follows:</para><itemizedlist><listitem><para>For a SPARC system, use the following command:</para><screen>OK <command>boot net:dhcp <option>s</option></command></screen>
</listitem><listitem><para>For an x86 system, edit the GRUB menu and add the <option>s</option> option to the kernel line.</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>Login as root and run the following command:</para><screen><command>svcadm disable <replaceable>auto-installer</replaceable></command></screen>
</listitem>
</orderedlist>
</sect2><sect2 id="encrypt"><title>12. How do I Generate Encrypted Passwords?</title><para>One method of generating encrypted passwords for the OpenSolaris OS
is to create a user of the intended name and password on the OpenSolaris OS,
copy the password from the <filename>/etc/shadow</filename> file between the
1st and 2nd colons of the user's record, and add that information into the
'userpass' or 'rootpass' values in the SC manifest.</para><para>See <olink targetptr="customsc" remap="internal"></olink>.</para>
</sect2><sect2 id="back"><title>13. Is the Automated Installer Backwards Compatible?</title><para>No, the OpenSolaris 2009.06 automated installer is not backward compatible
with ISO images or automated installer tools from earlier OpenSolaris releases.
Use OpenSolaris 2009.06 automated installer tools and procedures with the
OpenSolaris 2009.06 operating system and 2009.06 ISO images only.</para>
</sect2><sect2 id="targetdisk"><title>14. How is the default target disk selected?</title><para>You can use the <literal>&lt;ai_target_device&gt;</literal> tag to specify
a particular target disk on which to install the OpenSolaris OS. See <olink type="auto-generated" targetptr="iediskrepo" remap="internal"></olink>. If you do not specify
a target disk, the automated installer chooses a default target for installing
the OpenSolaris OS.</para><orderedlist><para>The default target disk is selected as follows:</para><listitem><para>The installer gets the recommended size for installing the
OpenSolaris OS from the AI libraries. Currently, the recommended size is 12
GB.</para>
</listitem><listitem><para>The installer searches for available disks on the client.</para><note><para>The installer selects only the following types of disks:</para><itemizedlist><listitem><para>For SPARC clients, the installer searches for disks with a
VTOC label.</para>
</listitem><listitem><para>For x86 clients, the installer searches for Solaris partitions.</para>
</listitem>
</itemizedlist>
</note>
</listitem><listitem><para>When the first disk is found, the installer checks the size
of that disk.</para><itemizedlist><listitem><para>If the size is greater than or equal to the recommended size,
the installer selects the disk and returns to the installation procedure.</para>
</listitem><listitem><para>If the size is less than the recommended size, the installer
goes to the next disk to check the size.</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>If there is no match, the automated installation fails.</para>
</listitem>
</orderedlist>
</sect2>
</sect1><sect1 id="help"><title>Additional Resources</title><para>Additional information and resources for using the automated installer
are available at the following sites:</para><itemizedlist><listitem><para>For general troubleshooting help, see the Release Notes posted
at <ulink url="http://opensolaris.com/use/" type="url"></ulink>.</para>
</listitem><listitem><para>Send questions or comments about the automated installer application
to <literal>caiman-discuss@opensolaris.org</literal>.</para>
</listitem><listitem><para>Submit bugs or enhancement requests to <ulink url="http://defect.opensolaris.org" type="url"></ulink>.</para>
</listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="appendix"><title>Appendix</title><highlights><para>For reference, see the following:</para><itemizedlist><listitem><para><olink type="auto-generated" targetptr="aimanifest" remap="internal">AI Manifest
File Parameters</olink></para>
</listitem><listitem><para><olink type="auto-generated" targetptr="installadm" remap="internal"></olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="aimanifest"><title>AI Manifest Contents</title><para>As described in <olink targetptr="manifest" remap="internal"></olink>, you can replace
the default AI manifest for an install service with a manifest that contains
specifications for particular clients. See the following detailed summaries
of AI manifest contents and possible values:</para><itemizedlist><listitem><para><olink targetptr="tagtable" remap="internal"></olink></para>
</listitem><listitem><para><olink targetptr="aimanfull" remap="internal"></olink></para>
</listitem>
</itemizedlist><sect2 id="tagtable"><title>AI Manifest Tag Values</title><para>The following table describes each tag in the AI manifest and elements
within each tag, and the values that can be entered for each tag and element.</para><table frame="all" pgwide="1" id="tagtbl"><title>AI Manifest Tags and Values</title><tgroup cols="3" colsep="1" rowsep="1"><colspec colwidth="21.16*"/><colspec colwidth="20.74*"/><colspec colwidth="57.08*"/><thead><row rowsep="1"><entry><para>Tag</para>
</entry><entry><para>Element Within Tag</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>&lt;ai_target_device&gt;</literal></para>
</entry><entry>
</entry><entry><para><literal>&lt;ai_target_device&gt;</literal> describes the client target
to install the OpenSolaris OS. This parameter is optional. If this information
is not provided, the automated installer finds a target on the client and
installs the OpenSolaris OS. For finding the default target in the case of
X86 client, the automated installer looks for an available fdisk partition
of the type, &ldquo;Solaris&rdquo; with a size greater than the recommended
size. In the case of SPARC systems, the installer looks for a VTOC&hyphen;labeled
disk of the greater than recommended size.</para><para>The <literal>&lt;ai_target_size&gt;</literal> can be defined either by
the device name, such as <literal>c0t0d0</literal>, or by the MPXIO name,
such as <literal>c0t2000002037CD9F72d0</literal>. The <literal>&lt;ai_target_size&gt;</literal> can also be defined by a combination of <literal>&lt;target_device_type&gt;</literal>, <literal>&lt;target_device_vendor&gt;</literal>, and <literal>&lt;target_device_size&gt;</literal>.</para><para>All elements of <literal>&lt;ai_target_device&gt;</literal> are optional.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;target_device_name&gt;</literal></para>
</entry><entry><para><literal>&lt;target_device_name&gt;</literal> is the name of the disk device.
The device could be a <literal>cXtXdX</literal> value or an MPXIO name. If
the <literal>&lt;target_device_name&gt;</literal> is specified, all other <literal>&lt;ai_target_device&gt;</literal> specification parameters, such as <literal>&lt;target_device_type&gt;</literal>, <literal>&lt;target_device_vendor&gt;</literal>, and <literal>&lt;target_device_size&gt;</literal> are ignored. Be cautious
while using <literal>cXtXdX</literal> values, since these values may change
across OpenSolaris releases.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;target_device_type&gt;</literal></para>
</entry><entry><para><literal>&lt;target_device_type&gt;</literal> denotes the type of the target
disk. Possible values are SCSI, SATA, PATA, and USB.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;target_device_vendor&gt;</literal></para>
</entry><entry><para><literal>&lt;target_device_vendor&gt;</literal> denotes the name of the
manufacturer of the disk drives. Possible values include Sun, EMC, Seagate,
Fujitsu, and others.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;target_device_size&gt;</literal></para>
</entry><entry><para><literal>&lt;target_device_size&gt;</literal> denotes the disk size of
the target device in megabytes (MB). If the size of a disk is equal to the <literal>&lt;target_device_size&gt;</literal>, then that specific disk is chosen as the
target device.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;target_device_install_slice_number&gt;</literal></para>
</entry><entry><para><literal>&lt;target_device_install_slice_number&gt;</literal> denotes the
slice where the OpenSolaris OS should be installed. By default, the automated
installer installs the OpenSolaris OS on slice 0. The valid values of <literal>&lt;target_device_install_slice_number&gt;</literal> are 0, 1, 3, 4, 5, 6 and
7. Specifying slice 2 is not allowed, since slice 2 represents the whole disk.</para>
</entry>
</row><row><entry><para><literal>&lt;ai_device_partitioning&gt;</literal></para>
</entry><entry>
</entry><entry><para><literal>&lt;ai_device_partitioning&gt;</literal> describes the specification
for a partition action to be performed during the automated installation of
the OpenSolaris OS. You can delete an existing partition or create a new partition
during installation.  <literal>&lt;ai_device_partitioning&gt;</literal> is optional
and applicable only for X86 clients.</para><para>All of the following elements of <literal>&lt;ai_device_partitioning&gt;</literal> are optional.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;partition_action&gt;</literal></para>
</entry><entry><para><literal>&lt;partition_action&gt;</literal> denotes the type of partition&hyphen;related
operation to be performed during the client installation. The only allowed
actions are <literal>create</literal> and <literal>delete</literal>.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;partition_number&gt;</literal></para>
</entry><entry><para><literal>&lt;partition_number&gt;</literal> denotes the unique partition
identification in the partition table. When this element is combined with
the <literal>&lt;partition_action&gt;</literal> of <literal>delete</literal>,
then the automatic installer deletes the partition with the specified <literal>&lt;partition_number&gt;</literal>. When the <literal>&lt;partition_action&gt;</literal> has the value of <literal>create</literal>, <literal>&lt;partition_number&gt;</literal> is ignored.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;partition_start_sector&gt;</literal></para>
</entry><entry><para>If the <literal>&lt;partition_action&gt;</literal> is <literal>create</literal>, <literal>&lt;partition_start_sector&gt;</literal> denotes the sector where
the partition should start. If the <literal>&lt;partition_action&gt;</literal> is <literal>delete</literal>, then the automated installer tries to delete
the partition starting at this sector.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;partition_size&gt;</literal></para>
</entry><entry><para><literal>&lt;partition_size&gt;</literal> denotes the size of the partition
to be created or to be deleted. The value of <literal>&lt;partition_size&gt;</literal> is interpreted based on the <literal>&lt;partition_size_units&gt;</literal> value. The default size unit is megabytes (MB). The <literal>&lt;partition_size&gt;</literal> is required for creating a new partition. You can use the special value, <literal>max_size</literal>, to indicate that you want the automated installer to
use the largest free region, and to create the partition with the maximum
possible space.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;partition_type&gt;</literal></para>
</entry><entry><para><literal>&lt;partition_type&gt;</literal> denotes the type of the partition
to be created or deleted. If  <literal>&lt;partition_type&gt;</literal> is specified
in the <literal>delete</literal> action without any other partition elements,
the automated installer deletes all the partitions of that type. The value
of <literal>&lt;partition_type&gt;</literal> could be any integer representing
a valid partition type. The automated installer recognizes the values SOLARIS,
DOS16, and FAT32.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;partition_size_units&gt;</literal></para>
</entry><entry><para><literal>&lt;partition_size_units&gt;</literal> defines the units for the
partition size. The default size unit is megabytes (MB). The possible values
for <literal>&lt;partition_size_units&gt;</literal> include the following:</para><itemizedlist><listitem><para>sectors, secs, sec, s, SECTORS, SECS, SEC, or S</para>
</listitem><listitem><para>MB, megabytes, megabyte, mb, m, MEGABYTES, MEGABYTE, M</para>
</listitem><listitem><para>GB, gigabytes, gigabyte, gb, g, GIGABYTES, GIGABYTE, G</para>
</listitem><listitem><para>TB, terabytes, terabyte, tb, t, TERABYTES, TERABYTE, T</para>
</listitem>
</itemizedlist>
</entry>
</row><row><entry><para><literal>&lt;ai_device_vtoc_slices&gt;</literal></para>
</entry><entry>
</entry><entry><para><literal>&lt;ai_device_vtoc_slices&gt;</literal> specifies VTOC slice&hyphen;related
operations to be performed during automated installation of the OpenSolaris
OS. You can delete an existing slice or create a new slice during installation.
You can also choose to preserve an existing VTOC slice during installation.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;slice_action&gt;</literal></para>
</entry><entry><para><literal>&lt;slice_action&gt;</literal> denotes the type of slice&hyphen;related
operation to be performed during installation. The allowed actions are <literal>create</literal>, <literal>delete</literal>, and <literal>preserve</literal>.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;slice_number&gt;</literal></para>
</entry><entry><para><literal>&lt;slice_number&gt;</literal> denotes the unique slice identification
in the VTOC table. When this element is combined with the <literal>&lt;slice_action&gt;</literal> set to <literal>delete</literal>, then the automatic installer deletes the
slice with the specified <literal>&lt;slice_number&gt;</literal>. If the <literal>&lt;slice_action&gt;</literal> is <literal>create</literal>, then a new slice
is created with the specified <literal>&lt;slice_number&gt;</literal>. If the <literal>&lt;slice_action&gt;</literal> is <literal>preserve</literal>, then the specified
slice is not touched during installation.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;slice_size&gt;</literal></para>
</entry><entry><para><literal>&lt;slice_size&gt;</literal> denotes the size of the slice to
be created or deleted or preserved. The value of <literal>&lt;slice_size&gt;</literal> is interpreted based on the <literal>&lt;slice_size_units&gt;</literal> value.
The default size unit is megabytes (MB). The <literal>&lt;slice_size&gt;</literal> is required for creating a new partition. You can use the special value, <literal>max_size</literal>, to indicate that you want the automated installer to
use the largest free region and to create the partition with the maximum possible
space.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;slice_size_units&gt;</literal></para>
</entry><entry><para><literal>&lt;slice_size_units&gt;</literal> defines the units for the slice
size. The default size unit is megabytes (MB). The possible values for <literal>&lt;slice_size_units&gt;</literal> include the following:</para><itemizedlist><listitem><para>sectors, secs, sec, s, SECTORS, SECS, SEC, or S</para>
</listitem><listitem><para>MB, megabytes, megabyte, mb, m, MEGABYTES, MEGABYTE, M</para>
</listitem><listitem><para>GB, gigabytes, gigabyte, gb, g, GIGABYTES, GIGABYTE, G</para>
</listitem><listitem><para>TB, terabytes, terabyte, tb, t, TERABYTES, TERABYTE, T</para>
</listitem>
</itemizedlist>
</entry>
</row><row><entry><para><literal>&lt;ai_pkg_repo_default_authority&gt;</literal></para>
</entry><entry>
</entry><entry><para><literal>&lt;ai_pkg_repo_default_authority&gt;</literal> defines the IPS
repository from which OpenSolaris installation should be performed. This element
is optional. The default value is <literal>pkg.opensolaris.org</literal> with
an authority value of <literal>opensolaris.org</literal>.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;main&gt;</literal></para>
</entry><entry><para><literal>&lt;main&gt;</literal> defines the primary IPS repository to be
used. <literal>&lt;main&gt;</literal> consists of two attributes, <literal>authname</literal> and <literal>url</literal>. The <literal>authname</literal> is the authority
name for the IPS repository. The <literal>url</literal> attribute points to
the location of the IPS repository.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;mirror&gt;</literal></para>
</entry><entry><para><literal>&lt;mirror&gt;</literal> defines the location of a backup IPS
repository whose contents are identical to the <literal>&lt;main&gt;</literal> element and uses the same <literal>authname</literal>. The mirror element
consists of one attribute, <literal>url</literal>, that points to the location
of the IPS repository. This element is optional. There can be more than one
mirror.</para>
</entry>
</row><row><entry><para><literal>&lt;ai_pkg_repo_addl_authority&gt;</literal></para>
</entry><entry>
</entry><entry><para><literal>&lt;ai_pkg_repo_addl_authority&gt;</literal> defines the additional
IPS repositories from which  installations can be performed. This element
is optional. This element can be used to install packages which are not in
your default repository.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;main&gt;</literal></para>
</entry><entry><para><literal>&lt;main&gt;</literal> defines the primary IPS repository to be
used. <literal>&lt;main&gt;</literal> consists of two attributes, <literal>authname</literal> and <literal>url</literal>. The <literal>authname</literal> is the authority
name for the IPS repository. The <literal>url</literal> attribute points to
the location of the IPS repository.</para>
</entry>
</row><row><entry>
</entry><entry><para><literal>&lt;mirror&gt;</literal></para>
</entry><entry><para><literal>&lt;mirror&gt;</literal> defines the location of a backup IPS
repository whose contents are identical to the <literal>&lt;main&gt;</literal> element and uses the same <literal>authname</literal>. The mirror element
consists of one attribute, <literal>url</literal>, that points to the location
of the IPS repository. This element is optional. There can be more than one
mirror.</para>
</entry>
</row><row><entry><para><literal>&lt;ai_install_packages&gt;</literal></para>
</entry><entry>
</entry><entry><para><literal>&lt;ai_install_packages&gt;</literal> defines the list of packages
to be installed by automated installer during installation. <literal>&lt;ai_install_packages&gt;</literal> is mandatory. At least one package must be defined in this element. This
tag consists of a single element called <literal>pkg</literal>. This element, <literal>pkg</literal>, has an attribute called <literal>name</literal>. The <literal>name</literal> attribute could be a simple package name, such as <literal>SUNWcs</literal>, or an incorporation, such as <literal>entire</literal>,
or an FMRI, such as <literal>SUNWPython@2.4.4,5.11-0.101:20081119T213939Z</literal>.</para>
</entry>
</row><row><entry><para><literal>&lt;ai_uninstall_packages&gt;</literal></para>
</entry><entry>
</entry><entry><para><literal>&lt;ai_uninstall_packages&gt;</literal> defines the list of packages
to be removed by automated installer during installation. <literal>&lt;ai_uninstall_packages&gt;</literal> is an optional element. The definition of <literal>&lt;ai_uninstall_packages&gt;</literal> is similar to that of <literal>&lt;ai_install_packages&gt;</literal>. This
tag consists of a single element called <literal>pkg</literal>. The element, <literal>pkg</literal>, has an attribute called <literal>name</literal>. The <literal>name</literal> attribute could be a simple package name, such as <literal>SUNWcs</literal>, or an incorporation, such as <literal>entire</literal>,
or an FMRI, such as <literal>SUNWPython@2.4.4,5.11-0.101:20081119T213939Z</literal>.</para>
</entry>
</row><row><entry><para><literal>&lt;ai_http_proxy&gt;</literal></para>
</entry><entry>
</entry><entry><para>The client needs to reach the IPS repository defined in the AI manifest
in order to install the OpenSolaris OS. In a normal configuration, the DHCP
server sends DNS information to the client. This information is used to resolve
the IPS repository name to an IP address. In cases where DNS is not set up,
a HTTP proxy can be used to resolve the IPS repository name and complete the
client installation.</para><para>The element <literal>&lt;ai_http_proxy&gt;</literal> can be used to setup
HTTP proxy that can be used for automated installations. <literal>&lt;ai_http_proxy&gt;</literal> consists of an attribute, <literal>url</literal>, that points to the HTTP
proxy location. This element is optional.</para>
</entry>
</row><row><entry><para><literal>&lt;ai_auto_reboot&gt;</literal></para>
</entry><entry>
</entry><entry><para>By default, the automated installer doesn't automatically reboot the
client after a successful installation of an OpenSolaris OS. However, if you
want the client to reboot automatically after a successful installation of
the OpenSolaris OS, <literal>&lt;ai_auto_reboot&gt;</literal> can be set to <literal>true</literal>. The possible values of <literal>&lt;ai_auto_reboot&gt;</literal> are <literal>true</literal> and <literal>false</literal>.</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2><sect2 id="aimanfull"><title>AI Manifest Complete File</title><para>The following is a complete AI manifest file with comments.</para><screen>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
CDDL HEADER START

The contents of this file are subject to the terms of the
Common Development and Distribution License (the "License").
You may not use this file except in compliance with the License.

You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions
and limitations under the License.

When distributing Covered Code, include this CDDL HEADER in each
file and include the License file at usr/src/OPENSOLARIS.LICENSE.
If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying
information: Portions Copyright [yyyy] [name of copyright owner]

CDDL HEADER END

Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
--&gt;

&lt;!--
===============================================================================
RelaxNG schema for Automatic Installer input manifest specification.

Contains schema rules and content specification for AI manifest.

===============================================================================
--&gt;


&lt;grammar
    xmlns="http://relaxng.org/ns/structure/1.0"
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"&gt;

        &lt;start&gt;
                &lt;element name="ai_manifest"&gt;
			&lt;attribute name="name"/&gt;
                        &lt;!-- General automatic Installation parameters --&gt;
                        &lt;ref name="auto_installation_manifest"/&gt;
                &lt;/element&gt;
        &lt;/start&gt;

        &lt;!--
        =======================================================================
        Parameters used for Automatic installation
        =======================================================================
        --&gt;
        &lt;define name="auto_installation_manifest"&gt;
                &lt;interleave&gt;      &lt;!-- Any element order is OK. --&gt;
			&lt;optional&gt;
                		&lt;element name="ai_target_device"&gt;
					&lt;ref name="ai_target_device_contents"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
		
			&lt;zeroOrMore&gt;
                		&lt;element name="ai_device_partitioning"&gt;
					&lt;ref name="ai_device_partitioning_contents"/&gt;
				&lt;/element&gt;
			&lt;/zeroOrMore&gt;
		
			&lt;zeroOrMore&gt;
                		&lt;element name="ai_device_vtoc_slices"&gt;
					&lt;ref name="ai_device_vtoc_slices_contents"/&gt;
				&lt;/element&gt;
			&lt;/zeroOrMore&gt;
			
			&lt;optional&gt;
                		&lt;element name="ai_device_zfs_root_pool"&gt;
					&lt;ref name="ai_zfs_root_pool_contents"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
		
			&lt;optional&gt;
				&lt;element name="ai_device_swap"&gt;
					&lt;ref name="ai_device_swap_contents"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;

			&lt;optional&gt;
				&lt;element name="ai_pkg_repo_default_authority"&gt;
					&lt;ref name="ai_pkg_repo_contents"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;

			&lt;zeroOrMore&gt;
				&lt;element name="ai_pkg_repo_addl_authority"&gt;
					&lt;ref name="ai_pkg_repo_contents"/&gt;
				&lt;/element&gt;
			&lt;/zeroOrMore&gt;

			&lt;!--
			========================================================
			Define AI packages
			========================================================
			--&gt;
			&lt;choice&gt;
				&lt;element name="ai_packages"&gt;
					&lt;zeroOrMore&gt;
						&lt;element name="package_name"&gt;
							&lt;text/&gt;
						&lt;/element&gt;
					&lt;/zeroOrMore&gt;
				&lt;/element&gt;

				&lt;element name="ai_install_packages"&gt;
					&lt;oneOrMore&gt;
						&lt;element name="pkg"&gt;
							&lt;attribute name="name"&gt;
								&lt;text/&gt;
							&lt;/attribute&gt;
						&lt;/element&gt;
					&lt;/oneOrMore&gt;
				&lt;/element&gt; 
			&lt;/choice&gt;

			&lt;optional&gt;
				&lt;element name="ai_uninstall_packages"&gt;
					&lt;oneOrMore&gt;
						&lt;element name="pkg"&gt;
							&lt;attribute name="name"&gt;
								&lt;text/&gt;
							&lt;/attribute&gt;
						&lt;/element&gt;
					&lt;/oneOrMore&gt;
				&lt;/element&gt;
			&lt;/optional&gt;

			&lt;optional&gt;
				&lt;element name="ai_http_proxy"&gt;
					&lt;ref name="ai_http_proxy_contents"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;

			&lt;optional&gt;
				&lt;element name="ai_auto_reboot"&gt;
					&lt;data type="boolean"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;		
		&lt;/interleave&gt;
	&lt;/define&gt;

        &lt;!--
        =======================================================================
        Selections for AI target Device specification
        =======================================================================
        --&gt;
        &lt;define name="ai_target_device_contents"&gt;
		&lt;interleave&gt;
			&lt;optional&gt;
                	&lt;!-- device name like c0t0d0 or 
			     MPXIO name like c0t2000002037CD9F72d0 --&gt;
                        	&lt;element name="target_device_name"&gt;
					&lt;text/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                       		&lt;element name="target_device_type"&gt;
					&lt;text/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                       		&lt;element name="target_device_vendor"&gt;
					&lt;text/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                       		&lt;element name="target_device_size"&gt;
					&lt;text/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                       		&lt;element name="target_device_install_slice_number"&gt;
					&lt;choice&gt;
						&lt;value&gt;0&lt;/value&gt;
						&lt;value&gt;1&lt;/value&gt;
						&lt;value&gt;2&lt;/value&gt;
						&lt;value&gt;3&lt;/value&gt;
						&lt;value&gt;4&lt;/value&gt;
						&lt;value&gt;5&lt;/value&gt;
						&lt;value&gt;6&lt;/value&gt;
						&lt;value&gt;7&lt;/value&gt;
					&lt;/choice&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                       		&lt;element name="target_device_use_solaris_partition"&gt;
					&lt;data type="boolean"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                       		&lt;element name="target_device_overwrite_root_zfs_pool"&gt;
					&lt;data type="boolean"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
		&lt;/interleave&gt;
	&lt;/define&gt;

        &lt;!--
        =======================================================================
        Selections for AI target device partitions specification
        =======================================================================
        --&gt;
        &lt;define name="ai_device_partitioning_contents"&gt;
		&lt;interleave&gt;
                	&lt;element name="partition_action"&gt;
				&lt;choice&gt;
					&lt;value&gt;create&lt;/value&gt;
					&lt;value&gt;delete&lt;/value&gt;
				&lt;/choice&gt;
			&lt;/element&gt;
			&lt;optional&gt;
				&lt;element name="partition_number"&gt;
					&lt;data type="unsignedByte"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                 		&lt;element name="partition_start_sector"&gt;
					&lt;data type="long"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
                	&lt;element name="partition_size"&gt;
				&lt;text/&gt;	&lt;!-- number of "max_size" to use largest free region --&gt;
			&lt;/element&gt;
			&lt;element name="partition_type"&gt;
				&lt;text/&gt;
			&lt;/element&gt;
			&lt;optional&gt;
				&lt;element name="partition_size_units"&gt;
					&lt;ref name="disk_space_size_units"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
		&lt;/interleave&gt;
	&lt;/define&gt;
        &lt;!--
        =======================================================================
        Selections for AI target device vtoc slices specification
        =======================================================================
        --&gt;
        &lt;define name="ai_device_vtoc_slices_contents"&gt;
		&lt;interleave&gt;
                	&lt;element name="slice_action"&gt;
				&lt;choice&gt;
					&lt;value&gt;create&lt;/value&gt;
					&lt;value&gt;delete&lt;/value&gt;
					&lt;value&gt;preserve&lt;/value&gt;
				&lt;/choice&gt;
			&lt;/element&gt;
                	&lt;element name="slice_number"&gt;
				&lt;data type="unsignedByte"/&gt;
			&lt;/element&gt;
                	&lt;element name="slice_size"&gt;
				&lt;text/&gt;	&lt;!-- number of "max_size" to use largest free region --&gt;
			&lt;/element&gt;
			&lt;optional&gt;
				&lt;element name="slice_size_units"&gt;
					&lt;ref name="disk_space_size_units"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
		&lt;/interleave&gt;
	&lt;/define&gt;

        &lt;!--
        =======================================================================
        Selections for AI ZFS Root Pool specification
        =======================================================================
        --&gt;
        &lt;define name="ai_zfs_root_pool_contents"&gt;
		&lt;interleave&gt;
			&lt;optional&gt;
                       		&lt;element name="enable_mirrored_root"&gt;
					&lt;data type="boolean"/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
			&lt;optional&gt;
                       		&lt;element name="zfs_options"&gt;
					&lt;text/&gt;
				&lt;/element&gt;
			&lt;/optional&gt;
		&lt;/interleave&gt;
	&lt;/define&gt;

        &lt;!--
        =======================================================================
        Selections for AI swap specification
	The target device will be used as swap device
        =======================================================================
        --&gt;
        &lt;define name="ai_device_swap_contents"&gt;
               &lt;element name="ai_swap_size"&gt;
			&lt;data type="unsignedLong"/&gt;
		&lt;/element&gt;
	&lt;/define&gt;

        &lt;!--
        =======================================================================
        Define an authority and its mirror backups.
        =======================================================================
        --&gt;
        &lt;define name="ai_pkg_repo_contents"&gt;
                &lt;element name="main"&gt;
                        &lt;ref name="ai_repo_name"/&gt;
                &lt;/element&gt;
                &lt;zeroOrMore&gt;
                        &lt;element name="mirror"&gt;
                                &lt;ref name="ai_mirror_name"/&gt;
                        &lt;/element&gt;
                &lt;/zeroOrMore&gt;
        &lt;/define&gt;

	&lt;define name="ai_repo_name"&gt;
		&lt;attribute name="authname"&gt;
			&lt;text/&gt;
		&lt;/attribute&gt;
		&lt;attribute name="url"&gt;
			&lt;text/&gt;
		&lt;/attribute&gt;
	&lt;/define&gt;

	&lt;define name="ai_mirror_name"&gt;
		&lt;attribute name="url"&gt;
			&lt;text/&gt;
		&lt;/attribute&gt;
	&lt;/define&gt;	

        &lt;!--
        =======================================================================
        Define AI proxy
        =======================================================================
        --&gt;
	&lt;define name="ai_http_proxy_contents"&gt;
		&lt;attribute name="url"&gt;
			&lt;text/&gt;
		&lt;/attribute&gt;
	&lt;/define&gt;	
        &lt;!--
        =======================================================================
        General definitions
        =======================================================================
        --&gt;
        &lt;!--
        =======================================================================
        Units measuring sizable regions of space on disk drives
        =======================================================================
        --&gt;
        &lt;define name="disk_space_size_units"&gt;
		&lt;choice&gt;
			&lt;value&gt;sectors&lt;/value&gt;
			&lt;value&gt;secs&lt;/value&gt;	&lt;!-- disk space sectors (512 bytes) --&gt;
			&lt;value&gt;sec&lt;/value&gt;	&lt;!-- disk space sectors (512 bytes) --&gt;
			&lt;value&gt;s&lt;/value&gt;
			&lt;value&gt;megabytes&lt;/value&gt;
			&lt;value&gt;megabyte&lt;/value&gt;
			&lt;value&gt;mb&lt;/value&gt;
			&lt;value&gt;m&lt;/value&gt;
			&lt;value&gt;gigabytes&lt;/value&gt;
			&lt;value&gt;gigabyte&lt;/value&gt;
			&lt;value&gt;gb&lt;/value&gt;
			&lt;value&gt;g&lt;/value&gt;
			&lt;value&gt;terabytes&lt;/value&gt;
			&lt;value&gt;terabyte&lt;/value&gt;
			&lt;value&gt;tb&lt;/value&gt;
			&lt;value&gt;t&lt;/value&gt;
			&lt;value&gt;SECTORS&lt;/value&gt;
			&lt;value&gt;SECS&lt;/value&gt;	&lt;!-- disk space sectors (512 bytes) --&gt;
			&lt;value&gt;SEC&lt;/value&gt;	&lt;!-- disk space sectors (512 bytes) --&gt;
			&lt;value&gt;S&lt;/value&gt;
			&lt;value&gt;MEGABYTES&lt;/value&gt;
			&lt;value&gt;MEGABYTE&lt;/value&gt;
			&lt;value&gt;MB&lt;/value&gt;
			&lt;value&gt;M&lt;/value&gt;
			&lt;value&gt;GIGABYTES&lt;/value&gt;
			&lt;value&gt;GIGABYTE&lt;/value&gt;
			&lt;value&gt;GB&lt;/value&gt;
			&lt;value&gt;G&lt;/value&gt;
			&lt;value&gt;TERABYTES&lt;/value&gt;
			&lt;value&gt;TERABYTE&lt;/value&gt;
			&lt;value&gt;TB&lt;/value&gt;
			&lt;value&gt;T&lt;/value&gt;
		&lt;/choice&gt;
	&lt;/define&gt;
&lt;/grammar&gt;</screen>
</sect2>
</sect1><sect1 id="installadm"><title><command>installadm(1M)</command> Man Page</title><screen>System Administration Commands               installadm(1M)        

NAME
     installadm - Manages automated installations on a 
     network


SYNOPSIS
     /usr/sbin/installadm

     installadm create-service [-f &lt;bootfile&gt;] 
     [-n &lt;svcname&gt;] [-i &lt;dhcp_ip_start&gt; 
     -c &lt;count_of_ipaddr&gt;] [-s &lt;srcimage&gt;] &lt;targetdir&gt;

     installadm delete-service [-x] &lt;svcname&gt;

     installadm list [-n &lt;svcname&gt;]

     installadm enable &lt;svcname&gt;

     installadm disable &lt;svcname&gt;

     installadm add -m &lt;manifest&gt; -n &lt;svcname&gt;

     installadm remove -m &lt;manifest&gt; -n &lt;svcname&gt;

     installadm create-client [-b &lt;property&gt;=&lt;value&gt;,...] 
     -t &lt;imagepath&gt; -e &lt;macaddr&gt; -n &lt;svcname&gt; 

     installadm delete-client &lt;macaddr&gt;

     installadm help [&lt;subcommand&gt;] 


DESCRIPTION

     The automated installer (AI) is used to automate the 
     installation of the OpenSolaris OS on one or more 
     SPARC and x86 systems over a network. The 
     installations can differ in architecture, packages 
     installed, disk capacity, and other parameters. 

     The minimal configuration necessary to use the 
     automated installer is to have one system as the 
     server and one client on which to install. On the 
     server, you set up an installation service, which 
     is associated with manifests, or specifications, 
     for specific x86 installations or SPARC installations.

     Manifests can include information such as a target 
     device, additional packages, partition information, 
     and other parameters. When the client boots, this 
     boot initiates a search for a manifest that matches 
     the client's machine specifications. When a matching 
     manifest is found, the client is installed with the 
     OpenSolaris release according to the specifications 
     in the manifest files.

     Use the installadm create-service command to set up 
     an install server and create an install service. 
     
     An install service is a network entity that specifies 
     the parameters for a particular type of installation. 
     These specifications are defined in XML manifest 
     files. 
     
     The automated installer uses AI ISO images to create 
     the install services. An AI ISO image is a collection 
     of software in a single file. This image is unpacked 
     when an install service is created and used to create 
     a net image that enables client installations.

     Once an install server and an installation service are 
     set up, you can install the OpenSolaris release to a 
     client on the network, per the default specifications 
     in the install service, by booting the client system.

     If you want to perform various types of installations 
     in a network, you can create and manage additional 
     install services tailored for each type of 
     installation by using the installadm create-service 
     command. For example, you can set up an install 
     service that installs the OpenSolaris OS to x86 
     clients and a service that installs the OpenSolaris OS 
     to SPARC clients.

     If you have clients with varying machine 
     specifications, you can manually create or modify 
     manifests so that the manifests cover those specific 
     machine specifications. Then, you can use the 
     installadm add command to add your new manifests to an 
     install service.

     If you want a specific client to use a specific 
     install service, you can associate a service to a 
     client by using the installadm create-client command.

     The installadm utility can be used to accomplish the 
     following tasks:
     - Set up install services
     - Set up installation images
     - Set up or remove clients
     - Add or delete manifests
     - Enable or disable install services
     - List install services
     - List manifests for an install service

     
SUBCOMMANDS AND OPTIONS
     The installadm command has the subcommands and options 
     listed below. Also, see EXAMPLES below.

    
     installadm

          Displays command usage.


    
     installadm create-service [-f &lt;bootfile&gt;] 
     [-n &lt;svcname&gt;] [-i &lt;dhcp_ip_start&gt; 
     -c &lt;count_of_ipaddr&gt;] [-s &lt;srcimage&gt;] &lt;targetdir&gt;

          Creates an install service. 
    
          The command provides the following functionality:    
          - Takes an AI ISO image (&lt;srcimage&gt;), unpacks it, 
            and sets up a net image in a target directory
            (&lt;targetdir&gt;. The net image enables client 
            installations.
          - Creates an install service and makes it 
            available on the network.
   
          Note the following specifications:
          - For SPARC install services, the first install 
            service created on an install server is the 
            service that will be used for all client 
            installations that use the install server. If 
            you want a client to use a different 
            install service from this install server, you 
            must use the installadm create-client command 
            to create a client-specific configuration. 
          - By default, both a net image and an install  
            service are created. 
          - If an existing install service name is provided, 
            that existing service is used.
          - If the -s option is not used, and the 
            &lt;targetdir&gt; contains a valid net image, then a 
            new install service is created with the 
            existing net image.
          - If the -i option and the -c option are used, 
            and a DHCP server is not yet configured, a DHCP 
            server is configured. 
          - If an already-configured DHCP server exists, 
            that DHCP server is updated.
          - If DHCP is running on a remote system, updates 
            can happen through secure shell. User must 
            provide authentication.

     -f   &lt;bootfile&gt;  
          Uses this boot file for the install service. If 
          boot file doesn't exist, it is created. If this 
          option is not specified, a boot file is created 
          with a default name.

     -n   &lt;svcname&gt;
          Uses this install service name instead of default 
          service name. 

     -i   &lt;dhcp_ip_start&gt;
          Sets up a new DHCP server. The IP addresses, 
          starting from dhcp_address_start, are set up.

     -c   &lt;count_of_ipaddr&gt;
          Sets up a total number of IP addresses in the 
          DHCP table equal to the value of the 
          count_of_ipaddr. The first IP address is the 
          value of dhcp_ip_start that is provided by the 
          -i option.  

     -s   &lt;srcimage&gt;
          Specifies location of AI ISO image to use for 
          setting up the install service.

     &lt;targetdir&gt;   
            
           Required: Specifies location to set up net image.


    
     installadm delete-service [-x] &lt;svcname&gt;

           Deletes an install service. Accomplishes the 
           following:
           - Removes install service from the network.
           - Stops the web server that is running for this 
             install service. 
           - Removes the manifest files and web server 
             configuration for this install service.   
         
     -x    Deletes the install service and also removes the 
           associated target net image.  

     &lt;svcname&gt;
     
           Required: Specifies the install service name.


    
     installadm list [-n &lt;svcname&gt;]

          Lists all enabled install services on a subnet.
          Or, with -n option, lists manifests associated 
          with a specified install service.

     -n   &lt;svcname&gt;
          Lists all manifest files associated with the 
          specified install service.


    
     installadm enable &lt;svcname&gt;

          Enables a specified install service. Also, 
          enables the web server associated with the 
          service.

     &lt;svcname&gt;
     
           Required: Specifies the name of the install 
           service to be enabled.


    
     installadm disable &lt;svcname&gt;

          Disables a specified install service. Also, 
          disables the web server associated with the 
          service.

     &lt;svcname&gt;
     
          Required: Specifies the name of the install 
          service to be disabled.


    
     installadm add -m &lt;manifest&gt; -n &lt;svcname&gt;

          Associates manifests with a specific install 
          service, thus making the manifests available on 
          the network, independently from creating a 
          service.

     -m   &lt;manifest&gt; 
          Required: Specifies the path name to a criteria 
          manifest.

     -n   &lt;svcname&gt;
          Required: Specifies the name of the install 
          service this manifest is to be associated with.

          Note: If the -n option is not used, a unique name 
          for the install service is automatically assigned
          using the format, 
          "_install_service_&lt;port_number&gt;". 

          For example, if the port number that installadm 
          selected for an install service is 46510, and 
          the -n option was not used to provide a custom 
          name for the install service, then the install 
          service name will be "_install_service_46510." 

    
     installadm remove -m &lt;manifest&gt; -n &lt;svcname&gt;

          Remove a manifest that was published with a 
          specific install service.

     -m   &lt;manifest&gt; 
          Required: Specifies the name of an AI manifest 
          as output by installadm list with -n option.

     -n   &lt;svcname&gt;
          Required: Specifies the name of the install 
          service this manifest is associated with.

    

     installadm create-client [-b &lt;property&gt;=&lt;value&gt;,...] 
     -t &lt;imagepath&gt; -e &lt;macaddr&gt; -n &lt;svcname&gt; 

          Accomplishes optional setup tasks for a specified 
          client, in order to provide custom client 
          settings that vary from the default settings used 
          by the installadm create-service command. Enables 
          user to specify a non-default service name and 
          image path for a client:
          - Specifies installation service for that client.
          - Sets up DHCP macro, if it doesn't exist.
    
     -b   &lt;property&gt;=&lt;value&gt;,...
          For x86 clients only, sets a property value 
          in the client-specific menu.lst file in /tftpboot.  
          Use this option to set boot properties that are 
          specific to this client. This option can accept
          multiple property=value pairs.

     -e   &lt;macaddr&gt;
          Required: Specifies a MAC address for the client.
    
     -n   &lt;svcname&gt;
          Required: Specifies the install service for client 
          installation.
   
     -t   &lt;imagepath&gt;
          Required: Specifies the path of the net image to 
          be used with automated installer.

    

     installadm delete-client &lt;macaddr&gt;

          Deletes an existing client's specific service  
          information that was previously set up using the 
          installadm create-client command.

     &lt;macaddr&gt;
     
          Required: Specifies a MAC address for the client.



     installadm help [&lt;subcommand&gt;]

          Displays the syntax for the installadm utility.

     &lt;subcommand&gt;
     
          If subcommand is provided, the command provides
          the syntax for that subcommand.




EXAMPLES


     Example 1: Set up an install server and an install 
     service for the first time. The command includes a 
     starting IP address and total count of IP addresses, 
     in order to configure the DHCP server.

     Example% # installadm create-service -n 0906x86 \ 
     -i 10.6.68.201 -c 5 -s \
     /export/aiimages/osol-0906-ai-x86.iso \
     /export/aiserver/osol-0906-ai-x86


     In this example, the terminal displays the progress 
     as follows:

     Setting up the target image at 
     /export/aiserver/osol-0906-ai-x86 ...
     Registering the service 0906x86._OSInstall._tcp.local
     Creating DHCP Server
     Created DHCP configuration file.
     Created dhcptab.
     Added "Locale" macro to dhcptab.
     Added server macro to dhcptab - line1-x4100.
     DHCP server started.
     Added network macro to dhcptab - 10.0.0.0.
     Created network table.
     copying boot file to 
     /tftpboot/pxegrub.I86PC.OpenSolaris-1
     Service discovery fallback mechanism set up

     The AI ISO image is at 
     /export/aiimages/osol-0906-ai-x86.iso. The command 
     sets up a net image and an install service that is 
     based on the AI ISO image.

     The installation net image is created in the 
     /export/aiserver/osol-0906-ai-x86 target directory. 
     This net image enables client installations.

     The progress display shows that the install service, 
     named 0906x86, is created. 

     A boot file is created, also named 0906x86, 
     under /tftpboot. The client will get this file name 
     through DHCP. The command also creates a link from 
     the net image at /export/aiserver/osol-0906-ai-x86 
     to a web server that is running on port 5555.
    
     The DHCP server and macro is created. The starting 
     IP address is 0.6.68.201. Five IP addresses are 
     allocated for clients. The command results 
     identify the macro as dhcp_macro_0906x86.



     Example 2: Use the following sample command to set 
     up a client that references a specific install service 
     and a specific net image location.

     The install service and net image should already exist. 

     # installadm create-client -b "console=ttya" \
     -e 0:e0:81:5d:bf:e0 -t \
     /export/aiserver/osol-0906-ai-x86 -n 0906x86

     In this example, the terminal displays the 
     following output:

     ---
     Setting up X86 client...
     Service discovery fallback mechanism set up

     Detected that DHCP is not set up on this server.
     If not already configured, please create a DHCP macro
     named 0100E0815DBFE0 with:
     Boot server IP (BootSrvA) : 10.6.68.29
     Boot file      (BootFile) : 0100E0815DBFE0
     If you are running Sun's DHCP server, use the 
     following command to add the DHCP macro, 
     0100E0815DBFE0:
     /usr/sbin/dhtadm -g -A -m 0100E0815DBFE0 -d \    
     :BootSrvA=10.6.68.29:BootFile=0100E0815DBFE0:\
     GrubMenu=menu.lst.0100E0815DBFE0:

     Note: Be sure to assign client IP address(es) if needed
     (e.g., if running Sun's DHCP server, run pntadm(1M)).
     ----

     In this example, the command creates a 
     client-specific setup for the system with MAC address 
     of 0:e0:81:5d:bf:e0. 
     
     This client will use the install service previously 
     set up, named 0906x86, and the net image at 
     /export/aiserver/osol-0906-ai-x86.

     Using the -b option, the command sets the console 
     value, &lt;console=ttya&gt;, in the client-specific 
     menu.lst file in /tftpboot.
 
     As shown above, this command outputs the name of 
     the client-specific macro, 0100E0815DBFE0,
     and its values that need to be added to the DHCP 
     server. If you have a Sun DHCP server, create the 
     above macro on your DHCP server by running the dhtadm 
     command from the output on your DHCP server.

     The pntadm(1M) command may need to be called if you 
     set up a Sun DHCP server and client IP addresses 
     need to be assigned.  See the pntadm(1M) manpage for 
     more information.

     On systems which support graphic interfaces, the 
     DHCP Manager may be used instead of the dhtadm or 
     pntadm commands. See the dhcpmgr(1M) manpage for more 
     information.

     
     Example 3: Use the following sample command
     to add a new custom manifest to an existing install 
     service: 
 
     # installadm add -m criteria_mac.xml \
     -n service_032509

     The command assigns the manifest, criteria_mac.xml
     to the install service, service_032509.
   
     For further information about creating and using new 
     manifests, see http://dlc.sun.com/osol/docs/content
     /dev/AIinstall/.


ATTRIBUTES
 
     SUNWinstalladm-tools package 
     /usr/man/man1m/installadm.1m
     Package is in development.

     /usr/sbin/installadm

     ATTRIBUTE TYPE        ATTRIBUTE VALUE    

     Availability          SUNWinstalladm-tools
    
     Interface Stability   In Development  

 

SEE ALSO

     OpenSolaris Automated Installer Guide at
     /usr/share/doc/auto_install/index.html or at 
     http://dlc.sun.com/osol/docs/content/dev/
     AIinstall/
    
     Getting Started With OpenSolaris at
     http://dlc.sun.com/osol/docs/content/dev/
     getstart/


OpenSolaris 2009.06  Last Changed April 30, 2009                       
 </screen>
</sect1>
</chapter>