Messages in cipher reflected in the looking glass
[ Yasuhiro Fujitsuki's Weblog ]
http://blogs.sun.com/thaniwa/date/20080110 2008年 1月 10日 木曜日

(JA) Solaris Express XVM/Xen に CentOS 5.1 をインストールする

かなり久しぶりの更新です。今後もぼちぼちと更新していきたいと思います。^-^;
というのはさておき、Solaris Express(nevada) に xvm(xen) サポートが追加されて しばらく立ちますが、CentOS 5.1 のインストールをしてみたので、 そのログを残しておこうかと思います。
当初は Fedora 8 を入れてみようかと思ったのですが、 サポートされていないようで、うまくいきませんでした。

CentOS イメージの作成

Solaris Express(nevada)をxvm/xenカーネルで立ち上げた後、 ゲストOSをインストールしますが、インストール前に CentOSのインストールイメージをサーバ上に用意する必要があります。
簡単に言うと、DVD ISOの中身を展開して、 ネットワーク経由で見えるようにするだけです。 http, nfs, ftp のどれでも構いません。今回は nfs 経由(nfs_server:/export2/soft/CentOS)で見えるようにしてみました。
xvm/xen で OS イメージを作成する virt-install コマンドでは ISO イメージを直接読み込ませることが可能なんですが、 インストーラがこのイメージを認識出来ないようで、 サーバが無い場合、インストールが行えません。
ネットワーク経由で見えるようになれば、起動もそこから可能なので、 ISOイメージは不要です…。

OS イメージの作成は virt-install コマンドで行います。 オプション指定も可能ですが、 virt-install を起動すると、 設定が必要な項目を確認してくるので、それを利用するのも手です。
ここで設定しているのは

  • 仮想マシンの名前 = centos5
  • 仮想マシンのメモリ = 512MB
  • 仮想マシンのディスクイメージファイル = /export/centos5
  • ディスクイメージファイルの容量 = 4GB
  • グラフィックスを利用するか = no
    *** yes を指定するとGUIインストーラが起動するのですが、 Linux をインストールする場合は no を指定する必要があります。
    http://in.opensolaris.org/jive/thread.jspa?threadID=45427&tstart=45 にも出てますが、yes にすると virt-install が途中で終了し、 イメージ作成が行えません。
  • インストール元の場所 = nfs:nfs_server:/export2/soft/CentOS

bash-3.2# virt-install
What is the name of your virtual machine? centos5
 How much RAM should be allocated (in megabytes)? 512
 What would you like to use as the disk (path)? /export/centos5
 How large would you like the disk (/export/centos5) to be (in gigabytes)? 4
 Would you like to enable graphics support? (yes or no) no
 What is the install location? nfs:nfs_server:/export2/soft/CentOS


Starting install...
Creating storage file...  100% |=========================| 4.0 GB    00:00
Creating domain...                                                 0 B 00:16
Linux version 2.6.18-53.el5xen (mockbuild@builder6.centos.org) (gcc version 4.1.
2 20070626 (Red Hat 4.1.2-14)) #1 SMP Mon Nov 12 03:26:12 EST 2007
BIOS-provided physical RAM map:
 Xen: 0000000000000000 - 0000000020800000 (usable)
0MB HIGHMEM available.

設定が終わると、テキストインストーラが起動します。

Welcome to CentOS

                   +---------+ Choose a Language +---------+
                   |                                       |
                   | What language would you like to use   |
                   | during the installation process?      |
                   |                                       |
                   |       Catalan                ^        |
                   |       Chinese(Simplified)    :        |
                   |       Chinese(Traditional)   #        |
                   |       Croatian               :        |
                   |       Czech                  :        |
                   |       Danish                 :        |
                   |       Dutch                  :        |
                   |       English                v        |
                   |                                       |
                   |                +----+                 |
                   |                | OK |                 |
                   |                +----+                 |
                   |                                       |
                   |                                       |
                   +---------------------------------------+

  <Tab>/<Alt-Tab> between elements  | <Space> selects | <F12> next screen

テキストベースのインストーラが起動しますので、オプションを選択してインストールします。この辺はCentOSのインストールそのものです。 上記のダイアログで日本語の選択もできますが、インストーラの表示は英語のままで、インストールを日本語で行うことはできません。
インストールが終わると、再起動し、設定画面が起動しますので、適切に設定します。 この際、SELinux と ファイアウォールの設定が出てきますが、 無効にしておく方が実験するには楽です。
ファイアウォールを有効にしておいても問題はありませんが、 必要に応じて設定を変更する必要が出てきます。 CentOS では system-config-securitylevel というコマンドでこの辺の設定が行えます。

xm コマンド

仮想マシンの起動などの操作は xm コマンドを利用するようです。
list, start, shutdown, console あたりを知っていれば、 最低限は使えそうです。

# xm start centos5

# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   484     1     r-----    527.1
centos5                                    6   512     1     -b----     47.6

# xm console centos5
.....
CentOS release 5 (Final)
Kernel 2.6.18-53.el5xen on an i686

localhost.localdomain login:

CentOS の X を使う

一応、コンソールベースで使えるようになったのですが、 Xが使える方が便利です。 ということで、Xを使えるようにします。 Solaris Express では標準ではリモートからの接続できないように なっているので、変更する必要があります。

bash-3.2# svccfg -s x11-server listprop
options                                  application
options/default_depth                    integer  24
options/server                           astring  /usr/X11/bin/Xorg
options/server_args                      astring
options/stability                        astring  Evolving
options/value_authorization              astring  solaris.smf.manage.x11
options/tcp_listen                       boolean  false
.....

bash-3.2# svccfg -s x11-server setprop options/tcp_listen = true
svc:/application/x11/x11-server

後はXを再起動し、Solaris Express側で

# xhost + centos

としておき、CentOS側で

# export DISPLAY=solaris:0

としてやれば、xtermとかXアプリをSolaris Express上に表示できるようになります。
*** 上記の solaris, centos は 実際のホスト名もしくはIPアドレス

CentOSのgdmを使う(Xnest経由で)

ここまでやったのなら、ついでに CentOS のデスクトップを表示した方が 作業が楽になるだろうということで、ついでにそこまでやってしまいます。
デフォルトでは CentOS の gdm ではリモート接続不可になっているので、 接続できるようにする必要があります。 (XDMCP接続を有効にするというやつです。)
CentOS 5.1 では /etc/gdm/custom.conf を編集します。
赤い字の部分が無い場合は追加してください。
[security]項目のAllowRemoteRoot=trueは必須ではありません。 このオプションを入れることにより root でログインが出来るようになります。 今回はテスト作業を簡単にするために追加しています。

[daemon]
RemoteGreeter=/usr/libexec/gdmgreeter

[security]
AllowRemoteRoot=true

[xdmcp]
Enable=true

gdmの設定はこれで終わりです。 ファイアウォールを有効にしている場合は XDMCP (177 UDP) に 接続できるように設定を変更してください。
xen/xvmにインストールした CentOS はデフォルトでは コンソールモードになっており、gdm は起動していません。
runlevel コマンドで確認すると下のように runlevel 3 になっています。 (linux のグラフィカルユーザモードは runlevel 5)
/etc/inittab の id:3:initdefault: の 3 を 5 に変更しておけば、グラフィカルユーザモードがデフォルトになります (次回起動時以降)。

[root@localhost sbin]# runlevel
N 3

[root@localhost sbin]# cat /etc/inittab
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, 
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

上記のようなことはしなくても init コマンドでグラフィカルユーザモードに移行することも可能です。

[root@localhost sbin]# ps -ef | grep gdm

[root@localhost sbin]# init 5
[root@localhost sbin]# Intel CPU マイクロコードアップデートを適用中: [失敗]
Starting monitoring for VG VolGroup00:   2 logical volume(s) in volume group "Vo
lGroup00" monitored
[  OK  ]
readahead をバックグランドで起動中: [  OK  ]
irqbalance を起動中: [  OK  ]
anacron を起動中: [  OK  ]
readahead をバックグランドで起動中: [  OK  ]

[root@localhost sbin]# ps -ef | grep gdm
root      2231     1  0 20:29 ?        00:00:00 /usr/sbin/gdm-binary -nodaemon
root      2260     1  0 20:29 ?        00:00:00 /usr/sbin/gdm-binary -nodaemon
root      2338  1968  0 20:30 xvc0     00:00:00 grep gdm

後は、

# Xnest :1 -query centos

という感じで Xnest コマンドを Solaris Express 側で実行すれば、 CentOS のログイン画面が表示されます。
下図は、そのスクリーンショットと KDE にログイン後の画面です。