たかちゃん。

1月 202008
 

以前、Tiger に sendmail-8.14.1 をインストールしたのは書きました。MacOSX は IPv6 対応しているのに MTA である Postfix が IPv6 に対応していないため sendmail に置き換える。と言うのがことの発端であることには変わり有りません;-)。

さて、今回は Apple の最新 OS、しかも UNIX である Leopard にインストールしますが、Tiger に 8.14.1 をインストールしたのと大差ありませんので、割愛するところもあるかと思います。では、行ってみましょう;-)。

・ソースは http://www.sendmail.org/ から持ってくれば良いでしょう。
・/etc/mail は最新の FreeBSD から持ってくるか、以前 8.14.1 をインストールする時に使ったものを代用しても良いでしょう。
・site.config.m4 も以前利用していたもので問題無いでしょう。

それでは sendmail-8.14.2 を make しましょう。注意点としては、Leopaed は Darwin 9.1.0 な OS のバージョンですが、sendmail-8.14.2 は Darwin 8 にしか対応していません。 Build 時のオプションには以下のように指定してあげましょう。

./Build -c -f ~/site.config.m4 -E os=Darwin -E rel=8.9.1

 
インストール後は 8.14.2 をインストールし時と一緒で mail.local をコピーしたり mkdir や chown したりして環境を整えてあげます。これで大体おしまいです。

さて /etc/passwd にユーザを登録し /etc/group にグループを登録した後、Tiger の場合は NetInfo マネージャでユーザを登録していましたが、Leopard ではあの非常に不便な NetInfo マネージャが無くなり、dscl と言うコマンドで行う用になりました。が、それも大変なので「システム環境設定」のメニューから「ユーザの管理」で追加してください。

最後に起動スクリプトについてですが、Tiger の頃よりも Leopard は launchd がメインになりつつあります。なのでねsendmail も /etc/hostconfig ではなく、launchctl で登録して起動するようにしましょう。sendmail は二つのプロセスが起動するので二つの起動用設定ファイルが必要でする以下になります。

org.sendmail.sendmail.plist
org.sendmail.submit.plist

上記二つのファイルを /Library/LaunchDaemons/ にほうりこんだあと以下のコマンドを root 権限で実行します。

# launchctl load /Library/LaunchDaemons/org.sendmail.sendmail.plist
# launchctl start org.sendmail.sendmail
# launchctl load /Library/LaunchDaemons/org.sendmail.submit.plist
# launchctl start org.sendmail.submit

 
正常に起動したかは ps コマンドで確認できます。また、以下の launchctl で起動設定されたか確認するとこがてきまする

# launchctl list | grep mail
1      0       org.sendmail.submit
2      0       org.sendmail.sendmail

 
launchctl コマンドと設定ファイルである plist ファイルにはそれぞれ意味があるのでここには書きませんが頑張ってみてください。もしかすると launchctl load -w /Library/LaunchDaemons/org.sendmail.sendmail.plist などと 「-w」 オプションをつけたりとかするともっと幸せになれたりする場合もあります。

と、言うことで、Tiger から Leopred にバージョンアップしたことで、

・NetInfo マネージャは使わない。
・そろそろ /etc/hostconfig による /Library/StartupItems 使うのやめようよ・・。

の二つはキーワードになるかもしれないですねぇ;-)。

1月 162008
 

IntelMac の MacBook Dore2Duo 2G を持っているのだけど、Leopard がインストールされている。僕は日本語入力に「ことえり」を「かな入力」で使っているのだけど問題点が多くて困っていた。ちょっとあげてみると以下の通り。

・「かな入力 ON」の時 Emacs キーバインドのカーソル移動がことえりに食われてしまい正しく動作しない。例えば C-a は C-ち になってしまうなど。
・iTunes の検索の所に日本語が入力できない。
・Thunderbird はキー入力を一切受け付けない時がある。
・Firefox の認証のタグでキー入力を一切受け付けない時がある。

などなど。これらは入力形式を「かな入力」から「ローマ字入力」に変更することにより問題を回避できることを確認した。

Tiger の時のことえりは上記について全く問題無く動作していたのでこれは明らかに Leopard でバグを入れ込んでしまったようだ。しかし、それにしても悲惨な状態で、MacOSX で長文を打つのがイヤになって来る状態である。

この状態を打破すべく考えたのが、Tiger のことえりが素晴らしいものなのであるなら、 Tiger の Kotoeri を Leopard で起動すれば良いんだ。と思ったわけですよ。でもって実施した作業は以下の通り。

・手もとに PoerBook G4 があり Tiger が動いている。
・/System/Library/Components/ に Kotoeri.component があるのでこれを tar で持って来る。
・Leopard 上の /System/Library/Input\ Methods/ に展開
・mv Kotoeri.app Kotoeri.app.ORG
・ln -s Kotoeri.component Kotoeri.app

さてと、作業は以上。mv コマンドを実行した段階で launchd が見事に反応してくれます。「ことえりの動作がおかしいよん。」って・・。でもってシステム全体が不安定になるので、しょーがないからリモートの PC から ssh でログインし、そっちで作業。けども結局、Contents/MacOS/Kotoeri は起動することは無かったのでした・・。しくしく。つまり無駄骨。

ちなみに僕が試した Kotoeri バイナリは Mach-O bundle ppc と言うことでユニバーサルバイナリではない。けど、ロゼッタで動くかなぁ?とか思ったけど、ダメだったみたい。と、言うか、IntelMac の Tiger から Kotoeri を抜いて来たわけではないので起動できない根本的な原因がどこにあるかは今だに不明・・。

version.plist の中身を確認すると Tiger の Kotoeri は 4.0.4、Leopard の Kotoeri は 4.1.1 みたい。4.0.0 -> 4.1.0 にバージョンをあげたときに Apple は「かな入力」をおかしくしてしまったのねぇ・・。アーメン。

1月 112008
 

FreeBSD の ports を cvsup したら net-mgmt/net-snmp が 5.3.1_7 から 5.3.2 になった。

snmpd を再起動して、リモートのマシンもしくは localhost から snmpwalk で接続しても REFUSED され、接続できなくなってしまった。 cat /var/log/snmpd.log してみると接続してくれない状態が良く解るのであるが大体以下のログを出力している。

Connection from UDP: [0.0.0.0]->[192.168.100.1]:-6568 REFUSED

 
ちなみに、 /etc/hosts.allow の設定は 5.3.1_7 の時からしていたのと変更はない。snmpd : ALL : allow はコメントアウトして、snmpd : ALL : deny を付けている。後はアクセスを許可するネットワークやホスト、ドメイン名を allow している設定をしている。

でもって 5.3.2 にした途端に接続できなくなってしまった・・。何回か試行錯誤を繰り返した結果、以下の行を記述すれば接続できることを発見。

snmpd : 0.0.0.0 : allow

 
しかし、なぜに NULL アドレスを設定せねばならんのじゃ? snmpd が IP アドレスを正しく取れていないバクであることは明白であるような気がしてならない・・。とほほ・・。

かくして、自宅サーバは SNMP の取得が復活したでした。ふぅ。

1月 012008
 

新年明けましておめでとうございます。今年も宜しくお願いします。

新年一発目は ASUS M2A-VM HDMI ネタです。 自宅の FreeBSD/amd64 は今まで 6-STABLE だったのですが、7-STABLE にしました。今 cvsup すると 7.0-PRERELEASE になります。

6-STABLE から大きく変わった点としては acpi_ppc.ko が make 出来なくなりました。そして cpufreq.ko + powerd はカーネルが凍り付くことも無くなり安定稼働するようになりました。同じマザーボードに FreeBSD/i386 をインストールしている人は前から cpufreq.ko + powerd は安定稼働しているとのことなので、FreeBSD/amd64 ではようやっと正しい動作をするようになった。と言うことでしょうか。

ちなみに自宅のマシンはメモリを 4GB にしました。うちで稼働している OS は FreeBSD/amd64・WindowsXPx64 なので 4GB のメモリでも有効利用できるのです;-)。

せっかくなので WindowsXP のほうには Microsoft Virtual PC 2007 をインストールして、その上で Windows Server 2003 Enterprise Edition x86 が動いていたりします。こいつにはメモリを 1.5GB も上げると言う贅沢が出来ます;-)。ちなみに Windows Server 2003 EPE の x64 はインストールてきませんでした。32bit OS しかだめみたいです。

さて、新年一発目なのでこの位にしましょう。全然中身が無い、ただのよもやま話になってしまいましたが・・。

今年も宜しくお願いします。

12月 252007
 

インプレスの「インターネットマガジン」の PDF が無料で公開されることになったらしい。

http://internet.watch.impress.co.jp/cda/news/2007/12/25/17997.html
http://i.impressrd.jp/bn

創刊号は確か N+I インターロップの第一回目だったと記憶している。懐かしさのあまり、PDF を検索してしまったではないか。何を検索したかと言うと、その昔、Compaq に吸収される前に日本 DEC が公開していた「荻窪ラーメンマップ」。

いやぁ、ちゃんと PDF の中にそれがありまましたよーー。URL だけなんだけど、以下のファイルに掲載されています。

http://i.impressrd.jp/files/images/bn/pdf/im199506-153-yellow.pdf

で、当然日本 DEC のサイトはもう無いわけで、ちょっとだけ google で検索してみたら当時のコンテンツを公開しているサイトを発見。うそー。懐かしいっ!!って感じで非常に感慨深かったです。

http://www.dec-j.jp/noodle/ra-men_map.html

1993,4 年頃と言えば Windows95 が出る前、IIJ が ISP を始める前、Linux は Slackware-1.3 がリリースされた頃、FreeBSD は2.0.0-RELEASE がリリースされた頃で、会社もしくは学校で JUNET に接続している環境にいる人しか見られなかった。日本には一般に公開しているウェブサイトが(分割前の) NTT とか 10 個程度しか無くて、その中でもこの「荻窪ラーメンマップ」は日本で初めてクリッカブルマップを利用したサイトなので驚きもまたひとしおなのでした。

僕は当時 NEC の職場から EWS4800 を利用しモザイク(ウェブブラウザ)を利用してインターネットの大波を泳いでいた。当時のモザイクはシングルタスクプログラムだったのでファイルをダウンロードしている時は他のウェブサイトを閲覧することができなかった。なので、Netscape が出てきた時の感動は今でもよぉーく覚えている。

Netscape はファイルをダウンロードしはじめるとバックグラウンドで始めて、ウェブの閲覧はメインの画面で引続き行えると言う、今では当り前なんだけど、当時は画期的なブラウザだった。

話を元に戻すとして。しかし、今、あの「荻窪ラーメンマップ」が当時の姿でまた見られるとは思っていなかった。インプレスが PDF を公開した。と言うニュースを耳にしなければきっと google でも検索しなかっただろう。ちなみに google で検索した文字列は「ra-men_map.html」。

いやぁ。日本のインターネットの歴史を語る上でこのサイト抜きで語ることはできない、と、僕個人的には思っているので再会できて本当に良かったです。

今となってはどーと言うことは無いコンテンツですが、歴史的意義が大きいサイトに再会できて本当に感動です。はい。

12月 132007
 

前回のブログで iPod Touch を JailBreack したと書いた。でもってメールソフトは iPhone のファームから抜いて iPodTouch にインストールした。

メールソフトも利用できて大変嬉しいのだけど、うちのメールサーバは ssl に対応していないので POP もしくは IMAP4 の時に生パスワードが流れてしまう。

iPod Touch の性格上、野良 AP (そこいらに落ちているアクセスポイントのこと)を利用する場合も多々有るわけで、そう言うのを利用するとアクセスポイントを置いた人が tcpdump を仕掛けていないとも限らないし、ポートスキャンしてくるかもしれない。なので、POP/IMAP4 の時は是非とも暗号化して利用したいものです。

幸い、JailBreack した iPod Touch には ssh が入っているのでこれを利用して POP サーバ、もしくは IMAP4 サーバに ssh トンネルを掘ることが可能です。

と、言うことで簡単に ssh トンネルを掘るスクリプトを書いてみました。利用方法は以下の通り。

1. POP/IMAP4 サーバ上に自分のアカウントが存在し ssh ログインできること。
2. メールのアカウント設定で POP/IMAP4 サーバではなく localhost に接続するようにすること。
3. ターミナルから stun.sh が実行できること。

これだけです。まぁ、1. はちょっと敷居が高いかも。けど、それがクリアできれば特に問題は無いでしょう。以下の URL からダウンロードできます。

http://www.icmpv6.org/Prog/MacOSX/stun.sh

利用方法ですが、以下の通り。

1. コマンドオプションは三つ。s(start) t(stop) c(check)。
2. s オプションで Mail を kill してから ssh トンネルを掘りますが、接続できた時はパスフレーズを聞いて来るので入力。
3. t オプションで Mail と ssh トンネルのプロセスを殺します。
4. c オプションで Mail と ssh のプロセス番号を表示します。

注意点としては、ssh トンネルを掘る前に Mail が起動していると POP/IMAP4 サーバに接続できません。なので、s オプションの時に Mail を kill しています。c オプションで ssh プロセスの番号が Mail より若いことを確認します。
後、一回スリープしたら ssh セッションが切れるので毎回 t して s してあげる必要があります。

こんな所でしょうか。ダウンロードしたら stun.sh の上の環境変数にサーバ名とユーザ名を指定してください。default で localhost の port:143 を使うようにしています。

もしダウンロードした人がいたらコメントなど頂ければと思います。

11月 262007
 

iPod Touch をアップルストアーで予約して 10/2 に手もとに届いた。その後ずっと利用していて、ファームウェアの Version1.1.2 が出た所でアップデートしたんだけど、JailBreak してみたくなったので試してみた。

iPod Touch の無線 LAN はすごい便利なんだけど、メールが読めない点や GoogleMap が欲しかったりしたので「二月まで待っていられない。JailBreak するしかないかー。」とか思い試してみた。

今回やる作業は以下の通り。

・ファームウェアを Ver.1.1.2 から Ver.1.1.1 にデグレード
・jailbreakme.com にアクセス
・JailBreak を 実行
・iPhone の Ver.1.1.2 のファームウェアからメールとGoogleMapを抜きだし

情報を集めてみると以下のような URL 見ると比較的容易に行える。

http://japan.zdnet.com/security/story/0,3800079245,20358777,00.htm
http://japan.zdnet.com/security/story/0,3800079245,20359973-7,00.htm
http://d.1555.info/2007/10/12/ipodtouch-jailbreak/
http://kitaj.no-ip.com/tdiary/20071113.html

で、JailBreak が成功した iPod Touch はこんな感じ。メールと GoogleMap は iPod Phone の最新のファームウェアから抜き取って、scp とかで iPod Touch に持って行く。ってのが凄い技だなぁ。

snap_071958.jpg

iPod Touch は二つのパーティションに別れているんだけど、大体以下みたいな感じ。もう / パーティションの容量が無い・・。

root@/var/root > df -k
Filesystem     1K-blocks      Used  Available Use%  Mounted on
/dev/disk0s1     307200   288500      15628  95%   /
/dev/disk0s2   7622368 5073916  2548452   67%  /private/var

 
まぁ、色々いじってみたけど、非常に楽しい。UNIX が PDA の中に入った。と言う感じ。フツーの PDA の中に Linux や NetBSD をインストールして hoge るのと違って最初から UNIX が入っているのでタッチパッドのキーボードとか使えちゃうとか、インターフェースが全部使えちゃうので凄い嬉しい。もう NotePC 持ち歩く必要ないかなぁ。とか思ってしまう。

と、言う事で iPod Touch の UNIX らしい情報をちょっと書いておきますね。気がついた点としては

・IPv6 スタックありません。
・Bluetooth は内蔵していなさそう。

って感じでしょうかか。

kern.ostype = Darwin
kern.osrelease = 9.0.0d1
kern.osrevision = 199506
kern.version = Darwin Kernel Version 9.0.0d1:
Wed Oct 10 00:07:50 PDT 2007;
root:xnu-933.0.0.204.obj~7/RELEASE_ARM_S5L8900XRB
kern.maxvnodes = 2880
kern.maxproc = 52
kern.maxfiles = 12288
hw.machine = iPod1,1
hw.model = N45AP
hw.ncpu = 1
hw.byteorder = 1234
hw.physmem = 121634816
hw.usermem = 98885632
hw.busfrequency = 103000000
hw.cpufrequency = 412000000
hw.cachelinesize = 32
hw.l1icachesize = 16384
hw.l1dcachesize = 16384
hw.tbfrequency = 6000000
hw.memsize = 121634816
hw.availcpu = 1
hw.busfrequency: 103000000
hw.busfrequency_min: 103000000
hw.busfrequency_max: 103000000
hw.cpufrequency: 412000000
hw.cpufrequency_min: 412000000
hw.cpufrequency_max: 412000000
hw.cachelinesize: 32
hw.l1icachesize: 16384
hw.l1dcachesize: 16384
hw.memfrequency: 137333333
hw.memfrequency_min: 137333333
hw.memfrequency_max: 137333333
hw.prffrequency: 51500000
hw.prffrequency_min: 51500000
hw.prffrequency_max: 51500000
hw.fixfrequency: 24000000
hw.tbfrequency: 6000000

 
ちなみにバイナリは Mach-O executable arm でユニバーサルバイナリではなく ARM のバリナリでした。

せっかくなので、kldstat(MacOSX 風に言うと kextstat) の結果もつけておきます。実に 65 個ものカーネルモジュールがロードされています。

Index Name
1     com.apple.kernel
2     com.apple.kpi.bsd
3     com.apple.kpi.dsep
4     com.apple.kpi.iokit
5     com.apple.kpi.libkern
6     com.apple.kpi.mach
7     com.apple.kpi.unsupported
8     com.apple.iokit.IONVRAMFamily
9     com.apple.driver.AppleNMI
10   com.apple.iokit.IOSystemManagementFamily
11   com.apple.iokit.ApplePlatformFamily
12   com.apple.kernel.6.0
13   com.apple.kernel.bsd
14   com.apple.kernel.iokit
15   com.apple.kernel.libkern
16   com.apple.kernel.mach
17   com.apple.driver.FairPlayIOKit
18   com.apple.iokit.IOCoreSurface
19   com.apple.driver.AppleSerialKDP
20   com.apple.iokit.IOStorageFamily
21   com.apple.AppleDiskImageController
22   com.apple.driver.AppleS5L8900X
23   com.apple.iokit.IOHIDFamily
24   com.apple.driver.AppleM68Buttons
25   com.apple.iokit.IOSerialFamily
26   com.apple.driver.AppleOnboardSerial
27   com.apple.iokit.IOUSBDeviceFamily
28   com.apple.iokit.IOAccessoryManager
29   com.apple.driver.AppleARMPL192VIC
30   com.apple.driver.AppleARMPL080DMAC
31   com.apple.iokit.IOCryptoAcceleratorFamily
32   com.apple.driver.AppleS5L8900XCrypto
33   com.apple.driver.AppleS5L8900XUSBWrangler
34   com.apple.iokit.IOStreamFamily
35   com.apple.iokit.IOAudio2Family
36   com.apple.driver.AppleAMC
37   com.apple.iokit.IOFlashStorage
38   com.apple.driver.AppleS5L8900XFMC
39   com.apple.iokit.IOMobileGraphicsFamily
40   com.apple.driver.AppleH1CLCD
41   com.apple.iokit.IOSDIOFamily
42   com.apple.driver.AppleS5L8900XSDIO
43   com.apple.driver.AppleJPEGDriver
44   com.apple.driver.AppleMPVDDriver
45   com.apple.driver.AppleH1CameraInterface
46   com.apple.driver.AppleH264BPD
47   com.apple.driver.AppleMBX
48   com.apple.driver.AppleS5L8900XSerial
49   com.apple.driver.AppleImage2NORAccess
50   com.apple.driver.AppleMerlotLCD
51   com.apple.driver.AppleEmbeddedAccelerometer
52   com.apple.driver.AppleEmbeddedLightSensor
53   com.apple.iokit.AppleARMIISAudio
54   com.apple.driver.AppleWolfsonAudio
55   com.apple.driver.AppleWM8758Audio
56   com.apple.driver.ApplePCF50635PMU
57   com.apple.driver.AppleReliableSerialLayer
58   com.apple.driver.AppleMultitouchSPI
59   com.apple.driver.AppleS5L8900XIpodHAL
60   com.apple.driver.AppleNANDFTL
61   com.apple.iokit.IONetworkingFamily
62   com.apple.iokit.IO80211Family
63   com.apple.driver.AppleMRVL868x
64   com.apple.driver.AppleUSBMike
65   com.apple.driver.AppleUSBDeviceMux

 

全然話題が変わるのですが、GoogleMap で tokyo で検索したら以下が出ました。赤いまち針があるところが「tokyo」みたいなんですが、ふむー。オペラシティ辺りをさしてないかい? Apple Japan のあるところなんですけど・・;-)。

snap_072348.jpg

それにしても、技術者(クラッカか)の皆さんには感激します。お疲れ様でした。と、言うのも、以下の URL を読むとある意味凄いな。とか思ってしまったからです・・。こう言うネタって本当は褒めてはダメだんだよねぇ・・。


http://amegan.com/blog/mtarchives/003940.html

11月 152007
 

さて、ASUS M2A-VM HDMI で FreeBSD を楽しむスレッドのそのさんです。前回は acpi_ppc.ko で Cool’n’Quiet を有効にするお話でした。

今回は IXP SB600 Serial ATA Controller のお話です。ちょっと google していたら、以下の URL を発見。

http://lists.freebsd.org/pipermail/freebsd-bugs/2007-May/024410.html

今まで ASUS M2A-VM HDMI マザーボードと言うか、AMD690G チップセットは UDMA33 で HDD を認識して忌んだけど、上のパッチを適用すると ATA150 で認識するようになってくれた。

こっちがパッチ適用前のメッセージ。

ad4: 239372MB  at ata2-master UDMA33

 
こっちがパッチ適用後のメッセージ。

ad4: 239372MB  at ata2-master SATA150

 
S-ATA なので ad4 と認識されてしまうんだけど、それにしても ようやっと SATA150 になった。僕の 環境は FreeBSD/amd64 6.3-PRERELEASE なんだけど、まだ、CURRENT から降ってきていないみたい。なので、STABLE で利用したい人は上記のパッチを手バッチで自分のソースに当てましょう;-)。

まぁ、一応パッチを書いておきましたけど・・。

http://www.icmpv6.org/Prog/FreeBSD_patches/IXP_SB600SATA-6.3-PRERELEASE.patch

けど、すぐに STABLE に降ってくるんだろうねぇ。

後は、グラフィックチップだなぁ。

11月 082007
 

MacOSX 10.5、Darwin9.0.0。別の名を Leopard と言うんですけど、10/26 に秋葉ヨドバシに 18:20 位に行って、並んで買って来てしまった。この時に貰ったモノは T シャツ・iTMS の 1,500yen 分のクーポン券。後、ポイントも 700ポイント位ついたかなぁ。

でもって、こないだの週末に、バックアップして一旦全部消してからサラでインストールしてみた。現在利用ている最中ですけど・・。

・Safari が emacs のキーバインドを捨てたのはちょっとショックが大きい。
・ターミナルはせっかくタブに対応したんだけど、タブを移動するショートカットが無い。
・Space の使い方がいまいち解らない。アプリケーションを別のスペースに移動できないし・・。
・Doc は下にないとけっこうつまらないもの。

などなど、ちょっといじっただけでこれだけの不満が・・。まだ使い込んでないので本当は上記の問題は解決できるのかもしれないけどねぇ。今後の課題と言うことで。

で、今回の本題。

http://ranger.users.finkproject.org/kde/index.php/Home

MacOSX で KDE4 がネーテブに動作する。と言うもの。 FreeBSD で KDE3 を使っている僕にとっては素晴らしいことなんだけど、これの凄いのが、qt/Mac を利用しているので X11 が必要無い。なので MacOSX ネーテブに動作する。と言う点。

ターミナル・ブラウザ・オフィスアプリ・ゲームなどが利用できるようになる。凄いねぇー。

僕はまだインストールしてないんだけどね(^^;;。今晩早速試してみることにするですよー。

ってか、もっと MacOSX をたくさん触らないとなぁ。sendmail-8.14.2 はもうインストールしたんだけどねー。

11月 062007
 

前回、「SMP カーネルと uptime と CPU クロック。」で書いたことの続き。

SMPカーネルで acpi_ppc を利用した場合、CPU速度が上がらないと言う状態になっていた。ちょっとまとめてみると大体以下のような感じ。

・OS は FreeBSD/amd64 6.2-STABLE。
・cpufreq.ko を使わないで acpi_ppc.ko のみを kldload した場合。
・CPU が DualCore な環境。SMP カーネルであるのだが、 DualCPU ではない環境。

上記の状態の時に発生する現象。

1.make buildworld したとき CPU クロックが Cool’n’Quiet の一番低い速度で動作する。
2.make -j2 buldworld したとき CPU クロックは Cool’n’Quiet の一番高い速度で動作する。

つまり、上の場合はどんなに速い CPU を買って来ても全くもって CPU のフルスペックが利用できない状態に陥る。

ちなみに、シングルプロセスの非常に重いプログラムを動作させた場合も 1. の動作となる。しかし、マルチタスク・マルチスレッドな非常に重いプログラムを実行すると二つの Core を使ってくれるので 2. の状態になる。

これらの情報をもとに acpi_ppc.ko の作者である 福田さん にお伺いしてみました。そしたらその回答として以下の情報を頂きました。

・acpi_ppc.ko はマルチコアな環境に対応していない。
・acpi_ppc は top(1) と同じ動作をする。

との事でした。「top(1) と同じ動作」について少し書いてみたいと思います。

acpi_ppc は cp_time[] という kernel 変数から CPU 使用率を算出しクロックの制御を行なっているそうです。acpi_ppc における Cool’n’Quiet の CPU 速度のアップは CPU 使用率が 98% を超えたら一つ上のクロック設定に上げるようにしているそうなので、シングルプロセッサの場合は特に問題なく Cool’n’Quiet の機能が動作します。

しかし、マルチプロセッサの場合、シングルプロセスの重いプログラムを実行しても top で見る CPU 使用率は 50% のため、いつまで経っても Cool’n’Quiet の一つ上のクロック設定に上がることは無いそうです。当然シングルプロセスの重いプログラムを二つ実行した場合は一つ上のクロック設定に上がるようになります。

以上により acpi_ppc は SMP 環境ではちょっともったいないと言うことになります。しかし、まぁ、言われてみればその通りだなぁ。と言う気はしますが・・。

と、言うことで、僕は色々な場面で make -j2 を付けるようにしました。後、シングルプロセスの重いプログラムを実行する場合は kldunload acpi_ppc することにしました。kldunload acpi_ppc すると CPU 速度は最高速で動作するのでシングルプロセスの場合でも最高速で利用できます;-)。

ちなみに cpufreq.ko はマルチコアに対応していてシングルプロセスの重いプログラムを実行しても CPU 速度は変わるらしいです。まぁ、今回は cpufreq.ko が動作しないマザーボードを買ってしまったのでしょーがないですけど・・。

最後にですが、色々教えてくださった 福田さん。有り難うございました。