SolarisDemosのソース

#freeze
[[Solarisのページに戻る>Solaris]]

目次
#contentsx

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

** Solaris 11.1 特集 [#d73a519d]

*** Oracle VM Server for SPARC (LDom) の設定デモ [#i5d63b68]

制御ドメインを 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 インストール [#jed95a62]

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

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

  # 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 でマニフェスト作成 [#d6b64bc2]
システム管理者にはなにかと便利な、svcbundle のデモです。
内容は、[[Glynn が書いた記事:http://www.oracle.com/technetwork/articles/servers-storage-admin/howto-svcbundle-manifest-profile-1866525.html]]を参考にしています。

デーモン系のサービスを 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巻)>Solaris111WhatsNew]] [#bcb38be0]
*** VNIC マイグレーション [#b07f0cb3]
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 特集 [#zd1c4939]
*** ネットワーク設定デモ(Solaris 3 分クッキング 23巻) [#j066e2bc]
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
参考資料
- Oracle Solaris 管理: ネットワークインタフェースとネットワーク仮想化http://docs.oracle.com/cd/E26924_01/html/E25834/index.html
- 本日デモで使用した USB Ethernet アダプタ: Logitec LAN-TX/U2H3B(USB2.0 Ether) ドライバー axf IO DATA ETX2—US2(USB2.0 Ether) ドライバー upf
- axf, upf ドライバーは、 Murayama 氏の Free NIC driver for OpenSolaris から入手し
GLDv3 対応に再コンパイルしたものです。http://homepage2.nifty.com/mrym3/taiyodo/eng/

  
*** [[Zone AIデモ(Solaris 3 分クッキング 22巻)>Solaris11ZoneAIDemo]] [#n5c89146]
*** ipfilter のデモ(Solaris 3 分クッキング 21巻) [#p964201b]
[[仮想ワイヤデモ(Solaris 3 分クッキング 20巻)>Solaris11vWireDemo]] の環境を
をそのまま利用します。
  $ 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巻)>Solaris11vWireDemo]] [#x1321d37]
*** zfs dedup のデモ(Solaris 3 分クッキング 19巻) [#e76f0fea]
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巻) [#c371ab99]

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 作成デモ (自動構成を指定する方法) [#m0991b4e]

 $ 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 のデモ [#ha712d82]

 $ 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.