Slackware 10.2 を Virtual Server 2005 へインストールしてみる

SOFTWARE REPORT


Microsoft Virtual Server 2005

Microsoft Virtual Server 2005 は、Windows 上で仮想的に複数の PC を動かすことが出来るソフトウェアです。

このソフトウェアを利用するとコンピュータ上にまるで本物の PC が何台かあるような複数の PC を同時実行させることができるので、プログラムの開発をしてみたりとか、ときどき Linux を利用したいなどといった場合になかなか重宝するのでした。

 

今回は Microsoft Virtual Server 2005 上で Linux ディストリビューションのひとつである Slackware 10.2 を動かしてみることにします。なお、今回インストールする Linux Slackware のバージョンは 10.2 で、http://www.slackware.com/ から入手した CD-ROM イメージです。

Microsoft Virtual Server 2005 上での Linux の起動はサポートされていないのですけど、Virtual Server 自体は PC 環境を再現するものですし、今までも Microsoft 社の Virtual PC 2004 にて Slackware を動かしたことがあるので難なく終わるかと思ったのですけど、今回はなかなかそうも行きませんでした。

そんなお話を含めて、Microsoft Virtual Server 2005 にて Slackware 10.2 を利用できるようにするまでを紹介してみようと思います。

 

最初の時点でのインストール環境

今回は Microsoft Virtual Server 2005 で構築した次の PC 環境へとインストールする感じになります。

CPU Pentium 4
MEMORY 256 MB
HDD [SCSI #0] 8 GB
HDD [SCSI #1] 256 MB
HDD [SCSI #2] 4 GB
HDD [SCSI #3] 4 GB
HDD [SCSI #4] 4 GB
IDE Intel 82371 AB/EB PCI Bus Master IDE (Compatible)
SCSI Adaptec AIC-7870 PCI SCSI (Compatible)
NETWORK DEC 21140A 10/100
VIDEO S3 Trio 32/64 PCI - VRAM 8 MB (Compatible)
SOUND -

Virtual PC 2004 と Virtual Server 2005 とでは似たようなシステム環境が提供されるのですけど、大きな違いとしては Virtual PC 2004 の方だけで SOUND の機能が有効で、また Virtual Server 2005 の方だけで SCSI の機能が有効です。

 

Slackware 10.2 のインストール失敗談

とりあえず今まで通り、Slackware 10.2 の ISO CD-ROM イメージを仮想 PC にマウントしてインストールを開始してみました。

Virtual Server 2005 は基本的に広く知られているハードウェアをエミュレートしてくれるので、問題なくインストールが出来ると思っていたのですけど、いざ始めてみたところ、Virtual Server 2005 の固有環境である SCSI 周りでちょっと引っかかってしまったのでした。

 

初めに遭遇したのが、ハードディスクが認識されていないという問題でした。

これは単純に SCSI ドライバが組み込まれなかったのが原因のようです。Linux Slackware 10.2 のインストーラは、特に指定しなければ基本的には IDE 環境を想定した "bare.i" というカーネルイメージが読み込まれるため、今回のような IDE ではなく SCSI 構成の環境ではインストールに支障をきたしてしまうことがあるようです。

そういえば SCSI 環境で使用するカーネルイメージは "scsi.s" だったので、Slackware 10.2 のインストール CD-ROM から起動したときの boot: プロンプトにて "scsi.s" と入力して起動してみましたけど、SCSI アダプタを認識してはくれませんでした。

 

他にもカーネルイメージを選択できないか調べてみたところ、起動時の Boot: プロンプトにて <F2> キーを押すことで選択可能候補を見ることができました。それによると、"scsi.s" の他にも "scsi2.s", "scsi3.s", "adaptec.s" といったイメージも読み込めるようです。

そこで scsi2.s を指定してみた場合には次のようなメッセージこそ表示されましたけど、これでも正常には動作してくれないようでした。

megaraid: v2.10.8.2 (Release Date: Mon Jul 26 12:15:51 EDT 2004)

aec671x_detect:

そして scsi3.s を指定してみた場合は、また違った SCSI アダプタを認識したうえで、次のようなエラーとなってしまうのでした。

sym53c416.c: Version 1.0.0-ac

Failed initialization of WD-7000 SCSI card!

GDT-HA: Storage RAID Controller Driver. Version: 3.04

GDT-HA: Found 0 PCI Storage RAID Controllers

いずれにせよ、そして続けて次のようなメッセージが表示されていました。

kmod: failed to exec /sbin/modprobe -k scsi_hostadapter, errno = 2

 

Virtual Server 2005 の SCSI インターフェイスは Adaptec 社の AIC-7870 という機器をエミュレートしてくれるので、もうひとつの選択肢でもあった "adaptec.s" を選択してみることにしました。すると、次のようなメッセージが表示されました。

Loading Adaptec I20 RAID: Version 2.4 Build 5

Detecting Adaptec I20 RAID controllers...

Red Hat/Adaptec aacraid driver (1.1-3 Jun  5 2005 19:00:12)

PCI Found IRQ 11 for device 00:0b.0

ahc_pci:0:11:0: Using left over BIOS settings

scsi1 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.36

<Adaptec aic7870 SCSI adapter>

aic7870: Single Channel A, SCSI ID=7, 16/253 SCBs

 

ただ、とりあえず AIC-7870 の認識自体には成功しているようなのですけど、でもこれ以上はシステムが進んでくれず、延々と次のようなメッセージが繰り返し表示されてしまって、結局は上手く行きませんでした。

i8253 count too high! resetting..

 

他にも選択できるイメージがないかインストール CD-ROM 内を探してみたところ、kernels/ ディレクトリに次のものが存在していました。拡張子が "i" のものが IDE 環境用の起動イメージで、"s" のものが SCSI 環境用の起動イメージのはずです。

  • adaptec.s
  • ataraid.i
  • bare.i
  • bareacpi.i
  • ibmmca.s
  • jfs.s
  • lowmem.i
  • old_cd.i
  • pportide.i
  • raid.s
  • sata.i
  • scsi.s
  • scsi2.s
  • scsi3.s
  • speakup.s
  • test26.s
  • xfs.s
  • zipslack.s

これらの中から SCSI 用のカーネルイメージ全てで起動してみましたけど、"jfs.s" や "test26.s" のときは Adaptec aic7870 SCSI adapter として認識してくれましたけど、やっぱりそれ以上は先へ進むことはありませんでした。

 

Fedora Core 4 をインストールしてみる

Linux Slackware は、個人的には初めて Linux に触れたときのディストリビューションということもあってお気に入りなのですけど、ときどきシステム環境によっては上手く動かないこともあったのでした。

そこで、これがとりあえず Slackware 10.2 の問題であるかを判断するために、Linux の別のディストリビューションである Fedora Core 4 を http://fedora.redhat.com/ よりダウンロードして、それをインストールしてみることにしました。

そして Fedora Core 4 のインストールが始まってみると、ここでも SCSI ドライバの読み込みの時点でなにやら不都合が生じてしまったようでした。

Loading aic7xxx driver...

上記のメッセージが画面に表示されて、Slackware ほどではないにせよ、少しの間待たされたあとで、どばどばっと致命的な様子を伺わせるエラーメッセージが表示されてしまいました。そのあとで、なんだか Fedora Core 4 のディスクチェックが行われ、それは正常とされたようですけど、なんだかそれ以上は上手くインストールを継続することは出来ませんでした。

この感じだと、Virtual Server 2005 の SCSI インターフェイスは Linux では正常に動作しないのかもしれないです。

 

Microsoft Virtual Server 2005 R2 で試してみる

そんなこんなで居たところ、Microsoft 社が Virtual Server 2005 R2 というバージョンをリリースしたのを知りました。

Microsoft Virtual Server 2005 R2 の利点としては、パフォーマンスが向上したらしいというところと、64 bit プラットフォームへの対応、PXE による起動に対応したことや、そしてハイパースレッディング環境に対応したということが挙げられるようです。

でも、そもそも以前の Virtual Server 2005 がハイパースレッディングを無効にして使用することがパフォーマンス面で推奨されているなんで、この R2 での記載を見るまで知らなかったのですけど…。たしかに FAQ などを改めて見てみればちゃんと書いてありましたけど、社会全体でこういう傾向があるところはなんとも言えないところです。

ともあれ SCSI アダプタに関するお話には触れられていないのですけど、これもやっぱり社会では良くあることですけど、ひっそりと修正されている可能性も有りますので、この Virtual Server 2005 R2 を使って SCSI 構成の環境に Slackware 10.2 を改めてインストールしてみることにしました。

 

その結果は、特に問題なく出来た、という感じでしょうか。

やっぱり何らかの手が加えられていたのかどうなのか、それはともかく SCSI 構成用の "adaptec.s" 起動イメージを読み込ませてみたところ、検出時間に数秒程度の待ち時間はあるものの、問題なく SCSI アダプタおよび、そこに接続されている仮想ハードディスクを認識させることができました。

今回はたくさんの仮想ディスクを搭載していましたので、それぞれ "sda", "sdb", "sdc", "sdd", "sde" といった感じでです。

 

そして Slackware 10.2 のインストールも、ハードディスクさえ認識されてしまえば、いたっていつも通りでした。

fdisk でパーティション切って、そして再起動して、setup を実行して…。"KERNEL IMAGE" の選択のところでは、今回は SCSI 構成のイメージをインストールしたいので、"CD-ROM" から "/cdrom/kernels/adaptec.s/bzImage" を選択 しておきました。そしてハードディスクから起動させるために、LILO は "MBR" にインストールしておきました。

そんな中でひとつ良いなと思ったことは、インストールするパッケージを選択するときに "menu" モードを使用すると、今まではグループごとに問い合わせされてはインストールを繰り返していた感じだったのが、今回のは、まずは全てのグループに対して一括して項目を選択 しておいて、最後にそれに応じてインストーラがファイルをコピーしてくれるところがよかったです。

そんなこんなで今まで通り、Slackware 10.2 のインストールは完了しました。

 

Slackware 10.2 のカーネルを APM に対応させる

Slackware をインストールするといつものようにやることでもあるのですけど、Linux カーネルを APM に対応させておこうと思います。こうしておくことで、コマンドラインから "halt" を実行したときに、最後に自動的に電源が落ちてくれるようになるので…。

そのために、まずは "adaptec.s" イメージのカーネル設定情報を、インストール済みのソースファイルのカーネル設定に適用しておきます。これは次のようにして "/usr/src/linux/.config" ファイルの内容を、CD-ROM に収録されている "adaptec.s" 用の "config" ファイルで上書きしてあげる感じです。

cp /mnt/cdrom/kernels/adaptec.s/config /usr/src/linux/.config

これで、カーネルソースの設定内容が "adaptec.s" のものとなりました。

 

続いて "/usr/src/linux" へ移動したら、次のようにしてカーネルの再構築を開始します。

make menuconfig

そうしたら、メニューの中で次のようにたどった先の "Use real mode APM BIOS call to power off" を有効にします。

General setup

-> Power Management support

-> <*> Advanced Power Management BIOS support ->

[*] Use real mode APM BIOS call to pwer off

他にもいろいろ設定できる箇所はあるようですけど、終了時に電源を落とすのが目的であれば、とりあえずはこれだけで大丈夫のようです。もし上手く行かないようなら、ACPI の設定なども含めて、いろいろ調整してみると良いでしょう。

ともあれこの設定を行ったら変更内容を保存して、いよいよカーネルの再構築を行います。

 

ただし Slackware 10.2 は、起動イメージが /boot/vmlinuz および /boot/System.map を想定して設計されているにもかかわらず、ソースファイルからコンパイルを行った場合は、それぞれ /vmlinuz および /System.map として出来上がってしまうようです。

これを避けるために、最初だけ Makefile の中の次の行を見つけて、先頭の "#" の文字を取り除いてあげる必要があります。

#export INSTALL_PATH=/boot

この行を有効にすることで、インストール時に vmlinuz と System.map が /boot ディレクトリに配置されるようになります。

 

あとは、次のようにしてカーネルの再構築です。

make dep clean bzImage modules modules_install

ここまで来たら最後に次のようにして、このカーネルイメージを有効にします。

make install

これで後は再起動すれば、次回の終了時には自動的に電源が落ちるようになるはずです。ただし、カーネルの再コンパイルは、失敗すると修復するのは慣れるまでけっこう大変だったりしますので気をつけましょう。

 

もしも動かなくなってしまった場合には、Slackware 10.2 のインストール CD-ROM から起動して、最初の入力待ちのところで "adaptec.s root=/dev/sda1 noinitrd ro" と入力して Enter キーをおすことで、"adaptec.s" の起動イメージを用いて /dev/sda1 の Linux の起動を試みることができます。

またはインストール CD-ROM から普通に起動して、/dev/sda1 を /mnt にマウントしてからいろいろと調整する感じになるかと思います。このとき、/boot が自動的に /mnt/boot を参照してくれるようになっているので、少しばかり作業がしやすい感じでした。