Thinkpad X31とubuntu 9.04でモッサリの怪の解

だいぶ前の話になるけれど、サブのThinkpad X31ubuntuを9.04にアップグレードしてからというもの、画面描画がどうもモッサリしていてとても実用は厳しかった。
調べてみると、X.orgがリソースを食いまくっていて、ブラウザなどを立ち上げるとCPU使用率は常に80%という惨劇。
で、最近ようやく重い腰を上げて調べてみたら5分で解決してしまったので、その備忘録。

元ネタはここ
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-ati/+bug/363238

xorg.confを下のように直して再起動でOK。

sudo vi /etc/X11/xorg.conf

修正前。Radeonとの組み合わせでどうも問題が起きてるっぽい。

Section "Device"
       Identifier      "ATI Technologies Inc Radeon Mobility M6 LY"
       Driver          "ati"
       BusID           "PCI:1:0:0"
EndSection

修正後

Section "Device"
        Identifier      "Configured Video Device"
        Option "RenderAccel" "on"
        Option "AccelMethod" "XAA"
        Option "AGPMode" "4"
EndSection

調べると、まだ色々オプションを付けてるページも見つかるけれど、とりあえずこれで。

VI Web Accessへのログインで躓いた

VMware Server 2.0をインストールしたはいいけれど、デスクトップに作られた「VMware Server Home Page」のアイコンをクリックしたら、ユーザ名とパスワードの入力以外できない画面になってビビった。

インストールの過程でユーザ作成をした覚えもないので、admin とか root なんてユーザ名でログインを試みたけれど、「Login failed due to a bad username or pasword」と冷たく返されるだけ。
結局OS(Windows)にログインする際のIDとパスワードでログインできるらしい。
ドキュメントちゃんと読めって話にだけど、それにしてもちょっと分かりにくいね。

VMware Server Documentationにある「VMware Server User's Guide 」を見ると、次のような記述が。

P48

3 Enter the user name and password you use to log in to the host, and click Log In.

P201

■ Login information - User name and password.
Users are created and managed using the mechanisms provided by the host
operating system.

VMware Serverを手動で制御する時のメモ

VMware Server 2.0をインストールしたけども、サービスが常駐するようになってしまったので、PCがやたら重い。
ということで、サービスを手動で起動・停止できるようにしたときのメモ。先達は多々おられるので自分の作業ログ的に。

大まかな手順はざっとこんな感じ。

  1. サービスの自動起動の無効化
  2. VMwareサービス制御スクリプトの作成
  3. デスクトップにVMware起動、停止のショートカットの作成

まずはサービスの起動設定を「自動」から「手動」に。これやんないと意味ナシ。

Windowsサービスの画面から"VMware" をキーワードにサービスを探すと、以下の6つのサービスが見つかる。

これらのサービスの「スタートアップの種類」を「自動」から「手動」へとひたすら変更。
GUIで変更してもいいが、CUIからだと以下のような感じ。

> sc config "サービス名" start= demand

自動起動に戻したいときは demand を auto に。
これでOSが起動したときにVMware関連のサービスが自動起動しなくなる。
試しに再起動してみるといいかも。

次に、VMwareのサービスを起動・停止させるスクリプトを作るが、その前にサービスの依存関係を確認する。依存関係はサービスのプロパティーから、「依存関係」のタブを開けばOK。
「このサービスが依存するシステムコンポーネント」がサービス起動にあたり必要なコンポーネント
「このサービスに依存しているシステムコンポーネント」がこのサービスを必要としているコンポーネント
そうすると上記のサービスの依存関係は↓のようになっているのが分かる。

 VMware Authorization Service ⇔ Host Agent ⇔ VMware VSS Writer
 VMware DHCP Service
 VMware NAT Service
 VMware Server Web Access

つまり、"VMware VSS Writer"サービスを起動させるとそれに依存するサービスが順に起動、"VMware Authorization Service"を停止するとそれに依存しているサービスが順に停止するということ。(強引)

上記を踏まえてVMwareのサービス制御スクリプトを作ってみる。
Windowsバッチの細かい部分は抜きにして、ざっとこんな感じ。かなり手抜いてます。
きちんと作るなら、サービスの起動状態を判断してからnetコマンドを実行するとデキるすくりぷとになる。
引数のチェックぐらいはした方がいいか。これだとstartとstop以外の文字列が入るとエラー起こしちゃう(笑)
しかしバッチスクリプトの構文ってやっぱり苦手。

@echo off

rem "共通サービス。他に依存性がないので、個別に起動、停止"
net %1 "VMware DHCP Service"
net %1 "VMware NAT Service"
net %1 "VMware Server Web Access"

rem "Service Start"
rem "VMware Host Agent, VMware Authorization Serviceも同時起動"
IF /i "%1" equ "start" net %1 "VMware VSS Writer"

rem "Service Stop"
rem "同時にVmware Host Agent, VMware VSS Writer も停止する"
IF /i "%1" equ "stop"  net %1 "VMware Authorization Service" /yes

exit 0


最後にデスクトップに起動、停止のショートカットを作成する。
さっき作ったバッチファイルは適当なフォルダに突っ込んでおく。(今回は仮に c:\tools\bin\vmwarectl.batとでもしておく)
ショートカットの作成はデスクトップを右クリックして「新規作成」⇒「ショートカット」を選択。
「項目の場所」にはスクリプトスクリプトの引数にstartかstopを指定。

c:\tools\bin\vmwarectl.bat start
c:\tools\bin\vmwarectl.bat stop

適当にファイル名をつけて保存。

あとは実際にショートカットを実行してみてサービスの起動と停止が行われるかを確認すること。これ大事。