Solaris 9 4/04 安装指南

第 21 章 创建 Solaris Flash 归档文件(任务)

本章介绍创建 Solaris Flash 归档文件的步骤,包括:安装主系统,然后从此主系统创建 Solaris Flash 归档文件。如果您以前在克隆系统上安装了归档文件,还可以创建差别归档文件。创建差别归档文件时,将比较以下两个映像:未更改的主映像和已更新的映像。差别归档文件只安装两个映像之间存在差别的地方。另外,还介绍了创建脚本以重新配置或定制归档文件的步骤。

任务图:创建 Solaris Flash 归档文件

表 21–1 任务图:创建 Solaris Flash 归档文件以进行初始安装

任务 

说明 

参考 

将您选择的软件配置安装在主系统上。 

确定该配置是否能满足您的需要,然后使用任一种 Solaris 安装方法安装主系统。 

安装主系统以进行初始安装

(可选)创建定制脚本 

确定是否需要创建脚本来完成以下操作: 

  • 定制或重新配置归档文件

  • 保护克隆系统上的本地更改

创建定制脚本

创建 Solaris Flash 归档文件 

使用 flar create 命令创建归档文件。

创建 Solaris Flash 归档文件用于初始安装

(可选)保存归档文件的副本 

保留归档文件的副本,供以后更新克隆系统时与差别归档文件进行比较。 

创建 Solaris Flash 归档文件用于初始安装

表 21–2 任务图:创建 Solaris Flash 归档文件以更新克隆系统

任务 

说明 

参考 

准备主映像 

对未更改的主映像进行更改,例如添加或删除软件包、安装修补程序等。 

安装主系统

(可选)创建定制脚本 

确定是否需要创建脚本来完成以下操作: 

  • 定制或重新配置归档文件

  • 保护克隆系统上的本地更改

创建定制脚本

创建 Solaris Flash 差别归档文件 

  1. 安装未更改的主映像。

  2. 使用 flar create 命令来比较两个映像并创建差别归档文件。

使用已更新的主映像创建 Solaris Flash 差别归档文件的步骤

安装主系统

使用您希望其它系统也具有的同样的软件配置安装主系统。可以通过初始安装(将覆写系统中的所有文件)或者通过更新(只包含两个映像的差别)来安装克隆系统。如果选择初始安装,可以使用任何一种 Solaris 安装方法在主系统上安装 Solaris 操作环境。

如果以前已经在克隆系统上安装了归档文件,则可以使用差别归档文件根据其更改来更新该系统。这些更改是针对原始映像的,例如安装修补程序、添加或删除软件包等。差别归档文件只覆写归档文件中指定的文件。有关更新原始主映像和创建差别归档文件的过程,请参见使用已更新的主映像创建 Solaris Flash 差别归档文件的步骤

安装主系统以进行初始安装

  1. 确定要安装的系统配置。

  2. 使用 Solaris 安装方法,在主系统上安装 Solaris 操作环境。有关不同安装方法的讨论,请参见第 3 章,选择 Solaris 安装方法(概述)

  3. 通过以下任何方法定制您的 Solaris 安装:

    • 删除软件。

    • 添加软件。

    • 修改配置文件。

    • 添加对克隆系统上的外围设备的支持。

    可以创建定制脚本,或者使用 flar create 命令来创建归档文件。

创建定制脚本

脚本可以定制归档文件。使用这些脚本可以完成以下任务:

有关创建脚本的指南,请参见创建定制脚本的原则

创建创建前脚本

这种脚本在创建归档文件期间运行, 它有多种用途。

  1. 创建创建前脚本。按照创建定制脚本的原则中的原则进行操作。

  2. 将脚本存储在 /etc/flash/precreation 目录中。


实例 21–1 创建前脚本摘录

下面的示例是创建前脚本的摘录。



实例 21–2 创建前脚本

#!/bin/sh
echo "Test precreation script started">> $FLASH_DIR/summary
cat /opt/TestApp/critical_file_list | flcheck -
if [ $? != 0 ]; then
	echo "Test precreation script failure">> $FLASH_DIR/summary
	exit 1
fi
echo "Test precreation script started">> $FLASH_DIR/summary
/opt/TestApplication/license_cloning
	$FLASH_DIR/predeployment/.TestApplicationLicenceTransfer \
	$FLASH_DIR/custom_sections/TestApplicationLicenceCounter
echo "Test precreation script finished">> $FLASH_DIR/summary
exit 0

使用创建前脚本创建用户定义归档文件段

创建前脚本可以在归档文件中创建用户定义段,以提供特定的应用程序信息。用户定义段用于维护归档文件。该脚本必须放在 $FLASH_DIR/sections 目录中。Solaris Flash 归档文件不会处理用户定义段。例如,用户定义段可以包含归档文件的说明或者用来检查应用程序完整性的脚本。

用户定义段要求具有以下格式。

创建部署前脚本

这种脚本在安装归档文件之前运行。如果它用于验证归档文件,则保留在归档文件中;而如果它用于在克隆系统上保存本地配置,则保留在克隆系统中。这种脚本还能分析和收集日后定制所需的本地数据。例如,在客户机特定的信息被要提取的文件覆写之前,将这些信息保存下来。这些信息可以在提取后的最终阶段使用。

  1. 创建部署前脚本。按照创建定制脚本的原则中的原则进行操作。

  2. 将脚本存储到下面的目录之一。

    • 如果用于验证归档文件,请存储在 /etc/flash/predeployment 目录中。

    • 如果要在创建前脚本中引用,请存储在 $FLASH_DIR/preinstall 目录中。

    • 如果要保留克隆系统上的配置,则需要提供指向存储在克隆系统上的、在 JumpStart 配置文件中带有 local_customization 关键字的脚本的路径。


实例 21–3 部署前脚本

#!/bin/sh
$FLASH_DIR/TestApplication/check_hardware
if [ $? != 0 ]; then
	echo Unsupported hardware
	exit 1
fi
$FLASH_DIR/TestApplication/check_licence_key
if [ $? != 0 ]; then
	echo No license for this host
	exit 1
fi
$FLASH_DIR/TestApplication/deploy_license_key \
	$FLASH_DIR/TestApplication/.TestApplicationLicenceTransfer
$FLASH_DIR/TestApplication/save_data_files $FLASH_DIR/flash

exit 0

创建部署后脚本

这种脚本保留在归档文件中或存储在克隆系统的本地目录中,它在安装完成后运行。该脚本在克隆系统上重新配置一个新的系统映像。如果脚本存储在归档文件中,更改将影响所有的克隆系统。如果脚本存储在克隆系统的本地目录中,更改将只影响该克隆系统。例如,由部署前脚本保存的客户端特有信息将被应用到该克隆环境,以便完成安装。

部署后脚本还可以在安装归档文件后清除文件。例如,可以清除 /var/adm 中的日志文件。


注意:

不是所有的日志文件都需要用脚本清除。可以在创建归档文件时排除 /var/tmp 中的日志文件。


  1. 创建部署后脚本。按照创建定制脚本的原则中的原则进行操作。

  2. 将脚本存储到下面的目录之一。

    • 如果要影响所有克隆系统,请将该脚本存储在 /etc/flash/postdeployment 目录中。

    • 如果只希望影响本地克隆系统,则需要提供指向存储在克隆系统上的、在 JumpStart 配置文件中带有 local_customization 关键字的脚本的路径。


实例 21–4 部署后脚本

#!/bin/sh
$FLASH_DIR/TestApplication/clone_reconfiguration
$FLASH_DIR/TestApplication/restore_data $FLASH_DIR/flash

创建重引导脚本

这种脚本保留在归档文件中,在重新引导系统后运行。该脚本在重新配置系统后执行所有的最终配置。

将 Solaris Flash 归档文件安装在克隆系统上之后,一些主机特有的文件将被删除并为克隆计算机重新创建。安装程序使用 sys-unconfig(1M) 命令和 sysidtool(1M) 程序删除和重新创建主机特有的网络配置文件。重新创建的文件包括 /etc/hosts/etc/defaultrouter/etc/defaultdomain。您可以使用重引导脚本进行任何最终的重新配置。

  1. 创建重引导脚本。

  2. 将脚本存储在 /etc/flash/reboot 目录中。


实例 21–5 创建重引导脚本

#!/bin/sh 
$FLASH_DIR/TestApplication/finalize_license

创建 Solaris Flash 归档文件

可以创建用于初始安装的、覆写克隆系统上所有文件的归档文件,也可以创建仅覆写指定更改的差别归档文件。关于差别归档文件的概述,请参见为更新规划创建 Solaris Flash 差别归档文件

创建 Solaris Flash 归档文件用于初始安装

在安装了主系统后,创建一个 Solaris Flash 归档文件以用于安装其它系统。

  1. 引导主系统,然后尽可能在不活动的状态下运行它。

    如果可能,则在单用户模式下运行该系统。如果不可能,请关闭要归档的所有应用程序以及需要大量操作系统资源的所有应用程序。

    当主系统在多用户模式、单用户模式或从以下介质引导时,您可以创建 Solaris Flash 归档文件:

    • Solaris DVD。

    • Solaris Software 1 of 2 CD。

    • Solaris 软件 的映像。如果使用的是 CD 介质,根据需要,该映像可以包括 Solaris Languages CD。

  2. 要创建归档文件,请使用 flar create 命令。


    # flar create -n name options path/filename
    
    name

    您赋于归档文件的名称。您指定的 namecontent_name 关键字的值。

    options

    有关选项的说明,请参见flar create

    path

    要将归档文件保存到的目录的路径。如果不指定路径,则 flar create 将归档文件保存在当前目录中。

    filename

    归档文件的名称。

    • 如果归档文件创建成功,则 flar create 命令返回退出代码 0。

    • 如果归档文件创建失败,则 flar create 命令返回一个非零的退出代码。

  3. 复制归档文件并保存副本。日后使用差别归档文件更新克隆系统时,可以使用该副本。

示例 — 创建归档文件用于初始安装

可以复制完整的文件系统,也可以通过排除一些目录或文件来定制文件系统。您可以使用不同的选项达到同样的目的。请使用最适合您的环境的选项。

为了更清楚地说明问题,下面示例中的文件系统已作了简化。这些示例没有使用诸如 /var/usr/opt 等的文件系统名称,其主系统文件结构如下所示


/aaa/bbb/ccc/ddd
/aaa/bbb/fff
/aaa/eee
/ggg

小心:小心:

使用 flar create 文件排除选项时要非常小心。如果您排除了某些目录,其它您未注意到的内容可能会留在归档文件中,例如系统配置文件。这时,系统会出现不一致,并且安装不能正常进行。排除目录和文件最好用于那些易于删除又不会破坏系统的数据,例如大的数据文件。



实例 21–6 创建一个完全相同的归档文件

本示例中,归档文件名为 archive1。该文件是从主系统中复制的,并已经过压缩。该归档文件是与主系统完全相同的副本,存储在 archive1.flar 中。


# flar create -n archive1 -c archive1.flar

要检查归档文件的文件结构,请键入以下内容。


# flar info -l archive1.flar
aaa
aaa/bbb
aaa/bbb/ccc
aaa/bbb/ccc/ddd
aaa/bbb/fff
aaa/eee
aaa/eee
ggg


实例 21–7 创建一个归档文件,排除或包含某些文件和目录

本示例中,归档文件名为 archive2。该文件是从主系统中复制的,但并不是完全相同的副本。排除了 /aaa 目录下的内容,但保留了 /aaa/bbb/ccc 目录下的内容。


# flar create -n archive2 -x /aaa -y /aaa/bbb/ccc  archive2.flar

要检查归档文件的文件结构,请键入以下内容。将显示包括被复制文件的排除目录,但只有已恢复的文件包含数据。


# flar info -l aaa
aaa
aaa/bbb/ccc
aaa/bbb/ccc/ddd
aaa/bbb
ggg


实例 21–8 创建一个归档文件,使用列表排除或包含某些文件和目录

本示例中,归档文件名为 archive5。该文件是从主系统中复制的,但并不是完全相同的副本。

exclude 文件包含以下列表:


/aaa

include 文件包含以下列表:


/aaa/bbb/ccc

排除了 /aaa 目录下的内容,但保留了 /aaa/bbb/ccc 目录下的内容。


# flar create -n archive5 -X exclude -f include  archive5.flar

要检查归档文件的文件结构,请键入以下内容。将显示包括被复制文件的排除目录,但只有已恢复的文件包含数据。


# flar info -l archive5.flar
aaa
aaa/bbb/ccc
aaa/bbb/ccc/ddd
aaa/bbb
ggg


实例 21–9 通过使用列表并恢复目录的方式创建一个归档文件,排除某些文件和目录

您可以合并 -x-y-X-f 选项。本示例中合并了 -X-y 选项。此归档文件名为 archive5。该文件是从主系统中复制的,但并不是完全相同的副本。

exclude 文件包含以下列表:


/aaa

-y 选项可以恢复 /aaa/bbb/ccc 目录。 以下命令生成归档文件。


# flar create -n archive5 -X exclude -y /aaa/bbb/ccc  archive5.flar

要检查归档文件的文件结构,请键入以下内容。将显示包括被复制文件的排除目录,但只有已恢复的文件包含数据。


# flar info -l archive5.flar
aaa
aaa/bbb
aaa/bbb/ccc
aaa/bbb/ccc/ddd
ggg


实例 21–10 使用列表和 -z 选项创建一个归档文件,排除或包含某些文件和目录

本示例中,归档文件名为 archive3。该文件是从主系统中复制的,但并不是完全相同的副本。要选择的文件和目录包括在 filter1 文件中。在该文件中,目录使用减号 (-) 或加号 (+) 标记,标明要排除或恢复的文件。本示例中,排除的 /aaa 目录标有减号,恢复的 /aaa/bbb/ccc 子目录标有加号。filter1 文件包含以下列表:


- /aaa
+ /aaa/bbb/ccc

以下命令生成归档文件。


# flar create -n archive3 -z filter1 archive3.flar 

要检查归档文件的文件结构,请键入以下命令。将显示包括被复制文件的排除目录,但只有已恢复的文件包含数据。


# flar info -l archive3.flar
aaa
aaa/bbb
aaa/bbb/ccc
aaa/bbb/ccc/ddd
ggg


实例 21–11 从另外一个引导环境中创建归档文件

本示例中,归档文件名为 archive4。该文件是从主系统中复制的,并已经过压缩。该归档文件是与主系统完全相同的副本,存储在 archive4.flar 中。-R 选项用于从其它目录树中创建归档文件。


# flar create -n archive4 -c -R /x/yy/zz archive4.flar


实例 21–12 创建一个归档文件,并添加关键字来描述该文件

本示例中,归档文件名为 archive3。该文件是从主系统中复制的,并已经过压缩。使用选项向 Archive Identification 段添加说明,帮助您日后识别该归档文件。有关关键字及其值和格式的信息,请参见Solaris Flash 关键字


# flar create -n archive3 -i 20000131221409 -m pumbaa \
-e "Solaris 8 Print Server" -a "Mighty Matt" -U "Internal Finance" \
-T server archive3.flar 

创建归档文件后,您就可以访问包含详细说明的 Archive Identification 段。下面是 Archive Identification 段的示例。


section_begin=identification
     files_archived_method=cpio
     files_compressed_method=compress
     files_archived_size=259323342
     files_unarchived_size=591238111
     creation_date=20000131221409
     creation_master=pumbaa
     content_name=Finance Print Server
     content_type=server
     content_description=Solaris 8 Print Server
     content_author=Mighty Matt
     content_architectures=sun4u,sun4m
     creation_node=pumbaa
     creation_hardware_class=sun4u
     creation_platform=SUNW,Sun-Fire
     creation_processor=sparc
     creation_release=5.9
     creation_os_name=SunOS
     creation_os_version=s81_49
     x-department=Internal Finance

使用已更新的主映像创建 Solaris Flash 差别归档文件的步骤

在创建差别归档文件之前,需要比较两个映像:未更改的主映像和已更新的主映像。第一个映像为未更改的主映像,一直保持未更改状态。需要存储和使用这个映像。第二个映像是指进行了小更新的未更改的主映像。这个新映像缺省存储在 root (/) 文件系统中,但是如果它存储在其它地方,您也可以访问它。获得这两个映像后,您就可以创建差别归档文件,使其仅包含这两个映像的差别。然后可以将其安装在以前安装了未更改的主映像的克隆系统上。

  1. 准备更改主系统。在更改之前,主系统应该运行原始归档文件的副本。


    注意:

    一定要保留一份未更改的主映像,确保它未被更改,以便在日后安装时使用。


  2. 通过以下方法更新未更改的主映像。

    • 删除软件包。

    • 添加软件包或修补程序。

    • 修改配置文件。

    • 添加对克隆系统上的外围设备的支持。

  3. (可选)创建定制脚本。请参见创建定制脚本

  4. 将未更改的主映像传送到安装点。

    • 如果未更改的主映像存储在未激活的引导环境中,请使用 lumount 命令进行检索。


      # lumount BE_name mountpoint
      
      BE_name

      指定存储未更改的主映像的引导环境名称。

      mountpoint

      指定存储映像的 root (/) 文件系统。

      在以下示例中,未激活的引导环境名为 unchanged_master1。安装点是主系统上的 /a 目录。


      # lumount  unchanged_master1 /a
      
    • 如果映像存储在克隆系统上,请使用 NFS 安装该系统。

      1. 在主系统上,共享克隆系统的根 (/) 文件系统,并给克隆系统赋予主根权限。


        # share -F nfs -o rw,root=master_system "/"
        

        master_system 是主系统的名称。

      2. 在主系统上,安装克隆系统。


        # mount -F nfs clone_system:/ master_dir
        
        clone_system

        指定要安装的系统的名称

        master_dir

        指定存储未更改的主映像的目录。

    • 如果保存映像时使用了 ufsdump 命令,请使用 ufsrestore 命令检索副本。有关如何使用这些命令的信息,请参见 System Administration Guide: Basic Administration 中的“UFS Backup and Restore Commands (Reference)”

  5. 创建差别归档文件。


    # flar create -n archive_name -A unchanged_master_image_dir\
     options path/filename
    
    archive_name

    指定赋于归档文件的名称。您指定的 archive_namecontent_name 关键字的值。该名称列在 Archive Identification 段中。

    -A unchanged_master_image_dir

    通过比较新的系统映像和unchanged_master_image_dir 变量指定的映像,创建差别归档文件。缺省情况下,新的系统映像是根 (/)。可以使用 -R 选项更改该缺省设置。unchanged_master_image_dir 是存储或通过 UFS、 NFS 或 lumount 安装未更改的系统映像的目录。

    您可以使用进行内容选择的选项来包含或排除某些文件。有关这些选项的列表,请参见flar create

    options

    有关选项的说明,请参见flar create

    path

    指定要将归档文件保存到的目录的路径。如果不指定路径,则 flar create 将归档文件保存在当前目录中。

    filename

    指定归档文件的名称。

    • 如果差别归档文件创建成功,则 flar create 命令返回退出代码 0。

    • 如果差别归档文件创建失败,则 flar create 命令返回一个非零的退出代码。

    有关安装归档文件的过程,请参见准备使用定制 JumpStart 安装来安装 Solaris Flash 归档文件

示例 — 创建差别归档文件


实例 21–13 使用主系统上新的主映像创建差别归档文件

本示例中,未更改的主映像的目录名为 unchanged_master1。包含更改的新主映像是 root (/) 目录。新的主映像与未更改的主映像进行比较,产生差别归档文件,然后进行压缩。该差别归档文件存储在 diffarchive1.flar 文件中,包含了安装时要删除、更改或添加的文件。


# flar create -n diffarchive1 -A /a/unchanged_master1 -c diffarchive1.flar


实例 21–14 使用存储在未激活的引导环境中的映像创建差别归档文件

本示例中,未更改的主映像 unchanged_master1 存储在一个不活动的引导环境中,可以通过安装该引导环境进行访问。新的主映像是 root (/) 目录。新的主映像与未更改的主映像进行比较,产生差别归档文件,然后进行压缩。该归档文件存储在 diffarchive4.flar 文件中,包含了安装时要删除、更改或添加的文件。


# lumount unchanged_master1 /a
# flar create -n diffarchive4 -A /a -c  diffarchive4.flar

使用 Solaris Live Upgrade 创建 Solaris Flash 差别归档文件的步骤

要管理系统更新,您可以使用 Solaris Live Upgrade 复制创建新引导环境的操作系统。复制的系统相当于通过少量更改更新后的主系统。然后可以将获得的 Solaris Flash 差别归档文件安装在克隆系统上。

有关 Solaris Live Upgrade 的详细信息,请参见第 32 章,Solaris Live Upgrade(主题)

  1. 从未经更改的主系统使用 lucreate 命令创建新的引导环境。

    此新引导环境是主系统的精确副本并且可以用来创建差别归档文件。

  2. 检查两个引导环境的状态。


    # lustatus copy_BE
    
    boot environment   Is        Active  Active     Can	    Copy
    Name               Complete  Now	 OnReboot   Delete	 Status
    ------------------------------------------------------------------------
    master_BE          yes       yes     yes        no       -     
    copy_BE            yes       no      no         yes      -  
  3. 通过以下任意一种方法更新主映像。

    • 删除软件包。

    • 添加软件包或修补程序。

    • 修改配置文件。

    • 添加对克隆系统上的外围设备的支持。

  4. (可选)创建定制脚本。请参见创建定制脚本

  5. 创建差别归档文件。

    1. 装载新创建的引导环境。


      # lumount BE_name /a
      
    2. 通过比较主系统与引导环境来创建差别归档文件。


       # flarcreate -n archive_name -A new_BE_dir\
       options path/filename
      
      archive_name

      指定赋于归档文件的名称。

      -A new_BE_dir

      通过比较新的系统映像与用 new BE_dir 变量指定的映像,创建差别归档文件。

      options

      有关这些选项的列表,请参见flar create

      path

      指定要将归档文件保存到的目录的路径。如果不指定路径,则 flar create 将归档文件保存在当前目录中。

      filename

      指定归档文件的名称。

    3. 卸载新的引导环境。


      # luumount copy_BE
      

    flar create 命令将返回出口代码。

    • 如果创建成功,将返回出口代码 0。

    • 如果失败,将返回非零出口代码。

  6. 使用 JumpStart 配置文件安装 Solaris Flash 差别归档文件。

    要安装的克隆系统必须与原始主系统完全一样,否则安装将失败。

    以下示例配置文件在设备 c1t1d0s0 上安装差别归档文件 test.diff


    JumpStart 配置文件
    -----------------------
    install_type  flash_update
    archive_location http server /rw/test.diff
    root_device c1t1d0s0

实例 21–15 使用 Solaris Live Upgrade 创建差别归档文件

在此示例中,master_BE 是当前引导环境的名称。copy_BE 是新引导环境的名称。文件系统根文件 (/) 和 /usr 放在 s0s3 中。lustatus 命令将报告是否完成了新引导环境复制。SUNWman 软件包将添加到主系统中。通过添加 SUNWman 软件包更新主系统之后,flarcreate 命令将通过比较更改后的主系统和未更改的新引导环境来创建差别归档文件。


# lucreate -c master_BE 
-m /:/dev/dsk/c0t1d0s0:ufs -m /usr:/dev/dsk/c0t1d0s3:ufs \
-n copy_BE
# lustatus
# pkgadd SUNWman
# lumount copy_BE /a
# flarcreate -n test.diff -c -A /a /net/server/export/test.diff
# luumount copy_BE 

在克隆系统上安装差别归档文件。有关安装归档文件的步骤,请参见准备使用定制 JumpStart 安装来安装 Solaris Flash 归档文件


图形 21–1 显示如何使用 lucreate 命令创建新的引导环境。

图形 21–1 使用 Solaris Live Upgrade 创建新的引导环境

文中对该图例进行了说明。