本章介绍创建 Solaris Flash 归档文件的步骤, 包括:安装主系统,然后从此主系统创建 Solaris Flash 归档文件。 如果您以前在克隆系统上安装了归档文件,还可以创建差别归档文件。 创建差别归档文件时,将比较以下两个映像: 未更改的主映像和已更新的映像。 差别归档文件只安装两个映像之间存在差别的地方。 另外,还介绍了创建脚本以重新配置或定制归档文件的步骤。
表 21–2 任务图:创建 Solaris Flash 归档文件以更新克隆系统
任务 |
说明 |
参考 |
---|---|---|
准备主映像 |
对未更改的主映像进行更改,例如增加或删除软件包、安装修补程序。 | |
(可选)创建定制脚本 |
确定是否需要创建脚本来完成以下操作:
| |
创建 Solaris Flash 差别归档文件 |
|
使用您希望其它系统也具有的同样的软件配置安装主系统。 可以通过初始安装(将覆写系统中的所有文件)或通过更新(只包括两个映像之间的差别)来安装克隆系统。 对于初始安装,可以使用任意一种 Solaris 安装方法在主系统上安装 Solaris 操作环境。
如果以前已经在克隆系统上安装了归档文件,则可以使用差别归档文件根据其更改来更新该系统。 这些更改是针对初始映像的,例如安装修补程序、增加和删除软件包。 差别归档文件只覆盖归档文件中指定的文件。 有关更新初始主映像和创建差别归档文件的过程,请参见使用已更新的主映像创建 Solaris Flash 差别归档文件 。
确定要安装的系统配置。
使用 Solaris 安装方法,在主系统上安装 Solaris 操作环境。 有关不同安装方法的讨论,请参见第 3 章,选择 Solaris 安装方法(概述)。
通过以下任何方法定制您的 Solaris 安装:
删除软件。
增加软件。
修改配置文件。
增加对克隆系统上的外围设备的支持。
可以创建定制脚本,或使用 flar create 命令创建归档文件。
要创建定制脚本,请参见创建定制脚本。
要创建归档文件,请参见创建 Solaris Flash 归档文件。
创建前脚本可以在创建归档文件时对其进行验证,并且为以后的定制准备归档文件(尤其是差别归档文件)。 该脚本还可以在归档文件中创建用户自定义段。
部署前脚本可以在安装期间验证归档文件,并且为以后的定制准备归档文件。
部署后脚本可以在克隆系统上重新配置新的系统映像。
重引导脚本则可以在系统重新引导后进行最终的重新配置。
有关创建脚本的原则,请参见创建定制脚本的原则。
验证软件的内容和完整性。 如果完整性被破坏,脚本将无法创建归档文件。
为以后在克隆系统上的定制准备产品。
在创建归档文件期间,动态注册其它安装脚本。
向由 Flash 创建的摘要文件增加消息。 该消息必须简短,并且仅记录脚本的开始和结束,以及脚本运行的结果。 可以在摘要段查看结果。
创建创建前脚本。 按照创建定制脚本的原则中说明的原则进行操作。
将脚本存储在 /etc/flash/precreation 目录中。
以下实例是创建前脚本的摘录。
要在摘要段中记录开始时间,请使用以下实例:
echo "MyApp precreation script started">> $FLASHDIR/summary
要检查软件的完整性,请使用 flcheck 命令。 但不能在命令行中使用该命令。 该命令的语法如下:
flcheck software component files and directories ...| - |
例如,要验证文件和目录,请使用以下实例:
flcheck software component files and directories If Not in selection - refuse creation echo "Myapp Integrity Damage">>$FLASHDIR/summary
或者,要保留意外的新文件和目录而不终止归档文件的创建,请使用以下实例:
flcheck software component files and directories If Not in selection include by force flinclude software component
要注册部署脚本和数据,请使用以下实例:
要查看用户自定义段中应用程序特有的数据,请使用以下实例:
cp custom section $FLASHDIR/custom_sections/MyApp
要在摘要段中记录安装成功的消息,可以使用以下实例:
echo "product one flash preparation started." >>$FLASH_DIR/summary ... echo "product one flash preparation finished successfully">>$FLASH_DIR/summary
#!/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 归档文件不处理用户自定义段。 例如,用户自定义段可包含归档文件的说明,或包含用来检查应用程序完整性的脚本。
用户自定义段要求具有以下格式。
必须是面向行的
必须使用新行 (ASCII 0x0a) 字符结束
各行的长度没有限制
使用 base64 或类似算法来编码二进制数据
该脚本将在安装归档文件之前运行。 如果它用于验证归档文件,则将其保留在归档文件中; 而如果它用于在克隆系统上保存本地配置,则将其保留在克隆系统中。 该脚本还可以分析和收集以后定制所需的本地数据。 例如,可在要提取的文件覆盖客户机特定的信息之前,将这些信息保存下来。 以后,可在提取之后的最后阶段使用这些信息。
创建部署前脚本。 按照创建定制脚本的原则中说明的原则进行操作。
将脚本存储到下面的目录之一。
如果用于验证归档文件,请存储在 /etc/flash/predeployment 目录中。
如果引用创建前脚本,请存储在 $FLASH_DIR/preinstall 目录中。
如果要保留克隆系统上的配置,请在 JumpStart 配置文件中提供存储在克隆系统上的、带有 local_customization 关键字的脚本的路径。
#!/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 中的日志文件。
创建部署后脚本。 按照创建定制脚本的原则中的原则进行操作。
将脚本存储到下面的目录之一。
如果要影响所有克隆系统,请将该脚本存储在 /etc/flash/postdeployment 目录中。
如果只希望影响本地克隆系统,则需要提供指向存储在克隆系统上的、在 JumpStart 配置文件中带有 local_customization 关键字的脚本的路径。
#!/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。 您可以使用重引导脚本进行任何最终的重新配置。
#!/bin/sh $FLASH_DIR/TestApplication/finalize_license
可以创建用于初始安装的、覆写克隆系统上所有文件的归档文件,也可以创建仅覆写指定更改的差别归档文件。 关于差别归档文件的概述,请参见为更新规划创建 Solaris Flash 差别归档文件。
在安装了主系统后,创建一个 Solaris Flash 归档文件以用于安装其它系统。
引导主系统,然后尽可能在不活动的状态下运行它。
如果可能,则在单用户模式下运行该系统。 如果不可能,请关闭要归档的所有应用程序以及需要大量操作系统资源的所有应用程序。
当主系统在多用户模式、单用户模式或从以下介质引导时,您可以创建 Solaris Flash 归档文件:
Solaris DVD。
Solaris Software 1 of 2 CD。
Solaris Software 的映像。 如果使用 CD 介质,根据需要,该映像可以包含 Solaris Languages CD。
要创建归档文件,请使用 flar create 命令。
# flar create -n name options path/filename |
您赋于归档文件的名称。 您指定的 name 是 content_name 关键字的值。
有关选项的说明,请参见flar create 。
要保存归档文件的目录的路径。 如果不指定路径,则 flar create 将归档文件保存在当前目录中。
归档文件的名称。
如果归档文件创建成功,则 flar create 命令返回退出代码 0。
如果归档文件创建失败,则 flar create 命令返回一个非零的退出代码。
复制归档文件并保存副本。 以后使用差别归档文件更新克隆系统时,可以使用该副本。
可以精确复制文件系统,也可以通过排除某些目录或文件来定制文件系统。 您可以使用不同的选项获得同样的结果。 请使用最适合您的环境的选项。
为了更清楚地说明问题,已大大简化了以下实例中的文件系统。 这些实例的主文件系统结构如下(而不使用 /var、/usr 或/opt 等文件系统名):
/aaa/bbb/ccc/ddd /aaa/bbb/fff /aaa/eee /ggg |
使用 flar create 文件排除选项时要非常小心。 如果您排除了某些目录,其它您未注意到的内容可能会留在归档文件中,例如系统配置文件。 这时,系统会出现不一致,并且安装不能正常进行。 排除目录和文件最好用于那些易于删除又不会破坏系统的数据,例如大的数据文件。
本实例中,归档文件名为 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 |
本实例中,归档文件名为 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 |
本实例中,归档文件名为 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 |
您可以组合 -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 |
本实例中,归档文件名为 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 |
本实例中,归档文件名为 archive4。 该文件是从主系统中精确复制的,并已经过压缩。 该归档文件是与主系统完全相同的副本,存储在 archive4.flar 中。 -R 选项用于从其它目录树中创建归档文件。
# flar create -n archive4 -c -R /x/yy/zz archive4.flar |
本实例中,归档文件名为 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 |
在创建差别归档文件之前,需要比较两个映像: 未更改的主映像和已更新的主映像。 第一个映像为未更改的主映像,一直保持未更改状态。 需要存储和使用这个映像。 第二个映像是指进行了微小更新的未更改的主映像。 缺省情况下,该新映像存储在根 (/) 文件系统中,但如果它存储于其它位置,您也可以访问它。 获得这两个映像后,您即可创建仅包含这两个映像的差别的差别归档文件。 然后可以将其安装在以前安装了未更改的主映像的克隆系统上。
准备更改主系统。 在更改之前,主系统应运行初始归档文件的副本。
必须保护未更改的主映像的副本以免被更改,并确保以后可使用它进行装载。
删除软件包。
增加软件包或修补程序。
修改配置文件。
增加对克隆系统上的外围设备的支持。
(可选)创建定制脚本。 请参见创建定制脚本。
将未更改的主映像传送到装载点。
如果未更改的主映像存储在未激活的引导环境中,请使用 lumount 命令进行检索。
# lumount BE_name mountpoint |
指定存储未更改的主映像的引导环境名称
指定存储映像的根 (/) 文件系统
在以下实例中,未激活的引导环境名为 unchanged_master1。装载点是主系统上的 /a 目录。
# lumount unchanged_master1 /a |
如果映像存储在克隆系统上,请使用 NFS 装载该克隆系统。
如果保存映像时使用了 ufsdump 命令,请使用 ufsrestore 命令检索副本。 有关如何使用这些命令的信息,请参见 System Administration Guide: Devices and File Systems 中的 "UFS Backup and Restore Commands (Reference)"。
创建差别归档文件。
# flar create -n archive_name -A unchanged_master_image_dir\ options path/filename |
指定赋于归档文件的名称。 您指定的 archive_name 是 content_name 关键字的值。 该名称列在 Archive Identification 段中。
通过比较新的系统映像和 unchanged_master_image_dir 变量指定的映像,创建差别归档文件。 缺省情况下,新的系统映像是根 (/)。 可以使用 -R 选项更改该缺省设置。 unchanged_master_image_dir 是存储或通过 UFS、 NFS 或 lumount 装载未更改的系统映像的目录。
您可以使用进行内容选择的选项来包含或排除某些文件。 有关这些选项的列表,请参见flar create 。
有关选项的说明,请参见flar create 。
指定保存归档文件的目录的路径。 如果不指定路径,则 flar create 将归档文件保存在当前目录中。
指定归档文件的名称。
如果差别归档文件创建成功,则 flar create 命令返回退出代码 0。
如果差别归档文件创建失败,则 flar create 命令返回一个非零的退出代码。
有关安装归档文件的过程,请参见准备使用定制 JumpStart 安装来安装 Solaris Flash 归档文件。
本实例中,未更改的主映像的目录名为 unchanged_master1。 包含更改的新主映像是根 (/) 目录。 新的主映像与未更改的主映像进行比较,产生差别归档文件,然后进行压缩。 该差别归档文件存储在 diffarchive1.flar 文件中, 包含安装时要删除、更改或增加的文件。
# flar create -n diffarchive1 -A /a/unchanged_master1 -c diffarchive1.flar |
本实例中,未更改的主映像 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 的详细信息,请参见第 32 章,Solaris Live Upgrade(主题)。
从未更改的主系统使用 lucreate 命令创建新的引导环境。
此新引导环境是与主系统完全相同的副本并且可以用来创建差别归档文件。
检查两个引导环境的状态。
# 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 - |
删除软件包。
增加软件包或修补程序。
修改配置文件。
增加对克隆系统上的外围设备的支持。
(可选)创建定制脚本。 请参见创建定制脚本。
创建差别归档文件。
装载新创建的引导环境。
# lumount BE_name /a |
通过比较主系统与引导环境来创建差别归档文件。
# flarcreate -n archive_name -A new_BE_dir\ options path/filename |
指定赋于归档文件的名称。
通过比较新的系统映像与用 new BE_dir 变量指定的映像,创建差别归档文件。
有关这些选项的列表,请参见flar create 。
指定保存归档文件的目录的路径。 如果不指定路径,则 flar create 将归档文件保存在当前目录中。
指定归档文件的名称。
卸载新的引导环境。
# luumount copy_BE |
flar create 命令将返回出口代码。
如果创建成功,将返回出口代码 0。
如果失败,将返回非零出口代码。
使用 JumpStart 配置文件安装 Solaris Flash 差别归档文件。
要安装的克隆系统必须与初始主系统完全一样,否则安装将失败。
以下实例配置文件在设备 c1t1d0s0 上安装差别归档文件 test.diff。
JumpStart profile ----------------------- install_type flash_update archive_location http server /rw/test.diff root_device c1t1d0s0 |
本实例中,master_BE 是当前引导环境的名称。 copy_BE 是新引导环境的名称。 文件系统根文件 (/) 和 /usr 放在 s0 和 s3 中。 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 命令创建新的引导环境。