
| English | Japanese |
Author: Ken Kato
Mail: chitchat<DOT>vdk<AT>gmail<DOT>com |
仮想な背中
仮想な背中 > Solaris Tips & Tricks
Solaris Tips & Tricks
ここに挙げるのは VMware 上に Solaris 8 環境を構築するための情報ですが、
一から十までの手順書ではありません。Solaris ゲストをインストール、設定する
際に役立つ(であろう)豆知識・小技と注意すべき点などだけです。
Solaris インストールについて詳しくは Jan Exss 氏のページがお勧めです
(http://www.jan.exss.de/vmware/solaris/en_index.html)。
インストール手順の詳しい解説や、カスタム・ジャンプスタート
(自動インストール)用のフロッピイメージ、Soraris インストール用の VMware
仮想マシンなどが入手できます。
日本語の解説ページでは http://www.ukkii.com/solaris/ がお勧めです。
Solaris にある程度なれている人には Juergen Keil 氏の "Resource for
Solaris" (http://www.tools.de/solaris/) ページが非常にお勧めです。
VMware に特有の情報はありませんが、Ensoniq 1371 (VMware 4.x
のサウンドデバイス) のドライバ、PS/2 ホイールマウスドライバ、最新の
XFree86 ビデオドライバの移植版など、VMware でも使えるものがいろいろあります。
NOTE: このページは VMware Workstation 3.x 上の Solaris 8 ゲスト
を対象に書かれています。VMware Workstation 4.x や Solaris 9 にも当てはまる
こともあると思いますが、まだきちんと調べてはいません。
VMware Workstation 3.0 以降をお勧めします。
VMware バージョン 2 でも Solaris を使用することは可能ですが、
以下の理由からあまりお勧めはできません:
- Windows ホストではそもそも CD-ROM や ISO イメージから Solaris
をインストールすることができません。これは Windows 自体に問題があり、
VMware バージョン 2 ではその問題を回避することができないからです。
Linux マシンで Solaris 仮想マシンを構築して、それを Windows に転送
したり、あるいはネットワーク上のインストールサーバからインストール
することは可能ですが、手間のほうが大きいと思います。
- VMware 2 仮想ディスクの最大 2GB という制限は Solaris には小さすぎるので、
plain ディスクや raw ディスク、あるいは複数の仮想ディスクを使用しなければ
なりません。
- Solaris ゲストで DMA を有効にすると VMware がクラッシュします(Linux
ホストのことはわかりませんが、Windows ホストでは間違いなくそうなります)。
DMA なしでは、ゲストのディスクアクセスが遅すぎて使い物になりません。
- SCSI ではなく IDE の仮想ディスクを使います。
Solaris 8 には Buslogic SCSI アダプタ用のドライバがありません。
- Windows ホストで実際の CD-ROM ドライブからインストールする場合は
CD-ROM ドライブの raw access を有効にします。
ISO イメージからインストールする場合は必要ありません。
- ゲスト OS の種別は "Other" または
"FreeBSD"
を選択します。私のところでは、どちらでもちゃんと動いています。
"Linux" を選択した場合、時々ゲスト内の特定のプロセスがクラッシュすることがありました。
[2004/02/18 追記] キーボードのリピートタイミングが早すぎて困っている場合、
"FreeBSD" にすると改善されることがあるようです。
- "Installation" CD-ROM ではなく、"Software 1"
CD-ROM からインストールを開始します。
"Installation" CD-ROM からは GUI インストーラが起動するのですが、これは
VGA 画面では動作しません(Solaris CD-ROM には VMware SVGA ドライバ が入って
いないので、インストールは VGA で行うことになります)。
また、この GUI インストーラはワークエリア用に 512MB のパーティションを
作成します。このパーティションはあとでスワップ領域になるのですが、仮想
マシンに 512MB ものスワップは必要ないと思います。
- ビデオデバイスの選択時には、
"16 color Standard VGA 640x480 (256K)" または
"16 color Standard VGA with panning @800x600 (256K)"
を選択します。これ以外では動作しません。モニタ種別はどれを選んでも
違いはないようです。
仮想マシンのディスクアクセスは DMA なしでは非常に遅いです。
DMA を有効にしても超高速になるわけではありませんが、それでも
かなりの違いがあります。
Solaris 8 では DMA はデフォルトで無効になっているので手動で有効にする必要があります。
- 仮想マシンを起動します。
- "SunOS Secondary Boot" 画面で <ESC> を押します。
- "Solaris Device Configuration Assistant" 画面で <F2> を押します。
- "Identified Devices" 画面で <F2> を押します。
- "Boot Solaris" 画面で <F4> を押して "Boot Tasks" へ進みます。
- "Boot Tasks" 画面で "View/Edit Property Settings" を選択して <F2> を押します。
- "View/Edit Property Settings" 画面で "ata-dma-enabled" の値を "1" に変更します。
- <F2>、<F3> の順に押して "Boot Solaris" 画面に戻ります。
- "DISK" を選択し、<F2> を押して OS の起動を続行します。
VMWare SVGA ドライバは正式なものがないので、高解像度の画面を使用するには
サードパーティのドライバを使用しなければなりません。
VGA 画面での Solaris (スクリーンショット
#1、#2)
はどう多めに見ても使い物になるようなものではありません。
そのような SVGA ドライバは現在以下のようなサイトから入手できます:
私の個人的なお勧めは Juergen Keil 氏のドライバです。最新の XFree86 リリース
をベースとしているだけでなく、彼自身が Solaris や XFree86 に非常に詳しい人の
ようで、彼のサイトには XFree86 の開発スナップショットの移植版まであります。
あいにくこれらのドライバが動かなかった場合でも、まだ他にも高解像度の
画面を使用する方法があります:
lxrun
を使用すれば、Solaris 上で Linux 用の VMware-Tools (の一部) を利用することができます。
Solaris ゲストで vmware-toolbox を実行すると、以下の機能が使用できます:
- ホスト・ゲスト間のコピー & ペースト
- マウスカーソルの自動 grab/release
- デバイスの接続、切断
同様に vmware-guestd で以下の機能が使用できます:
VMware-Tools による仮想ディスクの最適化(shrink)はできませんが、別の
最適化方法 があります。
lxrun ビルドと linux 環境の組み合わせによって動いたり動かなかったりするようです。
私の場合以下の組み合わせでのみ動作させることができました:
- lxrun: Solaris 8 companion CD 収録の 0.9.6pre1-sun1 または 0.9.6pre1
オリジナルソースから自分でビルドしたもの
- linux 環境: RedHat 6.2 の ISO イメージから構築したもの
- VMware-Tools バイナリ: VMware WS 3.x または WS 4.0.x に付属のもの
ご参考まで、私が試した組み合わせの一覧です:
| Solaris バージョン |
lxrun ビルド |
linux 環境 |
実行結果 |
| Solaris 8 02/02 |
lxrun 0.9.6pre1-sun1,
built on Nov 28 2001 at 02:35:11
(Solaris 8 companion CD 02/02) |
redhat 6.2 (zoot-i386.iso) |
OK |
lxrun 0.9.6pre1
オリジナル
ソースを Solaris 8 上でコンパイル(gcc 2.95.3) |
redhat 6.2 (zoot-i386.iso) |
OK |
| Solaris 9 12/03 |
lxrun 0.9.6pre1-sun1,
built on Nov 28 2001 at 02:35:11
(Solaris 8 companion CD 02/02) |
redhat 6.2 (zoot-i386.iso) |
OK |
| redhat 7.3 (valhalla-i386-disk1.iso) |
NG |
lxrun 0.9.6pre1-sun2,
built on Sep 6 2003 at 12:00:52
(Solaris 9 companion CD 12/03) |
redhat 6.2 (zoot-i386.iso) |
NG |
| redhat 7.3 (valhalla-i386-disk1.iso) |
NG |
lxrun 0.9.6pre1
オリジナル
ソースを Solaris 9 上でコンパイル(gcc 2.95.3) |
redhat 6.2 (zoot-i386.iso) |
OK |
| redhat 7.3 (valhalla-i386-disk1.iso) |
NG |
必要な VMware-Tools バイナリを取得するには:
- Linux 用の VMware WS 3.x または 4.0.x パッケージ (tar.gz) を用意します
すでに持っている場合はよいのですが、これらの古いバージョンはすでに VMware サイトから
ダウンロードできなくなっているため持っていない場合は少々話がややこしくなります。
ウェブで見つけることはできます (たとえば "VMware-workstation-4.0.5-6030.tar.gz" を
google) が、法的にはどうかな?という感じですので…まあ自己責任で…
- "linux.iso" ファイルを VMware tar.gz から抽出
- "vmware-linux-tools.tar.gz" ファイル (または似たような名前) を linux.iso から抽出
どのみちこの iso ファイルには tar.gz ファイルが一つしか入っていないはずです。
- "vmware-guestd" および "vmware-toolbox" ファイルを vmware-linux-tools.tar.gz から抽出
お願い: tar.gz や iso からファイルを抽出する方法など私に質問しないでください。
また VMware-Tools の必要ファイルを送ってくれなどとも頼んでこないでください。
VMware-Tools for Linux を Solaris ゲストで実行するには:
- lxrun のマニュアルにしたがって lxrun をインストール、設定します。
lxrun のインストール方法、設定方法などの質問はお断りします。ご自分で調べられない
ようでしたら、おそらく VMware で Solaris を使うのもやめたほうがいいでしょう。
あくまでも *未サポート* OS ですから。
- linux.iso から vmware-linux-tools.tar.gz を抽出します。
(linux.iso はホストの VMware プログラムディレクトリにあるはずです。)
- vmware-linux-tools.tar.gz から vmware-toolbox と
vmware-guestd を抽出します。
- 2 つのファイルを lxrun の Linux ルートディレクトリ以下の任意のディレクトリに
置きます。(例: /lx-env/bin)
- lxrun を使って vmware-guestd、vmware-toolbox を起動します。
lxrun /lx-env/bin/vmware-guestd
lxrun /lx-env/bin/vmware-toolbox
システム起動時に vmware-guestd を自動起動するには:
- スクリプトファイル /etc/init.d/vmware-guestd を作成します。
(スクリプト中のパスは環境に合わせて変更してください。)
#!/sbin/sh
# vmware-guestd
LINUX_ROOT=/lx-env
LINUX_PATHMAP=/lx-env/PATHMAP
export LINUX_ROOT LINUX_PATHMAP
case "$1" in
'start')
cd $LINUX_ROOT
$LINUX_ROOT/lxrun $LINUX_ROOT/bin/vmware-guestd --background $LINUX_ROOT/vmware-guestd.pid
;;
'stop')
/usr/bin/kill -TERM `cat $LINUX_ROOT/vmware-guestd.pid`
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0
- このスクリプトに /etc/rc2.d/S100vmware-guestd からリンクを張ります。
シンボリックリンク、ハードリンクのどちらでもかまいません。
X セッション開始時に vmware-toolbox を自動起動するには:
- /usr/dt/config/Xconfig と /usr/dt/config/Xsetup を /etc/dt/config
ディレクトリにコピーします。(/usr/dt/config ディレクトリのファイルを
直接編集することもできますが、コピーしたファイルを編集して元のファイル
は手付かずで残しておく方が推奨されています。)
- Xconfig ファイルの以下の行のコメントをはずします:
Dtlogin*grabServer: False
こうしないとログインマネージャが画面を占有してしまい、
vmware-toolbox が開始できません。
- 以下のコマンドで、更新した Xconfig ファイルをログインマネージャに読み込ませます。
/usr/dt/bin/dtconfig -reset
- Xsetup ファイルの最後に以下の行を追加します。
(パスは環境に合わせて変更してください。)
# launch vmware-toolbox
$XDIR/xhost localhost
LINUX_ROOT=/lx-env
LINUX_PATHMAP=/lx-env/PATHMAP
export LINUX_ROOT LINUX_PATHMAP
$LINUX_ROOT/lxrun $LINUX_ROOT/bin/vmware-toolbox -geometry -10-76 --minimize &
-geometry オプションと --minimize オプションはなくてもかまいません。
注意:Solaris のログインマネージャは画面全体を黒のバックグラウンドで
覆ってしまうので vmware-toolbox はその後ろに隠されてしまいます。
ログインすれば見えるようになります。
補足: 最近の VMware プラットフォーム上で旧バージョンの vmware-tools を走らせると、
「VMware Tools が古い」というメッセージが VMware のステータス領域に表示されます。
vmware-guestd 開始後に "tools.set.version" バックドア
RPC コマンドをゲスト内から送ることでこれを消去することができます。
たとえば私の"vmw"バックドアアクセスプログラムを使用します:
# vmw rpc "tools.set.version 6433"
ここで使っている 6433 という番号は、VMware WS 5.5.2 build 29772 の VMware Tools
が使用しているバージョン番号です。
もっと大きな番号(たとえば 10000)を使用しても問題はないようです。
- 仮想ディスクを Persistent モードにします。
VMware 3.x の場合仮想ディスク設定を "Persistent" にします。
VMware 4.x 以降の場合、スナップショットを削除するか、仮想ディスク設定を "Independent
Persistent" にします。
- 仮想ディスクの未使用領域のサイズを求めます。
# df -b /
- 未使用領域と同じサイズの 0x00 で埋められたファイルを作成します。
# dd if=/dev/zero of=/bigfile bs=1024 count=<n>
<n> は 手順 1 のコマンドで返された値です。
ディスクフルエラーが出ても特に気にする必要はありません。
- 手順 2 で作成したファイルは不要なので削除します。
目的は未使用セクタを 0x00 で埋めることでした。
# rm /bigfile
- 仮想マシンをシャットダウンして電源を切った後、Configuration Editor
から "Defragment" 処理を実行します。次回仮想マシンの電源を入れた
時に「ディスクサイズが合わない」という警告が出ますが、特に害は
ないようです。
補足: 私の "vmshrink"
で、上記すべてを一挙に行うことができます。
初期の Solaris 8 (2001/07 あるいは 2001/10 以前のもの。正確にどのリリース
からなのかはわかりません)は、OS がアイドルのときに CPU のアイドリングを
行いません。通常のループに入ってしまうので、CPU 時間を無駄に消費してしまいます。
カーネルアップデートパッチ 108529-09 以降(2003/02/14 時点で 108529-18 が
最新です)を当てます。
できれば Recommended Patch Cluster(Windows のサービスパックのようなもの)を
全て当ててしまう方がよいでしょう。(ただし全てのパッチを当て終わるのにかなり
時間はかかりますが。)パッチは SunSolve
からダウンロードできます。
- Solaris 仮想マシン起動後、最初に CD-ROM ドライブを接続したときに
次のようなエラーが出ることがあります:
Your virtual machine has sent a CD-ROM command that we have not
implemented. The command packet was:
0x44 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x8 0x0 0x0 0x0
This is not a fatal error, but may cause a failure in the application trying
to access the CD-ROM
リムーバブルメディアを自動マウントするボリューム・マネジメント・
デーモンがこのエラーの原因です。実際の CD-ROM 読み取りには影響
がないので、特に心配する必要はありません。
- CD-ROM ドライブを切断しようとすると、次のような警告が出ます:
The guest operating system has locked the CD-ROM door and is probably
using the CD-ROM. Disconnect anyway (and override the lock)?
これもやはりボリューム・マネジメント・デーモンがドライブをロックしている
ためです。他のプログラムがドライブを使っていない場合、強制的に切断しても
問題はありません。
もしどうしても気になる場合は、ドライブ切断前にデーモンを停止して、
# kill -TERM `pgrep vold`
その後再起動することができます。
# vold &
(スーパーユーザでなければなりません。)
- Solaris 8 にパッチを当てるときにエラー 2 および 8 が出ることがあります。
これはそれぞれ「同じパッチのより新しいバージョンがインストール済み」
「パッチ対象のプログラムがインストールされていない」という意味です。
同様に Solaris 9 で出る 2, 8, 35 もそれぞれ「パッチがすでにインストール済み」
「パッチ対象のプログラムがシステムにインストールされていない」「より新しい
バージョンのパッチがインストール済み」という意味です。
これらはすべてそのパッチを当てる必要がない、ということなので心配
する必要はありません。