Virtual PC 2007でのNetBSD 3.1の利用
2007年2月19日、Microsoftはデスクトップ向け仮想マシンソフトである「Virtual PC 2007日本語版」を無償公開しました。
Microsoftは既にVirtual PC 2004を途中から無償公開に切り替えていましたがWindows Vistaへの対応版として今回「Virtual PC 2007」がリリースされました。
そのVirtual PC 2007(VPC2007)にNetBSD 3.1(2006年11月2日リリース版)を導入して動作確認してみました。
ここではWindows Vista上のVPC2007にNetBSD 3.1を導入して稼働確認する手順を簡単に紹介します。
今回使用したPCのハードウェア構成は以下の通りです。
・CPU:Core 2 Duo E6600
・チップセット:Intel P965
・メモリ:3GB
・VGAカード:nVIDIA GeForce 7600 GT(VRAM 256MB)
・HDD:S-ATA 250GB
・LANカード:Intel PRO/100 S
1.ゲストPCの定義
- VPC2007を起動しVirtual PC コンソールウィンドウを表示します。
- Virtual PC コンソールの<新規>ボタンを押します。
- 「新しいバーチャル マシン ウィザードの開始」画面が表示されます。
- バーチャル マシン ウィザードでの設定内容
- バーチャルマシンの名前:NetBSD31
- オペレーティングシステム:その他
- メモリ:1024MB
- バーチャルハードディスク:NetBSD31.vhd(40960MB)
尚、仮想マシンのネットワークはデフォルトでネットワークアダプタ1が選択されます。
2.ゲストOSのインストール
NetBSD 3.1を上記で定義したゲストPCにインストールする手順は以下の通りです。
尚、NetBSD 3.1をネーティブインストールする場合と同じ部分の説明は基本的に省略してあります。
- インストール用CD-ROMのセット
NetBSD 3.1のインストール用CD-ROM(ブータブルCD)を実際のCD-ROMドライブ(Dドライブ)にセットします。
- ゲストPCの起動
NetBSD 3.1用に定義したPC名をVirtual PC コンソール内で選択して<起動>ボタンを押します。
この時に表示されるVirtual PCウィンドウの[CD]メニューの[物理ドライブD:の使用]を選択しておきます。
ゲストPCに電源が入ったような状態になりVirtual PCウィンドウ内にNetBSD 3.1のインストール開始画面が表示されます。
ここで「a: Installation messages in English」を選択します。
- Keyboard type選択以降の画面
Keyboard type選択以降の画面での指定はネーティブインストールの場合と同様です。
Select your distributuionでは<Full installation>を選択してXFree86も自動インストールされるようにします。
尚、ネットワークインタフェースはtlp0となります。
またtlp0用のNetwork media typeは「100baseTX」とします。
- インストール後の終了操作
「NetBSD-3.1 Install System」画面で<d: Reboot the computer>を選択します。
この時、物理ドライブD:を解放します。
- ログイン
rootでテキストログインします。
- /etc/rc.confの設定
/etc/rc.confには最低限次の設定が必要です。
hostname="ホスト名"
defaultroute="デフォルトゲートウェイアドレス"
ifconfig_tlp0="inet IPアドレス netmask サブネットマスク media 100baseTX mediaopt full-duplex"
- /etc/resolv.confの設定
ホストOS同様のDNSサーバアドレスを設定します。
- ネットワークの再起動
# /etc/rc.d/network restart
- Xの設定
xf86configでXの設定を行います。
主な設定内容;
mouse protocol:Auto
mouse device:/dev/wsmouse ※デフォルトです
monitor type:31.5 - 82.0 ; Monitor that can do 1280x1024 @ 76 Hz
video card:Generic VESA compatible
/etc/X11/XF86Configに設定保存後、startxでtwmのXウィンドウが表示されます。
- パッケージシステムの利用準備
NetBSDのパッケージシステムを利用するにあたってPackageのソースコード準備等のセットアップが必要となります。
今回はPackageのソースコードとしてpkgsrc-2006Q4.tar.gzをダウンロードしました。
パッケージシステムの利用準備は以下のように行います。
# tar zxvf pkgsrc-2006Q4.tar.gz -C /usr ※/usr/pkgsrcが作成されます。
# cd /usr/pkgsrc/pkgtools/pkg_install
# make install clean
# cd /usr/pkgsrc/security/audit-packages
# make install clean
# /usr/pkg/sbin/download-vulnerability-list ※パッケージ脆弱性リストの更新
# /usr/pkg/sbin/audit-packages
3.ゲストOSへのGNOMEインストール
GNOMEのインストールは/usr/pkgsrc/meta-pkgs/gnomeでmake install cleanコマンドを実行することで行えます(gnome-baseも自動インストールされます)。
しかし、その方法ではx11/gnome-gamesやwww/epiphany含めた大量のパッケージが自動インストールされるため今回はまず最小限のパッケージ群をインストールしました。
# export ALLOW_VULNERABLE_PACKAGES=yes ※脆弱性の発見されたパッケージもインストールするオプション指定です。
# cd /usr/pkgsrc/x11/gnome-desktop
# make install clean
以下のディレクトリについてもそれぞれmake install cleanを実行します。
/usr/pkgsrc/x11/gnome-libs
/usr/pkgsrc/x11/gnome-mag
/usr/pkgsrc/x11/gnome-panel
/usr/pkgsrc/x11/gnome-screensaver
/usr/pkgsrc/x11/gnome-session ※gnome2-control-centerは依存性解決のため自動インストールされます。
/usr/pkgsrc/mail/evolution
/usr/pkgsrc/fonts/ja-sazanami-ttf ※/usr/pkg/lib/X11/fonts/TTFにフォントがインストールされます。
/usr/pkgsrc/fonts/kochi-ttf ※/usr/pkg/lib/X11/fonts/TTFにフォントがインストールされます。
/usr/pkgsrc/x11/gnome-themes
/usr/pkgsrc/x11/gnome-themes-extras
/usr/pkgsrc/x11/gnome2-applets
/usr/pkgsrc/x11/gnome2-terminal
/usr/pkgsrc/editors/gedit
/usr/pkgsrc/www/firefox2
その他必要に応じて追加インストールして構いません。
# vi /etc/X11/XF86Config
「FontPath "/usr/pkg/lib/X11/fonts/TTF/"」行を追加します。
日本語GNOMEを次のように起動します。
# xinit
# export LANG=ja_JP.UTF-8
# gnome-session &
GNOMEパネル上に「?」アイコンが二つ表示されます(一つは未インストールのEpiphanyで片方はインストール済みのEvolutionです)。
startxで日本語GNOMEが起動するように~/.xinitrcを以下の内容で作成します。
export LANG=ja_JP.UTF-8
exec gnome-session
startxで日本語GNOME環境が起動できることが確認できて、更に時間的余裕があれば残りすべてのGNOME関連パッケージをmeta-pkgsを使用してインストールします。
(インストール済みパッケージはスキップされます)
※gdmもインストールされます。
# cd /usr/pkgsrc/meta-pkgs/gnome
# make install clean
時刻がUTCになっている場合は以下の操作でローカルタイムに変更します。
# gdb --write /netbsd
(gdb) set rtc_offset=-540
(gdb) quit
ホィールマウスを使用する場合は/etc/X11/XF86Configのマウス用InputDeviceセクションに「Option "ZAxisMapping" "4 5"」を追加します。
最後にGDMによるグラフィカルログインができるようにします。
# vi /etc/rc.conf
以下の行を追加します。
gdm=YES
# cp /usr/pkgsrc/x11/gdm/work/gdm-2.16.4/config/gdm.conf /etc/gdm/gdm.conf
# ln -s /usr/pkg/sbin/gdm /etc/rc.d/gdm
rebootするとGDM画面が表示されます。
4.日本語入力環境の構築
日本語入力環境はuim-Anthyを使用することにしました。
# cd /usr/pkgsrc/inputmethod/uim
# make install clean
これだけでanthyも自動インストールされます。
~/.xinitrcに以下の行を追加します。
export XMODIFIERS=@im=uim
export GTK_IM_MODULE=uim
exec uim-xim
ここで再ログインします。
GNOMEパネルの[システム]−[設定]−[入力メソッド(uim)]でuimの設定を行います。
例えば、標準の入力方式を「直接入力」から「Anthy」に変更します。
予想入力を有効にする等の設定はお好みに合わせて行います。
以下の画像はWindows Vista上のVPC2007環境で動作しているNetBSD 3.1のGNOMEデスクトップです。
実寸画像はこちらです。
5.サーバ利用
ここではNetBSD 3.1でsshd/ftp/telnet/Webサーバを使用する環境構築方法を紹介します。
- sshdサーバの設定
# vi /etc/rc.conf
以下の行を追加します。
sshd=YES
更に、rootでのssh接続を許可させたい場合は以下の設定を行います。
# vi /etc/ssh/sshd_config
「#PermitRootLogin no」を「PermitRootLogin yes」に変更します。
# /etc/rc.d/sshd restart
- ftp/telnetサーバをinetd経由で稼動させる設定
# vi /etc/inetd.conf
IPv4用の「#ftp stream tcp nowait ...」と「#telnet stream tcp nowait ...」の#を外します。
更に、rootでのftp接続を許可させたい場合は以下の設定を行います。
# vi /etc/ftpusers
「root deny」を「#root deny」に変更します。
/etc/rc.d/inetd restart
テスト用一般ユーザの作成例;
# mkdir /usr/home
# groupadd -g 1002 test
# useradd -m -u 1002 -g 1002 -d /usr/home/test -s /usr/pkg/bin/bash test
# passwd test ※パスワード設定
更に、testユーザからrootにsuできるようにさせたい場合は以下の設定を行います。
# vi /etc/group
「wheel:*:0:root」を「wheel:*:0:root,test」に変更します。
- Apacheの導入
# cd /usr/pkgsrc/www/apache22
# make install clean
# vi /usr/pkg/etc/httpd/httpd.conf
「Listen 80」と「Listen 0.0.0.0:80」があるため後者を削除します。
「ServerName ホスト名:80」を指定します。
# ln -s /usr/pkg/sbin/apachectl /etc/rc.d/apachectl
- /etc/rc.confの変更
# vi /etc/rc.conf
以下の行を追加します。
apachectl=YES
- reboot
- サーバ利用
他のマシン(PC-BSD 1.3)からアクセスしてみました。
ちなみに、VPC2007のゲストOSとしてPC-BSD 1.3はインストールできませんでした。Virtual PC 5でも同様でした。
Virtual PCとPC-BSDとの相性問題かどうかは分かりませんが、本来ならAutoconfiguring X Serverの後の「Installtion Menu」が表示される部分で画面がブラックアウトします。
6.NetBSD/Xen
NetBSD 3.1はXen 3.0.3に対応しています。
しかしVPC2007上のNetBSD 3.1ではXenカーネルでのドメイン0を起動することができませんでした。
以下の手順でのXenの組み込みと実行でエラーとなります。
- GRUBの組み込み
# cd /usr/pkgsrc/sysutils/grub
# make install clean
# grub-install '(hd0)'
これで/grubが生成されます。
次に/grub/menu.lstを以下の内容で作成します。
timeout 15
default 0
title NetBSD
root (hd0,0,a)
chainloader +1
- Xenカーネルの生成
ドメイン0用のXenカーネルを次のようにして生成します。
# cd /usr/pkgsrc/sysutils/xenkernel30
# make install clean
これで/usr/pkg/xen3-kernel/xen.gzが生成されますので/直下にコピーして解凍します。
# cp /usr/pkg/xen3-kernel/xen.gz /
# cd /
# zcat xen.gz > xen
※/xen.gzをそのまま使用するとドメイン0のブートで「Bad or corrupt data while decompressing file」エラーとなるため解凍しておきます。
- Xenツールの導入
# cd /usr/pkgsrc/sysutils/xentools30
# make install clean
これで以下のようなファイルが生成されます。
/usr/pkg/etc/xen/scripts/block
/usr/pkg/etc/xen/scripts/vif-bridge
/usr/pkg/etc/xen/scripts/vif-ip
/usr/pkg/etc/xen/xend-config.sxp
/usr/pkg/share/examples/rc.d/xendomains
/usr/pkg/share/examples/rc.d/xend
/usr/pkg/share/examples/rc.d/xenbackendd
/usr/pkg/share/examples/xen/xmexample1(xmexample2,xmexample3等)
# cp -pi /usr/pkg/share/examples/rc.d/xendomains /etc/rc.d
# cp -pi /usr/pkg/share/examples/rc.d/xend /etc/rc.d
# cp -pi /usr/pkg/share/examples/rc.d/xenbackendd /etc/rc.d
# chmod 755 /etc/rc.d/xendomains
# chmod 755 /etc/rc.d/xend
# chmod 755 /etc/rc.d/xenbackendd
- Domain0カーネルの導入
NetBSDのDomain0カーネルはftpサイトからNetBSD-dailyのi386/binary/kernel/netbsd-XEN3_DOM0.gzをダウンロードします。
# cp netbsd-XEN3_DOM0.gz /
# cd /
# zcat netbsd-XEN3_DOM0.gz > netbsd-XEN3_DOM0
- /etc/rc.confの変更
以下の行を追加します。
xend=YES
xenbackendd=YES
xendomains="dom1"
- xenデバイスの作成
# cd /dev && sh MAKEDEV xen
これで/dev/xenevtが生成されます。
- /grub/menu.lstへのエントリ追加
/grub/menu.lstにドメイン0ブート用エントリを追加します。
title NetBSD Xen
root (hd0,0,a)
kernel (hd0,0,a)/xen dom0_mem=512m
module (hd0,0,a)/netbsd-XEN3_DOM0 root=/dev/hda0 ro console=tty0
- reboot
- GRUBメニュー
- ドメイン0のブート
GRUBメニューで「NetBSD Xen」を選択してブートするとUnknown interruptエラーで停止しブートできません。
※Xen 2.0.7でも試してみましたが同じエラーとなりました。
これはVPC2007環境のために発生するようです。