カテゴリー: Linux

VMWare上のUbuntu 7.0、CentOS5

VMWare上にUbuntu 7.0をインストール(正確には6.xから7.04にアップグレード)してみました。6.xのときからvmwareのマウスドライバがインストールされないため、ホスト・ゲストOS上でマウスカーソールが移動できませんでした。

あまり気にしていなかったのですがCentOS5をゲストOSとしてインストールしても同じようにマウスポインタが移動できません。さすがに2つのゲストOSでマウスポインタが思ったように動作しないのは面倒なので調べてみることにしました。

CentOS5の/etc/X11/xorg.confをvmwareのマウスドライバを使用するようにすると動作するようになりました。

Section "InputDevice"
Identifier "Mouse0"
Driver "vmmouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "ZAxisMapping" "4 5"
EndSection

Ubuntuの方はvmmouseドライバを指定するとドライバファイルが見付からないためXが起動しなくなりました。

ln -s /usr/lib/vmware-tools/configurator/XOrg/7.0/vmmouse_drv.so /usr/lib/xorg/modules/input/vmmouse_drv.so

とするとドライバをロードしマウスが期待どおり動作するようになりました。Ubuntu 7.0のXorgは7.2ですが7.0のドライバでも問題なく動作するようです。

Full 64bit PPC Linux

テスト版ISOイメージはPS3へは普通(?)にインストールできていたようですが、私のPower Mac G5 Dualにはインストールができませんでした。最新版はインストールに成功(テキストモードですが)し、nvドライバを使ってXも使えるようになりました。取り合えず、ビルドだけは参加できる環境が整いました。
# パッケージの調整などは時間的に無理…

http://dist.momonga-linux.org/pub/momonga/test/PS3/

YDLは昔からフル64bitのPPC Linuxを有償で提供していたと思いますが、FC6などPPC64をサポートしているディストリビューションでもカーネルだけ64bitでアプリケーションは32bitパッケージになっていました。コミュニティで開発されているRPM系LinuxディストリビューションでフルPPC64はMomonga Linuxくらいだと思います。

以下はビルドしたパッケージのリスト。ppc.rpmでなくppc64.rpmとしてビルドされている。

-rw-r–r– 1 yohgaki yohgaki 682690 May 31 2006 rpm-4.4.2-5m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 788533 May 31 2006 rpm-build-4.4.2-5m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 1431640 May 31 2006 rpm-devel-4.4.2-5m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 1127865 May 31 2006 rpm-libs-4.4.2-5m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 70281 May 31 2006 rpm-python-4.4.2-5m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 2631610 May 31 2006 ruby-1.8.4-7m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 550121 May 31 2006 ruby-devel-1.8.4-7m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 640791 May 31 2006 ruby-doc-1.8.4-7m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 118636 Jun 1 2006 ruby-rpm-1.2.0-19m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 348576 May 31 2006 ruby-tcltk-1.8.4-7m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 197165 May 31 2006 sharutils-4.6.2-1m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 370292 Jun 2 2006 sqlite-2.8.17-1m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 230806 Jun 2 2006 sqlite-devel-2.8.17-1m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 471272 Jun 2 2006 sqlite3-3.3.5-1m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 461554 Jun 2 2006 sqlite3-devel-3.3.5-1m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 602679 Jun 1 2006 tar-1.15.1-2m.ppc64.rpm
-rw-r–r– 1 yohgaki yohgaki 999627 Jun 1 2006 tcl-8.4.12-1m.ppc64.rpm

PS3でも動作するMomonga Linux 3 for PPC64

Momonga Linuxメンバーの方がインストール可能なPPC64のDVDイメージの公開を準備中です。

rpm系では初!と思われる full 64bit(ppc64) の環境です。
Momonga ppc64 環境が初めて日の目を見るかも…

との事です。

私はISOイメージを手に入れたのでとりあえずDual G5のMacに入れてみよう。

Momonga Linux 3のX

Momonga Linux 2では普通にXも使えていたPCにMomonga Linux 3をインストールしたところXが起動するとZAPもVCへの切替えもできない状態になりました。インストールまでは通常通りGUIでインストールできたので設定の問題であることは明らかです。勘でDRIかな?とxorg.confを編集してdriモジュールをロードしないようにしたら普通に使えるようになりました。
# 当然DRIは使えませんが、Xは使えるようになりました。
# ディスプレイドライバはviaです。

もしインストール後にXが使えなくなった方、DRIを無効にしてみると良いかもしれません。

この他にもnVidiaカードを使っている方はxorg謹製のnvドライバを利用するよりvVidiaが提供しているドライバを使用した方が良いと思います。nvドライバだとXが全く動作しなかったり、少し動作してもすぐにおかしな状態になる場合あります。nVidiaが提供しているドライバもバージョンによって当たりハズレがあります。ハズレに当たるとどうやっても正常に動作しない事があります。私はIA32用(i686)の

NVIDIA-Linux-x86-1.0-9629-pkg1.run

を945チップセット+GeForce6600、TwinView有効で利用しています。特に問題もなく快適です。

IA64(x86_64)の場合、1.0-8776は当たり、1.0-9626はハズレだそうです。

参考:http://wiki.ohgaki.net/index.php?Momonga%20Linux%2FNVidia%20TwinView

“unable to scan $HOME/Maildir”

ohgaki.netのメールサーバにはqmailを使っているのですが、 また”unable to scan $HOME/Maildir”とpop3d がエラーで終了してしまいました。

このエラーはエラーメッセージの通りMaildirをスキャンできないため表示されるエラーです。qmailのpop3dがMaildirをスキャンしている途中に何らかのエラーでスキャンに失敗した場合に表示されます。私が知る限りでは2種類の原因があります。

1. Maildirへのディレクトリへのアクセス権限の問題。(ユーザがMaildirを所有していないなど。Virtualホストの場合はVirtualホスト管理アカウント以外の所有になっているなど)
2. pop3dのrunスクリプトでsoftlimit(利用可能なメモリを制限するコマンド)を利用しているとpop3dがその制限を越えてメモリを利用しようとした場合。

今回の場合、普通に使えていたpop3dが突然特定のアカウントだけで利用できなくなったので2のケースかな?と思い10MB余分にメモリを使えるようにしたらエラーが無くなりました。前に同じ原因でエラーが起きたのを覚えていたので良かったのですが、次は忘れているかもしれないのでメモとしてブログに残しておきます。

マルチブート環境の構築ページを更新

WikiにGRUBのChainloader(別のブートプログラム呼ぶ機能)を利用したマルチブート環境構築のページがあります。デバイスIDが間違っていた部分がありました。比較的参照数も多いようなのでここでも修正した事を書きます。もし参考にされた方がいらしたら修正したのでご覧ください。

私のデスクトップPCには3、4つのLinuxディストリビューションがインストールされているのが普通の状態なのでchainloaderを使ったマルチブート環境にしています。前にGoogleで検索してもこの手のマルチブート環境の構築手順が書いてなかったのでこのページを作りました。WindowsのNTLDRやGRUBの/bootパーティション共有を使ったマルチ・デュアルブートよりはるかに使いやすいです。興味のある方は是非どうぞ。

coLinuxのパーティションを大きくする

備考:かなり古いブログですが公開し忘れしていた分です。

coMomongaのパーティションは3GBで小さく手狭になってきたのでパーティションを大きくしようと思い調べてみました。

coLinuxのパーティションサイズを変更するにはTopoResizeが利用できるようです。このツールを使ってディスクイメージも作成できるようです。折角TopoResizeがあるので試してみる事にしよう、と思ったらリンク先にないですね。

他にも既に作成済みのディスクイメージをダウンロードしてしまうと言うお手軽な方法もあるようです。

空のイメージ http://gniarf.nerim.net/colinux/blank/
スワップ   http://gniarf.nerim.net/colinux/swap/
ext3     http://gniarf.nerim.net/colinux/fs/

追加するだけならこれらのファイルを使用するのが一番簡単と思います。

Linuxを持っている方なら

dd if=/dev/zero of=colinux.img bs=1024 count=1G
mkfs.ext3 colinux.img

等としてもイメージが作成できそうです。odで最初の方のダンプしてかるーく最初方だけ見ただけなので実際には試していませんが。特別なデータは書いてなさそうだったので多分大丈夫でしょう。TopoResizeの様にext2/ext3パーティションの拡張等もLinuxにイメージを持ってきて普通にリサイズすれば出来そうです。

TopoResizeがあれば試してみたかったのですが仕方が無いのでLinux上で拡張してみる事にしました。

参考
http://wiki.colinux.org/cgi-bin/ColinuxImageTools

coMomonga2+リリース

このブログでもお勧めしていたcoLinuxのMomongaLinux版のcoMomonga2+が一般公開されました。

私のノートPCは

-PentinumM 1.3Ghz
-768MB メモリ
-80GB HDD 5400rpm/16MBキャッシュ

という構成ですが普通の速度で動作しています。coMomongaのISOイメージにはXmingも同梱されています。XサーバはWindowsネイティブアプリケーションなので非常に高速です。つい先日ノートPCのHDDが壊れたの期に以前は作っていたLinuxのパーティションは作らずにcoMomonga一本で行くことにしました。

CDを焼くのが面倒くさい方はDaemonToolsが便利です。Linuxのloopbackマウントと同様な感じでISOイメージをマウントでき、CDROMドライブとして参照できます。

WindowsServer2003のActiveDirectoryに参加しているPCの場合、デフォルトのグループポリシーがインターフェースの共有を許可していません。このため手順書の通り設定できません。これを回避するには次の方法が取れます。

-ドメインに参加しない
-グループポリシーエディタでクライアントコンピュータのポリシーを変更する
-グループポリシーの管理でクライアントコンピュータのポリシーを無効にする(こちら方が簡単)
-グループポリシーの管理でクライアントコンピュータを適用するユーザの範囲を変更する(デフォルトはすべての認証ユーザ。グループ管理がどのように行われているかが関係します。通常はこの変更も比較的簡単なはず)

当然ですがグループポリシーを変更するにはドメインの管理者権限が必要です。面倒な場合はドメインに参加しないのが一番簡単です。

coMomongaのルートファイルシステムは3GBと小さいですが色々な環境をWindows上で作るにはちょうどよい大きさです。基本的なツールのほとんどが入っているので直ぐに使えます。mph-getコマンドでパッケージをインストールするのも簡単です。mph-getにはapt, yumのようなsearchコマンドがありません。パッケージを探すのはsubversionのレポジトリかサイトのRPMパッケージディレクトリを参照してください。実はyumもMomongaでもサポートされているのですがcoMomongaでは未設定です。

最後にcoMomonga2+のISOイメージにはデスクトップ環境はXfce4のみが利用できます。最初にXからログインする際にはXfce4を手動で選択してください。
デフォルトの状態ではターミナルから日本語入力が行えませんがEmacsからは入力できます。(もしかして今のISOは入力できるのかも)

追記:
通常版のMomongaはSHIFT+SPACE、漢字キーなどでIMを起動しますが、ターミナルから起動するにはCTRL+SPACEを使います。

pthread版pgbenchの拡張

実はpthread版pgbenchの作成には別の目的もあります。オリジナル版pgbenchのコードを見ると分かるのですが、非同期クエリを使用しているので送信するクエリのカスタマイズが面倒です。pthread版pgbenchの別の目的、と言うより本来の目的、はpostmasterが書き出したログから自動的にクエリを収集し、再生するベンチマークを簡単に行いたいので作る、と言う事にあります。

今の所こんな感じで実装するつもりです。

postgresql.confのログ設定が

log_line_prefix = ‘%r’
log_statement = true

で出力されたログから自動的に各クライアントのクエリを出力し設定されたスレッド数(クライアント数)でベンチマーク出来るようにする予定です。

今のコードだとログの読み取りとクエリ保存を行えるようにして、各スレッドがクエリを実行するように変更すれば良いだけです。簡単なのでそのうち変更します。

coMomongaのススメ

遅ればせながら初めてcoLinuxのMomonga版であるcoMomonga2+(今のところ非公開です。8月のコミケで販売していたそうです。私はプロジェクトメンバーなのでscpでサーバから拾ってきました。)を使ってみました。非常に便利かつ思っていたよりレスポンスも良いです。

coLinuxは初めてだったので一番最初はcoMomongaでは無くcoLinuxのインストーラから選択できるDebianをルートファイルシステムを使ってみました。このルートファイルシステムには本当に最小限のパッケージしかインストールされていないようでした。viもemacsも無い状態でした。ネットワーク経由でapt-getすれば良いのかも知れませんがviさえ無くて戸惑いました。Gentooのルートファイルシステムも選択できます。こちらはもう少し多くのパッケージがインストールされているのかも知れませんが試しませんでした。

次にcoMomongaのISOイメージを試す事にしました。coMomongaのISOにはcoLinuxとXming(Xディスクプレイサーバ)インストール方法や設定に必要な全てのファイルが含まれています。WindowsのCDドライブにCDを挿入すると自動的にインストールマニュアルが表示されます。Xmingのバイナリも付いていてX Window環境も直ぐに構築できます。このマニュアル通りに設定するだけで簡単にセットアップできました。

# ただし、このノートPCがWindowServerのドメインメンバー
# であった為、ICS(インターネット接続の共有)がグループ
# ポリシーで無効に設定されていたのでネットワークが使え
# ませんでした。ドメインからワークグループに変えてネット
#ワークを使えるようにしました。

ブートが非常に速いのは助かります。同じノートPCのパーティションにインストールしたMomongaLinuxを起動するより随分速いです。Xも普通にストレスの無いパフォーマンスで動作します。コーディングなどの用途向け十分なレベルです。

私のノートPC
-PentiumM 1.3Ghz
-768MB RAM
-80GB 5200rpm HDD
-WindowsXP Pro SP2

スクリーンショット
coMomonga
(coMomongaをWindows上で実行し、coMomonga上のXクライアントに、Windowsで実行しているXmingからXDMCPでcoMomongaのXを起動している画面。正確に書くと長いですね… 説明は面倒ですがインストールは非常に簡単)

今までノートPCのWindows環境でUNIXライクな環境が必要な場合にはcygwinを、Emacsが使いたい時はMewを使っていましたが今後はcoMomongaを使う事にします。ノートPCにもMomongaLinuxをインストールしていますが、諸事情によりWindowsがメインOSになっています。雑誌などの評価で非常に便利とは思っていたのですが食わず嫌い(嫌いではなかったですが)で今まで損をしていました。

このcoMomonga2+ですが、Momonga Projectから今度のOSCで売りに出るそうです。是非購入(寄付?)しましょう :)

pgbenchのpthread版

(やはりバグを発見したので修正)

JPUG広報Blogに「pgbenchのpthread版が欲しい」と書いていましたが、先週末にPHP関西のセミナー講師を引き受けていたのでその移動時間中にテキトーに作ってみました。テキトーに作ったので勘違いしてバグを入れていました。今度はたぶん正しい結果になっていると思います。

サーバ環境
Athlon64 3200/3GB Memory/SATA2 HDD/Momonga Linux x86_64
PostgreSQL 8.0.3(64bit)(全てのSQL文をホスト/ポート付きで記録。他はほぼデフォルト。)

クライアント環境
AthlonXP 2500+/2GB Memory

pthread版pgbench

[yohgaki@dev pgbench]$ time ./pgbench -v -h 192.168.100.204 -U yohgaki -c 10 -t 100
starting vacuum…end.
starting full vacuum…end.
Warming up 15 seconds…
Start benchmarking…
End benchmarking….. (4.96586 seconds)
transaction type: TPC-B (sort of)
scaling factor: 10
number of clients: 10
number of transactions per client: 100
total number of transactions processed: 1000
tps = 235.404176 (excluding connections establishing)

real 0m25.739s
user 0m0.214s
sys 0m0.313s
[yohgaki@dev pgbench]$

こんな感じです。

何だか遅くなってしまたのでコードをもう少し効率化してみました。
今度はオリジナル版よりは速くなりました。

pthread版pgbench

[yohgaki@dev pgbench]$ time ./pgbench -v -h 192.168.100.204 -U yohgaki -c 50 -t 10
starting vacuum…end.
starting full vacuum…end.
Warming up 0 seconds…
Start benchmarking…
End benchmarking….. (1.16363 seconds)
transaction type: TPC-B (sort of)
scaling factor: 1
number of clients: 50
number of transactions per client: 10
total number of transactions processed: 500
tps = 429.689481 (excluding connections establishing)

real 0m2.655s
user 0m0.047s
sys 0m0.088s

オリジナル版

[yohgaki@dev pgbench]$ time pgbench -v -h 192.168.100.204 -U yohgaki -c 50 -t 10
starting vacuum…end.
starting full vacuum…end.
transaction type: TPC-B (sort of)
scaling factor: 1
number of clients: 50
number of transactions per client: 10
number of transactions actually processed: 500/500
tps = 337.674248 (including connections establishing)
tps = 379.093451 (excluding connections establishing)

real 0m1.615s
user 0m0.043s
sys 0m0.210s

と、多少スレッド版の方が速いです。今度は繰り返し実行してみてもスレッド版の方が速い傾向は変わりませんでした(汗

ベンチマークを開始する前にウォーミングアップの時間を設定したかった事、クエリ実行間隔をランダムに設定したかった事もpthread版が欲しかった他の理由でした。そこで

-w ウォームアップ時間(秒)
-r ランダム遅延(マイクロ秒)

も設定できるようにしました。よくあることですがサーバに負荷をかけた直後は良い性能がでるためウォームアップ時間は設定できた方が便利です。

ウォームアップ時間を5秒に設定した場合

[yohgaki@dev pgbench]$ time ./pgbench -v -h 192.168.100.204 -U yohgaki -c 50 -t 10 -w 5
starting vacuum…end.
starting full vacuum…end.
Warming up 5 seconds…
Start benchmarking…
End benchmarking….. (1.48874 seconds)
transaction type: TPC-B (sort of)
scaling factor: 1
number of clients: 50
number of transactions per client: 10
total number of transactions processed: 500
tps = 335.854481 (excluding connections establishing)

real 0m6.671s
user 0m0.124s
sys 0m0.260s

とこの様な感じです。オリジナル版にウォームアップ時間オプションを追加して欲しいな、と書いておいたら石井さんが追加してくれるはず :)

ソースは
http://www.ohgaki.net/wiki/index.php?PostgreSQL%2Fppgbench
からダウンロードできます。変更するかもしれないので日付を入れておきました。日付が入っていないソースは古いソースです。もし古いソースをお持ちの場合、新しいソースを使ってください。古い物にはバグがあります。

FedoraCoreのメイン開発プラットフォームはx86_64?

PentiumDを購入したのですがMomongaのカーネルでは945/955チップセットのSATAデバイスは現状のカーネルでは認識しませんでした。少し前のブログにパッチを当てたらとりあえず認識したと書きましたが、素直に最新のカーネル使ってみようとFedoraCore develのカーネルをCVSから拾ってきました。

x86_64でビルドしたところ問題なくビルド&動作しました。やはり基本には忠実でないと…
i686でビルドしたところ簡単なシンタックスエラーでビルドに失敗しました。FedoraCoreの開発者のほとんどはi386からx86_64に移行しているのかも知れませんね。

DJB先生の標準PCもAthlon64ですが、

The 2005.05.14 standard workstation costs $552. Notes on the price:

http://cr.yp.to/hardware/advice.html

とたったの$552です。香川ではECCメモリは店頭で売っていないですし、通販で買っても結構高い(前回買った時はDDR2-533 1GBが24,000円ちょっとが最安値)での普通のメモリを買えばこれくらいで作れそうです。私も最近Athlon64のPCをMomongaビルド用のPCとして作りました。Athlon64 3200、nVidia gForce FX5200、メモリ3GB、250GB+400GB HDDという感じで作ったので$552とは行きませんでしたが、むかーしDynabook386SX用に買った60MB(60GBではありません)HDDと同じ程度の値段で作れました。

しかしスーパーマルチドライブ安くなりましたね。バルクなら5000円切ってました。