Solaris 9 9/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 Software 的映像。 如果使用 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。 该归档文件是从主系统中精确复制的,并已经过压缩。 某些选项可向归档文件的标识段增加说明,帮助您以后识别该归档文件。 有关关键字及其值和格式的信息,请参见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 

创建归档文件后,您即可访问包含详细说明的标识段。 以下是归档文件的标识段的实例。


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 差别归档文件

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

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


    注意:

    必须保护未更改的主映像的副本以免被更改,并确保以后可使用它进行装载。


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

    • 删除软件包。

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

    • 修改配置文件。

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

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

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

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


      # lumount BE_name mountpoint
      
      BE_name

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

      mountpoint

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

      在以下实例中,未激活的引导环境名为 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: Devices and File Systems 中的 "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。 包含更改的新主映像是根 (/) 目录。 新的主映像与未更改的主映像进行比较,产生差别归档文件,然后进行压缩。 该差别归档文件存储在 diffarchive1.flar 文件中, 包含安装时要删除、更改或增加的文件。


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


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

本实例中,未更改的主映像 unchanged_master1 存储在一个未激活的引导环境中,可以通过装载该引导环境访问它。 新的主映像是根 (/) 目录。 新的主映像与未更改的主映像进行比较,产生差别归档文件,然后进行压缩。 该归档文件存储在 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 profile
    -----------------------
    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 创建新的引导环境

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