OpenSolaris Automated Installer Guide
Previous Next

AI Manifest Contents

As described in Chapter 6, How to Administer the Manifest Files for an Install Service, 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:

AI Manifest Tag Values

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.

Table 9-1 AI Manifest Tags and Values

Tag

Element Within Tag

Description

<ai_target_device>

<ai_target_device> 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, “Solaris” with a size greater than the recommended size. In the case of SPARC systems, the installer looks for a VTOC-labeled disk of the greater than recommended size.

The <ai_target_size> can be defined either by the device name, such as c0t0d0, or by the MPXIO name, such as c0t2000002037CD9F72d0. The <ai_target_size> can also be defined by a combination of <target_device_type>, <target_device_vendor>, and <target_device_size>.

All elements of <ai_target_device> are optional.

<target_device_name>

<target_device_name> is the name of the disk device. The device could be a cXtXdX value or an MPXIO name. If the <target_device_name> is specified, all other <ai_target_device> specification parameters, such as <target_device_type>, <target_device_vendor>, and <target_device_size> are ignored. Be cautious while using cXtXdX values, since these values may change across OpenSolaris releases.

<target_device_type>

<target_device_type> denotes the type of the target disk. Possible values are SCSI, SATA, PATA, and USB.

<target_device_vendor>

<target_device_vendor> denotes the name of the manufacturer of the disk drives. Possible values include Sun, EMC, Seagate, Fujitsu, and others.

<target_device_size>

<target_device_size> denotes the disk size of the target device in megabytes (MB). If the size of a disk is equal to the <target_device_size>, then that specific disk is chosen as the target device.

<target_device_install_slice_number>

<target_device_install_slice_number> 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 <target_device_install_slice_number> are 0, 1, 3, 4, 5, 6 and 7. Specifying slice 2 is not allowed, since slice 2 represents the whole disk.

<ai_device_partitioning>

<ai_device_partitioning> 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. <ai_device_partitioning> is optional and applicable only for X86 clients.

All of the following elements of <ai_device_partitioning> are optional.

<partition_action>

<partition_action> denotes the type of partition-related operation to be performed during the client installation. The only allowed actions are create and delete.

<partition_number>

<partition_number> denotes the unique partition identification in the partition table. When this element is combined with the <partition_action> of delete, then the automatic installer deletes the partition with the specified <partition_number>. When the <partition_action> has the value of create, <partition_number> is ignored.

<partition_start_sector>

If the <partition_action> is create, <partition_start_sector> denotes the sector where the partition should start. If the <partition_action> is delete, then the automated installer tries to delete the partition starting at this sector.

<partition_size>

<partition_size> denotes the size of the partition to be created or to be deleted. The value of <partition_size> is interpreted based on the <partition_size_units> value. The default size unit is megabytes (MB). The <partition_size> is required for creating a new partition. You can use the special value, max_size, to indicate that you want the automated installer to use the largest free region, and to create the partition with the maximum possible space.

<partition_type>

<partition_type> denotes the type of the partition to be created or deleted. If <partition_type> is specified in the delete action without any other partition elements, the automated installer deletes all the partitions of that type. The value of <partition_type> could be any integer representing a valid partition type. The automated installer recognizes the values SOLARIS, DOS16, and FAT32.

<partition_size_units>

<partition_size_units> defines the units for the partition size. The default size unit is megabytes (MB). The possible values for <partition_size_units> include the following:

  • sectors, secs, sec, s, SECTORS, SECS, SEC, or S

  • MB, megabytes, megabyte, mb, m, MEGABYTES, MEGABYTE, M

  • GB, gigabytes, gigabyte, gb, g, GIGABYTES, GIGABYTE, G

  • TB, terabytes, terabyte, tb, t, TERABYTES, TERABYTE, T

<ai_device_vtoc_slices>

<ai_device_vtoc_slices> specifies VTOC slice-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.

<slice_action>

<slice_action> denotes the type of slice-related operation to be performed during installation. The allowed actions are create, delete, and preserve.

<slice_number>

<slice_number> denotes the unique slice identification in the VTOC table. When this element is combined with the <slice_action> set to delete, then the automatic installer deletes the slice with the specified <slice_number>. If the <slice_action> is create, then a new slice is created with the specified <slice_number>. If the <slice_action> is preserve, then the specified slice is not touched during installation.

<slice_size>

<slice_size> denotes the size of the slice to be created or deleted or preserved. The value of <slice_size> is interpreted based on the <slice_size_units> value. The default size unit is megabytes (MB). The <slice_size> is required for creating a new partition. You can use the special value, max_size, to indicate that you want the automated installer to use the largest free region and to create the partition with the maximum possible space.

<slice_size_units>

<slice_size_units> defines the units for the slice size. The default size unit is megabytes (MB). The possible values for <slice_size_units> include the following:

  • sectors, secs, sec, s, SECTORS, SECS, SEC, or S

  • MB, megabytes, megabyte, mb, m, MEGABYTES, MEGABYTE, M

  • GB, gigabytes, gigabyte, gb, g, GIGABYTES, GIGABYTE, G

  • TB, terabytes, terabyte, tb, t, TERABYTES, TERABYTE, T

<ai_pkg_repo_default_authority>

<ai_pkg_repo_default_authority> defines the IPS repository from which OpenSolaris installation should be performed. This element is optional. The default value is pkg.opensolaris.org with an authority value of opensolaris.org.

<main>

<main> defines the primary IPS repository to be used. <main> consists of two attributes, authname and url. The authname is the authority name for the IPS repository. The url attribute points to the location of the IPS repository.

<mirror>

<mirror> defines the location of a backup IPS repository whose contents are identical to the <main> element and uses the same authname. The mirror element consists of one attribute, url, that points to the location of the IPS repository. This element is optional. There can be more than one mirror.

<ai_pkg_repo_addl_authority>

<ai_pkg_repo_addl_authority> 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.

<main>

<main> defines the primary IPS repository to be used. <main> consists of two attributes, authname and url. The authname is the authority name for the IPS repository. The url attribute points to the location of the IPS repository.

<mirror>

<mirror> defines the location of a backup IPS repository whose contents are identical to the <main> element and uses the same authname. The mirror element consists of one attribute, url, that points to the location of the IPS repository. This element is optional. There can be more than one mirror.

<ai_install_packages>

<ai_install_packages> defines the list of packages to be installed by automated installer during installation. <ai_install_packages> is mandatory. At least one package must be defined in this element. This tag consists of a single element called pkg. This element, pkg, has an attribute called name. The name attribute could be a simple package name, such as SUNWcs, or an incorporation, such as entire, or an FMRI, such as SUNWPython@2.4.4,5.11-0.101:20081119T213939Z.

<ai_uninstall_packages>

<ai_uninstall_packages> defines the list of packages to be removed by automated installer during installation. <ai_uninstall_packages> is an optional element. The definition of <ai_uninstall_packages> is similar to that of <ai_install_packages>. This tag consists of a single element called pkg. The element, pkg, has an attribute called name. The name attribute could be a simple package name, such as SUNWcs, or an incorporation, such as entire, or an FMRI, such as SUNWPython@2.4.4,5.11-0.101:20081119T213939Z.

<ai_http_proxy>

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.

The element <ai_http_proxy> can be used to setup HTTP proxy that can be used for automated installations. <ai_http_proxy> consists of an attribute, url, that points to the HTTP proxy location. This element is optional.

<ai_auto_reboot>

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, <ai_auto_reboot> can be set to true. The possible values of <ai_auto_reboot> are true and false.

AI Manifest Complete File

The following is a complete AI manifest file with comments.

<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->

<!--
===============================================================================
RelaxNG schema for Automatic Installer input manifest specification.

Contains schema rules and content specification for AI manifest.

===============================================================================
-->


<grammar
    xmlns="http://relaxng.org/ns/structure/1.0"
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

        <start>
                <element name="ai_manifest">
            <attribute name="name"/>
                        <!-- General automatic Installation parameters -->
                        <ref name="auto_installation_manifest"/>
                </element>
        </start>

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

            <optional>
                <element name="ai_pkg_repo_default_authority">
                    <ref name="ai_pkg_repo_contents"/>
                </element>
            </optional>

            <zeroOrMore>
                <element name="ai_pkg_repo_addl_authority">
                    <ref name="ai_pkg_repo_contents"/>
                </element>
            </zeroOrMore>

            <!--
            ========================================================
            Define AI packages
            ========================================================
            -->
            <choice>
                <element name="ai_packages">
                    <zeroOrMore>
                        <element name="package_name">
                            <text/>
                        </element>
                    </zeroOrMore>
                </element>

                <element name="ai_install_packages">
                    <oneOrMore>
                        <element name="pkg">
                            <attribute name="name">
                                <text/>
                            </attribute>
                        </element>
                    </oneOrMore>
                </element> 
            </choice>

            <optional>
                <element name="ai_uninstall_packages">
                    <oneOrMore>
                        <element name="pkg">
                            <attribute name="name">
                                <text/>
                            </attribute>
                        </element>
                    </oneOrMore>
                </element>
            </optional>

            <optional>
                <element name="ai_http_proxy">
                    <ref name="ai_http_proxy_contents"/>
                </element>
            </optional>

            <optional>
                <element name="ai_auto_reboot">
                    <data type="boolean"/>
                </element>
            </optional>        
        </interleave>
    </define>

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

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

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

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

        <!--
        =======================================================================
        Define an authority and its mirror backups.
        =======================================================================
        -->
        <define name="ai_pkg_repo_contents">
                <element name="main">
                        <ref name="ai_repo_name"/>
                </element>
                <zeroOrMore>
                        <element name="mirror">
                                <ref name="ai_mirror_name"/>
                        </element>
                </zeroOrMore>
        </define>

    <define name="ai_repo_name">
        <attribute name="authname">
            <text/>
        </attribute>
        <attribute name="url">
            <text/>
        </attribute>
    </define>

    <define name="ai_mirror_name">
        <attribute name="url">
            <text/>
        </attribute>
    </define>    

        <!--
        =======================================================================
        Define AI proxy
        =======================================================================
        -->
    <define name="ai_http_proxy_contents">
        <attribute name="url">
            <text/>
        </attribute>
    </define>    
        <!--
        =======================================================================
        General definitions
        =======================================================================
        -->
        <!--
        =======================================================================
        Units measuring sizable regions of space on disk drives
        =======================================================================
        -->
        <define name="disk_space_size_units">
        <choice>
            <value>sectors</value>
            <value>secs</value>    <!-- disk space sectors (512 bytes) -->
            <value>sec</value>    <!-- disk space sectors (512 bytes) -->
            <value>s</value>
            <value>megabytes</value>
            <value>megabyte</value>
            <value>mb</value>
            <value>m</value>
            <value>gigabytes</value>
            <value>gigabyte</value>
            <value>gb</value>
            <value>g</value>
            <value>terabytes</value>
            <value>terabyte</value>
            <value>tb</value>
            <value>t</value>
            <value>SECTORS</value>
            <value>SECS</value>    <!-- disk space sectors (512 bytes) -->
            <value>SEC</value>    <!-- disk space sectors (512 bytes) -->
            <value>S</value>
            <value>MEGABYTES</value>
            <value>MEGABYTE</value>
            <value>MB</value>
            <value>M</value>
            <value>GIGABYTES</value>
            <value>GIGABYTE</value>
            <value>GB</value>
            <value>G</value>
            <value>TERABYTES</value>
            <value>TERABYTE</value>
            <value>TB</value>
            <value>T</value>
        </choice>
    </define>
</grammar>
Previous Next