手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

js2ai(1M)

名称

js2ai - 转换 JumpStart 规则和配置文件以供自动化安装程序 (Automated Installer, AI) 使用。

用法概要

js2ai [-h | --version]
js2ai -r | -p profile [-d jsdir
]
    [-D destdir] [-lSv]
js2ai -s [-d jsdir]
    [-D destdir] [-Sv]
js2ai -V manifest

描述

js2ai 是用于将 Oracle Solaris 10 JumpStart rules、配置文件和 syscfg 配置文件转换为与自动化安装程序 (Automated Installer, AI) 兼容的格式的实用程序。该实用程序会尽最大努力转换那些可转换到 AI 上下文中的 JumpStart 关键字。尽管此转换过程并不为 JumpStart 创建完整的一对一对等项,但是它确实可以提供可用作模板的 AI 清单和系统配置文件条目,之后可借助此模板根据从 JumpStart 配置文件收集的信息创建完整的 AI 配置设置。

    使用 js2ai 可执行以下操作:

  • 处理当前工作目录中的 rules 文件和关联配置文件。

  • 处理指定目录中的 rules 文件和关联配置文件。

  • 处理特定配置文件或 sysidcfg 文件。

  • 将生成的输出文件定向到特定目录。有关 js2ai 输出文件的更多信息,请参见“示例”和“文件”部分。

转换规则关键字

表 339-1  JumpStart 规则关键字转换
JumpStart 规则关键字
AI 条件关键字
arch
cpu
hostaddress
ipv4
karch
arch
memsize
mem
model
platform
network
ipv4

js2ai 不支持的 JumpStart 规则关键字:

any             installed
disksize        osname
domainname      probe
hostname        totaldisk

转换配置文件关键字

表 339-2  JumpStart 配置文件关键字
JumpStart 配置文件关键字
附注
boot_device
如果 rootdisk 以前不是由 root_device 关键字设置的,则设为指定设备。
fdisk
disk_name 的值必须是设备。不支持 all 设备。fdisk 类型必须是 solaris。不支持大小为 0 或 delete
如果 partitioningdefault 并且 rootdisk 尚未设置,则遇到的首个 fdisk solaris 分区将用作 rootdisk
filesys
如果指定的挂载点是 / 或 swap,将支持本地和镜像文件系统。
不对大小进行验证。可能需要调整生成的 AI 清单中指定的大小,以便该清单能实现成功安装。
install_type
仅支持 initial_install 值。
locale
不执行转换。确保 Oracle Solaris 11 支持指定的语言环境。
package
尝试将指定的软件包转换为其 Oracle Solaris 11 等效项。不支持指定软件包位置。软件包查找可能要花费很长的时间。如果您的配置文件中包含较长的软件包列表,您可能需要在转换过程中使用 –-local 标志。
partitioning
支持的类型为 defaultexplicit。与 JumpStart 不同的是,如果指定了 partitioning default,仅使用 js2ai 可识别的磁盘。如果未在任何关键字中指定磁盘,则生成的配置文件会通知 AI 选择要使用的磁盘。
pool
如果在配置文件中指定了池,则使用指定设备创建 ZFS 根池。确定 ZFS 根池使用哪些设备时,pool 关键字将取代其他的所有关键字。
不验证池大小、交换大小或转储大小。可能需要在生成的 AI 清单中调整这些大小,以编该清单能实现成功安装。
root_device
rootdisk 设置为指定设备。
system_type
仅支持 standalone 值。
usedisk
指定设备可用于在转换过程中解析 any rootdisk 设备。在未镜像 ZFS 根池时,不用于此目的任何指定设备都将添加到该池。

js2ai 不支持的 JumpStart 配置文件关键字:

archive_location       geo
backup_media           layout_constraint
bootenv                local_customization
client_arch            metabd
client_root            no_master_check
client_swap            no_content_check
cluster                num_clients
dontuse                patch
forced_deployment

在配置文件转换期间如何确定系统的根磁盘

由于 js2ai 在配置文件转换过程中不能访问配置文件引用的实际系统,js2ai 会在转换期间尝试使用尽可能匹配 JumpStart 的过程确定根磁盘。

js2ai 工具执行以下步骤来确定要用于根磁盘的设备。

阶段
操作
1
如果在配置文件中指定了 root_device 关键字,则 js2ai 会将 rootdisk 设置为分片所在的设备。
2
如果未设置 rootdisk 但在配置文件中指定了 boot_device 关键字,js2ai 会将 rootdisk 设置为引导设备。
3
如果未设置 rootdisk,但指定了 partitioning default 并遇到 solaris fdisk 条目,js2ai 会将 rootdisk 设置为指定的 disk_name
4
如果未设置 rootdisk 但在配置文件中指定了 filesys cwtxdysz size / 条目,则 js2airootdisk 设置为该条目中指定的 cwtxdysz 磁盘。
5
如果未设置 rootdisk 且在配置文件中指定了 usedisk disk 条目,则 js2ai 会将 rootdisk 设置为在该条目中指定的 disk 磁盘。
6
如果未设置 rootdisk 并且在配置文件中遇到了如下指定(其中 size 不是 0 或 delete 并且 disk 不是 all),则 rootdisk 将设置为此 disk 名称。
fdisk disk solaris size
7
如果未设置 rootdisk,每次遇到指定为 rootdisk 的设备时都会生成一个转换错误。

在配置文件转换期间如何转换 any 设备

js2ai 工具执行以下步骤来确定指定了 any 关键字时要使用的设备。

阶段
操作
1
如果指定了 any 设备且指定了关键字操作(非镜像池或具有 / 挂载点的 filesys),则在设置了 rootdiskany 设备将设置为 rootdisk
2
如果 any 设备尚未转换并且配置文件中存在 usedisk 语句,any 设备将设置为由 usedisk 语句指定的设备。
3
如果 any 设备尚未转换并且指定 any 设备的操作会创建 ZFS 根池,则 AI 会选择该设备。这在指定了镜像pool时不适用。

在配置文件转换期间如何确定 ZFS 根池

js2ai 工具执行以下步骤来确定要用于 ZFS 根池的设备。确定 ZFS 根池后,如果之后遇到的定义与已确定的 ZFS 根池发生冲突,会将这些定义标记为错误。

阶段
操作
1
如果配置文件指定了 pool 关键字,js2ai 会将 ZFS 根池设置为 pool 关键字指定的设备。
2
如果尚未确定 ZFS 根池但配置文件指定了具有 / 挂载点的 filesys,则使用指定设备创建 ZFS 根池。
3
如果尚未确定 ZFS 根池、配置文件中的所有关键字已处理并且已设置 rootdisk,则使用 rootdisk 设备创建 ZFS 根池。
4
如果尚未确定 ZFS 根池并且分区类型为 default,AI 会选择用于 ZFS 根池的设备。
5
如果尚未确定 ZFS 根池并且在处理期间未发生错误,AI 会选择用于 ZFS 根池的设备。
6
如果 ZFS 根池不是镜像池,并且有一个或多个指定的 usedisk 设备未用于 rootdisk any 设备转换,则将这些磁盘添加到 ZFS 根池中。

转换 sysidcfg 关键字

表 339-3  JumpStart sysidcfg 关键字
sysidcfg 关键字
附注
keyboard
不执行转换。确保 Oracle Solaris 11 支持 sysidcfg 文件中指定的键盘。
name_service
支持的值包括 NoneDNSNISLDAP。NIS+ 名称服务将转换为 NIS。如果指定了名称服务,请为 DefaultFixed 配置 Oracle Solaris 11 中的网络接口。可以使用 network_interface 关键字来定义网络特征。
缺省情况下,Oracle Solaris 使用前缀 'net' 来指定链路名称。为了使用 sysidcfg 文件中指定的现有 Oracle Solaris 10 接口名称,将禁用此功能。如果您希望使用中性链路名称的自动分配,必须将 sysidcfg 中指定的网络接口名称更改为类似 net0 的 Oracle Solaris 中性链路名称。
network_interface
AI 仅支持在系统安装过程中配置一个接口。由于此限制,js2ai 工具仅处理标为 PRIMARY 的接口或在 sysidcfg 文件中遇到的第一个接口。如果指定了 name_service,网络将配置为 DefaultFixed。需要由正确配置的 DefaultFixed 网络来提供主机名、IP 地址、网络掩码和网关。仅当未指定名称服务时才支持自动化网络配置。
root_password
Oracle Solaris 11 使用角色,而不是 root 用户。需要定义具有 root 角色特权的管理用户以便在 multi-user 模式下访问系统。因为无法通过 root_password 关键字完全定义必需结构,将在 xml 文件 sc_profile.xml 中添加用于定义具有 root 角色特权的用户帐户的必需结构,作为注释。如果未指定 root_password 关键字,它的必需数据结构也将定义为注释。
security_policy
支持的值:None
service_profile
支持的值:limited_net
system_locale
js2ai 将进行检查以确保指定的语言环境是支持的缺省核心语言环境之一。有关核心语言环境的更多信息,请参见 http://docs.oracle.com/cd/E23824_01/html/E24456/glmwl.html
如果指定的语言环境不在核心语言环境中,则将生成警告。js2ai 还将尝试将非核心语言环境转换为核心语言环境。
terminal
不执行转换。确保 Oracle Solaris 11 支持 sysidcfg 文件中指定的终端类型。
timeserver
支持的值:localhost
timezone
无需执行转换。
nfs4_domain
nfs4_domain=dynamic 受 Automatic 网络和 DefaultFixed 网络的支持。nfs4_domain=<custom_domain_name> 仅受 DefaultFixed 网络的支持。network_interface 关键字的转换确定配置了 DefaultFixed 网络还是 Automatic 网络。

选项

js2ai 命令包含以下选项。“示例”部分对这些选项的用法进行了说明。

–h–-help

显示用法帮助消息。

–-version

显示 js2ai 实用程序的版本号。

–d jsdir, – -dir jsdir

指定 rules 和配置文件或 sysidcfg 文件的位置。

–D destdir, – -dest destdir

指定输出文件的位置。

–l, –-local

在 JumpStart 配置文件中搜索 package 关键字值的映像包管理系统 (Image Packaging System, IPS) 等效项时,会搜索在主机系统中安装的 IPS 软件包,而不是 IPS 软件包系统信息库中的软件包。

–p profile, – -profile profile

转换指定的 JumpStart 配置文件并为已处理的配置文件生成清单。在这种情况下,无需或不会生成条件文件。

–r, –-rule

转换规则和关联的配置文件并为已处理的每个配置文件生成清单。

–s, –-sysidcfg

处理 sysidcfg 文件并将结果输出至 sc_profile.xml

–S, –-skip

跳过验证。

–v–-verbose

提供有关在处理期间发生的操作的详细信息。

–V filename

验证指定的 AI 清单文件或 SMF 系统配置文件。不支持 AI 条件验证。

错误报告

错误报告

在转换期间发生一个或多个错误时,js2ai 工具将生成错误报告。

# js2ai -r
                    Process  Unsupported  Conversion  Validation
Name      Warnings  Errors   Items        Errors      Errors
--------  --------  -------  -----------  ----------  ----------
rules            0        0            2           0           -
profile1         0        0            0           2           1

Conversion completed. One or more failures and/or warnings occurred.
For details see ./js2ai.log

对于 js2ai 发现有错误的每个文件,报告中将包含一个条目。要实现即使没有错误也生成错误报告,请指定 –v–-verbose

该报告可说明各个文件中错误的类型。定义了 5 个错误类型:警告、处理错误、不支持的项、转换错误和验证错误。

警告

不需要更正这些消息中的项。例如,您可能会收到一条警告消息,说明未提供主机名或 root 口令等信息,将使用缺省值。

处理错误

这类错误表示阻止 js2ai 处理文件或文件内某一行的问题。处理错误通常在文件包含语法错误时发生。

不支持的项

这些项表示 js2ai 不支持的行。更改与关键字关联的值可以消除该错误。

转换错误

这类错误是指阻止 js2ai 处理某个行的状况。应手动更正这类错误或从文件中删除违例的行。

验证错误

这类错误是指在根据 AI 使用的架构定义验证生成的清单时发生的错误。必须先更正这些错误,AI 才能使用清单。

js2ai.log 文件指示哪一行中发生了什么错误。

# cat js2ai.log
rules: line 4: unsupported keyword: disksize
rules: line 4: unsupported keyword: installed
net924_sun4c: line 4: unsupported keyword: cluster
net924_sun4c: line 5: unsupported keyword: num_clients
net924_sun4c: line 6: unsupported keyword: client_swap
net924_sun4c: line 7: unsupported keyword: client_arch
upgrade: line 1: unsupported value for 'install_type' specified: upgrade

如果发生清单验证错误,js2ai.log 文件包含指向存在验证错误的日志文件的指针,如以下示例中所示:

Validation Errors:
    profile1: manifest validation of
    ./AI_profile1/profile1.xml failed.
    For details see ./AI_profile1/profile_validation.log

转换策略

转换策略

建议的规则和配置文件转换策略

    JumpStart 与 AI 之间不存在一对一转换。以下步骤说明了转换的常规执行过程。

  1. js2ai 实用程序尝试标记它遇到的任何错误,但 js2ai 假定转换的规则、配置文件和 sysidcfg 文件有效。

  2. 将包含 rules、配置文件和 syscfg 配置文件的 JumpStart 配置目录复制到安装了 install/installadm 软件包的 Oracle Solaris 11 系统。

  3. 在第 2 步复制到 Oracle Solaris 11 系统的 JumpStart 配置目录下,运行 js2ai 转换工具。

    # js2ai -rS

    该命令对 rules 文件和 rules 文件引用的配置文件执行转换操作。根据 AI 客户机置备清单 /usr/share/auto_install/manifest/default.xml 处理 rules 文件中引用的每个配置文件。此步骤将为 JumpStart rules 文件中指定的每个配置文件创建一个名为 AI_profile 的目录。对于转换的配置文件,AI_profile 目录会包含一个或多个 profile_name${arch}.xml 形式的 AI 清单。有关更多信息,请参见“文件”部分。

    –S 选项跳过验证环节。验证在第 5 步执行。

  4. 如果输出以下消息 “Successfully completed conversion”(成功完成转换),请跳到第 5 步。否则,检查 js2ai.log 文件并执行以下步骤:

    1. 更正所有处理错误。

    2. rules 和配置文件中删除任何列为“不支持的项”的行。

    3. 如果可能,检查并更正转换错误。否则删除导致错误的行。

    4. 检查所有警告消息并确保无需做任何更正。

    5. 重复执行第 3 步,直到不再报告处理错误、不支持的项和转换错误。

  5. 在不使用 –S 选项的情况下重新运行 js2ai

    # js2ai -r

    如果任何处理的配置文件发生验证错误,必须手动更正生成的 AI 清单。检查 js2ai.log 文件以了解失败详细信息。有关 AI 清单的信息,请参见 AI 文档。

  6. 转换与该 JumpStart 配置关联的任何 sysidcfg 文件。

    对于每个 sysidcfg 文件,执行以下命令:

    # js2ai -sS -d sysidcfgdir

    对于所处理的每个 sysidcfg 文件,此步骤将在调用 js2ai 命令的目录中创建一个名为 sc_profile.xml 的 AI 系统配置文件。可使用 –D 选项为 sc_profile.xml 文件指定其他目录。

    与配置文件转换不同,js2ai sysidcfg 转换将始终生成关于用户帐户的警告。

    sysidcfg:line x:WARNING: Oracle Solaris 11 uses roles instead of root user.
    An admin user with root role privileges will need to be defined in order to
    access the system in multi-user mode.  The necessary xml structures have been
    added to sc_profile.xml as a comment.  Edit sc_profile.xml to perform the
    necessary modifications to define the admin user.

    此警告与 js2ai 无法仅通过 root_passwd 关键字生成必需数据结构有关。将需要在转换过程结束时执行手动步骤来更正此情况。

    此外,还可能生成关于即将禁用中性链路名称支持的警告消息。

    sysidcfg:line x:WARNING: In order to support the direct translation of the
    sysidcfg interface 'e1000g', Oracle Solaris 11 neutral link name support will
    be disabled.  If you wish to use neutral link names, change the interface
    name specified in the sysidcfg file to a 'netx' style interface name or edit
    the resulting sc_profile.xml file.

    如果您希望使用旧样式链路名称,则不需要执行任何操作。在大多数情况下,接口将与它们在 Oracle Solaris 10 中所做的一样。但是不能保证将始终这样。

  7. 检查结果:

    1. 更正所有处理错误。

    2. 从作为“不受支持的项”列出的 sysidcfg 文件中删除任何行。

    3. 如果可能,检查并更正转换错误。否则删除导致错误的行。

    4. 检查所有警告消息并确保无需做任何更正。

    5. 重复执行第 6 步,直到不再报告处理错误、不支持的项和转换错误。

  8. 在不使用 –S 选项的情况下重新运行 js2ai

    # js2ai -s -d sysidcfgdir

    如果处理的任何 sysidcfg 文件出现任何验证错误,则必须手动更正生成的 AI 系统配置文件。检查 js2ai.log 文件以了解有关故障的详细信息。有关系统配置文件的信息,请参见 AI 文档。

  9. 编辑 js2ai 生成的 sc_profile.xml 文件,以向 system/config-user 结构中添加用户帐户信息。如果您的 sysidcfg 文件中包含了 root_passwd 关键字,则 js2ai 将生成如下所示的 system/config-user 结构:

    <service name="system/config-user" type="service" version="1">
    <instance enabled="true" name="default">
    <!--
    Configures user account as follows:
    * User account name 'jack'
    * password 'jack'
    * GID 10
    * UID 101
    * root role
    * bash shell
    -->
           <!--
    <property_group name="user_account" type="application">
       <propval name="login" type="astring" value="jack"/>
       <propval name="password" type="astring" value="9Nd/cwBcNWFZg"/>
       <propval name="description" type="astring" value="default_user"/>
       <propval name="shell" type="astring" value="/usr/bin/bash"/>
       <propval name="gid" type="astring" value="10"/>
       <propval name="uid" type="astring" value="101"/>
       <propval name="type" type="astring" value="normal"/>
       <propval name="roles" type="astring" value="root"/>
       <propval name="profiles" type="astring" value="System Administrator"/>
    </property_group>
     -->
       <property_group name="root_account" type="application">
             <propval name="password" type="astring" value="{your_root_passwd}"/>
             <propval name="type" type="astring" value="role"/>
           </property_group>
         </instance>
       </service>

    在 XML 中,注释以 <!-- and ends in --> 开头。要定义支持 Oracle Solaris 11 所需的用户,请删除 user_account 结构周围的 XML 注释标记。然后根据需要修改该结构,以创建将具有 root 角色特权的用户。如果未指定 root_password 关键字,还会将 root_account 属性组结构注释掉,您将需要对其取消注释并更新 root 口令字段。

  10. js2ai 转换过程完成。对生成的条件、AI 清单和系统配置文件执行手动验证。Oracle Solaris 11 安装所需的磁盘空间与 Oracle Solaris 10 安装所需的磁盘空间不同。确保在 AI 清单中分配的磁盘空间符合 Oracle Solaris 11 的要求。

  11. 配置 AI 以使用新生成的文件。将新生成的条件、AI 清单和系统配置文件添加到现有的 AI 安装服务。

    使用带有 create-manifest 子命令的 installadm 命令添加每个 AI 清单以及用于选择该清单的条件。每个客户机只能使用一个 AI 清单。

    # installadm create-manifest -n svcname \
    
    -f filename -m manifest \
    
    -C criteriafile

    使用 create-profile 子命令,为每个配置文件添加用于选择该配置文件的条件。每个客户机可以使用一个或多个系统配置文件。

    # installadm create-profile -n svcname \
    
    -f filename -p profile \
    
    -C criteriafile

    有关配置 AI 安装服务的信息,请参见 AI 文档和 installadm(1M) 手册页。

示例

示例 1 处理 JumpStart 配置

以下命令处理当前目录中的 JumpStart 规则和配置文件。输出也将放在该目录中。

# js2ai -r
示例 2 处理特定的 JumpStart 目录

以下命令处理指定目录中的 JumpStart 规则和配置文件,并将输出文件放在同一目录中。

# js2ai -r -d /export/jumpstart

有关输出文件的更多信息,请参见示例 4 和“文件”部分。

示例 3 处理特定 JumpStart 目录中的配置文件和输出到另外的目标目录

以下命令处理 /export/jumpstart 目录中的 JumpStart rules 和配置文件,并将输出文件放在 /export/output 中。

# js2ai -p profile1 -d /export/jumpstart -D /export/output
示例 4 指定规则及其配置文件的输入和输出结果示例

规则:

arch sparc && karch sun4u && \
    model 'SUNW,Serverblade1'  -   profile    -

配置文件:

install_type    initial_install
pool mypool auto auto auto c1t0d0s0

转换命令:

# js2ai -r -d /jumpstart -D /tmp/output

输出文件:

/tmp/output/AI_profile/profile.x86.xml
/tmp/output/AI_profile/profile.sparc.xml
/tmp/output/AI_profile/criteria-1.xml

将创建两个清单文件,一个用于 SPARC,另一个用于 x86,即使 rules 文件将 CPU 类型指定为 SPARC 也是如此。在转换过程中,规则和配置文件分开处理。

示例 5 将生成的文件添加到 AI 安装服务中

该示例使用示例 4 中生成的文件将清单和条件添加到现有服务中。

文件:

/tmp/output/AI_profile/profile.sparc.xml
/tmp/output/AI_profile/criteria-1.xml

installadm 命令:

# installadm create-manifest -n svc-name \
-f /tmp/output/AI_profile/profile.sparc.xml \
-m sparc_profile \
-C /tmp/output/AI_profile/criteria-1.xml
示例 6 处理 sysidcfg 文件

以下命令处理当前目录中的 sysidcfg 文件,并将生成的 SMF 系统配置文件作为 sc_profile.xml 输出到同一目录中。

# js2ai -s

退出状态

将返回以下退出值:

0

所有文件均已成功处理。

>0

出现错误。

文件

outputdir/AI_${ profile}

该目录包含与特定配置文件关联的转换为新 AI 语法的所有对应文件。

outputdir/AI_${ profile}.${arch}.xml

由于转换配置文件而创建的清单文件。${arch} 可以为以下三个值之一:sparcx86generic${profile}.generic.xml 形式的清单文件可用于安装 x86 和 SPARC 系统。

outputdir/AI_${ profile}/criteria-rule.xml

生成的 criteria-rule.xml 文件对应于 rules 文件中的规则。 rule 是基于该规则在 rules 文件中的位置的规则编号。此后,可以在 installadm 命令中将该条件文件与 –C 选项一起使用。

由于可以有多个规则指定同一配置文件,因此每个目录中可能存在多个条件文件,但每个输出目录中只存在 ${profile}.${arch}.xml 文件的一个实例。


注 - 如果使用 –p 选项,不会为处理的配置文件生成条件文件。仅在使用 –r 选项时才会生成条件文件。
outputdir/js2ai.err

该文件包含在处理期间发生的意外状况的栈跟踪。通常不创建该文件。

outputdir/js2ai.log

该日志文件记录了处理的文件和在处理期间发现的所有错误。

outputdir/sc_profile.xml

此文件是使用 –s 选项转换 sysidcfg 文件时生成的 SMF 系统配置文件。

属性

有关下列属性的说明,请参见 attributes(5):

属性类型
属性值
可用性
install/js2ai
接口稳定性
Committed(已确定)

另请参见

installadm(1M)pkg(1)

从 Oracle Solaris 10 JumpStart 转换至 Oracle Solaris 11.2 自动化安装程序

安装 Oracle Solaris 11.2 系统 中的第 III 部分, 使用安装服务器安装