分类:
2009-06-12 16:07:50
通过zone可实现在Solaris 10中运行其他操作系统,包括Solaris 8、Solaris 9以及Linux(for x86)。本文简单说一下如何在Solaris 10中配置Solaris 8的zone。这里Solaris 10称作global zone(全局区域),在global zone上构建的zone,都称为local zone(非全局区域)。Local zone在配置的时候又可配置为完全根模型和稀疏根模型。稀疏根模型下/lib、/platform、/sbin和/usr目录都是挂载为回送文件系统,利于节省空间(大约100MB左右),但缺点是配置不够灵活,而完全根模型允许zone管理员定制其zone的文件系统,并可添加软件包,缺点就是需要占用较多的磁盘空间。本文使用完全根模型来配置Solaris 8的zone。Solaris 10是for SPARC的。
一、准备工作
1、到 网站上下载Solaris 8 Containers 1.0.1。如果手头没有准备Solaris 8的flash安装包,可以将Sun官网提供的solaris8-image.flar一起下载下来。
2、确定已安装的Solaris 10版本的发布日期,根据Sun官方文档描述,在10/08版本之前的Solaris 10中,所用的Container是1.0的,在10/08以及之后的版本中,升级为1.0.1的。在10/08以及之后的Solaris 10中,虽然已经包含Solaris 8的container,但是还需要安装SUNWs8brandk的package。解压s8containers-bundle-solaris10-sparc.tar.gz后,根据README文档中的说明进行安装。
3、确定Solaris 10的网卡名称,ifconfig -a,本文测试所用机型的网卡为dmfe0。
4、确定Solaris 8 zone所使用的主机名,IP地址,子网掩码以及默认路由。
5、确定Solaris 10的磁盘空间大小,确保创建zone的文件系统有足够大的空间。Solaris 8创建完zone后大约为832MB。
二、建立local zone配置
1、开始zone的配置,这里local zone命名为s8-zone
# zonecfg -z s8-zone
第一次配置该zone时会提示
s8-zone: No such zone configured
Use 'create' to begin configuring a new zone.
同时屏幕上prompt变成zonecfg:s8-zone>
2、创建s8-zone的配置,
zonecfg:s8-zone> create -t SUNWsolaris8
-t:指定配置模板,这里使用的是SUNWsolaris8的模板来创建s8-zone配置文件
-b:创建一个空的配置文件
3、设置s8-zone的路径
zonecfg:s8-zone> set zonepath=/s8-zone
4、设置自动引导
zonecfg:s8-zone> set autoboot=true
autoboot设置为ture,在global zone(Solaris10)启动时,s8-zone会随其自动启动,但需要开启Solaris 10上的svc:/system/zones:default服务,否则不能自动引导(启用服务命令# svcadm enable svc:/system/zones:default)。如果不设置autoboot,默认值为false,需要手动引导。
5、添加虚拟网卡(本文中设置的是share方式,还有一种独占方式,ip-type为exclusive,需要以独占方式访问一个或多个网络接口,例如dmfe1,独占方式不需要设置address属性)
zonecfg:s8-zone> add net
设置IP地址和子网掩码
zonecfg:s8-zone:net> set address=192.168.0.27/24
设置网卡,这里设置的网卡即为global zone中的网卡dmfe0
zonecfg:s8-zone:net> set physical=dmfe0
设置默认路由
zonecfg:s8-zone:net> set defrouter=192.168.0.1
完成网卡设置
zonecfg:s8-zone:net> end
如果要添加多个网卡,可重复该步骤。需要注意的是,这里所设置的IP地址和子网掩码对local zone起到决定性的作用,即使在local zone安装完成后执行sys-unconfig重新设定IP地址和子网掩码,或者修改local zone中的/etc/hosts文件,都是无效的,均以zonecfg中的设置为准。
6、添加文件系统,如果需要给zone配置物理磁盘上的分区,可按如下步骤添加
zonecfg:s8-zone> add fs
设置挂载点
zonecfg:s8-zone:fs> set dir=/var
设置block disk devices分区
zonecfg:s8-zone:fs> set special=/dev/dsk/c0t2d0s6
设置raw disk devices分区
zonecfg:s8-zone:fs> set raw=/dev/rdsk/c0t2d0s6
设置文件系统类型
zonecfg:s8-zone:fs> set type=ufs
完成文件系统设置
zonecfg:s8-zone:fs> end
可重复该步骤以添加多个文件系统
7、如果移植的Solaris 8上有某些应用需要依赖于原机器的hostid,则需要对local zone的hostid进行设置(在原机器上执行hostid命令来获取所需要的hostid),如没有该需求可忽略,默认local zone的hostid和global zone的hostid相同
zonecfg:s8-zone> add attr
设置属性名称
zonecfg:s8-zone:attr> set name=hostid
设置数据类型
zonecfg:s8-zone:attr> set type=string
设置hostid的值
zonecfg:s8-zone:attr> set value=80f9138e
完成设置
zonecfg:s8-zone:attr> end
8、如果需要设置机器的machine类型(sun4u、sun4v等),步骤如下。如果不对其进行设置,默认与global zone的machine类型相同,可通过uname -a查看
zonecfg:s8-zone> add attr
设置属性名称
zonecfg:s8-zone:attr> set name=machine
设置数据类型
zonecfg:s8-zone:attr> set type=string
设置platform的值
zonecfg:s8-zone:attr> set value=sun4u
完成设置
zonecfg:s8-zone:attr> end
9、查看local zone的配置信息
zonecfg:s8-zone> info
也可以在shell的first prompt下输入下面的命令查看指定zone的配置信息
# zonecfg -z s8-zone info
或者指定zone中的某个属性信息
# zonecfg -z s8-zone info net
10、校验local zone的配置
zonecfg:s8-zone> verify
如有错误,根据错误提示进行修改
11、选择需要修改的配置并进行修改,例如要将IP地址修改为192.168.0.23
通过指定的属性值选择对应的设备或者属性,执行完后prompt会发生变化
zonecfg:s8-zone> select net address=192.168.0.27
(如果是修改s8-zone的属性,例如zonepath或者autoboot等属性,则不需要select步骤,直接进行set即可)
设置新的值
zonecfg:s8-zone:net> set address=192.168.0.23
完成修改
zonecfg:s8-zone:net> end
12、提交local zone的配置
zonecfg:s8-zone> commit
13、退出local zone的配置
zonecfg:s8-zone> exit
14、如有需要,可将local zone的配置导出保存为文件
# zonecfg -z s8-zone export > s8-zone.config
三、安装local zone系统
1、确保global zone能够访问Solaris 8的flash安装包,执行如下命令开始安装
# zoneadm -z s8-zone install -u -a /tmp/s8_hw4_0401.flar
-u:安装时执行sys-unconfig,对所创建的zone重新配置hostname等信息
-p:保留创建flash安装包时所配置的hostname等信息
(-u和-p必须指定其中一个参数,如果两个参数都没有,会无法安装)
-a:指定flash安装源
成功安装过程有如下显示:
Log File: /var/tmp/s8-zone.install.14516.log
Source: /tmp/s8_hw4_0401.flar
Installing: This may take several minutes...
Postprocessing: This may take several minutes...
Result: Installation completed successfully.
Log File: /s8-zone/root/var/log/s8-zone.install.14516.log
2、执行如下命令,可查看zone的状态
# zoneadm list -cv
如果显示为installed,则安装成功;
如果显示为incomplete,则安装未完成,首先需要卸载未完成的安装,然后再重新安装,卸载zone的命令如下:
# zoneadm -z s8-zone uninstall
如果显示为configured,则zone已配置,还未安装,重新执行zoneadm安装命令来安装。
四、引导并登录使用local zone
1、首次引导local zone时,建议先以console方式登录到zone上,然后开启另一个窗口执行local zone的引导命令,这样不会错过引导时所显示的一些信息
以console方式登录到s8-zone上
# zlogin -C s8-zone
[Connected to zone 's8-zone' console]
2、然后开启另一个窗口登录到global zone上,执行引导local zone的命令
# zoneadm -z s8-zone boot
3、回到第一个窗口,可以看到引导过程中显示的信息。如果安装时指定了-u参数,则会提示对系统进行相关的配置,与一般安装系统所做设置差不多。
需要注意的:一,关于网络的设置,这里是不起作用的,zone只读取zonecfg中的网络设置;二,对于时间设置,只能取默认值,默认值与global zone时间一致,如果手动去更改,会失败。
首次引导配置完成后zone自动reboot,其后便可以登陆使用了。第一个窗口中以console方式的登录无法退出,直接关闭当前连接即可。
在global zone中只有root有权限使用zlogin来登录local zone,普通用户可直接telnet登录到local zone上。
local zone运行后,ifconfig -a可以看到多出来两个虚拟网卡lo0:1和dmfe0:1,这个就是s8-zone所使用的网络接口,在s8-zone关闭后,该lo0:1和dmfe0:1会消失。
4、关闭local zone
# zoneadm -z s8-zone halt
重新引导local zone
# zoneadm -z s8-zone reboot
执行如下命令可以查看zone的运行状态
# zoneadm list -iv
五、卸载和删除local zone
1、停止local zone
# zoneadm -z s8-zone halt
2、卸载local zone
# zoneadm -z s8-zone uninstall
3、删除local zone配置
# zonecfg -z s8-zone delete