JavaScript is required to for searching.
跳过导航链接
退出打印视图
创建定制 Oracle Solaris 11.1 安装映像     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  创建定制安装映像简介

2.  设计定制安装映像

构建映像的系统要求

定制映像

样例清单文件

如何创建和构建定制映像

修改清单内容

提供映像标题

修改引导菜单

指定构建区域

指定发布者

列出要安装的软件包

列出要卸载的软件包

指定已安装系统的发布者

设置构建检查点

创建和使用定制脚本

如何创建和使用定制脚本

3.  构建映像

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

定制映像

分发构造器基于 XML 文件(称为“清单文件”)中指定的设置创建映像。清单文件包含使用分发构造器创建的 ISO 映像的内容和参数的规范。distribution-constructor 软件包提供可用于创建定制 x86 Live Media ISO、x86/SPARC 自动化安装 ISO 映像或 x86/SPARC 文本安装 ISO 映像的样例清单。

每个清单文件中的元素都提供预设的缺省值,这些值将创建您需要的 ISO 映像类型。可以手动编辑清单文件中的这些预设元素以定制所创建的映像。此外,还可以创建定制脚本以进一步修改映像。然后,引用清单文件中的新脚本。

样例清单文件

distribution-constructor 软件包提供下表介绍的样例清单文件。

表 2-2 样例清单

清单类型
清单位置
说明
x86 Live Media ISO 映像
/usr/share/distro_const/
dc_livecd.xml
用于创建与 Oracle Solaris Live Media 映像类似的 x86 ISO 映像
x86 文本安装映像
/usr/share/distro_const/
dc_text_x86.xml
用于创建可用于执行 x86 Oracle Solaris 操作系统文本安装的 x86 ISO 映像
SPARC 文本安装映像
/usr/share/distro_const/
dc_text_sparc.xml
用于创建可用于执行 SPARC Oracle Solaris 操作系统文本安装的 SPARC ISO 映像
x86 AI ISO 映像
/usr/share/distro_const/
dc_ai_x86.xml
用于创建 x86 自动化安装 ISO 映像,以便将 Oracle Solaris OS 自动安装到 x86 客户机
SPARC AI ISO 映像
/usr/share/distro_const/
dc_ai_sparc.xml
用于创建 SPARC 自动化安装 ISO 映像,以便将 Oracle Solaris OS 自动安装到 SPARC 客户机

如何创建和构建定制映像

此过程介绍了用于创建和构建定制映像的常规步骤。

  1. 安装 distribution-constructor 软件包,该软件包包含分发构造器应用程序和样例清单。

    您可以使用软件包管理器工具安装必需的软件包。在 Oracle Solaris 操作系统桌面的菜单栏中提供软件包管理器。在菜单栏上,转至 "System"(系统)>"Administration"(管理)>"Package Manager"(软件包管理器)。

    或者,使用如下 IPS 命令安装该软件包:

    # pkg install distribution-constructor
  2. 复制其中一个样例清单并使用新文件名创建定制清单文件。

    使用 distro_const 命令创建映像时,将按名称引用清单文件。


    注 - 复制原始清单文件和缺省脚本之前,始终对其进行备份。


  3. 编辑清单元素。

    例如,您可以编辑清单中的目标元素,为可构造映像的构建区域指定其他位置。您还可以检查发布者以确保您的系统可与该发布者联系,以便下载构建映像所需的软件包。如有必要,可以编辑软件名称元素以指定其他发布者和系统信息库位置。

    有关信息,请参见修改清单内容dc_manifest(4) 手册页。

  4. 可选创建定制脚本以进一步修改映像。

    如果创建了新脚本,请更新清单文件的执行部分中的脚本引用。

    有关说明,请参见创建和使用定制脚本

  5. 运行 distro_const 实用程序以创建映像。

    有关说明,请参见第 3 章

修改清单内容

每个清单文件中的所有字段都提供预设的缺省值,这些值将创建您需要的 ISO 映像类型。可以手动编辑清单文件中的这些预设字段,以进一步定制所创建的映像。

下表介绍了样例清单文件中的主要元素。

表 2-3 清单元素

元素
说明
<distro name="Oracle_Solaris_Text_X86"
add_timestamp="false">
指定带有可选时间戳的映像名称
<boot_mods>
指定映像的 GRUB 菜单修改
<target>
定义构建映像的 ZFS 构建数据集
<software name="transfer-ips-install" type="IPS">
指定要安装的软件包的源
<software_data action="install">
列出要安装的软件包
<software_data action="uninstall">
列出要卸载的软件包
<software name="set-ips-attributes">
安装完成后为 IPS 设置不同属性
<software name="ba-init">
指定引导归档文件内容

注意

注意 - 修改时请谨慎。如果引导归档文件不正确,则安装的系统将无法进行引导。


<execution stop_on_error="true">
<checkpoint name="transfer-ips-install"/>
列出构建检查点
<configuration name="pre-pkg-img-mod" type="sysconf"
 
source="/etc/svc/profile/generic_limited_net.xml">
指定构建期间要应用到介质的 SMF 服务

注意

注意 - 很少进行修改。


提供映像标题

使用以下元素可为要构建的映像提供定制或缺省名称:

<distro name="Oracle_Solaris_Text_X86" add_timestamp="false">

如果您要构建一系列映像,并保留增量式映像,可以将时间戳变量更改为 "true",然后时间戳将自动附加到每个映像的名称中。

如果需要指定 HTTP 代理,请取消注释包含代理变量的 distro name 元素,然后提供代理位置。

修改引导菜单

该引导菜单元素指定要应用于映像的引导菜单修改。

在以下示例中,一个标题为 "boot1" 的专门的引导菜单将应用于映像。timeout 属性指定自动激活缺省引导条目之前的时间。

<boot_mods title="boot1" timeout="5">

在引导菜单元素中,您可以通过为每个新条目添加新的 boot_entry 元素来添加各个引导菜单条目。各条目按顺序添加到引导菜单,该顺序基于每个引导条目的 insert_at 属性值 "start" 或 "end"。


注 - 在现有 "with magnifier" 条目之前添加新条目。


请参见以下单个 boot_entry 元素的示例。

<boot_entry>
   <title_suffix>with screen reader</title_suffix>
   <kernel_args>-B assistive_tech=reader</kernel_args>
</boot_entry>

有关详细信息,请参见 dc_manifest(4) 手册页。

指定构建区域

可以定制 target 元素。该元素定义将用于该构建的 ZFS 构建数据集。该数据集是将创建映像的区域。您必须提供有效的数据集位置。应当检查缺省构建区域,以确保构建过程中不会销毁需要保留在系统上的内容。如有必要,请修改构建区域。


注 - 文件系统名称不应当包括 zpool 的名称。


以下示例显示了一个目标元素样例。

 <target>
   <logical>
     <zpool action="use_existing" name="rpool">
       <dataset>
         <filesystem name="dc/sample-dataset-location" 
         action="preserve"/>
       </dataset>
     </zpool>
   </logical>
 </target>

指定发布者

以下元素指定分发构造器可以从其中下载软件包来构建映像的发布者。

<software name="transfer-ips-install">

在此 software name 部分的源元素中,编辑发布者名称和源名称元素来指定要使用的发布者以及软件包系统信息库所处的位置。系统信息库位置可能是 NFS 路径或本地目录。可以列出多个发布者。当分发构造器尝试定位要安装的软件包时,按在此处列出的顺序搜索发布者。

如果需要指定发布者的镜像,请取消注释并编辑镜像名称元素。

以下示例显示了在 software name 元素中找到的样例源元素。

<source>
   <publisher name="publisher1">
      <origin name="http://example.oracle.com/primary-pub"/>
      <mirror name="mirror.example.com"/>
   </publisher>
   <publisher name="publisher2">
       <origin name="http://example2.com/dev/solaris"></origin>
   </publisher>
   <publisher name="publisher3.org">
       <origin name="http://example3.com/dev"></origin>
    </publisher>
</source>

有关使用发布者的详细信息,请参见《添加和更新 Oracle Solaris 11.1 软件包》

列出要安装的软件包

带有 install 属性的 software_data 元素根据您使用的清单,列出为了构建特定类型的映像而需安装的一组软件包。例如,dc_livecd.xml 清单列出构建 Live Media 映像所需的软件包。每个名称标记列出一个软件包名称或包含许多软件包的软件包组的名称。

<software_data action="install">
   <name>pkg:/group/system/solaris-desktop</name>
   <name>pkg:/system/install/gui-install</name>
   <name>pkg:/system/install/media/internal</name>
</software_data>

如果您有要添加到映像的软件包,通过为每个软件包添加名称标记来附加软件包名称。

缺省情况下,将安装指定系统信息库中可用的最新软件包版本。如果需要其他版本,请使用以下格式将版本号附加到软件包引用中:

<name>pkg:/group/system/solaris-desktop@0.5.11-0.build#</name>

注 - 您系统上的 Oracle Solaris 发行版版本必须与要使用分发构造器创建的映像发行版版本相同。

此外,如果按照自动化安装服务的清单文件指定的情况安装了其他冲突版本的软件包,则可能不会安装所指定的特定版本的软件包。请参见《安装 Oracle Solaris 11.1 系统》中的第 9  章 "定制安装"


示例 2-1 添加软件包和其他发布者

在该示例中,指定了另外一个发布者 mypublisher。指定了其他软件包 mypackage1mypackage2

在构建过程中,系统会按列出发布者的顺序检查这些发布者。如果在第一个发布者中没有找到软件包,将在下一个发布者中搜索指定的软件包。

<software name="transfer-ips-install" type="IPS">
   <destination>
      <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
            href="/usr/share/distro_const/lang_facets.xml"/>
   </destination>
   <source>
      <publisher name="solaris">
          <origin name="http://pkg.oracle.com/solaris/release"/>
      </publisher>
      <publisher name="mypublisher">
         <origin name="http://mypublisher.company.com"/>
      </publisher>
   </source>
   <software_data action="install">
        <name>pkg:/group/system/solaris-large-server</name>
        <name>pkg:/system/install/text-install</name>
        <name>pkg:/system/install/media/internal</name>
        <name>pkg:/mypackage1</name>
        <name>pkg:/mypackage2</name>
   </software_data>
</software>

列出要卸载的软件包

带有 uninstall 属性的 software_data 元素可用于卸载单个软件包或卸载软件包组定义。


注 - 组软件包定义将该组中各个软件包一起绑定到一个仅可用作一个组的单元。


如果要安装整个组软件包但又希望省略该组中一个或多个单独的软件包,则 uninstall 属性特别有用。您可以首先使用 uninstall 属性删除组软件包定义。然后,可以卸载作为组软件包一部分的各个软件包

例如,您可以选择构建 Live Media 安装映像。缺省 Live Media 安装映像在桌面组软件包中包括 Firefox 浏览器。

如果希望在要构建的映像中省略 Firefox 浏览器,则可以执行以下操作:

  1. 安装 solaris-desktop 组软件包,该组软件包包括常见 Live Media 桌面的所有软件。请参见列出要安装的软件包

  2. 通过按照以下方式使用 uninstall 属性卸载 solaris-desktop 组软件包定义:

    <software_data action="uninstall">
       <name>pkg:/group/system/solaris-desktop</name>
    </software_data>

    注 - 针对组软件包的卸载操作仅卸载组软件包定义。该组中的所有各个软件包仍将按照第一步进行安装。


  3. 现在各个软件包已不再与组定义绑定,您可以再次使用 uninstall 属性卸载 Firefox 软件包。

    <software_data action="uninstall">
       <name>pkg:/web/browser/firefox</name>
    </software_data>

    或者,可以按照以下方式将步骤 2 和 3 合并为一个条目:

    <software_data action="uninstall">
            <name>pkg:/group/system/solaris-desktop</name>
            <name>pkg:/web/browser/firefox</name>
    </software_data>

在卸载部分的末尾附加将卸载的其他软件包。

指定已安装系统的发布者

当使用通过分发构造器创建的映像安装系统后,software name 元素将影响该系统。

<software name="set-ips-attributes">

提供发布者名称和可选镜像名称标记以指定已安装系统可从何处访问其他软件包并进行下载和安装。

也可以在该元素中设置 IPS 属性。有关 IPS 属性信息,请参见 pkg(1) 手册页。

设置构建检查点

清单中的 execution 元素列出在映像构建过程中执行的一系列检查点。按此部分中的排列顺序执行检查点。构建缺省安装映像所需的缺省检查点包含在每个清单中。

在映像构建过程中,检查点将修改在清单中指定的构建区域的内容。

构建区域包含以下目录:

其中 ZFS dataset 变量由清单中目标元素指定。

在构建过程中,要包含在最终映像中的所有项均将添加到 pkg_image 目录中。独立 boot_archive 目录中的文件在构建过程中用于创建引导归档文件,该文件也会添加到 pkg_image 目录中。

以下列表按照检查点在大多数清单中执行的顺序对每个缺省检查点进行了简要说明。

查看每个检查点部分中包含的特定字段,每个检查点名称标记均包括 mod-path 属性,该属性指定检查点脚本所在的位置。

某些缺省检查点标记包括提供了缺省值的参数。dc_ai_sparc.xml 样例清单的以下检查点示例会创建用于构建映像的引导归档文件,并指向将完成该任务的脚本。示例检查点还包括为每个参数提供了特定值的参数字段。

<checkpoint name="ba-arch"
    desc="Boot Archive Archival"
    mod_path="solaris_install/distro_const/checkpoints/
    boot_archive_archive"
    checkpoint_class="BootArchiveArchive">
    <kwargs>
        <arg name="size_pad">0</arg>
        <arg name="bytes_per_inode">0</arg>
        <arglist name="uncompressed_files">
             <argitem>etc/svc/repository.db</argitem>
             <argitem>etc/name_to_major</argitem>
             <argitem>etc/minor_perm</argitem>
             <argitem>etc/driver_aliases</argitem>
             <argitem>etc/driver_classes</argitem>
             <argitem>etc/path_to_inst</argitem>
             <argitem>etc/default/init</argitem>
             <argitem>etc/nsswitch.conf</argitem>
             <argitem>etc/passwd</argitem>
             <argitem>etc/shadow</argitem>
             <argitem>etc/inet/hosts</argitem>
        </arglist>
    </kwargs>
</checkpoint>

如本示例所示,kwargs 元素包含在构建期间需要传递到检查点的关键字参数。kwargs 元素内部包含 arg name 元素,这些元素可用于指定要传递到检查点的各个关键字。而 arglist 元素包含要传递到检查点的多个 argitem 值的列表。本示例的 arglist 元素中包含未压缩文件的列表。

每个 kargs 列表项均用双引号括起来。如果未使用双引号,或者使用一组双引号括住整个字符串,则包括空格和换行符在内的整个字符串将被视为一个参数。请勿在参数之间使用逗号。

如果创建构建映像期间要使用的定制脚本,必须添加指向该脚本位置的检查点元素。定制脚本的检查点只需要一个指向定制脚本位置的 args 元素。有关详细信息和示例,请参见创建和使用定制脚本

使用 distro_const 命令选项可控制在特定的检查点停止和重新启动构建过程。请参见如何分阶段构建映像

示例 2-2 添加 SVR4 软件包

在此示例中,一个新检查点将被添加到清单中。该新检查点会列出要添加到映像的 SVR4 软件包及其位置。然后,会在执行部分引用该新检查点。

首先,通过添加新的 software 元素创建新检查点。该检查点指定 SVR4 作为软件类型,并指定查找软件包以及安装软件包的位置。

此外,要安装的特定 SVR4 软件包会列在 software_data 元素中。

<software name=transfer-svr4-install type="SVR4">
   <destination>
       <dir path={PKG_IMAGE_PATH}/>
   </destination>
   <source>
    <dir path="/path/to/packages"/>
   </source>
   <software_data action="install">
      <name>SUNWpackage1</name>
      <name>SUNWpackage2</name>
   </software_data>
</software>

如果包括在检查点中,{PKG_IMAGE_PATH} {BOOT_ARCHIVE} 的值将由 distro_const 实用程序分别替换为 ZFS dataset/build_data/pkg_imageZFS dataset/build_data/boot_archive。在本示例中,SVR4 软件包将被安装到 ZFS dataset/build_data/pkg_image 中。

最后,会在执行部分引用该新检查点。

<execution stop_on_error="true">
   <checkpoint name="transfer-ips-install"
       desc="Transfer pkg contents from IPS"
       mod_path="solaris_install/transfer/ips"
       checkpoint_class="TransferIPS"/>
   <checkpoint name="set-ips-attributes"
       desc="Set post-install IPS attributes"
       mod_path="solaris_install/transfer/ips"
       checkpoint_class="TransferIPS"/>
   <checkpoint name="transfer-svr4-install"
      desc="Transfer pkg contents from SVR4 packages"
      mod_path="solaris_install/transfer/svr4"
      checkpoint_class="TransferSVR4"/>

请注意,软件名称必须与检查点名称匹配。在该示例中,这两个名称均为 "transfer-svr4–install"。

创建和使用定制脚本

通过分发构造器,可以指定可用于基于要构建的映像类型在映像创建过程中进行定制的其他脚本。清单文件指向脚本,脚本会将通用映像转换为特定于介质的分发。这些脚本在清单文件的执行部分中引用。可以指定任意数量的定制脚本检查点。


注 - 脚本支持限于随应用程序软件包一起提供的任何未修改的缺省脚本。如果选择定制这些脚本,请先备份原始脚本。

此外,请注意清单文件的执行部分中指定的脚本会在映像创建过程中运行。执行部分不会引用预安装或安装后脚本。


创建您自己的定制脚本时,请注意以下内容:

如何创建和使用定制脚本

  1. 创建新脚本。
  2. 将新脚本添加到起始目录或者系统或网络上的其他位置。

    确保承担 root 角色的用户可以执行这些脚本。

  3. 通过在相应清单文件的执行部分中添加检查点来引用新脚本。

    要确定新检查点的位置,请查看设置构建检查点中有关缺省检查点的说明。

    确保为脚本指定完整路径。检查点以其在清单的执行部分中列出的顺序执行。

    在清单文件的执行部分中为新脚本添加引用时,必须指定可用于在该脚本执行其任务之前或之后暂停映像构建的检查点名称。或者,可以包括与检查点名称关联的定制消息。如果忽略该消息,脚本的路径将用作缺省检查点消息。在构建过程中,检查点运行时将显示检查点消息。


    注 - 对检查点名称使用有意义的名称,而不是使用数字。如果添加了新脚本,这些新脚本对应的新检查点将扰乱已编号的检查点顺序。


    以下示例检查点引用名为 "my-script" 的定制脚本。

    <checkpoint name="my-script"
            desc="my new script"
            mod_path="solaris_install/distro_const/checkpoints/custom_script"
            checkpoint_class="CustomScript">
            <args>/tmp/myscript.sh</args>
    </checkpoint>
  4. 可选指定作为检查点一部分的构建参数,如下所示。

    此处,{PKG_IMAGE_PATH} 被指定为参数部分中的构建参数。

    <checkpoint name="my-script"
            desc="my new script"
            mod_path="solaris_install/distro_const/checkpoints/my_script"
            checkpoint_class="CustomScript">
            <args>/tmp/myscript.sh {PKG_IMAGE_PATH}</args>
    </checkpoint>

    如果包括在检查点中,{PKG_IMAGE_PATH} {BOOT_ARCHIVE} 的值将由 distro_const 实用程序分别替换为 ZFS dataset/build_data/pkg_imageZFS dataset/build_data/boot_archive

  5. 构建映像。

    可以一步构建映像。或者,要检查构建状态,可以在各个检查点上停止然后重新启动构建。

    有关说明,请参见第 3 章

  6. 可选构建完成后,可以查看用于报告构建过程的日志文件。

    构建输出会显示日志文件的位置。