ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

VMware5.5でTurboLinux10Serverを動かすときのVMware-Toolsインストールの注意点


Linuxのkernel周りであーだこーだするときほどLinuxが厭になる時は無い。
訳分かんないから。
ディストリビューション毎に違う。パッケージ名が違うだけならまだしも、最終的な /usr/src/ 以下に展開される構成も、configureの仕方も、全部違う。
こんな時はすごい、厭な気分になる。「嫌」でも「イヤ」でもない。京極夏彦的な「厭」なのだ。

まあ良い。例によりあれだ。vmware-config-tools.plを動かすと嵌りますよーという話。

で、ディストリビューションが違うので、FedoraCoreとかUbuntuとか他のディストリの記事を見ても、無意味!!なのだ。
では、行くぜ。

第一幕:VMware-Toolsインストール時の注意点。

メニューからVMware-Toolsのインストールを選び、/mnt/cdromをマウント。で、RPMなんて怪しげな物体はさくっと無視して、tar.gzをrootのローカルにコピー。で、展開。

# cd vmware-tools-distrib/
# ls
FILES  INSTALL@  bin/  doc/  etc/  installer/  lib/  vmware-install.pl@
# ./vmware-install.pl

で、普通はインストールするのだが、途中で"vmware-config-tools.plをこの場で実行しますか?"と英語で聞かれてくるが、ここは必ず「no」で素通りさせる。
日常的にkernelのBuildをしているような、雲の上の人でも無い限りは絶対に、後述のヘッダーファイルの箇所でこける!!イコール、vmware-install.pl自体が正常終了しねーんだよ(#゚Д゚)ゴルァ!!

第二幕:vmware-config-tools.plで何が起こってしまうか。

百聞は一見にしかず。kernelをまるで弄っていない、「何かkernelパッケージ入れないと駄目とか訊いたから、kernel-sourceとかkernel-headerとか入れてみた」というライトユーザ(kernelのライトユーザという意味で。)が、そのままvmware-config-tools.plを実行すると・・・!!

# ./vmware-config-tools.pl.bak3

Stopping VMware Tools services in the virtual machine:
   Guest operating system daemon:                                         OK
   Guest filesystem driver:                                               OK
Trying to find a suitable vmhgfs module for your running kernel.

None of the pre-built vmhgfs modules for VMware Tools is suitable for your
running kernel.  Do you want this program to try to build the vmhgfs module for
your system (you need to have a C compiler installed on your system)? [yes]

Using compiler "/usr/bin/gcc". Use environment variable CC to override.

What is the location of the directory of C header files that match your running
kernel? [/usr/src/linux/include]    ... (1)

The path "/usr/src/linux/include" is a kernel header file directory, but it is
not configured yet.                 ... (2)

(1)と(2)で延々とぐるぐる廻る。つまり、/usr/src/linux/includeが見つからずに怒られっぱなし・・・!!C-cで強制終了するしか無い!!
「え?で、でも、ちゃんとファイルシステム上はあるよ?rpm -qa | grep kernel すれば、ちゃんとkernel-sourceとkernel-header入ってるよ〜〜〜???」

そう、君は間違ってない。ちょっとvmware-config-toolsのどこで怒られているか見てみよう。

    if (not (-r $answer . '/../.config')) {
      if ($source eq 'user') {
        print wrap('The path "' . $answer . '" is a kernel header file '
                   . 'directory, but it is not configured yet.'
                   . "\n\n", 0);
      }
      return '';
    }

"/../.config"と言うファイルが読み込み可能かチェックしている。恐らく$answerというのが、/usr/src/linux/includeになる。ということは、だ。

/usr/src/linux/.config

が無いよ、という訳で怒られている。

ここでようやく、TurboLinux10Serverというディストリビューション限定の、カーネル周りの話に切り替わります。

Turbo Linux 10 Server でのKernelのコンフィギュレーションとその罠

まず .config というファイルが何なのかというと、要するにカーネルの設定ファイルです。

結論から言うとTurboLinux 10 Serverの場合においては、SetupKernelSource.shを実行することでTurboLinuxのデフォルトのカーネル設定を作成できます。実際はCPUの種類を指定しますので、

# ./SetupKernelSource.sh i586

みたくします。引数無しで動かせば、指定できるCPUの種類が表示されますので、適当に選びます。

しかし、罠。

えっと、TLX10Sの場合、シンボリックリンクがややこしくてこんなんなってます。

/usr/src/linux -> /usr/src/linux-2.6.xx
         linux/SetupKernelSource.sh -> /usr/src/linux-2.6.xx/SetupKernelSource.sh

で、ここからが奇妙な話。

/usr/src/linux/SetupKernelSource.shを叩くと、/usr/src/linux/.configができる。けど、/usr/src/linux-2.6.xx/.configは作成されません。
で、vmware-config-tools.plでの肝になっている条件分岐では、何故か

    if (not (-r $answer . '/../.config')) {

ここがNGになってしまい、結果、どうしても前に進めなくなってしまいます。

で、/usr/src/linux-2.6.xx/SetupKernelSource.shを叩くと、これまた、/usr/src/linux/.config ができてしまう(既存なら更新)のです。

一旦整理、後、解法。

まず、kernelをそのまま入れただけではvmware-config-tools.pl実行時に、/usr/src/linux/.config が見つからずにエラーになりました。
TLX10Sの場合、/usr/src/linux/SetupKernelSource.shを実行することで /usr/src/linux/.config が作成されます。
ところが、vmware-config-tools.plの実行結果を見ている限り、どうも /usr/src/linux/.config を見ているわけではないようです。
つまり、ココまでの段階ではどう頑張っても vmware-config-tools.pl が途中で止まってしまいます。

どうすれば良いのか・・・でGoogle先生TurboLinux, SetupKernelSource.sh とかで訊いてみて、適当にヒットしたURLをごにょごにょしていく内に、見つかりました。

TLX10Sの場合、/usr/src/linux-2.6.8/configs/ 以下に、.configの雛形があるようです。

# pwd
/usr/src/linux-2.6.xx/configs
# ls
kernel-2.6.8-12-i586.config        kernel-2.6.8-12numa-i586.config  kernel-2.6.8-12smp64G-i586.config
kernel-2.6.8-12cobalt-i586.config  kernel-2.6.8-12smp-i586.config

ひょっとして・・・というわけで、適当なCPU名の*.configを一つ上にコピーし、.configにリネームします。

# cp kernel-2.6.8-12-i586.config ../.config

これで、ようやく vmware-config-tools.pl が .config を認識し、前に進めるようになります。逆に、ここまで来ればおそらく後はすんなりいくと思います。

まとめ

くどいようですが、Turbo Linux 10 ServerをVMware5.5のゲストOSとして使用し、VMware-Toolsをインストールするときの手順をまとめると、以下のようになります。試行錯誤していた部分は、入れ替えました。

  1. kernel-source, kernel-headerパッケージは入れておく。
  2. 一応、/usr/src/linux/ か、/usr/src/linux-2.6.xx/ のどちらかで SetupKernelSource.sh を実行しておく。
  3. /usr/src/linux-2.6.xx/configs/ 以下の適当な.configを、上にコピーし、.configにリネームする。
  4. vmware-config-tools.pl を実行する。

・・・あー、疲れた・・・。RedHatDebian系は沢山載っているんだが、どうにもTLX系列はシェアが今ひとつなので、すぐに出てこない・・・。
しかもkernel設定の知識も必要になってくるので、結構骨が折れた。

もし、TLX10SをVMware上で動かそうとしてvmware-config-tools.plで困っている方のお役に立てれば、幸いです。

どうでも良いけど、FedoraCore系に至ってはvmware-config-tools.pl自体を改造しているようだけどそれって大丈夫なのだろうか・・・。もっと根本的な部分で何か食い違ってしまっているような気がしてならない・・・。

いや、まぁ、一般ユーザーがちょっとトラブっただけでも、ここまで調査能力とKernel知識を要求されるLinuxにも難があるんだろうけどさ。