现在的位置: 首页 > 综合 > 正文

在build zone中编译OpenSolaris

2014年01月05日 ⁄ 综合 ⁄ 共 2182字 ⁄ 字号 评论关闭

编译OpenSolaris是非常耗CPU资源的,然而由于没有交互事件的需求,所以对于时间上的要求不太高,对于一个整合服务器来说,这类应用程序应该分配尽量少的CPU资源,这样可以充分利用系统负荷低的时候的CPU处理能力。所以我想到,创建一个build zone,在这个zone里面编译OpenSolaris,在整合系统中,加上对zone的资源限制,则可以减少编译对系统资源的消耗。

如何在zone中安装删除应用程序

Solarispkgadd命令支持在globalnon-globalSUNW_PKG_ALLZONESSUNW_PKG_HOLLOW SUNW_PKG_THISZONE 软件包参数定义安装了zone的系统上的软件包的特征。必须设置这些参数,以便可在安装了非全局区域的系统上管理软件包。下表列出了设置软件包参数的四种有效组合。表中没有列出的组合是无效的,并且将无法安装软件包。可以将这三个参数保留为空。软件包工具会将参数解释成设置为 false,但是绝对不建议不设置这些参数。通过设置全部三个软件包参数,可以指定安装或删除软件包时,软件包工具应当表现的确切行为。

 

SUNW_PKG

_ALLZONES

SUNW_PKG

_HOLLOW

SUNW_PKG

_THISZONE

软件包说明

False

False

False

此为软件包的缺省设置,该设置不会指定所有区域软件包参数的值。 

具有这些设置的软件包既可安装在全局区域中,也可安装在非全局区域中。  

·         如果在全局区域中运行 pkgadd 命令,则会将软件包安装在全局区域和所有非全局区域中。

·         如果在非全局区域中运行 pkgadd 命令,则软件包仅安装在非全局区域中。

在这两种情况下,软件包的所有内容都会在其安装所在的所有区域中可见。

 

False

False

True

具有这些设置的软件包既可安装在全局区域中,也可安装在非全局区域中。如果在安装软件包之后创建新的非全局区域,则软件包不会传播到这些新的非全局区域。 

·         如果在全局区域中运行 pkgadd 命令,则仅会将软件包安装在全局区域中。

·         如果在非全局区域中运行 pkgadd 命令,则仅会将软件包安装在非全局区域中。

在这两种情况下,软件包的所有内容都会在其安装所在的区域中可见。 

True

False

False

具有这些设置的软件包仅能安装在全局区域中。运行 pkgadd 命令时,会将软件包安装在全局区域和所有非全局区域中。软件包的所有内容在所有区域中可见。

True

Ture

False

具有这些设置的软件包仅能由全局管理员安装在全局区域中。 运行 pkgadd 命令时,软件包的内容会全部安装在全局区域中。如果软件包的参数设置为这些值,则不会在任何非全局区域中显示软件包内容本身。非全局区域中仅会安装显示软件包已安装的必需的软件包安装信息。这将安装依赖于该软件包的要安装的其他软件包。

为了检查软件包的相关性,该软件包显示为已安装在所有区域中。 

·         在全局区域中,该软件包的所有内容均可见。

·         在完全根非全局区域中,该软件包的所有内容均不可见。

·         当非全局区域从全局区域中继承文件系统时,安装在该文件系统中的软件包在非全局区域中可见,而该软件包所提供的所有其他文件在非全局区域中均不可见。

例如,稀疏根非全局区域 (sparse root non-global zone) 与全局区域共享某些目录。这些目录为只读目录。稀疏根非全局区域与其他区域共享 /platform 文件系统。另一个示例为软件包提供仅与引导硬件有关的文件。

 

在编译OpenSolaris时,需要的安装的工具包括Sun Studioonbld工具。通过查看系统,发现新建的build zone中没有Sun Studio,但由onbld工具,所以在编译OpenSolaris之前需要安装Sun Studio

安装Sun Studio有两种方法,一种是下载.tar.bz文件包,然后将包中的内容解压缩在/opt目录下;另一种方法是下载Solaris软件包,使用pkgadd命令进行安装,在选择第二种方法安装Sun Studio时,注意根据上表中的提示,设置三个安装包参数。

关于Sun Studio,目前最新版本为Sun Studio 12,而编译OpenSolaris需要Sun Studio11

如何在globalbuild之间共享文件

编译OpenSolaris光有tool还不足,还需要源文件和closed的二进制文件,那如何将这些文件放到build zone的文件系统里面呢?我目前能找到的有两种方法:

1.  由于build zone创建了虚拟网络接口,通过该接口可以连接到局域网或Internet上,通过httpftpnfssamba等任何方法都可以将这些文件传到build zone里。

2.  由于build zone的根文件系统只是global zone文件系统中的一个子树,所以可以从global zone的文件系统cdbuild的文件目录树中,然后用简单的cp命令就可以将global的文件传送到build zone中了。

Build中的应用程序没有响应

如果build zone中的应用程序没有响应了,最干净的做法就是:

#zoneadm –z build reboot

 

【上篇】
【下篇】

抱歉!评论已关闭.