SolarisDemos

Solarisのページに戻る

目次

Table of Contents

簡単にできそうな、Soalris のデモを紹介しています。

Solaris 11.1 特集

Oracle VM Server for SPARC (LDom) の設定デモ

制御ドメインを Solaris 11.1 にして LDom を使ってみる。 デモ環境は、T1000 なので、11.1 の LDom 2.2 には対応しておらず、 あえてLDom 1.2 を使ったデモになります。

Solaris 11.1 バンドルの LDom 2.2 を uninstall して LDom 1.2 をインストールする。

 # pkg uninstal ldom

LDom 1.2 のインストール

 # Install/install-ldm

LDom デーモンの起動

 # svcadm enable ldmd
 # ldm list
 NAME             STATE    FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
 primary          active   ---c-   SP      32    8192M    0.3%  19d 9m

Ultra-SPARC T1 (T1000) では、制御ドメインの設定が終わるまで次のメッセージが出力されます。

 Notice: the LDom Manager is running in configuration mode. Any 
 configuration changes made will only take effect after the machine
 configuration is downloaded to the system controller and the host
 is reset.

仮想ディスクサーバー (vds) を作成

 # ldm add-vds primary-vds0 primary

ポートの範囲が 5000 ~ 5100 の仮想コンソール端末集配信装置サービス (primary-vcc0) を、制御ドメイン (primary) に追加

 # ldm add-vcc port-range=5000-5100 primary-vcc0 primary

仮想スイッチサービス (vsw) を作成

 # ldm add-vsw net-dev=bge0 primary-vsw0 primary
 
 # ldm list-services primary
 VCC
     NAME             LDOM             PORT-RANGE
     primary-vcc0     primary          5000-5100
 
 VSW
     NAME             LDOM             MAC               NET-DEV   DEVICE     DEFAULT-VLAN-ID PVID VID                  MTU   MODE  
     primary-vsw0     primary          00:14:4f:f8:82:b1 bge0      switch@0   1               1                         1500        
 
 VDS
     NAME             LDOM             VOLUME         OPTIONS          MPGROUP        DEVICE
     primary-vds0     primary          vol1                                           /dev/zvol/dsk/pool/vdisk1
                                       iso_vol                                        /var/tmp/sol-exp.iso

制御ドメインの初期構成

 # ldm list -o crypto primary

MAU の割り当てを解除

 # ldm set-mau 0 primary

8つの仮想CPU を制御ドメインに割り当てる

 # ldm set-vcpu 8 primary

4GB のメモリーを制御ドメインに割り当てる(残り4G をゲストドメインで使用可)

 # ldm set-memory 4G primary
 # ldm list-domain
 NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
 primary          active     -n-cv-  SP      8     4G        22%  11m

initial という名前の構成をSP(サービスプロセッサ)に追加する

 # ldm add-config initial

再起動後は initial 構成で起動する

 # ldm list-config
 factory-default
 initial [next poweron]

再起動

 # shutdown -y -g0 -i6

仮想ネットワーク端末サーバーデーモンを有効にする

 # svcadm enable vntsd
 
 # svcs -l vntsd

ゲストドメイン (ldg1) の作成

 # ldm add-domain ldg1

仮想 CPU の割り当て

 # ldm add-vcpu 4 ldg1

メモリーの割り当て

 # ldm add-memory 2G ldg1

仮想ネットワーク(vnet1)をゲストドメインに割り当てる

 # ldm add-vnet vnet1 primary-vsw0 ldg1

仮想ディスクの作成 (このデモでは物理ディスクの代わりに仮想ディスクを使う)

 # zfs create -V 22g rpool/export/vdisk1 

仮想ディスクをエクスポートする

 # ldm add-vdsdev /dev/zvol/dsk/rpool/export/disk1 vol1@primary-vds0

仮想ディスクをゲストドメインに追加

 # ldm add-vdisk vdisk1 vol1@primary-vds0 ldg1

ゲストドメインの auto-boot および boot-device 変数を設定

 # ldm set-var auto-boot\?=true ldg1
 # ldm set-var boot-device=vdisk1 ldg1

ゲストドメインにリソースをバインド

 # ldm bind-domain ldg1
 # ldm list-domain ldg1
 NAME          STATE    FLAGS  CONS   VCPU MEMORY   UTIL  UPTIME
 ldg1          bound    -----  5000   4    2G

ゲストドメインに Solaris をインストール

Solaris インストール用ISO image を vdisk_iso という名前の仮想ディスクとしてバインドする

 # ldm add-vdsdev /var/tmp/solaris.iso  iso_vol@primary-vds0
 # ldm add-vdisk vdisk_iso iso_vol@primary-vds0 ldg1

DVD からインストールする場合は

 # ldm add-vdsdev /dev/dsk/c2t0d0s2 dvd_vol@primary-vds0
 # ldm add-vdisk vdisk_cd_media dvd_vol@primary-vds0 ldg1
 # ldm list-bindings
 NAME             STATE    FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME 
 primary          active   -n-cv   SP      4     4G       0.2%  22h 45m
 ...
 VDS 
    NAME             VOLUME         OPTIONS          DEVICE
    primary-vds0     vol1                            /dev/zvol/dsk/rpool/export/vdisk1
    iso_vol                                          /var/tmp/solaris.iso
 ....
 ------------------------------------------------------------------------------
 NAME             STATE    FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
 ldg1             inactive -----           4     4G
 ...
 DISK
    NAME             VOLUME                      TOUT DEVICE  SERVER
    vdisk1           vol1@primary-vds0
    vdisk_iso        iso_vol@primary-vds0
 ....

ゲストドメインのバインドとスタート

 # ldm bind ldg1
 # ldm start ldg1
 LDom ldg1 started

ゲストドメインのコンソールに接続

 # telnet localhost 5000
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
  
 Connecting to console "ldg1" in group "ldg1" ....
 Press ~? for control options ..

デバイスの確認

 ok devalias
 vdisk_iso       /virtual-devices@100/channel-devices@200/disk@1
 vdisk1          /virtual-devices@100/channel-devices@200/disk@0
 vnet1           /virtual-devices@100/channel-devices@200/network@0
 virtual-console /virtual-devices/console@1
 name            aliases

インストール

 ok boot vdisk_iso:f

DVD からインストール場合は

 ok boot vdisk_cd_media:f

あとは通常のインストールと同じ

ゲストドメインの停止

 # ldm stop ldg1

全てのドメインの停止

 # ldm stop-domain -a

出荷時 デフォルト構成に戻す

 # ldm set-config factory-default

AI インストール

さらに簡単になりましたね。

インストールサービスパッケージのインストール

 # pkg install install/installadm

インストールサービスの作成

 # installadm create-service
 Warning: Service svc:/network/dns/multicast:default is not online.
    Installation services will not be advertised via multicast DNS.
 
 Creating service from: pkg:/install-image/solaris-auto-install
 OK to use subdir of /export/auto_install to store image? [y/N]: y
 # svcadm refresh system/install/server:default

マルチキャストDNSの有効化(必要なのかよく解らず。。)

 # svcadm enable /network/dns/multicast

インストールサーバのネットワークの構成

 # svccfg -s system/install/server:default setprop all_services/networks = 192.168.10.21/24
 # svcadm refresh system/install/server:default

ISOファイルを利用 SPARC インストールサービスの作成

 # installadm create-service -s /var/tmp/images/sparc/sol-11_1-ai-sparc.iso -i 192.168.10.200 -c 2 -y

この例では DHCP で 192.168.10.200 番から client 2個分をアサインする。

 Creating service from: /var/tmp/images/sparc/sol-11_1-ai-sparc.iso
 Setting up the image ...
 
 Creating sparc service: solaris11_1-sparc
 
 Image path: /export/auto_install/solaris11_1-sparc
 
 Service discovery fallback mechanism set up
 Creating SPARC configuration file
 
 Starting DHCP server...
 
 Adding IP range to local DHCP configuration
 
 Refreshing install services
 
 Creating default-sparc alias
 
 Service discovery fallback mechanism set up
 Creating SPARC configuration file
 Setting the default SPARC bootfile(s) in the local DHCP configuration
 to:
 http://192.168.10.21:5555/cgi-bin/wanboot-cgi
 
 Refreshing install services
 
 # installadm list
 Service Name           Alias Of               Status  Arch   Image Path 
 ------------           --------               ------  ----   ---------- 
 default-i386           solaris11_1_6_2_0-i386 on      i386   /export/auto_install/solaris11_1_6_2_0-i386
 default-sparc          solaris11_1-sparc      on      sparc  /export/auto_install/solaris11_1-sparc
 solaris11_1-sparc      -                      on      sparc  /export/auto_install/solaris11_1-sparc
 solaris11_1_6_2_0-i386 -                      on      i386   /export/auto_install/solaris11_1_6_2_0-i386

デフォルト構成でSPARC mashine からの DHCP boot と AI インストール

 OK> boot net:dhcp - install

svcbundle でマニフェスト作成

システム管理者にはなにかと便利な、svcbundle のデモです。 内容は、Glynn が書いた記事を参考にしています。

デーモン系のサービスを SMF で管理するマニフェストを svcbundle で作成してみます。

 # svcbundle -o nagios.xml -s service-name=application/nagios -s model=daemon -s start-method="/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg"

出力される nagios.xml の内容は以下のとおり

<?xml version="1.0" ?>
 <!DOCTYPE service_bundle
   SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
 <!--
     Manifest created by svcbundle (2012-Nov-10 22:30:23+0900)
 -->
 <service_bundle type="manifest" name="application/nagios">
     <service version="1" type="service" name="application/nagios">
         <!--
             The following dependency keeps us from starting until the
             multi-user milestone is reached.
         -->
         <dependency restart_on="none" type="service"
             name="multi_user_dependency" grouping="require_all">
             <service_fmri value="svc:/milestone/multi-user"/>
         </dependency>
         <exec_method timeout_seconds="60" type="method" name="start"
             exec="/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg"
         />
         <!--
             The exec attribute below can be changed to a command that SMF
             should execute to stop the service.  See smf_method(5) for more
             details.
         -->
         <exec_method timeout_seconds="60" type="method" name="stop"
             exec=":kill"/>
         <!--
             The exec attribute below can be changed to a command that SMF
             should execute when the service is refreshed.  Services are
             typically refreshed when their properties are changed in the
             SMF repository.  See smf_method(5) for more details.  It is
             common to retain the value of :true which means that SMF will
             take no action when the service is refreshed.  Alternatively,
             you may wish to provide a method to reread the SMF repository
             and act on any configuration changes.
         -->
         <exec_method timeout_seconds="60" type="method" name="refresh"
             exec=":true"/>
         <!--
             We do not need a duration property group, because contract is
             the default.  Search for duration in svc.startd(1M).
         -->
         <instance enabled="true" name="default"/>
         <template>
             <common_name>
                 <loctext xml:lang="C">
                     <!--
                         Replace this comment with a short name for the
                         service.
                     -->
                 </loctext>
             </common_name>
             <description>
                 <loctext xml:lang="C">
                     <!--
                         Replace this comment with a brief description of
                         the service
                     -->
                 </loctext>
             </description>
         </template>
     </service>
 </service_bundle>

作成したマニフェストを有効にする

 # cp nagios.xml /lib/svc/manifest/site
 # svcadm restart manifest-import
 # svcs nagios
 STATE          STIME    FMRI
 online          9:46:24 svc:/application/nagios:default

追加した nagios サービスをみてみる

 # pgrep -l nagios
  1202 nagios
 # ptree 1202
  1202  /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

nagios サービスを disable にする

 # svcadm disable nagios
 # ptree 1202
 # pgrep -l nagios

再度有効にする

 # svcadm enable nagios
 # pgrep -l nagios
  2060 nagios
 # ptree 2060
  2060  /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

SMF マニフェストの雛形を簡単に作ってくれるのは便利ですよね。

つづいて、svcbundle で System Profile を設定する方法。

 # svcbundle -o nameserver-config.xml -s service-name=network/dns/client -s bundle-type=profile -s service-property="config:nameserver:net_address:192.168.10.254"

bundle-type は default はマニフェストなので、"profile" を指定する。

 # cat nameserver-config.xml 
 <?xml version="1.0" ?>
 <!DOCTYPE service_bundle
   SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
 <!--
     Manifest created by svcbundle (2012-Nov-24 23:30:57+0900)
 -->
 <service_bundle type="profile" name="network/dns/client">
     <service version="1" type="service" name="network/dns/client">
         <property_group type="application" name="config">
             <propval type="net_address" name="nameserver"
                 value="192.168.10.254"/>
         </property_group>
     </service>
 </service_bundle>

svc に反映。

 # cp nameserver-config.xml /etc/svc/profile/site
 # svcadm restart manifest-import
 # svcprop -p config/nameserver dns/client
 192.168.10.254

Solaris 11.1最新デモ(Solaris 3 分クッキング 24巻)

VNIC マイグレーション

Solaris 11.1 で VNIC の属性が動的に変更可能になりました

 $ dladm show-link
 LINK                CLASS     MTU    STATE    OVER
 net0                phys      1500   up       --
 net1                phys      1500   down     --
 myzone/net0         vnic      1500   up       net0
 axf0                phys      1500   up   

例えば、Wiredの物理 NIC が複数ある場合、VNIC のリンク先を動的に変更可能です。

 $ sudo dladm modify-vnic -l axf0 myzone/net0
 $ dladm show-link
 LINK                CLASS     MTU    STATE    OVER
 net0                phys      1500   up       --
 net1                phys      1500   down     --
 myzone/net0         vnic      1500   up       axf0
 axf0                phys      1500   up       --

データリンクレベルで動的に切り替わるので、例えば myzone 上で ftp で大きなファイルを 転送中に、より速い NIC に切り替えとかできたりします

Solaris 11 特集

ネットワーク設定デモ(Solaris 3 分クッキング 23巻)

dladm(1M) データリンクの表示

 % dladm show-link

dladm(1M) 物理データリンクの表示

 % dladm show-phys

netadm(1M) ネットワーク構成プロファイルの表示

 % netadm list

netadm(1M) 自動構成から手動構成への切り替え

 % sudo netadm enable -p ncp DefaultFixed

netadm(1M) 手動構成から自動構成への切り替え

 % sudo netadm enable -p ncp Automatic

手動構成での各設定方法

 % sudo netadm enable -p ncp DefaultFixed
 % netadm list
 % dladm show-link
 % ipadm show-addr

IPアドレスの手動設定

 % sudo ipadm create-ip net0
 % sudo ipadm create-addr -T static -a 192.168.1.10/24 net0/v4
 % ipadm show-addr

デフォルトルートの設定

 % sudo route -p add default 192.168.1.1
 % netstat -rn

DNSの設定

 % sudo svccfg -s name-service/switch setprop config/host = astring: \"dns files\"
 % sudo svccfg -s name-service/switch:default refresh
 % sudo svcadm restart name-service/switch

DNSサーバの設定

 % sudo svccfg -s dns/client setprop config/nameserver=net_address: 192.168.1.1
 % sudo svccfg -s dns/client:default refresh
 % sudo svcadm restart dns/client

DNSネームサービスの確認

 % dig
 % host www.oracle.com

IPMPの設定

 % sudo ipadm create-ipmp ipmp0
 % sudo ipadm create-ip net0
 % sudo ipadm create-ip net4
 % sudo ipadm create-ip net5
 % sudo ipadm add-ipmp -i net0 -i net4 -i net5 ipmp0
 % sudo ipadm create-addr -T static -a 192.168.1.20/24 ipmp0/v4addr1
 % sudo ipadm create-addr -T static -a 192.168.1.21/24 ipmp0/v4addr2
 % sudo ipadm create-addr -T static -a 192.168.1.10/24 net0/test
 % sudo ipadm create-addr -T static -a 192.168.1.14/24 net4/test
 % sudo ipadm create-addr -T static -a 192.168.1.15/24 net5/test
 % ipadm show-addr
 % ipmpstat -g
 % ipmpstat -t
 % ipmpstat -i

IPMP の設定解除

 % sudo ipadm remove-ipmp -i net5 -i net4 -i net0 ipmp0
 % sudo ipadm delete-ipmp ipmp0
 % sudo ipadm delete-ip net5
 % sudo ipadm delete-ip net4
 % sudo ipadm delete-ip net0
 % ipadm show-addr

リンク集約の設定

 % dladm show-link
 % sudo dladm create-aggr -l net0 -l net4 -l net5 aggr0
 % sudo ipadm create-ip aggr0
 % sudo ipadm create-addr -T static -a 192.168.1.30/24 aggr0/v4
 % ipadm show-addr
 % sudo dladm show-aggr -x

リンク集約の設定の解除

 % sudo dladm remove-aggr -l net4 -l net5 aggr0
 % sudo dladm show-aggr -x
 % sudo ipadm delete-ip aggr0
 % sudo dladm delete-aggr aggr0

あと処理、元にもどす [#k65952b9]

 % sudo netadm enable -p ncp Automatic
 % dig
 % host www.oracle.com

参考資料

  

Zone AIデモ(Solaris 3 分クッキング 22巻)

ipfilter のデモ(Solaris 3 分クッキング 21巻)

仮想ワイヤデモ(Solaris 3 分クッキング 20巻) の環境を をそのまま利用します。

 $ sudo zlogin router ipadm show-addr
 $ sudo zlogin router svcs ipfilter:default

デフォルトでは /etc/ipf/ipf.conf には何も記述されておりません。

 $ sudo zlogin router cat /etc/ipf/ipf.conf
 $ sudo zlogin router ipfstat -io

Router の /etc/ipf/ipf.conf に下記を追記する。

 # Allow in/out Loopback
 pass out quick on lo0
 pass in quick on lo0
 # Allow port 80(http)
 pass out quick proto tcp from any to any port = 80 keep state
 pass out quick proto udp from any to any port = 80
 # Deny out on vnic3 all
 block out log on vnic3 all
 #block in log on vnic3 all
 $ sudo zlogin router svccfg -s ipfilter:default listprop
 $ sudo zlogin router svccfg -s ipfilter:default setprop firewall_config_default/policy = astring: "custom"
 $ sudo zlogin router svccfg -s ipfilter:default setprop firewall_config_default/custom_policy_file = astring: "/etc/ipf/ipf.conf"

ipfilter サービスの有効化

 $ sudo zlogin router svcadm refresh ipfilter:default
 $ sudo zlogin router svcadm enable ipfilter:default
 $ sudo zlogin router ipfstat -io

Netperf 1.1.1.1 → 2.2.2.2 のすべてのパケットは全てブロックされますが、 http のパケット 2.2.2.2 → 1.1.1.1はパスされていること確認することができます。

仮想ワイヤデモ(Solaris 3 分クッキング 20巻)

zfs dedup のデモ(Solaris 3 分クッキング 19巻)

100MB の仮ディスク領域を作成

$ sudo mkfile 100m /dev/dsk/dedupdisk
Password: 

作成した領域から dpool という名前で zfs プールを作成

$ sudo zpool create -f dpool dedupdisk

dpool の状況表示

$ zpool status dpool
  pool: dpool
 state: ONLINE
  scan: none requested
config:

	NAME         STATE     READ WRITE CKSUM
	dpool        ONLINE       0     0     0
	  dedupdisk  ONLINE       0     0     0

errors: No known data errors

dpool のリスト表示

$ zpool list dpool
NAME   SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
dpool   95M   119K  94.9M   0%  1.00x  ONLINE  -
$ 
$ zfs list dpool
NAME   USED  AVAIL  REFER  MOUNTPOINT
dpool   85K  62.9M    31K  /dpool

dpool dedup機能を ON にする

$ sudo zfs set dedup=on dpool

適当なサイズのファイルを dpool にコピー

$ ls -lh /usr/jdk/latest/jre/lib/rt.jar
-rw-r--r--   1 root     bin          50M 10月 21日 2011年 /usr/jdk/latest/jre/lib/rt.jar
$ 
$ sudo cp /usr/jdk/latest/jre/lib/rt.jar /dpool/.
$ 
$ ls -lh /dpool
total 101971
-rw-r--r--   1 root     root         50M  5月  7日  04:11 rt.jar
$ 
$ zpool list dpool
NAME   SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
dpool   95M  50.4M  44.6M  53%  1.00x  ONLINE  -
$ 
$ zfs list dpool
NAME    USED  AVAIL  REFER  MOUNTPOINT
dpool  50.3M  12.7M  49.8M  /dpool

同じファイルを別名でコピーする

$ sudo cp /usr/jdk/latest/jre/lib/rt.jar /dpool/rt-1.jar
$ 
$ ls -lh /dpool
total 203948
-rw-r--r--   1 root     root         50M  5月  7日  04:12 rt-1.jar
-rw-r--r--   1 root     root         50M  5月  7日  04:11 rt.jar
$ 
$ zpool list dpool
NAME   SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
dpool   95M  50.6M  44.4M  53%  1.99x  ONLINE  -
$ 
$ zfs list dpool
NAME   USED  AVAIL  REFER  MOUNTPOINT
dpool  100M  12.4M  99.9M  /dpool

同じファイルをさらに別名でコピーする

$ sudo cp /usr/jdk/latest/jre/lib/rt.jar /dpool/rt-2.jar

実際の /dpool 下には3つのファイルが存在する

$ ls -lh /dpool
total 306181
-rw-r--r--   1 root     root         50M  5月  7日  04:12 rt-1.jar
-rw-r--r--   1 root     root         50M  5月  7日  04:12 rt-2.jar
-rw-r--r--   1 root     root         50M  5月  7日  04:11 rt.jar
$ 
$ zpool list dpool
NAME   SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
dpool   95M  50.6M  44.4M  53%  2.99x  ONLINE  -
$ 
$ zfs list dpool
NAME   USED  AVAIL  REFER  MOUNTPOINT
dpool  150M  12.3M   150M  /dpool

dpool の削除

$ sudo zpool destroy dpool

仮ディスク領域の削除

$ sudo rm /dev/dsk/dedupdisk

pkg コマンドデモ (Solaris 3 分クッキング 18巻)

pkg コマンドのマンページ表示

% man pkg

pkg コマンドのヘルプ表示

% pkg help

デフォルトのレポジトリを確認する

% pkg publisher

レポジトリに更新可能なパッケージがあるか確認する

% pkg list -u

レポジトリに更新可能なパッケージがあれば更新する

% sudo pkg update

キーワード gzip でインストールイメージを検索

% pkg search gzip

キーワード /usr/bin/gzip でインストールイメージを検索

% pkg search /usr/bin/gzip

gzip パッケージのリスト表示

% pkg list -af  gzip

gzip パッケージ情報の取得

% pkg info gzip

gzip パッケージのコンテンツの表示(その1)

% pkg contents gzip

パッケージのコンテンツの表示(その2)

% pkg contents -t dir,file,link,hardlink -o action.name,mode,pkg.size,path,target gzip

gcc がインストールされてるか調べる

% which gcc

gcc をレポジトリから調べる(その1)

% pkg search -r gcc

gcc をレポジトリから調べる(その2)

% pkg search -r /usr/sfw/bin/gcc

gcc パッケージの情報をレポジトリから調べる

% pkg list -af  *gcc

gcc-3 パッケージの情報をレポジトリから調べる

% pkg info -r gcc-3

レポジトリを確認する

% pkg publisher

レポジトリを変更する

% sudo pkg set-publisher -g http://localhost:80/ -G '*' solaris

検索Index を更新する

% sudo pkg rebuid-index

レポジトリをリフレッシュする

% sudo pkg refresh

パッケージをレポジトリからインストールする

% pkg install -v gcc-3");

gcc がインストールされたか確認する

% which gcc

gcc パッケージの情報をレポジトリから調べる

% pkg list -af  *gcc*

gcc-3 パッケージをアンインストールする

% sudo pkg uninstall -v gcc-3

gcc が削除されているか確認する

% which gcc

レポジトリをデフォルトに戻す

% pkg set-publisher -g http://pkg.oracle.com/solaris/release -G '*' solaris

レポジトリを確認する

% pkg publisher

zone 作成デモ (自動構成を指定する方法)

$ zfs list rpool/Zones
NAME          USED  AVAIL  REFER  MOUNTPOINT
rpool/Zones  2.04G  63.9G  36.5K  /rpool/Zones
$ sudo zonecfg -z myzone "create;set zonepath=/rpool/Zones/myzone;commit;exit"

$ sudo zoneadm -z myzone install -c /var/tmp/myzone_config.xml
Progress being logged to /var/log/zones/zoneadm.20120506T215757Z.myzone.install
       Image: Preparing at /rpool/Zones/myzone/root.

 Install Log: /system/volatile/install.5619/install_log
 AI Manifest: /tmp/manifest.xml.wUaO8k
  SC Profile: /var/tmp/myzone_config.xml
    Zonename: myzone
Installation: Starting ...

              Creating IPS image
              Installing packages from:                      
                  solaris
                      origin:  http://localhost:80/
ダウンロード                     パッケージ ファイル  転送 (MB)                       
Completed                              167/167 32062/32062  175.8/175.8

フェーズ                             アクション
インストールフェーズ           44313/44313 

フェーズ                                  項目
パッケージ状態の更新フェーズ     167/167 
イメージ状態の更新フェーズ          2/2 
Installation: Succeeded

        Note: Man pages can be obtained by installing pkg:/system/manual

 done.

        Done: Installation completed in 687.311 seconds.


  Next Steps: Boot the zone, then log into the zone console (zlogin -C)

              to complete the configuration process.

Log saved in non-global zone as /rpool/Zones/myzone/root/var/log/zones/zoneadm.20120506T215757Z.myzone.install
$ sudo zoneadm -z myzone ready
$ sudo zoneadm -z myzone boot

/var/tmp/myzone_config.xml の内容は以下のとおり、この例では default user は、 admin で Password は "abc123" です、network は Automatic 構成のため、起動後 DHCP で IP 接続されます。

<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type="profile" name="sysconfig">
 <service version="1" type="service" name="system/config-user">
   <instance enabled="true" name="default">
     <property_group type="application" name="root_account">
       <propval type="astring" name="login" value="root"/>
       <propval type="astring" name="password" value="$5$k7T7i5qm$niM/KI.FAinEEBMNVwnL2CsSsq1aGGHaz.KvGEnNbM2"/>
       <propval type="astring" name="type" value="role"/>
     </property_group>
     <property_group type="application" name="user_account">
       <propval type="astring" name="login" value="admin"/>
       <propval type="astring" name="password" value="$5$zadzZ31b$uTSjUrN4D9bBtqmq9h1NgWMDdwFHwpxtZoljL.vJox4"/>
       <propval type="astring" name="type" value="normal"/>
       <propval type="astring" name="description" value="admin"/>
       <propval type="count" name="gid" value="10"/>
       <propval type="astring" name="shell" value="/usr/bin/bash"/>
       <propval type="astring" name="roles" value="root"/>
       <propval type="astring" name="profiles" value="System Administrator"/>
       <propval type="astring" name="sudoers" value="ALL=(ALL) ALL"/>
     </property_group>
   </instance>
 </service>
 <service version="1" type="service" name="system/timezone">
   <instance enabled="true" name="default">
     <property_group type="application" name="timezone">
       <propval type="astring" name="localtime" value="Japan"/>
     </property_group>
   </instance>
 </service>
 <service version="1" type="service" name="system/environment">
   <instance enabled="true" name="init">
     <property_group type="application" name="environment">
       <propval type="astring" name="LANG" value="ja_JP.UTF-8"/>
     </property_group>
   </instance>
 </service>
 <service version="1" type="service" name="system/identity">
   <instance enabled="true" name="node">
     <property_group type="application" name="config">
       <propval type="astring" name="nodename" value="myzone"/>
     </property_group>
   </instance>
 </service>
 <service version="1" type="service" name="system/keymap">
   <instance enabled="true" name="default">
     <property_group type="system" name="keymap">
       <propval type="astring" name="layout" value="Japanese"/>
     </property_group>
   </instance>
 </service>
 <service version="1" type="service" name="system/console-login">
   <instance enabled="true" name="default">
     <property_group type="application" name="ttymon">
       <propval type="astring" name="terminal_type" value="vt100"/>
     </property_group>
   </instance>
 </service>
 <service version="1" type="service" name="network/physical">
   <instance enabled="true" name="default">
     <property_group type="application" name="netcfg">
       <propval type="astring" name="active_ncp" value="Automatic"/>
     </property_group>
   </instance>
 </service>
</service_bundle>
# zlogin myzone
[Connected to zone 'myzone' pts/3]
Oracle Corporation	SunOS 5.11	11.0	November 2011
root@myzone:~# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net0/_b           dhcp     ok           192.168.11.7/24
lo0/v6            static   ok           ::1/128
net0/_a           addrconf ok           fe80::8:20ff:fef7:18a4/10
net0/_a           addrconf ok           240f:7:8ccd:1:8:20ff:fef7:18a4/64
root@myzone:~# 

SMF のデモ

$ svcs|more
STATE          STIME    FMRI
legacy_run      4:31:40 lrc:/etc/rc2_d/S47pppd
legacy_run      4:31:41 lrc:/etc/rc2_d/S89PRESERVE
disabled        4:31:28 svc:/network/ipsec/policy:default
online          4:30:06 svc:/system/early-manifest-import:default
online          4:30:06 svc:/system/svc/restarter:default
online          4:30:09 svc:/network/tcp/congestion-control:newreno
online          4:30:09 svc:/network/sctp/congestion-control:cubic
online          4:30:09 svc:/network/tcp/congestion-control:cubic
online          4:30:09 svc:/network/tcp/congestion-control:highspeed
online          4:30:09 svc:/network/sctp/congestion-control:highspeed
online          4:30:09 svc:/network/tcp/congestion-control:vegas
online          4:30:09 svc:/network/sctp/congestion-control:newreno
...
$ svcs|wc -l
     142
$ svcs -a|wc -l
     217
$ svcs -xv
$ sudo kill `pgrep sendmail'
$ svcs -l sendmail
fmri         svc:/network/smtp:sendmail
name         sendmail SMTP mail transfer agent
enabled      true
state        online
next_state   none
state_time   2012年05月07日 07時32分08秒
logfile      /var/svc/log/network-smtp:sendmail.log
restarter    svc:/system/svc/restarter:default
contract_id  312 
manifest     /etc/svc/profile/generic.xml
manifest     /lib/svc/manifest/network/smtp-sendmail.xml
dependency   require_all/refresh file://localhost/etc/mail/sendmail.cf (online)
dependency   require_all/refresh file://localhost/etc/nsswitch.conf (online)
dependency   optional_all/none svc:/system/filesystem/autofs (online)
dependency   require_all/none svc:/system/filesystem/local (online)
dependency   require_all/none svc:/network/service (online)
dependency   require_all/refresh svc:/milestone/name-services (online)
dependency   optional_all/refresh svc:/system/identity:domain (online)
dependency   optional_all/none svc:/system/system-log (online)
$ sudo svcadm disable sendmail
$ svcs -x sendmail
svc:/network/smtp:sendmail (sendmail SMTP mail transfer agent)
 State: disabled since 2012年05月07日 07時32分12秒
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: sendmail(1M)
   See: /var/svc/log/network-smtp:sendmail.log
Impact: This service is not running.
$ sudo svcadm enable sendmail
$ svcs -x sendmail
svc:/network/smtp:sendmail (sendmail SMTP mail transfer agent)
 State: online since 2012年05月07日 07時32分21秒
   See: sendmail(1M)
   See: /var/svc/log/network-smtp:sendmail.log
Impact: None.