跳过导航链接 | |
退出打印视图 | |
安装 Oracle Solaris 11.1 系统 Oracle Solaris 11.1 Information Library (简体中文) |
要知道哪些源可以用于脚本,您需要知道首次引导时在客户机系统上安装了哪些工具。solaris-large-server 软件包是缺省安装的。如果安装了该组软件包,则在首次引导时您可以使用 Python、bash、ksh 和其他工具。要获取 solaris-large-server 组软件包中包含的软件包的完整列表,请使用《添加和更新 Oracle Solaris 11.1 软件包》中的"列出组软件包中的所有可安装软件包"中介绍的 pkg contents 命令。如果要将 solaris-large-server 软件包中未提供的源用于脚本,请识别所需的软件包并在 AI 清单中指定该软件包。有关如何查找您可能要安装的其他软件包名称的信息,请参见《添加和更新 Oracle Solaris 11.1 软件包》。
提示 -
仅使用一个首次引导脚本,以避免不同脚本中包含不同命令导致相互冲突。
请勿在首次引导脚本中重新引导。
示例 13-1 首次引导脚本模板
本示例显示了在所有首次引导脚本中均应执行的操作。
首次引导脚本必须装入 /lib/svc/share/smf_include.sh 才能使用诸如 SMF 方法退出代码之类的定义。
脚本应该测试是否已在之前的引导过程中运行。如果 completed 属性已经设置为 true,则退出 start 方法并暂时禁用服务。
脚本的以下行将获取 site/first-boot-script-svc:default 服务实例中 config 属性组内 completed 属性的值,并将该值指定给本地 completed 变量。
completed=`svcprop -p config/completed site/first-boot-script-svc:default`
脚本中的以下行将 SMF_EXIT_TEMP_DISABLE 退出代码发送给服务的 start 方法,其中,method_completed 是退出原因的简短描述,而 "Configuration completed" 是退出原因的详细描述。
smf_method_exit $SMF_EXIT_TEMP_DISABLE script_completed "Configuration completed"
首次引导脚本应保存刚由 AI 安装创建的引导环境 (boot environment, BE) 的副本。在首次引导脚本修改 BE 之前保存 BE 的副本,这使您可以通过引导到保存的 BE 中来轻松从脚本引入的任何问题中恢复。
当脚本完成其工作后,脚本必须将 completed 属性的值设置为 true,刷新服务以获取新的属性值,然后退出 start 方法并暂时禁用服务。使用 svccfg 命令可将 completed 属性设置为 true,使用 svcadm 命令可刷新服务。
请记住,在缺省情况下,sh 为 ksh93。
#!/bin/sh # Load SMF shell support definitions . /lib/svc/share/smf_include.sh # If nothing to do, exit with temporary disable completed=`svcprop -p config/completed site/first-boot-script-svc:default` [ "${completed}" = "true" ] && \ smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed" # Obtain the active BE name from beadm: The active BE on reboot has an R in # the third column of 'beadm list' output. Its name is in column one. bename=`beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'` beadm create ${bename}.orig echo "Original boot environment saved as ${bename}.orig" # Place your one-time configuration tasks here # Record that this script's work is done svccfg -s site/first-boot-script-svc:default setprop config/completed = true svcadm refresh site/first-boot-script-svc:default smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"
示例 13-2 配置多个 IP 接口的首次引导脚本
本示例显示在两个 IP 接口上配置地址并添加一个缺省路由的首次引导脚本,名为 first-boot-script.sh。
#!/bin/sh # Load SMF shell support definitions . /lib/svc/share/smf_include.sh # If nothing to do, exit with temporary disable completed=`svcprop -p config/completed site/first-boot-script-svc:default` [ "${completed}" = "true" ] && \ smf_method_exit $SMF_EXIT_TEMP_DISABLE completed "Configuration completed" # Obtain the active BE name from beadm: The active BE on reboot has an R in # the third column of 'beadm list' output. Its name is in column one. bename=`beadm list -Hd|nawk -F ';' '$3 ~ /R/ {print $1}'` beadm create ${bename}.orig echo "Original boot environment saved as ${bename}.orig" # Create and configure addresses on two IP interfaces /usr/sbin/ipadm create-ip net0 /usr/sbin/ipadm create-ip net1 /usr/sbin/ipadm create-addr -a 10.153.125.222/24 net0 /usr/sbin/ipadm create-addr -a 169.254.182.77/24 net1 # Add a default route with net0 as the gateway /usr/sbin/route add default 10.153.125.1 -ifp net0 # Record that this script's work is done svccfg -s site/first-boot-script-svc:default setprop config/completed = true svcadm refresh site/first-boot-script-svc:default smf_method_exit $SMF_EXIT_TEMP_DISABLE method_completed "Configuration completed"