<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1747986548294113572</id><updated>2011-12-02T18:08:59.747+09:00</updated><category term='Python'/><category term='Network'/><category term='Unix'/><category term='Mobile'/><category term='Xen'/><category term='Evernote'/><category term='polipo'/><category term='WWW'/><category term='Rails'/><category term='まとめ'/><category term='VIA EPIA'/><category term='Perl'/><category term='その他'/><category term='iSCSI'/><category term='Java'/><category term='IPSec'/><category term='Disk'/><category term='KVM'/><category term='Ruby'/><category term='Blogアプリ'/><category term='Linux'/><category term='Mac'/><category term='PC'/><category term='Cocoa'/><category term='TeX'/><category term='Emacs'/><category term='Ubuntu'/><category term='iOS'/><category term='Virtualization'/><category term='Android'/><category term='Check'/><title type='text'>年越しそばと初詣は絶対に欠かせない</title><subtitle type='html'>ちょっとめもっぽいもの</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default?start-index=101&amp;max-results=100'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>186</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5117920663693901080</id><published>2011-11-06T21:43:00.001+09:00</published><updated>2011-11-06T22:02:20.322+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Ant を使って Android アプリを構築する</title><content type='html'>&lt;p&gt;Eclipse を使って Android アプリのプロジェクトを作成すると build.xml が作られずに、
コマンドラインからの構築ができない。
ただ、ちょっと前の &lt;a href="http://developer.android.com/sdk/eclipse-adt.html"&gt;ADT&lt;/a&gt; の話なので定かでない。。。&lt;/p&gt;

&lt;p&gt;Eclipse を使うと署名済みの apk パッケージまで作れるが、
GUIを使って一連の操作を毎回するのは面倒なので、
ant を使ったリリース方法を調べてみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;build.xml の作成&lt;/h4&gt;
&lt;p&gt;ant 化対応は非常に簡単で、プロジェクトのトップディレクトリで次のコマンドを実行すれば良い。&lt;/p&gt;
&lt;pre class="screen"&gt;&lt;code&gt;% ${ANDROID_SDK}/tools/android update project --path .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この時点で「ant debug」を実行すると bin/${project名}-debug.apk にデバック用のアプリが作成できる。&lt;/p&gt;

&lt;p&gt;ただ、SDK Tools r14 から若干ファイルの構成が変更されているので注意が必要である。&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;build.xml&lt;/dt&gt;
&lt;dd&gt;ant用の構築ファイル&lt;/dd&gt;
&lt;dt&gt;ant.properties (旧 build.properties)&lt;/dt&gt;
&lt;dd&gt;ユーザが追加して使用するもの。普通はコッチに書く。&lt;/dd&gt;
&lt;dt&gt;local.properties&lt;/dt&gt;
&lt;dd&gt;構築マシン固有の情報。現在は SDKへのパスのみ？ VCSへの登録は避けるべきファイル&lt;/dd&gt;
&lt;dt&gt;project.properties (旧 default.properties)&lt;/dt&gt;
&lt;dd&gt;ADTによって維持される情報。&lt;/dd&gt;
&lt;/ul&gt;

&lt;h4&gt;パスワードの自動入力&lt;/h4&gt;
&lt;p&gt;プロパティ値として key.store/key.alias/key.store.password/key.alias.password を設定しておけば、あとは万事取り計らってくれるようである。ただ、パスワード情報を記載するので、VCSへの登録される可能性が高いant.properties への記述は避けるべきで、VCS には登録しない secure.properties を作成して、コイツを読み込むように build.xml を変更するべきかなぁ。。。&lt;/p&gt;

&lt;code&gt;build.xml&lt;/code&gt;

&lt;pre class="screen"&gt;&lt;code&gt;...
    &amp;lt;property file="ant.properties" /&amp;gt;
    &amp;lt;property file="secure.properties" /&amp;gt; &amp;lt;!-- ここ追加 --&amp;gt
...&lt;/code&gt;&lt;/pre&gt;

&lt;code&gt;secure.properties&lt;/code&gt;
&lt;pre class="screen"&gt;&lt;code&gt;key.store=path-of-keystore
key.alias=alias
key.alias.password=password
key.store.password=password
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで、
「ant release」の実行で bin/${project名}-release.apk に署名済みのapkパッケージが作成される。&lt;/p&gt;

&lt;h4&gt;リリース apk パッケージのファイルのカスタマイズ&lt;/h4&gt;
&lt;p&gt;ここまで来ると、リリース apk パッケージのファイル名に自動的に構築日時とversionCodeを埋め込みたいのが、エンジニアの心情だと思う。&lt;/p&gt;

&lt;p&gt;build.xml をよく読むと、一番最後の import 要素の上に、任意のターゲットを追加すると良さ気である。なので、
次の deploy ターゲットを追加してみた。&lt;/p&gt;

&lt;code&gt;build.xml&lt;/code&gt;

&lt;pre class="screen"&gt;&lt;code&gt;...
    &amp;lt;target name="deploy" depends="release" description="deploy"&amp;gt;
        &amp;lt;xpath input="AndroidManifest.xml"
               expression="/manifest/@android:versionCode"
               output="config.versionCode"
               default="release"
        /&amp;gt;
        &amp;lt;tstamp&amp;gt;
            &amp;lt;format property="config.versionDate" pattern="yyyyMMdd" /&amp;gt;
        &amp;lt;/tstamp&amp;gt;
        &amp;lt;property name="out.deploy.file"
                  value="${out.absolute.dir}/${ant.project.name}-${config.versionDate}-${config.versionCode}.apk"
        /&amp;gt;

        &amp;lt;copy file="${out.final.file}"
              tofile="${out.deploy.file}"
              overwrite="true"
        /&amp;gt;
        &amp;lt;echo&amp;gt;Deploy Package: ${out.deploy.file}&amp;lt;/echo&amp;gt;
    &amp;lt;/target&amp;gt;
...&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで、
「ant deploy」の実行で bin/${project名}-YYYYYMMDD-V.apk に署名済みのapkパッケージが作成される。&lt;/p&gt;

&lt;p&gt;ターゲット名はあまり良く無いかも。。。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;makeファイルでのスクリプト片をantのタスク等で作成しないといけないのでいまいち使い勝手がよくわからない。
が、スゲー便利なんだろうなぁ。。。ant &lt;/p&gt;

&lt;h4&gt;参照&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html" title="Android Engineer: Using Ant to Automate Building Android Applications"&gt;Android Engineer: Using Ant to Automate Building Android Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/unigo/20100715/1279200419" title="ant を使って Android の apk パッケージを作成する - unigoの日記"&gt;ant を使って Android の apk パッケージを作成する - unigoの日記&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5117920663693901080?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5117920663693901080/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5117920663693901080' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5117920663693901080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5117920663693901080'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/11/use-ant-to-build-android-app.html' title='Ant を使って Android アプリを構築する'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1986004846393848591</id><published>2011-06-05T01:15:00.001+09:00</published><updated>2011-06-05T02:51:59.595+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Cocoa Emacs 23 構築 (2011/06版)</title><content type='html'>&lt;p&gt;定期的に&lt;a href="http://moimoitei.blogspot.com/2010/05/build-cocoa-emacs-64bit.html"&gt;Cocoa Emacs 23 を構築&lt;/a&gt;して使っていた。今日も定期作業とおもって、構築したらビルドが失敗してしまった。。。&lt;/p&gt;

&lt;p&gt;どうしたもんだかなぁ&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;ググってみると、、、MLの「&lt;a href="http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00857.html"&gt;Re: Emacs with Cocoa/GNUstep&lt;/a&gt;」の内容の通りで、lisp.h の修正の影響で nsmenu.m のビルドが失敗したみたいで修正したよ。それで emacs-23 ブランチには lisp.h の修正のみしかマージされていないみたいで、、、、うまく行かなかったということらしい。&lt;/p&gt;

&lt;p&gt;masterブランチで作ってれば問題無しなのか、、、まぁそのうち emacs-23 ブランチに修正が降ってくるのかなぁ。&lt;/p&gt;

&lt;p&gt;それまでは、以下のように対処してみた。(ヘタレ git 使いだから bzr の人用の手順は分からん、、、)&lt;/p&gt;

&lt;pre class="code"&gt;% git clone git://repo.or.cz/emacs.git
% cd emacs
% git checkout emacs-23
% git cherry-pick -n &lt;a href="http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=207421c0af4edf88943e270ad4bc83934cabcc04"&gt;207421c0af4edf88943e270ad4bc83934cabcc04&lt;/a&gt;
...
# src/nsmenu.m の２箇所のコンフリクトを修正
#  1箇所目は、memcpy を使ってる奴を残す
#  2箇所目は、どっちでもいい
#
...
% patch -p 0 &amp;lt; favorite-patch-file
...
# で構築
% eval "$(PATH= /usr/libexec/path_helper -s)"  # PATHをクリーンにする
% ./configure --with-ns
% make bootstrap
% make install
% open nextstep/Emacs.app
&lt;/pre&gt;

&lt;p&gt;なかなか、いい感じだぁ&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1986004846393848591?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1986004846393848591/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1986004846393848591' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1986004846393848591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1986004846393848591'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/06/build-cocoa-emacs-2011-06.html' title='Cocoa Emacs 23 構築 (2011/06版)'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2266773610835481164</id><published>2011-05-26T01:25:00.001+09:00</published><updated>2011-11-06T23:23:57.956+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>MacOSX で Zen Touch 2 (Android2.2)を開発端末にしてみる</title><content type='html'>&lt;p&gt;自分の携帯を Androidの開発端末として使うのは、日常生活でメールや連絡が来たりするときに結構困る場合がある。なので、3〜4インチ程度の安いAndroid 端末が無いかなと物色したら、Zen Touch 2 がよさげ。&lt;/p&gt;

&lt;p&gt;、、、&lt;/p&gt;

&lt;p&gt;静電式のものに慣れているので、感圧式タッチパネルが違和感ありまくり操作がし辛いこと。&lt;/p&gt;

&lt;p&gt;実物を見ないで、購入したので自業自得だが、、、ついでに、Android Market 非対応のも、、、
余り Android 端末としてはお薦めできないなぁ。。。まぁ音楽プレーヤーですね。&lt;/p&gt;

&lt;p&gt;今まで扱った Android 端末は、何もせずに MacOSX の Android 開発用の SDK で認識されたので、気に留めるなかったが、こいつは認識しない。。。&lt;/p&gt;

&lt;p&gt;はて、どうしたもんだかなぁ&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;熟考の結果、下記の投稿記事と同じ対応をすれば、adb で認識して、開発に使えるようである。
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/dot_h2o2/20101012/p1"&gt;Android(IS01向け)のアプリをOSXで開発 ～adb接続編
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;サクっと、認識させてみた。&lt;/p&gt;
&lt;pre class="screen"&gt;# Creative Zen Touch 2 のベンダーIDを追加
% echo "0x041e" &gt;&gt; ~/.android/adb_usb.ini

# adb を再起動
% ${ANDROID_SDK_DIR}/platform-tools/adb kill-server
% ${ANDROID_SDK_DIR}/platform-tools/adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

# adb でデバイスのリストを確認
% ${ANDROID_SDK_DIR}/platform-tools/adb devices
List of devices attached 
16XXXXXXXXXXXX 0    device&lt;/pre&gt;

&lt;p&gt;これは adb が自前でAndroid のベンダーIDのリストを持っていることなのかぁ。。。&lt;/p&gt;

&lt;p&gt;開発機としては、スペックも低いし解像度も高くなく無いので、下手な実装を洗い出せるので良いのかも。&lt;/p&gt;

&lt;p&gt;ふむ、静電式でマーケット対応の一番安い奴でも探すかなぁ。。。&lt;/p&gt;

&lt;h4&gt;追記 (2011/11/06)&lt;/h4&gt;
&lt;p&gt;だれかに何故 0x041e なのか答えないといけない気がしたので。。。&lt;/p&gt;
&lt;p&gt;単純に dmesg の直近で出てくるログ行で判断するのが正解かなぁ。。。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;% sudo dmesg
...
USBMSC Identifier (non-unique): XXXXXXXXXXX 0 0x41e 0x4166 0x225
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;あとは USBストレージモードにして、システムプロファイルを参照するのも正解かぁ。。。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2266773610835481164?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2266773610835481164/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2266773610835481164' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2266773610835481164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2266773610835481164'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/05/tips-zentouch2-for-development-on.html' title='MacOSX で Zen Touch 2 (Android2.2)を開発端末にしてみる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2127072753664407781</id><published>2011-05-07T22:18:00.000+09:00</published><updated>2011-05-07T22:22:04.607+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='iOS'/><title type='text'>iOS の View Controller の lifecycle の図</title><content type='html'>&lt;p&gt;iOS の VIewController のライフサイクル図を書き起こしてみた。&lt;/p&gt;

&lt;p&gt;開発ドキュメントから読み取ったのだが、理解不足なためか不正確な部分も無きにしもあらず。精進せねば。&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/5695587813/"&gt;&lt;img src="http://farm4.static.flickr.com/3486/5695587813_7dc5299c64_t.jpg" height="71" width="100" alt="UIViewController のサイクル"/&gt;&lt;/a&gt;

&lt;p&gt;まぁ、いらないと思うが&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0BzuGmQrn2nhANTBlMWM3MjQtMmE1Yy00NmZjLWE1ZDYtMTBhNDYzNzZjYmVm&amp;hl=ja"&gt;PDF版 @ Google Docs&lt;/a&gt;もアップ。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2127072753664407781?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2127072753664407781/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2127072753664407781' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2127072753664407781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2127072753664407781'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/05/ios-view-controller-lifecycle.html' title='iOS の View Controller の lifecycle の図'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3486/5695587813_7dc5299c64_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1043833283311030197</id><published>2011-04-23T05:20:00.001+09:00</published><updated>2011-05-07T22:21:50.925+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android の Activity のlifecycleの図</title><content type='html'>&lt;p&gt;Android の基本の Activity の&lt;a href="http://developer.android.com/reference/android/app/Activity.html"&gt;ライフサイクルの図&lt;/a&gt;が開発サイトに乗ってる。&lt;/p&gt;

&lt;p&gt;これでも前後の文章で補完すれば分かるんだが、２〜3ヶ月後の自分はまた忘れてる可能性大なので、
ちょこっと弄ってみた。&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/5643829497/"&gt;&lt;img src="http://farm6.static.flickr.com/5105/5643829497_ffe0d80d04_m.jpg" height="85" width="115" alt="Android Activity 遷移図"/&gt;&lt;/a&gt;

&lt;p&gt;まぁ、いらないと思うが&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0BzuGmQrn2nhAZGI1NTgzZDMtNmQzMi00NjcyLWE4OGEtZDZiMTk2NDIyZTE5&amp;hl=ja"&gt;PDF版 @ google docs&lt;/a&gt; もアップ。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1043833283311030197?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1043833283311030197/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1043833283311030197' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1043833283311030197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1043833283311030197'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/04/android-activity-lifecycle.html' title='Android の Activity のlifecycleの図'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5105/5643829497_ffe0d80d04_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-4226150355593358710</id><published>2011-03-04T22:10:00.000+09:00</published><updated>2011-03-05T00:29:13.962+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Google提供の python ライブラリで Google Reader API を使ってみた</title><content type='html'>&lt;p&gt;Google のサービスと連携するには &lt;a href="http://code.google.com/intl/ja/apis/gdata/"&gt;Google Data API&lt;/a&gt; を使う。Googleが公式にサポートしているので、とても安心して使える。RSS リーダーとしてよく使われている Google Reader 用のAPI も。。。は、まだ公式には無い。&lt;/p&gt;

&lt;p&gt;まぁ、色々な人が解析しており、&lt;a href="http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI"&gt;GoogleReaderAPI&lt;/a&gt;のページが、詳細にまとまっている。&lt;/p&gt;

&lt;p&gt;なので、Google 提供の python ライブラリで、Google Reader API を叩いてみた&lt;/p&gt;

&lt;p&gt;ただ、サンプルを書いたあとで、&lt;a href="http://code.google.com/p/pyrfeed/"&gt;pyrfeed&lt;/a&gt;内にGoogleReader 用のライブラリが含まれていたのに気付いたので、そっちを使うのがいいのかも。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;インストール&lt;/h4&gt;
&lt;p&gt;MacPorts を使っているので、さくっとインストール。&lt;/p&gt;
&lt;pre class="screen"&gt;&lt;code&gt;% sudo port install py27-gdata
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;そうでないならば、&lt;a href="http://code.google.com/p/gdata-python-client/downloads/list"&gt;gdata-python-client&lt;/a&gt;から最新版をインストールする。&lt;/p&gt;

&lt;h4&gt;Google Reader 用の下準備と認証&lt;/h4&gt;
&lt;p&gt;gdata-python-client には、Reader サービスの固有の API は無いので、ベースのモノを適当に設定する必要がある。&lt;/p&gt;
&lt;pre class="screen"&gt;&lt;code&gt;import gdata.service

config = { 'Email': 'foobar@gmail.com', 'Passwd': 'password' }

# Google Reader サービス設定
service = gdata.service.GDataService(account_type='GOOGLE',
                                     service='reader',
                                     server='www.google.com',
                                     source='MyReaderHoge')

# Google アカウント設定とログイン
service.ClientLogin(config['Email'],config['Passwd'])

# 認証トークン(SIDの値)
print service.GetClientLoginToken()

# 書き込み用のトークンの取得
token = service.Get('/reader/api/0/token',converter=lambda x:x)
print "token:", token
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;'api/0'&lt;/code&gt;以下のレスポンスが AtomPub 形式では無く、小細工が必要である。gdata-python-clientには、ちょうど隙間が開いてるようである。。。&lt;/p&gt;

&lt;h4&gt;未読件数を取得&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;'api/0/unread-count'&lt;/code&gt;を JSON 形式で取得する&lt;/p&gt;
&lt;pre class="screen"&gt;&lt;code&gt;query = gdata.service.Query(feed='/reader/api/0/unread-count',
                            params={'all':'true', 'output':'json'})
feed = json.loads(service.Get(query.ToUri(), converter=lambda x:x))
unreadcounts = feed['unreadcounts']

# 全体の未読数を一番前に移動しとく
for i, item in enumerate(unreadcounts):
    if re.match(r'^user/\d+/state/com.google/reading-list$',item['id']):
        unreadcounts.pop(i)
        unreadcounts.insert(0,item)
        break

# 全体の未読数
print int(unreadcounts[0]['count'] if len(unreadcounts) &gt; 0 else 0)
#=&gt; 1

# 未読があるラベルとその未読数
for item in unreadcounts:
    if not re.match(r'^user/\d+/label',item['id']): continue
    print "count:%(count)s id: %(id)s" % item

#=&gt; count:1 id: user/16814486509924941024/label/android
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;すべてのラベルを取得&lt;/h4&gt;

&lt;pre class="screen"&gt;&lt;code&gt;query = gdata.service.Query(feed='/reader/api/0/tag/list',
                            params={'all':'true', 'output':'json'})
feed = json.loads(service.Get(query.ToUri(), converter=lambda x:x))
tags = feed['tags']

for item in tags:
    tag = re.sub(r'^user/\d+/',r'',item['id'])
    print "tag: %s" % tag
#=&gt; tag: state/com.google/starred
#=&gt; tag: state/com.google/broadcast
#=&gt; tag: label/android
#=&gt; tag: label/misc
#=&gt; tag: label/neta
#=&gt; tag: state/com.blogger/blogger-following
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;ラベルを指定して取得&lt;/h4&gt;
&lt;p&gt;android 関連の記事を 5 件見てみるかいな。。。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;query = gdata.service.Query(feed='/reader/atom/user/-/label/android',
                            params={'n': str(5)})
feed = service.Get(query.ToUri())
for entry in feed.entry:
    print "===="
    dom = xml.dom.minidom.parseString(entry.ToString())
    print dom.toprettyxml(indent="  ")
    print "===="
    print "href: %s" % entry.GetHtmlLink().href
    print "title: %s" % entry.title.text
    # print "%s" % entry.summary.text
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;未読を既読に変更&lt;/h4&gt;
&lt;p&gt;先の記事は、読んだから既読にする。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;# token, feed は、上に記載の書き込み用トークンと直前で取得した記事リスト
for entry in feed.entry:
    i = entry.id.text
    s = entry.source.extension_attributes['{http://www.google.com/schemas/reader/atom/}stream-id']
    ret = service.Post(urllib.urlencode({'i':i,
                                         'a':'user/-/state/com.google/read',
                                         's':s,
                                         'T':token,
                                         }),
                       '/reader/api/0/edit-tag',
                       converter=lambda x:x,
                       extra_headers={'Content-Type': 'application/x-www-form-urlencoded'})
    print i,ret
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;何でも無いが、この部分には半日悩んでしまった。&lt;/p&gt;
&lt;p&gt;何気ない POST パラメータを送信する POST 処理なのだが、&lt;code&gt;gdata.service.Post&lt;/code&gt; は &lt;code&gt;aplication/atom+xml&lt;/code&gt;形式のデータ送信を想定するため、明示的に &lt;code&gt;Content-Type&lt;/code&gt;を指定する必要がある！気づくまで、「&lt;code&gt;400 Bad Request&lt;/code&gt;」+「&lt;code&gt;X-Reader-Google-Bad-Token: true&lt;/code&gt;」に悩まされてしまった。&lt;/p&gt;

&lt;h4&gt;新しいフィードを登録&lt;/h4&gt;
&lt;pre class="screen"&gt;&lt;code&gt;sub = r'feed/http://headlines.yahoo.co.jp/rss/rps_dom.xml'
ret = service.Post(urllib.urlencode({'s':sub,
                                     'ac': 'subscribe',
                                     'T':token,
                                     }),
                   '/reader/api/0/subscription/edit',
                   converter=lambda x:x,
                   extra_headers={'Content-Type': 'application/x-www-form-urlencoded'})
print sub,'subscribe',ret
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;購読しているフィードを解除&lt;/h4&gt;
&lt;pre class="screen"&gt;&lt;code&gt;sub = r'feed/http://headlines.yahoo.co.jp/rss/rps_dom.xml'
ret = service.Post(urllib.urlencode({'s':sub,
                                     'ac': 'unsubscribe',
                                     'T':token,
                                     }),
                   '/reader/api/0/subscription/edit',
                   converter=lambda x:x,
                   extra_headers={'Content-Type': 'application/x-www-form-urlencoded'})
print sub,'unsubscribe',ret
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;参考&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.google.com/intl/ja/apis/gdata/"&gt;Google Data API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/gdata-python-client/"&gt;gdata-python-client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/pyrfeed/"&gt;pyrfeed&lt;/a&gt; (python googlreader)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI"&gt;GoogleReaderAPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/dharry/20100117/1263724784"&gt;ruby の googlereaderライブラリ で Google Reader API を使ってみた&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-4226150355593358710?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/4226150355593358710/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=4226150355593358710' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4226150355593358710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4226150355593358710'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/03/google-python-google-reader-api.html' title='Google提供の python ライブラリで Google Reader API を使ってみた'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-359599979984014649</id><published>2011-02-15T18:27:00.001+09:00</published><updated>2011-02-15T18:27:06.782+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='polipo'/><title type='text'>polipo + MacOSX で使う</title><content type='html'>&lt;p&gt;普通の PC にインストールした Linux サーバに Squid + Squidguard で使っていたんだが、
別サーバを必ず立ち上げていないと行けないのが面倒なので、、、
乗り遅れ感が否めないが、polipo を常用をする環境を整えてみた。&lt;/p&gt;

&lt;p&gt;移行に関しては、GUIは必要ないが launchd との繋ぎの設定ファイルを準備するのが面倒なので MacPorts パッケージを使いつつ、自前に用意したバイナリを使った。&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;p&gt;&lt;a href="http://www.pps.jussieu.fr/~jch/software/polipo/"&gt;本家サイト&lt;/a&gt;で公開されている git レポジトリを元に数点修正したものを使った。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; 64 bit 環境だと stdarg 絡みで落ちるっぽい部分？を修正&lt;/li&gt;
&lt;li&gt; redirector の入出力の行仕様をpolipo側でダミーで合わせた&lt;/li&gt;
&lt;li&gt; censorReferer を maybe に設定した時、サブドメインに加えて指定のサイトリストも Referer を通す機能を追加&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;修正した&lt;a href="https://github.com/fukusaka/polipo"&gt;履歴&lt;/a&gt;はgithubに公開してある。&lt;/p&gt;

&lt;p&gt;最後の機能は、画像用を公開してるドメインが短縮した別ドメインに置き Referer で制限しているサイトに対応するためで、設定値&lt;code&gt;uncensorRefererFile&lt;/code&gt;に、forbiddenと同じ形式で書けば、Referer を削除せずにスルーしてくれる。&lt;/p&gt;

&lt;p&gt;まぁ、polipo も使えない事はないかなぁ。。。あとは、forbidden/redirector で Location を返す挙動がなんとかなれば、いいのになぁ。。。もうちょっと弄ってみるかなぁ&lt;/p&gt;

&lt;/div&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-359599979984014649?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/359599979984014649/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=359599979984014649' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/359599979984014649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/359599979984014649'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/02/polipo-macosx.html' title='polipo + MacOSX で使う'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-462575606759623805</id><published>2011-01-27T15:03:00.001+09:00</published><updated>2011-01-27T15:09:00.890+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Evernote'/><title type='text'>Mail.app の備忘録から Evernote に移行する</title><content type='html'>&lt;p&gt;発売日に予約した IS03 が漸く入荷したので受け取ってきた。&lt;/p&gt;
&lt;p&gt;いじり倒せる Android 端末が入手できた。
事前に電池のもちが異様に悪いと噂があったので、Killerアプリ等でコマメにアプリを終了し倒すように気を付けているので、ある程度許せる範囲に留まっている気がする。&lt;/p&gt;
&lt;p&gt;まぁ、ノートパソコンにあるような大容量バッテリとかが出てくるのは、歓迎するが。。。どうなんだろう。&lt;/p&gt;

&lt;p&gt;MacOSX の Mail.app には備忘録の機能が付いており、iOSとの組み合わせで同期が可能である。
結構便利でサクサク使っていたが、新規に Android でも同じようなことがしたくなって調べてみると、
どうも Evernoteが良いらしい。&lt;/p&gt;

&lt;p&gt;メモに特化したアプリ、各プラットフォームにアプリがあり、相互に連携できる。。。なんか世の中凄いことになってるんだなぁ。。。&lt;/p&gt;

&lt;p&gt;Mail.app の備忘録に蓄積したメモ書きを EverNote にサクっと移行するには、、、&lt;/p&gt;

&lt;p&gt;どうすれば良いのだろうか？&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;p&gt;何のことはない AppleScript を使うのが定石らしい。&lt;/p&gt;
&lt;p&gt;参考URLの先コードを 「ユーティリティ」&amp;gt;「AppleScriptエディタ」にコピペして、「mailbox "Notes"」に書き換えて、実行すれば、「Imported Notes」という名前のノートブックの中にほぼ全部(「このMac内」の奴)コピー出来た。&lt;/p&gt;

&lt;p&gt;あとは、ちまちまタグ付けや整理すればまた使いやすくなるのかなぁ。。。&lt;/p&gt;

&lt;h4&gt;参考URL&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://snipplr.com/view/37479/import-notes-from-mailapp-into-evernote-applescript/"&gt;Import Notes from Mail.app Into Evernote (Applescript)
&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-462575606759623805?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/462575606759623805/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=462575606759623805' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/462575606759623805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/462575606759623805'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2011/01/import-notes-from-mailapp-into-evernote.html' title='Mail.app の備忘録から Evernote に移行する'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-306346040956072442</id><published>2010-11-09T03:12:00.001+09:00</published><updated>2010-11-09T03:30:21.246+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>Google Chrome が吐き出すログをちょっとだけ片付ける</title><content type='html'>&lt;p&gt;Mac OSX 上の Google Chrome は、何故か system.log にデバックか実装上の何かしらの情報を沢山吐く。&lt;/p&gt;

&lt;p&gt;システムの他の問題を調査するときジャマ臭い。。。なんとかならんのかなぁ。&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;p&gt; syslogd には高度なフィルタ機能が実装されていないので、system.log に書き出される行に関しては何ともしがたい。&lt;/p&gt;

&lt;p&gt;但し、MacOSXでは syslogd とは別に asl という仕組みが並行して導入されている。「コンソール.app」 のデータベース検索以下の情報は asl の仕組みから取得している。&lt;/p&gt;

&lt;p&gt;asl には、結構便利なフィルタ機能が実装されている。なので、件のログを収集しないようにするには、/etc/asl.conf の最後に次の設定を付け加えれば良さそうである。
&lt;pre class="screen"&gt;&lt;code&gt;# /etc/asl.conf に追加
# ommit com.google.Chrome
? [S= Sender com.google.Chrome] ignore
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;
&lt;p&gt;良く考えれば、Chromeからのログを除外した「新規データベース検索」を登録しとけば良かったのかぁ。。。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-306346040956072442?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/306346040956072442/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=306346040956072442' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/306346040956072442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/306346040956072442'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/11/omit-log-message-from-google-chrome.html' title='Google Chrome が吐き出すログをちょっとだけ片付ける'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-42333426879971430</id><published>2010-11-06T20:34:00.001+09:00</published><updated>2010-12-23T23:21:07.830+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>MacOSXでRAMディスク上にブラウザのキャッシュを割り当てる</title><content type='html'>&lt;p&gt;MacBook Pro 15(Late 2008)は公式では最大メモリ容量は4Gまでサポートなのだが、ファームウェアを最新のアップデート(&lt;a href="http://support.apple.com/kb/DL975?viewlocale=ja_JP"&gt;MacBook Pro EFI ファームウェア・アップデート 1.8&lt;/a&gt;)を適用すれば、最大 8G まで普通に認識し速度低下せずに使えるそうである。&lt;/p&gt;

&lt;p&gt;2009年末位には結構高価だったのだが、最近値下がりして手ごろになってきたので、交換した。
次いで HDD も交換して SSD (TOSHIBA THNS256GG8BBAA)に入れ替えた。&lt;/p&gt;

&lt;p&gt;まぁ、SSD に入れ替えたお陰でOSの起動もアプリの起動も機敏で、いい感じ。&lt;/p&gt;

&lt;p&gt;空きメモリが増えてたので、ちょっと1Gくらいブラウザのキャッシュに割り当ててみた。&lt;/p&gt;

&lt;p&gt;MacOSX では「&lt;code&gt;hdid&lt;/code&gt;」コマンドを使えば簡単にRAMディスクを作成できる。
&lt;pre class="screen"&gt;&lt;code&gt;ramlabel="RamDisk"
ramdev=$(hdid -nomount ram://10240)
diskutil eraseDisk HFS+ ${ramlabel} ${ramdev}
&lt;/code&gt;&lt;/pre&gt;
で、コイツを &lt;code&gt;rc.local&lt;/code&gt;に仕込んでやれば、起動時にRAMディスクを作成できる。&lt;/p&gt;

&lt;p&gt;なぜか上手く行かない。起動後に手打ちで入力すれば、出来るのだが、、、&lt;/p&gt;

&lt;p&gt;はて、なんでだろうかぁ？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;まぁ、ググっても明快な正解がわからない。。。&lt;/p&gt;
&lt;p&gt;当てずっぽに答えれば、『「&lt;code&gt;hdiejectd&lt;/code&gt;」デーモンが起動して、正常に定常状態に無いときには「&lt;code&gt;hdid&lt;/code&gt;」は機能しない』っぽいのかなぁ。。。多分 SSD で起動が拙速になったからだと思うが、、、&lt;/p&gt;

&lt;p&gt;上記の憶測のもとに rc.local を次のようにすれば、起動直後にユーザ用にRAMディスクに載ってる作業領域が作れるようになる。
&lt;pre class="screen"&gt;&lt;code&gt;#!/bin/sh

RAMSIZE=1024 # MBtyes
MP=/tmp/ramdisk
MYNAME=username

# Start hdiXXX
launchctl start com.apple.hdiejectd

sleep 5

# Make RamDIsk
RAMNUMSECTORS=$((${RAMSIZE}*2048))
ramdev=$(hdid -verbose -kernel -nomount ram://${RAMNUMSECTORS})
newfs_hfs -v ramdisk $ramdev
[ -d ${MP} ] || mkdir ${MP}
mount -t hfs -o nobrowse $ramdev ${MP}
# Finder.appで /Volume 以下で参照したいときは nobrowse を外す

# for ${MYNAME}
mkdir ${MP}/${MYNAME}
chown -R ${MYNAME}:${MYNAME} ${MP}/${MYNAME}
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;あとは、ログイン項目に、次のような キャッシュを調節するシェルスクリプトを埋め込んだ Automator アプリを登録すれば良い。
&lt;/p&gt;
&lt;script src="https://gist.github.com/730359.js?file=gistfile1.sh"&gt;&lt;/script&gt;

&lt;p&gt;まぁ、サクサクになったのかなぁ？&lt;/p&gt;

&lt;h4&gt;追記 (2010/11/06)&lt;/h4&gt;
&lt;p&gt;コードをちょっとだけ整理して、Xcode と TMPDIR もRAMDISKにのせてみた。&lt;/p&gt;

&lt;h4&gt;追記 (2010/12/23)&lt;/h4&gt;
&lt;p&gt;TMPDIR もRAMDISKに載せると、どうも ramdisk のアクセス出来ない現象が時々発生し、キャッシュを載せている Chromeなどのブラウザが固まって、まともに使えない結果になる。。。どうも TMPDIR は ramdisk に載せて運用するのは難しそうである。仕方がないので、設定を削除してみた。。。ここ１ヶ月は、安定してるっぽいので正解かな。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-42333426879971430?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/42333426879971430/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=42333426879971430' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/42333426879971430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/42333426879971430'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/11/use-ramdisk-on-macosx.html' title='MacOSXでRAMディスク上にブラウザのキャッシュを割り当てる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1747284003675446259</id><published>2010-10-16T15:59:00.001+09:00</published><updated>2010-10-16T15:59:14.504+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>dotfiles を github に上げてみた</title><content type='html'>&lt;p&gt;dotfiles を公開レポジトリに上げるのが最近の流行らしい。なので、僕も github に上げてみた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://github.com/fukusaka/dotfiles"&gt;http://github.com/fukusaka/dotfiles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結構古くから VCS に入れて適当に履歴を記録したんだが、
「git rebase -i 」を使うと commit を修正できるので、
CVS ～ Subversion ～ git に変更する過程の履歴を
適当に整理してみた。&lt;/p&gt;

&lt;p&gt;うん、なんとも紆余曲折がある、、、未だにちょっと壊れ気味の設定だなぁ。。。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1747284003675446259?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1747284003675446259/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1747284003675446259' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1747284003675446259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1747284003675446259'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/10/dotfiles-github.html' title='dotfiles を github に上げてみた'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3439304347564649759</id><published>2010-10-01T03:29:00.001+09:00</published><updated>2011-02-12T16:57:15.561+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Squeeze に移行してみる</title><content type='html'>&lt;p&gt;
squeeze がフリーズされて、暫く経つので安定の良い頃合いかなと、
自宅のメインのサーバを lenny から squeeze に移行してみた。&lt;/p&gt;

&lt;p&gt;何とも、安定してる。。。&lt;/p&gt;

&lt;p&gt;lenny ベースだと、古く使いたい機能が無いので、
適当に野良バックポートしてた &lt;code&gt;netatalk&lt;/code&gt; と &lt;code&gt;kvm/libvirt-bin&lt;/code&gt; とか幾つかあったのが、
標準のパッケージで済むのが良い。&lt;/p&gt;

&lt;p&gt;ただ、１点だけ手作業が必要だった。
どうも autofs のマップファイルが LDAP を参照しているとき、
マスタでは slapd が立ち上がらないタイミング(autofs より slapd が後)なので、
うまく機能しない。。。&lt;/p&gt;

&lt;p&gt;まだ sysvinit ベースなので、次のようにした。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;update-rc.d -f slapd remove
update-rc.d slapd defaults 18 82
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;del&gt;&lt;code&gt;upstart&lt;/code&gt;に移行した暁には、Debian もいい感じになるのかなぁ&lt;/del&gt;&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;h4&gt;追記 (2011/02/12)&lt;/h4&gt;

&lt;p&gt;Debian squeeze から upstart の時代だといった奴は、、、
sysvinit と insserv の合わせ技が標準じゃないかぁ！！&lt;/p&gt;

&lt;p&gt;なので、&lt;code&gt;/etc/init.d/autofs&lt;/code&gt; の先頭に書かれた insserv 設定行の該当部分を下記のように書き換えると、対処ができる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
# Should-Start: ypbind nslcd slapd
# Should-Stop: ypbind nslcd slapd
...&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3439304347564649759?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3439304347564649759/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3439304347564649759' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3439304347564649759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3439304347564649759'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/10/squeeze.html' title='Squeeze に移行してみる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1169210594047656812</id><published>2010-07-01T16:54:00.001+09:00</published><updated>2010-09-06T23:39:56.724+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iSCSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux SCSI Target Framework を使う</title><content type='html'>&lt;p&gt;Debian/Ubuntu の iSCSI Target のお話が出てくると、&lt;a href="http://iscsitarget.sourceforge.net/"&gt;iSCSI Enterprise Target (IET)&lt;/a&gt;が必ず出てくる。&lt;/p&gt;

&lt;p&gt;まぁ、良いんだけど kernel ソースに取り込まれていないモジュールを使うので、
時々、他の複合的な要因かもしれないが、あさっての場面で oops は吐いくれたりする。&lt;/p&gt;

&lt;p&gt;Fedora/RHEL/CentOS とかだと、既に&lt;a href="http://stgt.sourceforge.net/"&gt;Linux SCSI Target Framework(tgt)&lt;/a&gt;に移行している。コイツは 2.6.20 頃 kernel ソースに取り込まれているので、
結構安定してるんじゃないかなと思う。&lt;/p&gt;

&lt;p&gt;tgt の性能に関しては、2006 年頃の論文「&lt;a href="http://ci.nii.ac.jp/Detail/detail.do?LOCALID=ART0007520362&amp;lang=ja"&gt;Linuxにおけるストレージシステムフレームワークの実現(オペレーティングシステム)&lt;/a&gt;」を見る限り、IET と若干落ちるぐらいなので、気にしなくても良いかも。&lt;/p&gt;

&lt;p&gt;そろそろ Debian/Ubuntu でも Linux SCSI Target Framework(tgt)に移行する時期だ。&lt;/p&gt;

&lt;p&gt;ユーザベースのツール群 &lt;a href="http://packages.qa.debian.org/t/tgt.html"&gt;tgt パッケージ&lt;/a&gt;は、squeeze/lucid で用意されているみたいなので、やってみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;ハマりポイントが２点ある。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;init スクリプトが見当たらない。バグ(&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=577925"&gt;#577925&lt;/a&gt;、&lt;a href="https://bugs.launchpad.net/ubuntu/+source/tgt/+bug/574554"&gt;BUG  #574554&lt;/a&gt;)として登録されている。&lt;/li&gt;
&lt;li&gt;tgt-admin 内で、デバイスが既に利用してるかどうかチェックする部分が上手く動いていない。と言うか、Debian/Ubuntuでは /bin/sh が dash (ash の亜種) になっているため、perl の system関数の呼び出しのスクリプト片に移植性がある書き方が要求される。コイツを踏んでる。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;なので Fedoraのinitスクリプトを参考に、upstart 用のイベント設定ファイル？ &lt;a href="http://gist.github.com/459680#file_tgtd.conf"&gt;/etc/init/tgtd.conf&lt;/a&gt;を書き下し、tgt-admin の修正パッチ&lt;a href="http://gist.github.com/459680#file_tgt_admin.diff"&gt;tgt-admin.diff&lt;/a&gt;を作ってみた。&lt;/p&gt;

&lt;p&gt;例として、単一ディスクをiSCSIで公開する事を考える&lt;/p&gt;

&lt;p&gt;以下の設定ファイルを書き下し、「tgt-admin -e」とタイプすれば良い。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/tgt/targets.conf&lt;/code&gt;
&lt;pre class="screen"&gt;default-driver iscsi

&amp;lt;target iqn.2010-07.com.example:stroage.fserver.data&amp;gt;
	driver iscsi
	backing-store /dev/sdb
&amp;lt;/target&amp;gt;
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;実際にiSCSIターゲット設定が上手く行ったかは、次のようにする。
&lt;pre class="screen"&gt;# tgt-admin -s
Target 1: iqn.2010-07.com.example:stroage.fserver.data
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: None
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 34360 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/sdb
    Account information:
    ACL information:
        ALL
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;あとは、巷に溢れている tgt の設定方法が使える。
上手く設定すると、CDドライブやリムーバルディスクとかも、ネット越しで使えるようになるらしい。&lt;/p&gt;

&lt;h4&gt;追記 (2010/09/06)&lt;/h4&gt;

&lt;p&gt;気づいてみると、二番目のハマり点も修正済み(&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=589716"&gt;#589716&lt;/a&gt;)になったようである。&lt;/p&gt;
&lt;p&gt;debian squeeze がリリースしたら、tgt をサクッと使うようになれる訳ですね。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1169210594047656812?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1169210594047656812/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1169210594047656812' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1169210594047656812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1169210594047656812'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/07/use-linux-scsi-target-framework.html' title='Linux SCSI Target Framework を使う'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2580510710674209366</id><published>2010-06-08T13:27:00.001+09:00</published><updated>2010-06-08T14:06:06.273+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='TeX'/><title type='text'>日本語 texi から栞付きPDFを生成する</title><content type='html'>&lt;p&gt;
GNU のドキュメントシステムに texi 形式のファイルがある。
この形式のファイルから適当なコマンドを使って、info / dvi / pdf / html 等の
文書に変換できる。&lt;/a&gt;

&lt;p&gt;最近では PDF 形式に変換するのに pdfetex を使う事で dvi 経由せずに直接 pdf に変換できる。
ただ、pdfetex は日本語化されていないので、日本語で書かれた texi は pTeX と dvipdfmx を組み合わせて変換する必要がある。&lt;/p&gt;

&lt;pre class="screen"&gt;% TEX=ptex texi2dvi filename.tex
% dvipdfmx filename.dvi
&lt;/pre&gt;

&lt;p&gt;このやり方でも pdfetex を使った変換と同様な PDF が作れるが、一つだけ違いがある。&lt;/p&gt;
&lt;p&gt;栞/ブックマークが付かない。&lt;/p&gt;

&lt;p&gt;実用上は問題は無いが、栞が付いた方が使い易い。。。はてどうしたもんだかぁ&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;texinfo.tex の日本語化&lt;/h4&gt;

&lt;p&gt;変換用のマクロ texinfo.tex の日本語化は本家 &lt;a href="http://www.gnu.org/software/texinfo/"&gt;texinfo&lt;/a&gt;には含まれていない。
現在良くメインテナンスされているものとして、&lt;a href="http://w32tex.org/index-ja.html"&gt;角藤版pTeX&lt;/a&gt;の texinfotools-w32.tar.bz2 がある。&lt;/p&gt;

&lt;p&gt;ただ、僕も昔に texinfo.tex や makeinfo のナンチャって日本語化対応したことがある。
HDD の隅にある断片を探して調べてみたら、どうも elisp-manual-19-2.4-jp2.0.tar.gz を起点にして
作業したもので、検索をかけるとホンの僅かだが OSS の文書変換用に取り込まれている。。。&lt;/p&gt;

&lt;p&gt;まぁ、自分の成果から起点とするのが、やり易いからコイツから作業するのがいいやぁ&lt;/p&gt;

&lt;p&gt;&lt;a href="http://project.ktug.or.kr/dvipdfmx/"&gt;dvipdfmx&lt;/a&gt; が PDF 生成用の special は
「&lt;a href="http://gaspra.kettering.edu/dvipdfm/dvipdfm.pdf"&gt;Dvipdfm User’s Manual&lt;/a&gt;」/「&lt;a href="http://project.ktug.or.kr/dvipdfmx/doc/tb94cho.pdf"&gt;DVI specials for PDF generation&lt;/a&gt;」
にキッチリ記載があり、栞の生成は難しくはなさそうである。&lt;/p&gt;

&lt;p&gt;で、texinfo.tex の履歴だけ&lt;a href="http://github.com/fukusaka/texinfo-ja"&gt;github fukusaka/texinfo-ja&lt;/a&gt; に上げて、texinfo.tex の最新版と組み合わせて使えるように修正、同時に栞生成コマンド&lt;code&gt;@usedvipdfmx&lt;/code&gt;を追加してみた。&lt;/p&gt;

&lt;h4&gt;使い方&lt;/h4&gt;

&lt;p&gt;texi のヘッダ部を次のように修正する。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename filename.info
@settitle TITLE
@documentlanguage ja
@documentencoding utf-8
@iftex
@usedvipdfmx
@end iftex
@c %**end of header
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;で、pTeX / dvipdfmx を使って、栞付きのPDFが生成できる。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;iOS4のPDFリーダーは栞付きが上手く扱えるのだろうかぁ。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2580510710674209366?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2580510710674209366/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2580510710674209366' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2580510710674209366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2580510710674209366'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/06/generate-pdf-with-bookmark-on.html' title='日本語 texi から栞付きPDFを生成する'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-777056391806317387</id><published>2010-05-26T23:45:00.000+09:00</published><updated>2010-06-16T08:42:00.557+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Cocoa Emacs のフレームをSpaces のワークスペースの上下左右に飛ばす。</title><content type='html'>&lt;p&gt;個人的な使い方の問題だろうが、emacs に凝っていた頃は仮想ディスクトップ毎にフレームを置いた使い方をしていた。
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/03/emacs.html"&gt;emacs のフレームを仮想ディスクトップの上下左右に飛ばす&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
この使い方の要は、elisp からフレームを任意の位置、任意のワークスペースに移動できる事であった。&lt;/p&gt;

&lt;p&gt;既に MacOSX では仮想ディスクトップが Spaces としてサポートされている。
位置移動はできるようだが、ワークスペースの移動はどうもわからない。。。&lt;/p&gt;
&lt;p&gt;マウスでチマチマ動かすのは、ちょっといただけない。。。&lt;/p&gt;
&lt;p&gt;どうしたもんだろう？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;Quartz のなんか&lt;/h4&gt;

&lt;p&gt;MacOSX の仮想ディスクトップは Leopard で初めてお目見えしたが、
結構前から Window Server (Quartz Compositor/Core Graphics Services/Quartz Window Services...一体いくつの名称があるんだか。。。)には実装されていたそうである。
Tiger の時代から仮想ディスクトップがサードパーティのものがあったのはそういう訳らしい。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.cocoadev.com/index.pl?CoreGraphicsPrivate"&gt;CocoaDev: CoreGraphicsPrivate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.apple.com/mac/library/documentation/Carbon/Reference/CGWindow_Reference/Reference/Functions.html#//apple_ref/doc/uid/TP40008073-CH2-SW1"&gt;Quartz Window Services Reference: Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xcatsan.blogspot.com/2008/03/2-window.html"&gt;Cocoaの日々: 画面キャプチャその2 - Window選択の視覚効果&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/2308820/how-can-i-programatically-move-one-terminal-app-window-to-another-space"&gt;How can I programatically move one Terminal.app window to another space? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;で、コイツのAPIのほとんどが今でも非公開になっている。。。断片的には、スクリーンキャプチャ用途レベルのものが公開されている。。。なんとも厄介。&lt;/p&gt;

&lt;p&gt;先人が調べ尽くした結果として、最後のリンクの先の内容が、
特定のウィンドウを任意のワークスペースに移動する方法らしい。&lt;/p&gt;

&lt;p&gt;模式コードは次のようになる。(CGSPrivate.hは一番目のリンク先にあるもの)&lt;/p&gt;
&lt;pre class="screen"&gt;&lt;code&gt;#import &amp;lt;CGSPrivate.h&amp;gt;
...
NSWindow *win = ...;
CGSConnection cid = _CGSDefaultConnection();
CGSWindow wid = [win windowNumber]; // ?
CGSMoveWorkspaceWindowList(cid, &amp;wid, 1, workspace);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;CGSを解析した作られた CGSPrivate.h でのCGSWindow と
Appleから出ているドキュメントに出てくる CGWindowID とは
window server 内で割り振られた番号で同じ実体と思われるが、
NSWindow の windowNumber のドキュメントには、それとは違うと書かれている。
混ぜても動いたから多分良いかと思われるが、、、ここいらはぼかしたい内容なのかなぁ。。。分からんなぁ林檎は。&lt;/p&gt;

&lt;p&gt;まぁ、ここまで分かれば、出来たも同然〜。&lt;/p&gt;

&lt;p&gt;で、適当にコマンドを作ってみた。&lt;/p&gt;

&lt;a href="http://gist.github.com/414559#file_cgsutil.m"&gt;cgsutil.m&lt;/a&gt;

&lt;h4&gt;Emacs.appの改造&lt;/h4&gt;

&lt;p&gt;(frame-parameters)には window-id があるから、Cocoa Emacs では多分コイツがフレームウィンドウの CGWindowID のはずで、コイツと飛ばしたい workspace 番号を適当に作ったコマンドに渡して、お仕舞いかなぁ。&lt;/p&gt;

&lt;p&gt;わぁーい。らくちん。&lt;br /&gt;&lt;br /&gt;はぅ。。。&lt;/p&gt;

&lt;p&gt;Cocoa Emacs では window-id の値は、1から単調増になるように割り振った全く意味の無い番号でした。&lt;/p&gt;

&lt;p&gt;仕様が無いので、次の追加機能を付けるパッチ(&lt;del&gt;emacs-23-cgs-workspace.diff&lt;/del&gt;)
を作ってみた。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;フレームパラメータ&lt;code&gt;ns-window-id&lt;/code&gt;に、CGWindowIDと思われる値&lt;/li&gt;
&lt;li&gt;&lt;del&gt;フレームパラメータ&lt;code&gt;ns-workspace-id&lt;/code&gt;に、フレームのworkspace番号&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;フレームを指定のworkspaceに移動する関数 &lt;code&gt;(set-frame-ns-workspace FRAME WORKSPACE)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;まぁ、最初の一つだけで十分だが、後二つは組込まなくてもいいかも。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;上のパッチを適用した Emacs.app に適当な elispを書くと、１コマンドで複数のフレームを特定のワークスペース／特定の位置に開く事が出来るようになった。&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/4640977445/"&gt;&lt;img src="http://farm5.static.flickr.com/4055/4640977445_5c74dec2ec_m.jpg" height="150" width="240" alt="screenshot-2010-05-26 17.54.51"/&gt;&lt;/a&gt;

&lt;p&gt;うん〜〜。快適じゃ。&lt;br /&gt;&lt;br /&gt;はぅ。。。&lt;/p&gt;

&lt;p&gt;Cocoa Emacs で８フレームも開くと、キー入力が引っ掛かるようになり、Emacsプロセス自体のCPU利用率もイマイチ高い。イベント処理方法にまだ難があるのかなぁ。&lt;/p&gt;

&lt;p&gt;４フレームくらいで抑えないとスムーズに使えないかなぁ。。。&lt;/p&gt;

&lt;h4&gt;追記 (2010/06/16)&lt;/h4&gt;

&lt;p&gt;複数のフレームを開いたときCPU利用率が高くなるのは、本パッチ内のframe-paramaters にワークスペース番号を追加するのが原因だった。。。frame-parameters の取得は不随に起きるらしくのでどうも軽くなくては行けない。&lt;/p&gt;

&lt;p&gt;なので、workspace番号は取得関数から得るように変更し、workspace 絡みの部分を分けたパッチにしてみた。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://gist.github.com/414251#file_emacs_23_cg_window_id.diff"&gt;emacs-23-cg-window-id.diff&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;フレームパラメータ&lt;code&gt;ns-window-id&lt;/code&gt;に、CGWindowIDと思われる値&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gist.github.com/414251#file_emacs_23_cgs_workspace.diff"&gt;emacs-23-cgs-workspace.diff&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;指定フレームのworkspaceを取得する関数 &lt;code&gt;(frame-ns-workspace FRAME)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;フレームを指定のworkspaceに移動する関数 &lt;code&gt;(set-frame-ns-workspace FRAME WORKSPACE)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ふむ。&lt;br/&gt;
８フレームを開いても、キー入力が引っ掛かる症状は無くなった！！&lt;br/&gt;
すごく快適〜ん。
&lt;/p&gt;

&lt;p&gt;パッチを切ったり張ったり入れ替えたりする(&lt;a href="http://progit.org/book/ja/ch6-4.html"&gt;1&lt;/a&gt;)のに、git rebase -i は極めて便利。git 優秀だなぁ&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-777056391806317387?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/777056391806317387/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=777056391806317387' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/777056391806317387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/777056391806317387'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/05/cocoa-emacs-spaces.html' title='Cocoa Emacs のフレームをSpaces のワークスペースの上下左右に飛ばす。'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4055/4640977445_5c74dec2ec_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8888257701499672814</id><published>2010-05-18T00:13:00.001+09:00</published><updated>2010-05-27T23:25:11.083+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs で文法チェック</title><content type='html'>&lt;p&gt;Emacs でプログラムを書く人々は、リアルタイムに文法チェックをするために &lt;a href="http://www.emacswiki.org/FlyMake"&gt;flymake&lt;/a&gt; を使うらしい。&lt;/p&gt;

&lt;p&gt;以前聞き覚えがあるが、何をする物か分からないのでスルーした奴だが、結構使えるものだったのかぁ。&lt;/p&gt;

&lt;p&gt;なので flymake の設定をしてみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;Quick Start&lt;/h4&gt;

&lt;p&gt;詳細は info マニュアルに書かれているが、
使い始めの設定は次の通りになる。この状態で、何もせずに Perl/PHP の文法チェックは行なえる(perl/php コマンドがあればの話だが)。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;(require 'flymake)

;; GUIの警告は表示しない
(setq flymake-gui-warnings-enabled nil)

;; 全てのファイルで flymakeを有効化
(add-hook 'find-file-hook 'flymake-find-file-hook)

;; M-p/M-n で警告/エラー行の移動
(global-set-key "\M-p" 'flymake-goto-prev-error)
(global-set-key "\M-n" 'flymake-goto-next-error)

;; 警告エラー行の表示
(global-set-key "\C-cd" 'flymake-display-err-menu-for-current-line)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;次に C/C++ で文法チェックを可能にするには、
Makefile を使い、次の様な check-syntax ルールを追加すればよい。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;PHONY: check-syntax
check-syntax:
    $(CC) -Wall -Wextra -pedantic -fsyntax-only $(CHK_SOURCES)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ここまですると、編集途中にリアルタイムに文法エラー/警告の部分に色が付き、分かり易い。&lt;/p&gt;

&lt;p&gt;なるほど、、、これは素晴らしい。&lt;/p&gt;

&lt;p&gt;以下の設定は、好きずきだと思う&lt;/p&gt;

&lt;h4&gt;警告エラー行の表示のカスタマイズ&lt;/h4&gt;

&lt;p&gt;警告エラー行の表示は、
プラットホーム毎のポップアップメニュー実装が使われるが、
色々検索すれば出てくるが、２通りのカスタマイズが良く知られている。
&lt;ol&gt;
&lt;li&gt;Minibufに表示する。&lt;/li&gt;
&lt;li&gt;popup.el(auto-complete に含まれている)のpopup-tipsで表示する。&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;;; Minibuf に出力
(defun my-flymake-display-err-minibuf-for-current-line ()
  "Displays the error/warning for the current line in the minibuffer"
  (interactive)
  (let* ((line-no            (flymake-current-line-no))
         (line-err-info-list (nth 0 (flymake-find-err-info flymake-err-info line-no)))
         (count              (length line-err-info-list)))
    (while (&amp;gt; count 0)
      (when line-err-info-list
        (let* ((text       (flymake-ler-text (nth (1- count) line-err-info-list)))
               (line       (flymake-ler-line (nth (1- count) line-err-info-list))))
          (message "[%s] %s" line text)))
      (setq count (1- count)))))

;; popup.el を使って tip として表示
(defun my-flymake-display-err-popup.el-for-current-line ()
  "Display a menu with errors/warnings for current line if it has errors and/or warnings."
  (interactive)
  (let* ((line-no            (flymake-current-line-no))
         (line-err-info-list (nth 0 (flymake-find-err-info flymake-err-info line-no)))
         (menu-data          (flymake-make-err-menu-data line-no line-err-info-list)))
    (if menu-data
      (popup-tip (mapconcat '(lambda (e) (nth 0 e))
                            (nth 1 menu-data)
                            "\n")))
    ))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;僕としては popup.el を使うのが結構好み&lt;/p&gt;

&lt;h4&gt;check-syntaxターゲットルール&lt;/h4&gt;

&lt;p&gt;先に述べて Makefile の check-syntaxターゲットルールでは一種類の文法チェックプログラムしか使えない。。。
gcc でチェックできるものは全てチェック出来るから、気を回す必要は無いかもしれない。&lt;/p&gt;
&lt;p&gt;GNU make を使えば、拡張子毎に文法チェックプログラムを選べるルールの書き方がある。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;CHECKSYNTAX.c = $(CC) $(CFLAGS) $(CPPFLAGS) -Wall -Wextra -pedantic -fsyntax-only
CHECKSYNTAX.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -Wall -Wextra -pedantic -fsyntax-only

check-syntax: $(addsuffix -check-syntax,$(CHK_SOURCES))

%.c-check-syntax:
	$(CHECKSYNTAX.c) $*.c

%.cc-check-syntax:
	$(CHECKSYNTAX.cc) $*.cc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;まぁ、ここまで書く奴はいないかぁ。。。&lt;/p&gt;

&lt;h4&gt;Makefileが無くてもC/C++の文法チェック&lt;/h4&gt;

&lt;p&gt;Makefileが無ければ、直接 gcc で文法チェックをし、
Makefileがあればcheck-syntaxターゲットルールを使いたい場合は、
次の設定をすれば良い。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;(defun flymake-simple-generic-init (cmd &amp;optional opts)
  (let* ((temp-file  (flymake-init-create-temp-buffer-copy
                      'flymake-create-temp-inplace))
         (local-file (file-relative-name
                      temp-file
                      (file-name-directory buffer-file-name))))
    (list cmd (append opts (list local-file)))))

;; Makefile が無くてもC/C++のチェック
(defun flymake-simple-make-or-generic-init (cmd &amp;optional opts)
  (if (file-exists-p "Makefile")
      (flymake-simple-make-init)
    (flymake-simple-generic-init cmd opts)))

(defun flymake-c-init ()
  (flymake-simple-make-or-generic-init
   "gcc" '("-Wall" "-Wextra" "-pedantic" "-fsyntax-only")))

(defun flymake-cc-init ()
  (flymake-simple-make-or-generic-init
   "g++" '("-Wall" "-Wextra" "-pedantic" "-fsyntax-only")))

(push '("\\.[cC]\\'" flymake-c-init) flymake-allowed-file-name-masks)
(push '("\\.\\(?:cc\|cpp\|CC\|CPP\\)\\'" flymake-cc-init) flymake-allowed-file-name-masks)
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;取り敢えず、次いでに ruby/bash の文法チェックを追加したのが、
今現在の設定になっている。&lt;/p&gt;

&lt;a href="http://gist.github.com/403836#file_45flymake.el"&gt;45flymake.el&lt;/a&gt;

&lt;p&gt;あとは Python/Java/HTML/CSS をチェックするのがあれば良いが、、、
これくらい素のflymakeに含まれていればいいのになぁ。。。&lt;/p&gt;
&lt;p&gt;あと&lt;a href="http://cedet.sourceforge.net/semantic.shtml"&gt;Semantic&lt;/a&gt;かぁ。。。&lt;/p&gt;

&lt;h4&gt;追記 (2010/05/24)&lt;/h4&gt;

&lt;p&gt;暫く使ってみたが、基本動作で２点だけイマイチな挙動を修正しないと、ストレスが溜まりまくる。
&lt;ol&gt;
&lt;li&gt;ファイルもしくは上位ディレクトリに書き込み権限が無い場合、messageを吐いて開くのを諦めてしまう。。。&lt;/li&gt;
&lt;li&gt;文法チェックプログラムが無い場合 flymake がオフになるが、それでも何かのプロセス？が残って、後々無意味な y の連打をしないといけない。。。&lt;/li&gt;
&lt;/ol&gt;
これも、素のflymakeで用意してくれれば良いのに、、、で場当たり的に次の設定を追加した。。。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;;; flymake を使えない場合をチェック
(defadvice flymake-can-syntax-check-file
  (after my-flymake-can-syntax-check-file activate)
  (cond
   ((not ad-return-value))
   ;; tramp 経由であれば、無効
   ((and (fboundp 'tramp-list-remote-buffers)
         (memq (current-buffer) (tramp-list-remote-buffers)))
    (setq ad-return-value nil))
   ;; 書き込み不可ならば、flymakeは無効
   ((not (file-writable-p buffer-file-name))
    (setq ad-return-value nil))
   ;; flymake で使われるコマンドが無ければ無効
   ((let ((cmd (nth 0 (prog1
                          (funcall (flymake-get-init-function buffer-file-name))
                        (funcall (flymake-get-cleanup-function buffer-file-name))))))
      (and cmd (not (executable-find cmd))))
    (setq ad-return-value nil))
   ))
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;追記 (2010/05/25)&lt;/h4&gt;

&lt;p&gt;上の修正は、ちょっと上手く行かない場合があったので修正っと。&lt;/p&gt;

&lt;h4&gt;追記 (2010/05/27)&lt;/h4&gt;

&lt;p&gt;tramp経由の場合も、イマイチ上手く動かないので、除外に加えてみた。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8888257701499672814?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8888257701499672814/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8888257701499672814' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8888257701499672814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8888257701499672814'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/05/flymake-in-emacs.html' title='Emacs で文法チェック'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5795578297230501609</id><published>2010-05-13T01:37:00.000+09:00</published><updated>2010-06-08T13:32:31.775+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeX'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs Refcard 日本語版</title><content type='html'>&lt;p&gt;Emacs のチートシートは、Emacs と一緒に配布されている。
refcard.tex から pdfを作って印刷すれば良い。
少し古いバージョンだが、日本語に翻訳されたものは&lt;a href="http://emacs-20.ki.nu/refcard.shtml"&gt;「Emacs-20/21 Reference Card
」&lt;/a&gt;にある。&lt;/p&gt;

&lt;p&gt;キー操作として、手に染み付いているものは半分くらいしか無い。。。
大抵 M-x コマンドで済まして場合が多いなぁ。&lt;/p&gt;

&lt;p&gt;いかんなぁ。。。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;再度覚え直す為に、先の日本語RefcardとEmacs23に入ってるrefcardと若干漏れている部分を補い、
一部語句を修正し、フォント関係を微調節してものを作ってみた。&lt;/p&gt;

&lt;a href="http://gist.github.com/398756#file_refcardja.tex"&gt;refcardja.tex&lt;/a&gt;

&lt;p&gt;次いでに ptex/dvipdfmx を使って PDF を作って、Google Docs に上げてみた。&lt;/p&gt;

&lt;a href="http://docs.google.com/fileview?id=0BzuGmQrn2nhAYTg4NGYzNGQtZWNlOC00ZGUwLTlmODYtZDhkNWNhMzM1NjIx&amp;hl=ja"&gt;refcardja.pdf&lt;/a&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;うん、久しぶりに素のTeXを弄ったが本当にややこしい奴だな。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5795578297230501609?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5795578297230501609/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5795578297230501609' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5795578297230501609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5795578297230501609'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/05/emacs-refcard-ja.html' title='Emacs Refcard 日本語版'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7638647654160231739</id><published>2010-05-12T03:09:00.001+09:00</published><updated>2010-05-12T03:09:52.465+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Cocoa Emacs が落ちる</title><content type='html'>&lt;p&gt;Cocoa Emacs は安定していると思ったが、
どうもポップアップダイアログが出ると暫くして落ちてしまう。&lt;/p&gt;

&lt;p&gt;flymake をチマチマ使えるように設定を弄ったら、時々でるポップアップに刺さる。。。&lt;/p&gt;

&lt;p&gt;しようがないので、gdbで追っかけてみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;調べてみたら、次のような簡単な処理でも、
ポップアップが出て暫くしてEmacsが落ちるようである。&lt;/p&gt;

&lt;script src="http://gist.github.com/397613.js"&gt;&lt;/script&gt;

&lt;p&gt;どうも inline patch 側での処理抜けらしい。。。
こんな感じに修正すると落ちなくなった&lt;/p&gt;

&lt;script src="http://gist.github.com/397610.js"&gt;&lt;/script&gt;

&lt;p&gt;うん、すこぶる快適&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7638647654160231739?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7638647654160231739/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7638647654160231739' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7638647654160231739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7638647654160231739'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/05/fix-cocoa-emacs-23.html' title='Cocoa Emacs が落ちる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7532165311643482041</id><published>2010-05-07T13:21:00.001+09:00</published><updated>2010-11-03T20:48:15.855+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Emacs23 の フォント設定</title><content type='html'>&lt;p&gt;新し目の Emacs ではフォントエンジンの改良が進んでおり、
antialiasing が効いた奇麗な表示が出来る。また、沢山の種類のフォントを扱えるようになっている。&lt;/p&gt;

&lt;p&gt;プログラムの編集等をしてると等幅フォントが必要である。
特に、日本人としてはASCII文字と日本語文字の幅が 1:2 である事が強く望ましい&lt;/p&gt;

&lt;p&gt;まぁ、いくつか設定方法が流れてるので、コピペして使えば良いのだが。。。
みんなどうやって見やすい設定を探してるのだろうか？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;疑問に思ったので、次のような機能のelispを書いてみた&lt;/p&gt;

&lt;a href="http://gist.github.com/392981#file_my_sample_ascii.el"&gt;my-sample-ascii.el&lt;/a&gt;

&lt;dl&gt;
&lt;dt&gt;my-sample-ascii&lt;/dt&gt;
&lt;dd&gt;既定のフェース default/bold/italic/bold-italic それぞれで同じメッセージを
同一のバッファに出力する&lt;/dd&gt;
&lt;dt&gt;my-sample-face-size&lt;/dt&gt;
&lt;dd&gt;defaultのフェースを継承し(書体を引き継ぎ)、高さが 6〜20ptのフェースを作成し、同じメッセージを
同一のバッファに出力する&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;適当にdefaultフェースを設定した後だが、CocoaEmacs/NTEmacs/Emacs(onUbuntu)での、
my-sample-face-sizeの結果は次のようになる&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/4585303919/"&gt;&lt;img src="http://farm5.static.flickr.com/4005/4585303919_acce50607b_m.jpg" height="240" width="202" alt="ss-20100507-cocoaemacs"/&gt;&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/24156556@N07/4585928964/"&gt;&lt;img src="http://farm4.static.flickr.com/3307/4585928964_a5581285ef_m.jpg" height="240" width="227" alt="ss-20100507-ntemacs23"/&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/24156556@N07/4585303395/"&gt;&lt;img src="http://farm5.static.flickr.com/4009/4585303395_2ded68c187_m.jpg" height="240" width="226" alt="ss-20100507-ubuntu10.04"/&gt;&lt;/a&gt;

&lt;p&gt;いくつか設定してみたが、全ての pt で、1:2 に揃うフォントの組み合わせはほんとに稀で、日常的に使うサイズに合わせて、サイズの微調節が必要のようである。
やはり、&lt;a href="http://ossipedia.ipa.go.jp/ipafont/index.html"&gt;IPAフォント&lt;/a&gt;の恩恵は結構でかいなぁ。
&lt;/p&gt;

&lt;p&gt;今現在、いい感じに設定できたのは次の通り。&lt;/p&gt;

&lt;script src="http://gist.github.com/393042.js"&gt;&lt;/script&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;なんか Emacs をガンガン使い倒したくなってきた！！&lt;/p&gt;

&lt;h4&gt;追加 (2010/11/03)&lt;/h4&gt;

&lt;p&gt;VMware 上の X で画面サイズの変化で dpi が変化し pt 単位でフォント指定すると、実際のフォントの大きさがまちまちになるので、 明示的にpixel単位？で指定する方法に切り替えてみた。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7532165311643482041?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7532165311643482041/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7532165311643482041' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7532165311643482041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7532165311643482041'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/05/font-fot-emacs-23.html' title='Emacs23 の フォント設定'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4005/4585303919_acce50607b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1370524594422217003</id><published>2010-05-06T18:33:00.000+09:00</published><updated>2010-05-27T23:30:12.303+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>NTEmacs 23.1.Xを使ってみる</title><content type='html'>&lt;p&gt;Windowsの定番は &lt;a href="http://www.meadowy.org/meadow/"&gt;Meadow&lt;/a&gt;であり、今でも十分安定している。
ただ、ベースにしてるのが Emacs 22系なので、ちょっと新しくないかなぁ。。。&lt;/p&gt;

&lt;p&gt;今日では本家Emacsでも&lt;a href="http://www.emacswiki.org/emacs/CategoryWThirtyTwo"&gt;Windows版&lt;/a&gt;の&lt;a href="http://ftp.gnu.org/pub/gnu/emacs/windows/"&gt;バイナリ&lt;/a&gt;を配布している。Windows特有のInstallerが使いたければ、&lt;a href="http://ourcomments.org/cgi-bin/emacsw32-dl-latest.pl"&gt;EmacsW32&lt;/a&gt;から入手できる。&lt;/p&gt;

&lt;p&gt;結構、安定して使える。かつ、アイコンが奇麗だ。。。&lt;/p&gt;

&lt;p&gt;本家バイナリはネイティブのIMEのサポートが弱い気がする。。。と思ったら、有志によって&lt;a href="http://ntemacsjp.sourceforge.jp/"&gt;IMEのinlineパッチ&lt;/a&gt;も作成されいる。また、
VCSの新し目のタグに有用なパッチを当てたバイナリも「&lt;a href="http://gnupack.sourceforge.jp/docs/UsersGuide_ntemacs_build_history.html"&gt;NTEmacs Build History
&lt;/a&gt;」から入手できる。&lt;/p&gt;

&lt;p&gt;なので有り難く使わせてもらいます。&lt;br/&gt;
らくちんだ。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;設定&lt;/h4&gt;

&lt;p&gt;NTEmacs内部ではWin32のA系の呼び出し(ファイルI/Oやプロセス生成など)が使われるっぽいので、
現在の言語環境でのコードページに合わせなければ、奇妙な文字化けが発生する。
つまり、ファイル名とコマンド引数(processのdecoding)のcodingは shift_jis/cp932 じゃないとまずい。&lt;/p&gt;

&lt;p&gt;と思うのだが、誰か大層語ってくれる人が見当たらないので、本当のところはさっぱり分かりません。。。&lt;/p&gt;

&lt;p&gt;なので、「Cygwin 1.7でUTF-8サポートされたぜ！いぇーい！今時は UTF-8 ですが何か？」とは、口が裂けても言えない。。。僕は恨めしくshift_jis/cp932で使いますよ。。。へたれですから。。。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.emacswiki.org/emacs/CygWin"&gt;EmacsWiki: Cyg Win&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://homepage3.nifty.com/y3tk/emacs.html"&gt;NTEmacs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;上のサイトや他多数をちょっと参考にして、今現在の次のようにしている。今でもチマチマ書き換えているのでそのうちgithubで晒しとくかなぁ。。。&lt;/p&gt;

&lt;h5&gt;Homeディレクトリの指定&lt;/h5&gt;

&lt;p&gt;ホームディレクトリ指定を環境変数HOMEで与える必要があり、Cygwinでのホームディレクトリと同じにすると混乱せずに済む。&lt;/p&gt;

&lt;h5&gt;Cygwin 1.7と組み合わせる設定&lt;/h5&gt;

&lt;p&gt;&lt;a href="http://gist.github.com/391926#file_03cygwin.el"&gt;03cygwin.el&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;IMEの設定 (04ime.el)&lt;/h5&gt;
&lt;script src="http://gist.github.com/391927.js"&gt;&lt;/script&gt;

&lt;h5&gt;言語設定 (05lang.el)&lt;/h5&gt;
&lt;script src="http://gist.github.com/391929.js"&gt;&lt;/script&gt;

&lt;h5&gt;VCS系の設定&lt;/h5&gt;

&lt;p&gt;cygwinのsubversionやgitを使う場合、ログメッセージが文字化けするので、ちょっと設定が必要。。。&lt;/p&gt;
&lt;script src="http://gist.github.com/391954.js"&gt;&lt;/script&gt;

&lt;p&gt;、、、VC-xx.elの実装では、ログメッセージはコマンド引数で受け渡されるようになっている。
一時ファイル経由で無いとWindowsではバケバケになるのだが。。。そのうち直るのかなぁ&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;あと大事な Font 設定ですね。。。&lt;a href="http://moimoitei.blogspot.com/2010/05/font-fot-emacs-23.html"&gt;次回&lt;/a&gt;で。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1370524594422217003?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1370524594422217003/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1370524594422217003' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1370524594422217003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1370524594422217003'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/05/use-ntemacs-231x.html' title='NTEmacs 23.1.Xを使ってみる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6242863214810861369</id><published>2010-05-01T19:07:00.001+09:00</published><updated>2010-05-12T03:20:06.900+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='Emacs'/><title type='text'>Cocoa Emacs 64bit版を作ってみる</title><content type='html'>&lt;p&gt;最近、また Emacs にはまっている。
&lt;p&gt;ここ数年は vi やら eclipse やら JeditX やら xcode やらを広く浅く使っていて、
いまいちスッキリしない感じで、まぁ年なのか諦めていた。
Snow Leopardにアップグレードを期に、
ちょっと設定等を手入れしてMacOSX/Windowsで使い出したらすこぶる手になじむ。。。&lt;/p&gt;

&lt;p&gt;はて、なんでEmacsを使うのを忘れていたのかんなぁ。。。&lt;/p&gt;

&lt;p&gt;そう、当時 Emacs 20か 21 (mule-2.3だったかもしれん、、、)だったかなぁ。
UTF8/Unicodeを使う為にはMule-UCSとかいうパッケージが必要で、
そいつを組み合わせると普通に使えるのだが、起動も動作ももっさりしていまいちだった。。。&lt;/p&gt;

&lt;p&gt;今日のEmacsはサクッとUnicode系の一群のcoding-systemが使えて、それなりに軽快に動作する。&lt;/p&gt;

&lt;p&gt;良い時代になったなぁ。。。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;MacOSX 上の定番は &lt;a href="http://homepage.mac.com/zenitani/emacs-j.html"&gt;CarbonEmacs&lt;/a&gt;で、
かなりしっかりメンテナンスされており、実に安定している。ただ、ベースにしてるのがEmacs22だったり、Carbonベースだったり、32bitバージョンだったり、本当に細かく気になる人が気になる程度。&lt;/a&gt;

&lt;p&gt;ふと気づくと 本家 Emacs では既に 64bit Cocoa版が構築でき、かつ日常作業で問題ならないくらいは安定してるらしい(&lt;a href="http://hjmr.blog.so-net.ne.jp/2009-09-29"&gt;1&lt;/a&gt;,&lt;a href="http://borg4.vdomains.jp/~goro/diary/2010/770"&gt;2&lt;/a&gt;)。また、&lt;a href="http://d.hatena.ne.jp/kazu-yamamoto/20090122/1232589385"&gt;フォントの等幅調節設定&lt;/a&gt;や日本語入力等の&lt;a href="http://sourceforge.jp/projects/macemacsjp/svn/view/inline_patch/trunk/?root=macemacsjp"&gt;inline patch&lt;/a&gt;などが入手が可能で、
ほぼ CarbonEmacs を置き換えて使えるレベルになっている(と思う)。&lt;/a&gt;

&lt;p&gt;なので、Cocoa Emacs 64bit を構築してみる。&lt;/p&gt;

&lt;h4&gt;ソースを取ってくる&lt;/h4&gt;

&lt;p&gt;うん、一番の難関は Bazaar という分散VCSを使う事かもしれない。。。&lt;a href="http://www.emacswiki.org/emacs/EmacsFromGit"&gt;準オフィシャルなGitレポジトリ&lt;/a&gt;があるので、Gitに慣れてる場合はこっちを使うのが吉。僕は、へたれなので git の方を使った。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bazaar レポジトリ: &lt;a href="http://savannah.gnu.org/bzr/?group=emacs"&gt;http://bzr.savannah.gnu.org/r/emacs/trunk/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Git レポジトリ: &lt;a href="http://repo.or.cz/w/emacs.git"&gt;git://repo.or.cz/emacs.git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;取り敢えず、
ローカルネットに emacs.git のミラーレポジトリを立てて、そのマシン上でフォークして個人用の共用レポジトリを作る。
その個人用レポジトリから作業マシンに複製を展開する。
また、継続的にupstreamを追っかけるため、ミラーレポジトリもリモートとして登録する。&lt;/p&gt;

&lt;pre class="screen"&gt;% ssh server               # ローカルネットの server にログイン
% cd /git
% git clone --mirror git://repo.or.cz/emacs.git
% git clone --bare --reference emacs.git emacs.git emacs-my.git
...
% ssh client               # 作業マシンにログイン
% cd ~/work
% git clone git+ssh://server/git/emacs-my.git emacs
% cd emacs
% git remote add upstream git+ssh://server/git/emacs.git
% git fetch upstream
&lt;/pre&gt;

&lt;p&gt;個人用レポジトリを挟んだのは、バックアップを意図してなんだが、、、git使いはそんな事はしないのかなぁ。。。分からんなぁ。。。&lt;/p&gt;

&lt;h4&gt;パッチをあてる&lt;/h4&gt;

&lt;p&gt;続いて&lt;a href="http://sourceforge.jp/projects/macemacsjp/"&gt;MacEmacs JP&lt;/a&gt;
から inline_patch を取って当てる。&lt;/p&gt;

&lt;pre class="screen"&gt;% ssh client               # 作業マシンにログイン
% cd ~/work/emacs
% git checkout -b topic EMACS_PRETEST_23_1_96  # 次いでに topic ブランチも作っとく
% pathc -p0 &amp;lt; emacs-inline.patch 
&lt;/pre&gt;

&lt;h4&gt;構築する&lt;/h4&gt;

&lt;p&gt;あとは、configure/make で問題が無ければ nextstep/Emacs.app の場所で 64bit Cocoa Emacs が構築される。&lt;/p&gt;

&lt;pre class="screen"&gt;% ssh client               # 作業マシンにログイン
% cd ~/work/emacs
% eval "$(PATH= /usr/libexec/path_helper -s)"  # PATHをクリーンにする
% ./configure --with-ns
% make install
% open nextstep/Emacs.app                      # Emacsの実行確認
&lt;/pre&gt;

&lt;p&gt;なんともあっけなく構築できた。
ただ、僕は masterブランチの方にパッチを丁寧に当てた物(24.0.50とか)を使っている。すこぶる快適。&lt;/p&gt;

&lt;h4&gt;定期的追っかける&lt;/h4&gt;

&lt;p&gt;まぁ、忘れそうなので次いでに書いとく。&lt;/p&gt;

&lt;p&gt;ミラーレポジトリは次のコマンドで更新する。&lt;/p&gt;
&lt;pre class="screen"&gt;% ssh server               # server にログイン
% cd /git/emacs.git
% git fetch
&lt;/pre&gt;

&lt;p&gt;そして、作業レポジトリで upstream を追っかけるには&lt;/p&gt;
&lt;pre class="screen"&gt;% ssh client           # 作業マシンにログイン
% cd ~/work/emacs
% git fetch upstream
% git rebase upstream/master topic    # upstream 先端に rebase
% git push origin :topic              # topicブランチを削除し、
% git push origin topic:topic         # 新しくtopicブランチをプッシュ
&lt;/pre&gt;

&lt;p&gt;いまいち Git の使い方に慣れない/分からないので、間違ってるかもしれん。。。&lt;/p&gt;

&lt;p&gt;そういえば、github にも Emacsの&lt;a href="http://github.com/emacsmirror/emacs"&gt;ミラーレポジトリ&lt;/a&gt;が上がってるので、そのうち生えてくるかもしれん。。。&lt;/p&gt;

&lt;p&gt;それにしても覚える事が次から次と現れて、知恵熱が出っぱなしだなぁ。。。&lt;/p&gt;

&lt;p&gt;初期設定のemacs.elはまた次回。&lt;/p&gt;

&lt;h4&gt;追記 (2010/05/06)&lt;/h4&gt;

&lt;p&gt;フォント以外の設定は、殆ど定型文っぽいので以下の用に設定した。&lt;/p&gt;
&lt;script src="http://gist.github.com/391971.js"&gt;&lt;/script&gt;

&lt;p&gt;フォントの設定は「&lt;a href="http://moimoitei.blogspot.com/2010/05/font-fot-emacs-23.html"&gt;Emacs23 の フォント設定&lt;/a&gt;」を参照&lt;/p&gt;

&lt;h4&gt;追記 (2010/05/12) &lt;/h4&gt;

&lt;p&gt;どうもポップアップダイアログが出たとき落ちる問題には&lt;a href="http://moimoitei.blogspot.com/2010/05/fix-cocoa-emacs-23.html"&gt;パッチ&lt;/a&gt;が必要。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6242863214810861369?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6242863214810861369/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6242863214810861369' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6242863214810861369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6242863214810861369'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/05/build-cocoa-emacs-64bit.html' title='Cocoa Emacs 64bit版を作ってみる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8156899880669915329</id><published>2010-03-03T20:16:00.001+09:00</published><updated>2010-04-19T04:04:00.928+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><title type='text'>libvirtd を終了時にGuestOSを保存する方法</title><content type='html'>&lt;p&gt;libvirt+QEMU/KVM を使った仮想化の運用を続けていると、どうしても気になる事がある。&lt;/p&gt;

&lt;p&gt;libvirtd の設定には、自動起動するGuestVMは登録できるのだが、
終了時には有無を言わさず GuestVM を強制終了してしまう事である。&lt;/p&gt;

&lt;p&gt;自前で libvirt (0.7.2)を入れているので今のバージョンでは何らかのサポートが入ってかもしれない。
ただ「&lt;a href="http://libvirt.org/news.html"&gt;libvirt: Releases&lt;/a&gt;」を見る限り入って無さそうである。&lt;/p&gt;

&lt;p&gt;それにQEMU/KVMドライバだけの挙動かもしれない。他とドライバ(Xen等々)だと状況は違うかもしれない。&lt;/p&gt;

&lt;p&gt;まぁ。。。そのうち何らかの対応が入るんだろうなぁ。。。&lt;/p&gt;

&lt;p&gt;そうは言っても、ホストマシンを終了するときイチイチ確認するのは難儀である(とくにACPIサポートが悪く電源断しないGuestOSタイプとかねぇ)。&lt;/p&gt;

&lt;p&gt;さて、QEMUにはVMの状態を保存復帰(save/restore)がサポートされている。コイツとストレージ共有を組み合わせると、ライブマイグレーションが一丁上がりになるので、つい何年か前に小躍りしてる人がたくさんいた気がする。&lt;/p&gt;

&lt;p&gt;まぁ普通にサスペンド/レジュームの仕組みなので、コイツをなんとか上手く使うスクリプトを組んでみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;指定する項目は３つで、それぞれスクリプト冒頭に書かれている。&lt;p&gt;
&lt;a href="http://gist.github.com/370474#file_libvirt_start_stop_vm.sh"&gt;libvirt-start-stop-vm.sh&lt;/a&gt;
&lt;pre class="screen"&gt;&lt;code&gt;...
SAVEVMDIR="/var/lib/libvirt/save"            # 保存するVMの置き場所
LISTVM_SHUTDOWN="linux_sid linux_fedora"     # 終了時 shutdown するもの
LISTVM_SAVE="freebsd_cur netbsd_cur solaris" # 終了時 save するもの
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;やってる事は単純で virsh コマンドを叩いてるだけである。
ただ、LISTVM_なんたらで指定し無かったり、15分以内に正常に電源断しない奴は、
最後に念のためsaveしてある。&lt;/p&gt;

&lt;p&gt;コイツを、/etc/init.d/libvirt-binのスクリプトの必要な部分に&lt;a href="http://gist.github.com/370476#file_libvirt_bin.diff"&gt;入れ込む&lt;/a&gt;だけ。&lt;/p&gt;

&lt;p&gt;うん〜、これでマシンを立ち上げると前回マシンを落とした時の状態のままのSolaris10/FreeBSDが立ち上がるようになった。。。しかし、時刻が合わん。なんか、GuestOSが共通に取れるイベントの仕組みがあるのかなぁ。。。SNMPとかで叩くんかなぁ。。。SSHとかで叩くんかいなぁ。。。順当に cron でntp引っ張ってくるが原始的でいいのかぁ。。。でも、時刻合わせの精度は低いし、常時CPUをちょっとだけ使うのはなぁ。。。ぶつぶつ&lt;/p&gt;

&lt;p&gt;あんまり、すっきりしないが個人で使う分には用は足りそうである。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8156899880669915329?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8156899880669915329/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8156899880669915329' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8156899880669915329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8156899880669915329'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2010/03/suspend-guestos-when-libvirtd-shutdown.html' title='libvirtd を終了時にGuestOSを保存する方法'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-54459287491454893</id><published>2009-12-09T17:28:00.001+09:00</published><updated>2009-12-09T17:30:44.382+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>VIA EPIA EN のその後</title><content type='html'>&lt;p&gt;VIA EPIA EN12000 を24時間運転してサーバ運用してる。
以前は、時々ハングアップしていたのため、保険で watchdog 設定をしていたのだが、
奇妙なことに安定動作している。 &lt;/p&gt;

&lt;pre class="screen"&gt;# uptime 
 16:32:08 up 48 days, 21:24,  1 user,  load average: 0.06, 0.07, 0.01
&lt;/pre&gt;

&lt;p&gt;取り敢えず、１ヶ月半くらい連続運転している。&lt;/p&gt;

&lt;p&gt;はて？&lt;br/&gt;なにが効果あったのかな？&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;p&gt;
環境としては、
&lt;ul&gt;
&lt;li&gt;VIA-EN12000EG / VIA C7 1.2GHz&lt;/li&gt;
&lt;li&gt;DDR2-533 1G (IO-DATA DX533-1G) &lt;/li&gt;
&lt;li&gt;PATA SSD 32G (TS32GSSD25-M)&lt;/li&gt;
&lt;li&gt;SATA HDD 1Tx2 (WDC WD10EADS-00L/WDC WD10EADS-00M)&lt;/li&gt;
&lt;li&gt;Debian lenny の標準的なパッケージをほぼ使ってる。&lt;/li&gt;
&lt;/ul&gt;

TimeMachine の バックアップ先になっており、一時間ぐらいの間隔で
バースト的に Network I/O や Disk I/O が同時に発生する状況にある。&lt;/p&gt;

&lt;p&gt;取り敢えずは、今のところ安定している。。。&lt;/p&gt;

&lt;p&gt;まぁ、ネットワーク負荷を計測するときには、
負荷をかけるとハングアップすることが多々あった。
追っかけてみようかと思って保留して、
計測後の環境ではハングアップが全く無くなったので放置してしまった。&lt;/p&gt;

&lt;p&gt;計測前と計測後には大きく２点の作業をしてある。&lt;/p&gt;

&lt;h5&gt;メモリのフリーページの調節&lt;/h5&gt;

&lt;p&gt;運良くコンソールにメッセージが出てきたとき「lockup」とかは見た記憶がある。
別のメッセージだったかもしれない。
色々調べて、「メモリーのフリーページの不足ぎみが NICドライバ内でのlockupを引き起こす」とか適当に結論づけて、
次の設定をした気がする&lt;/p&gt;

&lt;pre class="screen"&gt;# echo "vm.min_free_kbytes = 8192" &gt;&gt; /etc/sysctl.conf&lt;/pre&gt;

&lt;p&gt;ただ、もっと良い設定があって次のようなスクリプトを自前のバックアップ処理の後に入れている&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;## pagecache clear &amp; dirty page &amp; inode cache clear
/sbin/sysctl -w vm.drop_caches=3
#
/sbin/sysctl -w vm.drop_caches=0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;この設定は、結構気分の問題な気がする。&lt;/p&gt;

&lt;h5&gt;NIC ドライバの変更&lt;/h5&gt;

&lt;p&gt;計測中も、ベンダ提供のものか、自前で修正したものを使っている。
計測後は、自前で修正したものを使って長期運用している。。。ってその為に改良したしなぁ。&lt;/p&gt;

&lt;p&gt;Debian 標準カーネルに含まれているvia-velocityドライバはバースト的なI/Oにはlockupするような、気がする。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;人生で初めて家の電灯の安定器のコンデンサが破裂していく音を聞いた。&lt;/p&gt;
&lt;p&gt;「しゅるしゅるしゅる〜〜、ぷぅん」って。&lt;/p&gt;
&lt;p&gt;VIA-EN12000EG のコンデンサが減ったった時が、VIA とのお別れですね&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-54459287491454893?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/54459287491454893/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=54459287491454893' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/54459287491454893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/54459287491454893'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/12/via-epia-en.html' title='VIA EPIA EN のその後'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7838263557788138853</id><published>2009-10-21T00:53:00.000+09:00</published><updated>2010-04-19T05:56:55.846+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogアプリ'/><title type='text'>Blogger の「続きを読む」機能</title><content type='html'>&lt;p&gt;ここ２〜３ヶ月くらいで、Blogger にクラウドタグと「続きを読む」機能が追加された。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://buzz.blogger.com/2009/08/partly-cloudy-chance-of-labels.html"&gt;Partly cloudy, chance of labels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://buzz.blogger.com/2009/09/you-might-as-well-jump.html"&gt;You Might As Well Jump!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;すばらしい!&lt;/p&gt;

&lt;p&gt;あとは、関連記事のリスト表示の対応が入れば、全部 Blogger 内でまかなえるのかなぁ。。。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;ただし、ちょっとだけ問題がでた。&lt;/p&gt;

&lt;p&gt;今使っている投稿アプリ &lt;a href="http://illuminex.com/ecto/"&gt;ecto&lt;/a&gt; では
投稿後に再度 Blogger からデータを再取得してその内容を保存するような動作をしている。&lt;/p&gt;

&lt;p&gt;このとき、Blogger から流れてくるデータでは
「&amp;lt;!-- more --&amp;gt;」が「&amp;lt;a name='more'&amp;gt;&amp;lt;/a&amp;gt;」に置換されてしまっている。&lt;/p&gt;

&lt;p&gt;そのままで jump break と同等に機能すれば良いのだが、どうもそうでは無いらしい。&lt;/p&gt;

&lt;p&gt;再度修正したいときは、都度確認し修正が必要のようである。&lt;/p&gt;

&lt;p&gt;ecto の使い方がわるいんかなぁ。。。&lt;/p&gt;

&lt;/div&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7838263557788138853?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7838263557788138853/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7838263557788138853' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7838263557788138853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7838263557788138853'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/10/blogger.html' title='Blogger の「続きを読む」機能'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3362494318283641993</id><published>2009-10-19T01:28:00.001+09:00</published><updated>2009-12-09T17:51:08.119+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><category scheme='http://www.blogger.com/atom/ns#' term='まとめ'/><title type='text'>VIA EPIA EN の設定のまとめ 2009Q4</title><content type='html'>&lt;p&gt;気がついてみると VIA EPIA EN12000 と Linux の Tips がたまったので、まとめてみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;PadLock&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2008/04/via-padlock-for-debian.html"&gt;Debian で VIA の PadLock を使ってみる&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/10/measure-ipsec-throughput.html"&gt;IPSec のスループット&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/07/use-encrypted-swap-partition.html"&gt;Linux でボリュームを暗号化する (1) - swapの保護&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/07/use-encrypted-block-device.html"&gt;Linux でボリュームを暗号化する (2) - LVMの保護&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/07/measure-encrypted-device.html"&gt;Linux でボリュームを暗号化する (3) - 性能比較&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Watch Dog Timer&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/04/linux-watchdog-via-epia-en.html"&gt;VIA EPIA-EN で watchdog を設定&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Onboard NIC / VT6122&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/09/prepare-linux-driver-for-vt6122.html"&gt;VT6122 の性能(1) - Linux のドライバの準備&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/09/history-of-via-velocity.html"&gt;VT6122 の性能(2) - VIA Velocity の出自&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/09/measure-network-throughput-via-velocity.html"&gt;VT6122 の性能(3) - ネットワークスループット測定&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2009/10/adaptive-interrupt-patch-for-via.html"&gt;VT6122 の性能(4) - ドライバの強化&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;a href="http://moimoitei.blogspot.com/2009/12/via-epia-en.html"&gt;VIA EPIA EN のその後&lt;/a&gt; (追記2009/12/09)

&lt;p&gt;性能を使い切るポイントはある程度掴めたので、再度ファイルサーバとして組み直して使う事にした。
高負荷状態になってもたいして&lt;del&gt;速くない&lt;/del&gt;電力を食わないので好都合かなぁ。
なので、これ以上このボードに特化したTipsはおしまい。&lt;/p&gt;

&lt;p&gt;あれ、、、なぜか&lt;a href="http://kuroutoshikou.com/modules/display/?iid=216"&gt;GbE-PCI2&lt;/a&gt;と&lt;a href="http://kuroutoshikou.com/modules/display/?iid=1370"&gt;GbE-PCIe3&lt;/a&gt;が手元にあるのは何故なんだろう。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3362494318283641993?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3362494318283641993/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3362494318283641993' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3362494318283641993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3362494318283641993'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/10/via-epia-en-2009q4.html' title='VIA EPIA EN の設定のまとめ 2009Q4'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6177262818017481956</id><published>2009-10-15T18:04:00.001+09:00</published><updated>2010-04-19T03:57:43.626+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='IPSec'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>IPSec のスループット</title><content type='html'>&lt;p&gt;ネットワークのスループットを測定する環境を整えたので、次いでに IPSec を通してた時のものも測定してみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;測定の条件は
&lt;ol&gt;
&lt;li&gt;スループット測定ツール nuttcp の計測用データチャンネル 5001/tcp を上り／下りにそれぞれ IPSec に通す。&lt;/li&gt;
&lt;li&gt;racoon ver.1 でサポートされていない暗号化スイートも測定したいので、鍵を手動で設定する。&lt;/li&gt;
&lt;li&gt;ESP認証／暗号の組み合わせで計測する。(AHは使わん)&lt;/li&gt;
&lt;li&gt;追加で IPComp での圧縮の効果を見たい気がする。&lt;/li&gt;
&lt;/ol&gt;
複数の認証/暗号の組み合わせで測定する為にスクリプト(&lt;a href="http://gist.github.com/370470#file_measure_ipsec_throughput.sh"&gt;measure_ipsec_throughput.sh&lt;/a&gt;)化した。&lt;/p&gt;

&lt;p&gt;setkey で、手動で鍵を設定する方法は多々情報(&lt;a href="http://www.jp.netbsd.org/ja/docs/network/ipsec/"&gt;1&lt;/a&gt;、&lt;a href="http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/lartc.ipsec.html"&gt;2&lt;/a&gt;)があるので、そちらを参考にして欲しい。ただ、IPComp を組み合わせる例が乏しいのでこの部分だけ。&lt;/p&gt;

&lt;h4&gt;IPComp を組み合わせて使う&lt;/h4&gt;

&lt;p&gt;IPSec設定済みで、ESPのみを使うSPDが次にようになってるだろう。&lt;/p&gt;

&lt;pre class="screen"&gt;...
spdadd xx.xx.xx.xx[port] yy.yy.yy.yy tcp -P out ipsec esp/transport//require;
...
&lt;/pre&gt;

&lt;p&gt;このときSPDのルールの順番が重要になる。カプセル化の下の方から、要は &lt;strong&gt;IPComp ⇒ ESP ⇒ AH&lt;/strong&gt;
 の順に書き下していくことになる。&lt;/p&gt;

&lt;p&gt;従ってIPCompを組み合わせるには、次のようにすればよい。&lt;/p&gt;

&lt;pre class="screen"&gt;...
add xx.xx.xx.xx[port] yy.yy.yy.yy ipcomp zzzz -C deflate;
spdadd xx.xx.xx.xx[port] yy.yy.yy.yy tcp
	-P out ipsec ipcomp/transport//use esp/transport//require;
&lt;/pre&gt;

&lt;p&gt;ただ、ベンチマークに流れるデータは「0」の羅列なので、いまいち効果が分からん。。。&lt;/p&gt;
&lt;p&gt;なので計測は諦めた。&lt;/p&gt; 

&lt;h4&gt;IPSec スループットの計測&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2009/09/measure-network-throughput-via-velocity.html"&gt;前とほぼ同じ環境&lt;/a&gt;とmacbook pro を加えたものを用意、全ての計測に MTU 1500 / ロック周波数変更は全て無効にしMAXにした。また、TCP/IP通信に関するパラメータを修正せずにデフォルトにした。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ref1 - M2NPV-VM / Athlon64X2 2.0GHz / DDR2-667 4GB / Intel Pro/1000PT (外付け)&lt;/li&gt;
&lt;li&gt;ref2 - M4A78-EM / Athlon X2 5050e 2.6GHz / DDR2-800 8GB / RTL8112&lt;/li&gt;
&lt;li&gt;via - VIA-EN12000EG / VIA C7 1.2GHz / DDR2-533 1G / VT6122&lt;/li&gt;
&lt;li&gt;osx - MacBookPro5,1 / Intel Core 2 Duo 2.4 GHz / DDR3-1066 2G x 2 / onboard Gigabit Ethernet&lt;/li&gt;
&lt;li&gt;hub - Gigabit Hub(GS908M) &lt;/li&gt;
&lt;/ul&gt;

&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th rowspan="3" colspan="2"&gt;認証/暗号&lt;/th&gt;
&lt;th colspan="3"&gt;ref1⇔ref2&lt;/th&gt;
&lt;th colspan="3"&gt;ref1⇔via&lt;/th&gt;
&lt;th colspan="3"&gt;ref1⇔osx&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th rowspan="2"&gt;throughput&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU %&lt;/th&gt;
&lt;th rowspan="2"&gt;throughput&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU %&lt;/th&gt;
&lt;th rowspan="2"&gt;throughput&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU %&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;ref2&lt;/th&gt;
&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;via&lt;/th&gt;
&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;osx&lt;/th&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;no ipsec&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;941.3580&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;785.1857&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;936.9429&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;941.2461&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;723.7100&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td&gt;938.3451&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/null&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;934.6834&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;566.8947&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;93&lt;/td&gt;
&lt;td&gt;932.0707&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;787.4495&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;520.2880&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td&gt;879.3127&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td colspan="11"&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/des-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;229.5461&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;72.9094&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;95&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;136.6533&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;197.0768&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;73.4657&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;129.1215&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/3des-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;110.5173&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;100&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;30.8918&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;87&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;59.2064&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;76.8033&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;30.5976&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;56.5818&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;98&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/aes-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;466.7989&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;33&lt;/td&gt;
&lt;td bgcolor="cfc"&gt;392.0739&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;91&lt;/td&gt;
&lt;td bgcolor="cfc"&gt;475.7789&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;95&lt;/td&gt;&lt;td&gt;43&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="cfc"&gt;472.1796&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;36&lt;/td&gt;
&lt;td bgcolor="cfc"&gt;396.2264&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="cfc"&gt;376.3890&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/aes-ctr&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="cfc"&gt;495.4163&lt;/td&gt;&lt;td&gt;77&lt;/td&gt;&lt;td&gt;58&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;218.6071&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;383.9987&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;258.7430&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/blowfish-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;316.0327&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;77.6054&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;74&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;263.7795&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;244.9774&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;84.1580&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;228.4810&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/twofish-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;372.5317&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;100.8360&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;289.2720&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;102.0088&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;null/camellia-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;340.9916&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;100&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;86.7841&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;267.3560&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;84.5675&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td colspan="11"&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-md5/null&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;537.2857&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;244.7170&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;87&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;578.8675&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;49&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;453.2448&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;230.2019&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;572.5809&lt;/td&gt;&lt;td&gt;29&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-sha1/null&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;370.0861&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;100&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;360.3754&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;86&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;414.4706&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;296.1913&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;350.0287&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;469.5587&lt;/td&gt;&lt;td&gt;57&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;98&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-sha256/null&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;307.0078&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;302.9315&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;100&lt;/td&gt;&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;278.9001&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;33&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;240.0495&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;336.2512&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;96&lt;/td&gt;
&lt;td&gt;248.9149&lt;/td&gt;&lt;td&gt;28&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;aes-xcbc-mac/null&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;447.6017&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;216.0013&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;347.9881&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;271.0801&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td colspan="11"&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-md5/3des-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;101.5172&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;100&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;29.0609&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;88&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;57.0069&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;71.0862&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;28.4519&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;100&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;54.5636&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;98&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-md5/aes-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;326.0155&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;205.8441&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;79&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;349.0338&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;266.2639&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;198.6511&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;296.4431&lt;/td&gt;&lt;td&gt;27&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;98&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-sha1/3des-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;94.1899&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;100&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;30.1900&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;85&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;56.6619&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;66.1646&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;29.8474&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;td bgcolor="#ccc"&gt;52.0154&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;96&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-sha1/aes-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;259.3614&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;253.1157&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;56&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;275.3661&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;98&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;202.5055&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;286.0077&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;93&lt;/td&gt;
&lt;td bgcolor="#ccf"&gt;270.1091&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;97&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;hmac-sha1/aes-ctr&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;257.3152&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;193.6954&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;97&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;199.9059&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;209.8745&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;aes-xcbc-mac/aes-cbc&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;283.0864&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;207.2613&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;225.1556&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td bgcolor="ccf"&gt;233.3907&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="2"&gt;aes-xcbc-mac/aes-ctr&lt;/td&gt;&lt;td&gt;⇒&lt;/td&gt;
&lt;td&gt;281.3969&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;154.4989&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;⇐&lt;/td&gt;
&lt;td&gt;220.3145&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td bgcolor="#eee"&gt;178.5399&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;

&lt;p&gt;異様にたくさん計測したが、あんまり意味が無い気がしないでもない。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;暗号化方式の性能は&lt;br/&gt;
aes系 &amp;gt; blowfish/twofish/camellia &amp;gt;&amp;gt; DES &amp;gt; 3DES&lt;br/&gt;
VIA C7 では aes系 &amp;gt;&amp;gt; それ以外 &lt;/li&gt;
&lt;li&gt;認証方式の性能は&lt;br/&gt; hmac-md5 &amp;gt; aes-xcbc-mac &amp;gt; hmac-sha1/hmac-sha256 &lt;br/&gt;ただ、あまり差異はない。&lt;br/&gt;
VIA C7 では hmac-sha1/hmac-sha256 &amp;gt;&amp;gt; それ以外 &lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;des-cbc/3des-cbc は他の暗号化方法に比べて５～１０倍くらい遅い。もう、見る影が無い。&lt;/li&gt;
&lt;li&gt;aes 系の実装には多くの開発リソースが割かれており、x86 コードでも十分早い。VIA PadLock が圧倒的に有利という訳ではない、不利という訳でもない。&lt;/li&gt;
&lt;li&gt;個々のNICドライバの個性がある。&lt;br/&gt;
e1000e(Linux) / nvenet(MacOSX) に関しては送信時のCPU負荷が100%になる傾向があり、r8169 に関してはどう考えてもCPU利用率が低くなる。&lt;br/&gt;
これが NIC 自体の性能か、TCPと組み合わせで何らかのビジーウェイトが起きるのかは、いまいち不明。。。nuttcp/netperf で発生するトラフィックパータンに対する適性なのだろうか。&lt;br/&gt;
送信性能が上がるチューニングが必要なのだろうか？
&lt;/li&gt;
&lt;li&gt;普通運用する hmac-sha1/aes-cbc は 約250Mbps のスループットが出る。PadLock を使えば同様の性能が出る。&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;結論&lt;/h4&gt;

&lt;p&gt;VIA-EN12000EG 上の Linux で IPSec を使うと約250Mbps程度のスループットの性能があり、Athlon64X2 2.0GHz と同程度の性能である。&lt;/p&gt;

&lt;p&gt;Intel Atom はどの程度なのだろうかぁ？&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6177262818017481956?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6177262818017481956/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6177262818017481956' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6177262818017481956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6177262818017481956'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/10/measure-ipsec-throughput.html' title='IPSec のスループット'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-4785738244262926774</id><published>2009-10-06T03:38:00.001+09:00</published><updated>2010-04-19T05:04:35.619+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>VT6122 の性能(4) - ドライバの強化</title><content type='html'>&lt;p&gt;元々 via-velocity は、少し古いバージョンの velocityget ソースを整理したものだった。ただ、現在の双方のバージョンを比べると、via-velocity に含まれていない要素がある。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EnableMRDPL (Memory-Read-Multiple)オプション&lt;/li&gt;
&lt;li&gt;VIA 的には「Adaptive Interrupt」と呼ばれるもの&lt;br/&gt;
(txque_timer/rxque_timer/tx_intsup/rx_intsupオプションとその関連部分)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;これは、分岐後にVIAによって追加されたものか、意図的に省かれたのもか、どちらなのかは正直分からない。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;EnableMRDPL (Memory-Read-Multiple)オプション&lt;/h4&gt;

&lt;p&gt;最初の要素は、PCIのバースト転送のモードをなんか指定するものらしいが、ベンチマーク上は効果がなかった。
PCIに詳しくなければいまいち内容が分からないし、デフォルトが無効なので、今回は見送った。&lt;/p&gt;

&lt;h4&gt;VIA 的には「Adaptive Interrupt」と呼ばれるもの&lt;/h4&gt;

&lt;p&gt;「適応割り込み」と称しているが、単に割り込みを一定数間引いたり、一定時間遅延を入れるだけのようで、
特に割り込みの頻度に応じて動的に変更はしない。。。なんかなぁ&lt;/p&gt;

&lt;p&gt;うんで、機能追加パッチを作ってみた。(velocitygetの処理を流用)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; via-velocity の adaptive interrupt 関連の機能追加パッチ (debian lenny/kernel-2.6.26用) / &lt;a href="http://gist.github.com/370498#file_via_velocity_adaptive_intr.patch"&gt;via-velocity-adaptive-intr.patch&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;前出の修正パッチの後に当てればいい
&lt;pre class="screen"&gt;# mkdir via-velocity
# cp Makefile-via-velocity-only via-velocity/Makefile
# cp /usr/src/linux-source-2.6.26/drivers/net/via-velocity.[ch] via-velocity/
# patch -p 3 -d via-velocity &amp;lt; via-velocity-fixed-wol.patch
# patch -p 3 -d via-velocity &amp;lt; via-velocity-fixed-int_works.patch
# patch -p 3 -d via-velocity &amp;lt; via-velocity-adaptive-intr.patch
# cd via-velocity
# make install
&lt;/pre&gt;
&lt;/p&gt;

&lt;h4&gt;スループット性能の比較&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2009/09/measure-network-throughput-via-velocity.html"&gt;前回&lt;/a&gt;と同じ環境で、velocityget と via-velocityの「Adaptive Interrupt」パッチ有／無の３種類の場合を測定した。&lt;/p&gt;

&lt;p&gt;
&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th rowspan="3"&gt;&lt;/th&gt;&lt;th colspan="3"&gt;velocityget&lt;/th&gt;&lt;th colspan="3"&gt;via-velocity&lt;br/&gt;パッチ無し&lt;/th&gt;&lt;th colspan="3"&gt;via-velocity&lt;br/&gt;パッチあり&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇒ ref1&lt;/td&gt;
&lt;td&gt;655.4841&lt;/td&gt;&lt;td&gt;99 %&lt;/td&gt;&lt;td&gt;11 %&lt;/td&gt;
&lt;td&gt;646.4036&lt;/td&gt;&lt;td&gt;99 %&lt;/td&gt;&lt;td&gt;12 %&lt;/td&gt;
&lt;td&gt;724.7809&lt;/td&gt;&lt;td&gt;99 %&lt;/td&gt;&lt;td&gt;12 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇐ ref1&lt;/td&gt;
&lt;td&gt;741.2755&lt;/td&gt;&lt;td&gt;66 %&lt;/td&gt;&lt;td&gt;4 %&lt;/td&gt;
&lt;td&gt;709.2465&lt;/td&gt;&lt;td&gt;80 %&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;
&lt;td&gt;762.3420&lt;/td&gt;&lt;td&gt;51 %&lt;/td&gt;&lt;td&gt;5 %&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
mtu 1500 / DMA_length=6 / それ以外のモジュールパラメータはデフォルト値
&lt;/p&gt;

&lt;p&gt;
&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th rowspan="3"&gt;&lt;/th&gt;&lt;th colspan="3"&gt;velocityget&lt;/th&gt;&lt;th colspan="3"&gt;via-velocity&lt;br/&gt;パッチ無し&lt;/th&gt;&lt;th colspan="3"&gt;via-velocity&lt;br/&gt;パッチあり&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇒ ref1&lt;/td&gt;
&lt;td&gt;816.0544&lt;/td&gt;&lt;td&gt;32 %&lt;/td&gt;&lt;td&gt;7 %&lt;/td&gt;
&lt;td&gt;816.1541&lt;/td&gt;&lt;td&gt;30 %&lt;/td&gt;&lt;td&gt;7 %&lt;/td&gt;
&lt;td&gt;814.9007&lt;/td&gt;&lt;td&gt;31 %&lt;/td&gt;&lt;td&gt;7 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇐ ref1&lt;/td&gt;
&lt;td&gt;989.8745&lt;/td&gt;&lt;td&gt;48 %&lt;/td&gt;&lt;td&gt;9 %&lt;/td&gt;
&lt;td&gt;944.4813&lt;/td&gt;&lt;td&gt;46 %&lt;/td&gt;&lt;td&gt;8 %&lt;/td&gt;
&lt;td&gt;989.8323&lt;/td&gt;&lt;td&gt;46 %&lt;/td&gt;&lt;td&gt;9 %&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
mtu 9000 / DMA_length=6 / それ以外のモジュールパラメータはデフォルト値
&lt;/p&gt;

&lt;h4&gt;考察&lt;/h4&gt;

&lt;p&gt;mtu 1500 のとき、送信性能が10%程度上がった。受信性能はほぼ velocityget と同程度になったが、CPU負荷率は低くなった。mtu 9000 のときは、velocityget と同程度になった。&lt;/p&gt;

&lt;p&gt;受信時のCPU負荷率低下は面白い。NAPI化すればより軽くなるのかなぁ。e100?系の適応なんとかの動的アルゴリズムを流用すればもっと良くなるのかなぁ。もっと送信性能を上げるにはどうすれば良いのだろう。。。&lt;/p&gt;

&lt;p&gt;スループットのベンチマーク上の結果だけなので、レイテンシとかはどうなんだろう。。。&lt;/p&gt;

&lt;p&gt;本来 ethtool へのインタフェース経由で設定するものを、モジュールパラメータに載せて、固定値になっているのも気になると言えば気になる。&lt;/p&gt;

&lt;p&gt;ちまちまパッチを切るのは面倒だから、どっかにレポジトリ借りて、最新版のバニラソースに作業するのがいいのかなぁ。&lt;/p&gt;

&lt;p&gt;ふぅむ。&lt;/p&gt;

&lt;p&gt;近年、VIA の NIC のシェアはかなり落ちている。大抵の onboard NIC は RealTek の奴だったりする。また、Windows 64bit系の4G問題とかも敬遠される原因になっている。&lt;/p&gt;

&lt;p&gt;廃れつつ、傾きつつ、そんなものの為に作業する奴がいないんだろうなぁ。&lt;/p&gt;

&lt;p&gt;VIA EPIA は本当に不憫な奴だ。&lt;/p&gt;

&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;

&lt;p&gt;今年分の作業は、この辺かなぁ、、、では&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-4785738244262926774?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/4785738244262926774/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=4785738244262926774' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4785738244262926774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4785738244262926774'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/10/adaptive-interrupt-patch-for-via.html' title='VT6122 の性能(4) - ドライバの強化'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8743016088587317472</id><published>2009-09-30T23:25:00.000+09:00</published><updated>2010-04-19T03:54:46.252+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>VT6122 の性能(3) - ネットワークスループット測定</title><content type='html'>&lt;p&gt;スループットを計測するツールは何種類かある。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ttcp / nttcp / &lt;a href="http://www.lcp.nrl.navy.mil/nuttcp/"&gt;nuttcp&lt;/a&gt;&lt;br/&gt;
ttcp が&lt;a href="http://ftp.arl.mil/~mike/ttcp.html"&gt;古のツール&lt;/a&gt;でソースは色んなバージョン(&lt;a href="http://sd.wareonearth.com/~phil/net/ttcp/nttcp.c"&gt;1&lt;/a&gt;,&lt;a href="ftp://ftp.sgi.com/sgi/src/ttcp/ttcp.c"&gt;2&lt;/a&gt;)が散見される、SGI の人が改良したのが nttcp  (元サイトは http://www.leo.org/~elmar/nttcp/ だったらしいが、既に無くなっている)。nuttcp は、nttcp をベースに改良が続けられたもの。使うならば nuttcp かなぁ。
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://iperf.sourceforge.net/"&gt;iperf&lt;/a&gt;&lt;br/&gt;
Java ベースの GUI 付きがあるので、ベンリかも 
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.netperf.org/netperf/"&gt;netperf&lt;/a&gt;&lt;br/&gt;
スループット以外にもテスト項目の種類が豊富。ただし、man ページが不完全でなので付属の HTML/PDF を参照する必要がある。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smartechconsulting.com/HOME/Spirent"&gt;SmartBits&lt;/a&gt;&lt;br /&gt;
商用でよく使われている奴ですね。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;まぁ、スループットの測定ならば iperf を使えば良いが、CPU の負荷状況を見たいので nuttcp を使ってみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;VIA-EN を含めて以下の３台とHUBを用意し、３台ともhubに直結した。
&lt;ul&gt;
&lt;li&gt;target - VIA-EN12000EG / VIA C7 1.2GHz / DDR2-533 1G / VT6122&lt;/li&gt;
&lt;li&gt;ref1 - M2NPV-VM / Athlon64X2 2.0GHz / DDR2-667 4GB / Intel Pro/1000PT (外付け)&lt;/li&gt;
&lt;li&gt;ref2 - M4A78-EM / Athlon X2 5050e 2.6GHz / DDR2-800 8GB / RTL8112&lt;/li&gt;
&lt;li&gt;hub - Gigabit Hub(GS908M) &lt;/li&gt;
&lt;/ul&gt;
また、測定自体は、clock skew を避けるため全て ref1 上で計測した。cpufreq によるクロック周波数変更は全て無効にしMAXにした。 ref2 に関しては ref1 自体の評価にのみ使った。
&lt;/p&gt;

&lt;h4&gt;ref1 ⇔ ref2 間&lt;/h4&gt;

&lt;p&gt;ref1 / ref2 ともに mtu 1500 に設定して測定した。
&lt;pre class="screen"&gt;# ssh -f ref2 -- "nuttcp -S -1"
# nuttcp -t ref2
 1123.8690 MB /  10.01 sec =  941.3733 Mbps 11 %TX 27 %RX
# ssh -f ref2 -- "nuttcp -S -1"
# nuttcp -r ref2
 1122.3750 MB /  10.00 sec =  941.0966 Mbps 33 %TX 16 %RX
&lt;/pre&gt;
これを表にすると、
&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th rowspan="2"&gt;&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;ref2&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ref1 ⇒ ref2&lt;/td&gt;&lt;td&gt;941.3733&lt;/td&gt;&lt;td&gt;11 %&lt;/td&gt;&lt;td&gt;27 %&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ref1 ⇐ ref2&lt;/td&gt;&lt;td&gt;941.0966&lt;/td&gt;&lt;td&gt;16 %&lt;/td&gt;&lt;td&gt;33 %&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
mtu 1500
&lt;/p&gt;
&lt;p&gt;まぁ、順当に ref1 は送受信ともに約 940Mbps 程度の性能を持っている事が分かる。&lt;/p&gt;

&lt;h4&gt;target ⇔ ref1 間&lt;/h4&gt;

&lt;p&gt;target の ドライバ via-velocity/velocityget のそれぞれに対して、mtu 1500 かつモジュールパラメータを設定せずに(ドライバのデフォルト値で)計測した。

&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th rowspan="3"&gt;&lt;/th&gt;&lt;th colspan="3"&gt;velocityget&lt;/th&gt;&lt;th colspan="3"&gt;via-velocity&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇒ ref1&lt;/td&gt;
&lt;td&gt;655.2174&lt;/td&gt;&lt;td&gt;99 %&lt;/td&gt;&lt;td&gt;12 %&lt;/td&gt;
&lt;td&gt;340.1681&lt;/td&gt;&lt;td&gt;27 %&lt;/td&gt;&lt;td&gt;9 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇐ ref1&lt;/td&gt;
&lt;td&gt;738.7987&lt;/td&gt;&lt;td&gt;68 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;514.5900&lt;/td&gt;&lt;td&gt;42 %&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
mtu 1500 / モジュールパラメータは全てデフォルト値
&lt;/p&gt;

&lt;h4&gt;熟考&lt;/h4&gt;
&lt;p&gt;結果を見れば、明らかに velocityget の方が性能が高いように思われるが、ソースを見比べるとモジュールパラメータ DMA_length のデフォルト値が、それぞれのドライバで異なる (velocitygetは6/via-velocityは0)。&lt;/p&gt;

&lt;p&gt;DMA_length は、チップ内のバッファとメインメモリの間を転送する DMA の処理サイズを指定するらしく、大きなサイズであれば PCI バスの使用効率が上がるので、スループットに影響しそうである。&lt;/p&gt;

&lt;p&gt;なので、DMA_length を 0〜7 に振って再度計測し直してみた。&lt;/p&gt;

&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th rowspan="3"&gt;&lt;/th&gt;&lt;th rowspan="3"&gt;DMA_length&lt;/th&gt;&lt;th colspan="3"&gt;velocityget&lt;/th&gt;&lt;th colspan="3"&gt;via-velocity&lt;/th&gt;&lt;th rowspan="3"&gt;比&lt;br/&gt;(via-velocity&lt;br/&gt;/velocityget)&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td rowspan="8"&gt;target ⇒ ref1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;369.5053&lt;/td&gt;&lt;td&gt;28 %&lt;/td&gt;&lt;td&gt;11 %&lt;/td&gt;
&lt;td&gt;340.1827&lt;/td&gt;&lt;td&gt;27 %&lt;/td&gt;&lt;td&gt;10 %&lt;/td&gt;
&lt;td&gt;0.920643&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;398.9382&lt;/td&gt;&lt;td&gt;39 %&lt;/td&gt;&lt;td&gt;11 %&lt;/td&gt;
&lt;td&gt;414.5747&lt;/td&gt;&lt;td&gt;40 %&lt;/td&gt;&lt;td&gt;7 %&lt;/td&gt;
&lt;td&gt;1.039195&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;497.4004&lt;/td&gt;&lt;td&gt;64 %&lt;/td&gt;&lt;td&gt;9 %&lt;/td&gt;
&lt;td&gt;494.2757&lt;/td&gt;&lt;td&gt;60 %&lt;/td&gt;&lt;td&gt;8 %&lt;/td&gt;
&lt;td&gt;0.993717&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;539.0356&lt;/td&gt;&lt;td&gt;84 %&lt;/td&gt;&lt;td&gt;9 %&lt;/td&gt;
&lt;td&gt;540.7160&lt;/td&gt;&lt;td&gt;80 %&lt;/td&gt;&lt;td&gt;10 %&lt;/td&gt;
&lt;td&gt;1.003117&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;610.5743&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;10 %&lt;/td&gt;
&lt;td&gt;608.1031&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;10 %&lt;/td&gt;
&lt;td&gt;0.995952&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;646.1530&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;11 %&lt;/td&gt;
&lt;td&gt;640.9711&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;10 %&lt;/td&gt;
&lt;td&gt;0.991980&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;655.4841&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;11 %&lt;/td&gt;
&lt;td&gt;646.4036&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;12 %&lt;/td&gt;
&lt;td&gt;0.986146&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;652.1732&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;12 %&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;647.7397&lt;/td&gt;&lt;td bgcolor="#fcc"&gt;99 %&lt;/td&gt;&lt;td&gt;10 %&lt;/td&gt;
&lt;td&gt;0.993201&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td rowspan="8"&gt;target ⇐ ref1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;450.8850&lt;/td&gt;&lt;td&gt;36 %&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;
&lt;td&gt;502.9532&lt;/td&gt;&lt;td&gt;42 %&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;
&lt;td&gt;1.115480&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;490.2150&lt;/td&gt;&lt;td&gt;38 %&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;
&lt;td&gt;580.6518&lt;/td&gt;&lt;td&gt;56 %&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;
&lt;td&gt;1.184483&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;599.5584&lt;/td&gt;&lt;td&gt;48 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;642.5684&lt;/td&gt;&lt;td&gt;63 %&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;
&lt;td&gt;1.071736&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;661.0592&lt;/td&gt;&lt;td&gt;52 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;685.1753&lt;/td&gt;&lt;td&gt;74 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;1.036480&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;719.6965&lt;/td&gt;&lt;td&gt;64 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;709.9482&lt;/td&gt;&lt;td&gt;83 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;0.986454&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;731.3209&lt;/td&gt;&lt;td&gt;69 %&lt;/td&gt;&lt;td&gt;5 %&lt;/td&gt;
&lt;td&gt;710.1113&lt;/td&gt;&lt;td&gt;80 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;0.970998&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;741.2755&lt;/td&gt;&lt;td&gt;66 %&lt;/td&gt;&lt;td&gt;4 %&lt;/td&gt;
&lt;td&gt;709.2465&lt;/td&gt;&lt;td&gt;80 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;0.956792&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;738.2975&lt;/td&gt;&lt;td&gt;65 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td bgcolor="#cfc"&gt;710.1459&lt;/td&gt;&lt;td&gt;82 %&lt;/td&gt;&lt;td&gt;3 %&lt;/td&gt;
&lt;td&gt;0.961869&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
mtu 1500 / モジュールパラメータはDMA_length以外はデフォルト値
&lt;/p&gt;

&lt;p&gt;DMA_length の値を合わせれば、送受信のスループットに関しては velocityget/via-velocity にほとんと差異は無く、強いて言えば velocityget の方が受信に関して 4〜5% 高く、処理が軽い。送信に関しては双方同じ程度に CPU を使い切って頭打ちになっている。VIA C7 では 1Gbps は吐けないのかぁ。。。&lt;/p&gt;

&lt;p&gt;まぁ、DMA_length は velocityget のデフォルト値の 6 が推奨値かなぁ。ちなみに、NetBSDでのドライバ &lt;a href="http://netbsd.gw.com/cgi-bin/man-cgi?vge++NetBSD-current"&gt;vge&lt;/a&gt; だと 4 だった。&lt;/p&gt;

&lt;p&gt;ただ、DMA_lengthの値でスループットの差異が出るのは VT6122などのPCIベースの場合だけで、PCIe ベースの VT6130 ではどの値でも違いが無かった。。。多分省かれてしまったのでしょう。&lt;/p&gt;

&lt;p&gt;さて、velocityget にだけあるっぽい機能を移植していけば、差異が無くなっていくのかなぁ？&lt;/p&gt;

&lt;h4&gt;MTU 9000 での測定&lt;/h4&gt;

&lt;p&gt;そういえば、mtu 9000 のスループットも測定をしたかったで Intel Pro/1000PT を外付けしたんだっけなぁ。なので、測定してみた。

&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th rowspan="3"&gt;&lt;/th&gt;&lt;th colspan="3"&gt;velocityget&lt;/th&gt;&lt;th colspan="3"&gt;via-velocity&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;th rowspan="2"&gt;スループット&lt;br/&gt;(Mbps)&lt;/th&gt;&lt;th colspan="2"&gt;CPU 利用率&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;th&gt;target&lt;/th&gt;&lt;th&gt;ref1&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇒ ref1&lt;/td&gt;
&lt;td&gt;816.0544&lt;/td&gt;&lt;td&gt;32 %&lt;/td&gt;&lt;td&gt;7 %&lt;/td&gt;
&lt;td&gt;816.1541&lt;/td&gt;&lt;td&gt;30 %&lt;/td&gt;&lt;td&gt;7 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;target ⇐ ref1&lt;/td&gt;
&lt;td&gt;989.8745&lt;/td&gt;&lt;td&gt;48 %&lt;/td&gt;&lt;td&gt;9 %&lt;/td&gt;
&lt;td&gt;944.4813&lt;/td&gt;&lt;td&gt;46 %&lt;/td&gt;&lt;td&gt;8 %&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
mtu 9000 / DMA_length=6 / それ以外のモジュールパラメータはデフォルト値
&lt;/p&gt;

&lt;p&gt;受信に関しては、ほぼ 1Gbps を使い切っている！凄し！&lt;/p&gt;

&lt;h4&gt;追記 (2009/10/06)&lt;/h4&gt;

&lt;p&gt;今回使ったスループット測定用のスクリプト&lt;a href="http://gist.github.com/370467#file_measure_net_throughput.sh"&gt;measure_net_throughput.sh&lt;/a&gt;をバックアップとして上げておく。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8743016088587317472?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8743016088587317472/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8743016088587317472' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8743016088587317472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8743016088587317472'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/09/measure-network-throughput-via-velocity.html' title='VT6122 の性能(3) - ネットワークスループット測定'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7732089079361743455</id><published>2009-09-27T06:10:00.001+09:00</published><updated>2009-09-27T06:19:54.519+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>VT6122 の性能(2) - VIA Velocity の出自</title><content type='html'>&lt;p&gt;velocitygetのソースを眺めていると VT3119 とか VT3216とか一見全く関係無さそうなチップ名らしき物が出てくる。
VT6122 の Device ID が 0x3119 なのでVIA内部型番になっているのかなぁ。
でも、ドライバ内では Rev ID での区別らしきものがあり、それに従うと VT6122 = VT3216 (?)っぽい。&lt;/p&gt; 

&lt;p&gt;正直のところ VIA に聞かないと分からないし、検索でもホンの僅かの情報しか引っ掛からないので、
憶測程度にしかならないが、ちょっとだけ書き残しておこう。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;VT6110&lt;/h4&gt;

&lt;p&gt;ここら辺の事情は、ほんとに雲をつかむような感じだ。。。&lt;/p&gt;

&lt;p&gt;ZyXEL社の Gigabit NIC (GN650-T/GN670-T) が最初の製品っぽい。そいつが VIA 内部では Device ID と関連づけて、多分 VT3119 と呼ばれていたんだろう。コイツにはまだ PHY が内蔵されておらず、ZyXEL の製品には PHY が載っている。それが CICADA製SimpliPHY のもの。&lt;/p&gt;

&lt;p&gt;ZyXEL へのOEM供給?でチップの型番はZX1701Z/X1702になっているが、VIA が外販する時に VT6110 と付けたんだろうと推測できる。&lt;/p&gt;

&lt;h5&gt;参照&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;BSD系のドライバ &lt;a href="http://netbsd.gw.com/cgi-bin/man-cgi?vge++NetBSD-current"&gt;vge&lt;/a&gt;には、ZyXEL 製のNICとVT3119 の記述がある。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.zyxel.com/"&gt;ZyXEL&lt;/a&gt;のサイトには情報は殆どないが、Download Search で検索するととドライバ(rhineget 1.10/velocityget 1.18)が見つかる。&lt;/li&gt;
&lt;li&gt;ロシアでは結構流通した製品らしく、検索（&lt;a href="http://www.google.com/search?q=%22Zyxel+Omni+LAN+PCI+G1%22"&gt;"Zyxel Omni LAN PCI G1"&lt;/a&gt;）に出てくる。カード全体の鮮明な&lt;a href="http://www.ixbt.com/comm/nic/gigabit/64bit-apr2004/zyxel.jpg"&gt;画像&lt;/a&gt;も出てくる。SimpliPHYのマークのチップが見てとれる。&lt;/li&gt;
&lt;li&gt;rhineget/velocityget 内の chip_info_table には、CHIP_TYPE_VT6110 のマクロがある。&lt;/li&gt;
&lt;li&gt;Gentooのフォーラムの&lt;a href="http://forums.gentoo.org/viewtopic-t-451871-start-0.html"&gt;記事&lt;/a&gt;に、GN650-T の lspciの出力があり、Rev 01 となっており、ソース内では REV_ID_VT3119_A1 に相当する。REV_ID_VT3119_A0 というのは開発版なのかなぁ。。。&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;VT6120/VT6121/VT6122&lt;/h4&gt;

&lt;p&gt;VT6110 に SimpliPHYを内蔵して１チップ化したものが、良く知っている VIA Velocity と呼ばれてる製品群で、
PCIのバスサイズが32bit/64bitのものがそれぞれがVT6120/VT6121で、VT6120 のパッケージを小型したのが VT6122 である。&lt;/p&gt;

&lt;p&gt;内部的には VT3216 の型番が付いてると思われるが、ドライバが流用できるほど上位互換なので、Device ID が 0x3119 のままになったようである。&lt;/p&gt;

&lt;p&gt;以後、Rev ID の範囲で区別する方針になったのか、0x00〜0x0F が ZX1701Z/X1702/VT6110 であり、0x10 〜 0x1F　が VT6120/VT6121/VT6122 のどれかにあたる。ちなみに EPIA-EN12000EG に載っているのは 0x11 になっている。&lt;/p&gt;

&lt;p&gt;性能アップのための機能で Tx/RX キューに関するなんかのタイマーが追加されている。&lt;/p&gt;

&lt;h4&gt;Rev ID が 0x20〜0x7fのもの&lt;/h4&gt;

&lt;p&gt;該当する製品が見つけられなかった。。。内部的には VT3284 の型番が付いていると思われる。&lt;/p&gt;

&lt;p&gt;velocityget を読む限り、PCI のバースト転送に Memory-Read-Multiple が使えるようになったっぽい。なんのコッチャ、、、&lt;/p&gt;

&lt;h4&gt;Rev ID が 0x80 〜&lt;/h4&gt;

&lt;p&gt; PCIe に対応した VT6130/VT6132 が該当する。内部的には、VT3286 の型番が付いてると思われる。&lt;/p&gt;

&lt;p&gt;どうも PCIe 化と同時に省かれた機能があるっぽいが、ドライバでは何も対処してないっぽい気がする。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;Device ID 0x3119 のデバイスは、Rev ID の範囲でチップを区別してるらしい（もしかしたら、特定の Rev ID リストが作れるかも）。
&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th&gt;Rev ID&lt;/th&gt;&lt;th&gt;内部型番&lt;/th&gt;&lt;th&gt;チップ名&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x00 ～ 0x0f&lt;/td&gt;&lt;td&gt;VT3119&lt;/td&gt;&lt;td&gt;ZX1701Z/X1702/VT6110&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x10 ～ 0x1f&lt;/td&gt;&lt;td&gt;VT3216&lt;/td&gt;&lt;td&gt;VT6120/VT6121/VT6122&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x20 ～ 0x7f&lt;/td&gt;&lt;td&gt;VT3284&lt;/td&gt;&lt;td&gt;不明&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x80 ～ &lt;/td&gt;&lt;td&gt;VT3286&lt;/td&gt;&lt;td&gt;VT6130/VT6132&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;h5&gt;但し書き&lt;/h5&gt;
&lt;p&gt;元になるデータが凄く不確かであり、かなりの憶測が含んでいる(ほとんどが要出典)。あまり信用できる情報ではありませんのであしからず。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7732089079361743455?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7732089079361743455/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7732089079361743455' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7732089079361743455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7732089079361743455'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/09/history-of-via-velocity.html' title='VT6122 の性能(2) - VIA Velocity の出自'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-323719515859398808</id><published>2009-09-24T22:25:00.000+09:00</published><updated>2009-09-24T22:30:00.259+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iSCSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux の iSCSI</title><content type='html'>&lt;p&gt;Linux で iSCSI を、やるならば先ず「&lt;a href="http://iscsitarget.sourceforge.net/"&gt;iSCSI Enterprise Target (IET)&lt;/a&gt;」である。そして、kernel に取り込まれてる iSCSI システムが別にあるよってなる。&lt;/p&gt;

&lt;p&gt;それって何だろう？&lt;/p&gt;

&lt;p&gt;「&lt;a href="http://stgt.berlios.de/"&gt;Linux SCSI target framework (STGT)&lt;/a&gt;」がそれらしい。iSCSIに限らず Fiber Channel などの一般的な SCSI Target を対象に絶賛開発中らしい。ユーザランドのコマンドは RHEL5系でscsi-target-utils として提供されいるので、結構安定してるかも。ただ、Debian にはまだ無いっぽい。&lt;/p&gt;

&lt;p&gt;あと、別系統として、「&lt;a href="http://scst.sourceforge.net/"&gt;generic SCSI target subsystem for Linux (SCST)&lt;/a&gt;」てのがある。&lt;/p&gt;

&lt;p&gt;三種類の&lt;a href="http://scst.sourceforge.net/comparison.html"&gt;比較表&lt;/a&gt;を見ると、SCST が多機能で高性能っぽい。今後が楽しみだなぁ&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-323719515859398808?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/323719515859398808/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=323719515859398808' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/323719515859398808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/323719515859398808'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/09/linux-iscsi.html' title='Linux の iSCSI'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-4427303044911144130</id><published>2009-09-24T18:49:00.000+09:00</published><updated>2010-04-19T05:03:42.346+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>VT6122 の性能(1) - Linux のドライバの準備</title><content type='html'>&lt;p&gt;VIA EPIA は不憫な奴だ。&lt;/p&gt;

&lt;p&gt;去年から消費電力が低い Intel Atom ボードが出荷され、当初性能がわずかに上かなぁ〜と思われた後で、Dual-Core だとか Hyper-Threading とかが追加され、もう比べるのも可哀想なぐらい、次いでに Mini-ITX のボードの市場も荒らされまくり、踏んだり蹴ったりのボコボコにされてますなぁ、、、なんか違うかも。&lt;/p&gt;

&lt;p&gt;何の気の迷いか &lt;a href="http://www.viatech.co.jp/jp/products/mainboards/motherboards.jsp?motherboard_id=399"&gt;EPIA-EN12000EG&lt;/a&gt; を買ってしまって以来、
不憫な奴が故に捨てられずに、年に１回くらいは思い出したように手を入れて使っている。。。はぁ〜&lt;/p&gt;

&lt;p&gt;今回は NIC の性能について愚痴ってみよう。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt; EPIA-EN12000EG には &lt;a href="http://www.viatech.co.jp/jp/products/networking/velocity/vt6122/"&gt;VT6122&lt;/a&gt; (Gigabit Ethernet) が搭載されている。&lt;a href="http://www.viatech.co.jp/servlet/downloadSvl?id=399&amp;download_file_id=4072"&gt;Datasheet(pdf)&lt;/a&gt; を見る限り、South Bridge / &lt;a href="http://www.viatech.co.jp/jp/products/chipsets/southbridge/vt8237/index.jsp"&gt;VT8237R+&lt;/a&gt; の下のPCIバス(32bit/33MHz)にぶら下がっている。PCIバス(32bit/33MHz) の上限 133MByte/s がボトルネックになるので期待は出来ない。PCIe 接続の &lt;a href="http://www.viatech.co.jp/jp/products/networking/velocity/vt6130-6132/"&gt;VT6130/VT6132&lt;/a&gt; でないなければ Gigabit の限界には迫れないが、どれくらい迫れるかが興味の有るところ。&lt;/p&gt;

&lt;h4&gt;二種類のドライバ&lt;/h4&gt;

&lt;p&gt;VT6122のLinux ドライバは二種類で、どっちも些細なバグが有る。
&lt;ol&gt;
&lt;li&gt;via-velocity / kernel 本家に取り込まれているもの。性能が低いのがもっぱらの噂。WOL が動かない。&lt;/li&gt;
&lt;li&gt;velocityget / VIA 本家作成のドライバ。&lt;a href="http://www.viaarena.com/"&gt;VIA AREA&lt;/a&gt; で公開されているが、ダウンロードページに辿り着くまでが迷路というか、ほんとに無理。現在(2009/09/23)の時点で、&lt;a href="http://www.viaarena.com/Driver/velocity_linux_1.36.zip"&gt;1.36&lt;/a&gt; が安定版らしい。 rmmod/insmod を繰り返すと dmesg に 不審な oops を残す不具合あり。&lt;/li&gt;
&lt;/ol&gt;
で、修正パッチを作ってみた。
&lt;ol&gt;
&lt;li&gt; via-velocity の WOL 対応パッチ (debian lenny/kernel-2.6.26用) / &lt;a href="http://gist.github.com/370493#file_via_velocity_fixed_wol.patch"&gt;via-velocity-fixed-wol.patch&lt;a/&gt;&lt;/li&gt;
&lt;li&gt; velocityget の procエントリのリークフィックパッチ / &lt;a href="http://gist.github.com/370495#file_velocityget_fixed_proc.patch"&gt;velocityget-fixed-proc.patch&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;h4&gt;via-velocity単体で再構築&lt;/h4&gt;

&lt;p&gt;via-velocity 単体だけでも再構築できるようにしてみよう。ターゲットは、Debian lenny の 2.6.26-2-686 向けだが、他のディストロでも応用可能かなぁ。&lt;/p&gt;

&lt;pre class="screen"&gt;# apt-get install linux-headers-2.6.26-2-686
# apt-get install linux-source-2.6.26
&lt;/pre&gt;

&lt;p&gt;構築用ソースのかき集め
&lt;ol&gt;
&lt;li&gt;適当にでっち上げた Makefile / &lt;a href="http://gist.github.com/370510#file_makefile_via_velocity_only"&gt;Makefile-via-velocity-only&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;linux-source-2.6.26 パッケージからvia-velocity.[hc] &lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="screen"&gt;# mkdir via-velocity
# cp Makefile-via-velocity-only via-velocity/Makefile
# cp /usr/src/linux-source-2.6.26/drivers/net/via-velocity.[ch] via-velocity/
# patch -p 3 -d via-velocity &amp;lt; via-velocity-fixed-wol.patch
&lt;/pre&gt;
あとは再構築してモジュールをインストール。
&lt;pre class="screen"&gt;# cd via-velocity
# make install
make -C /lib/modules/2.6.26-2-686/build SUBDIRS=/usr/src/via-velocity modules
make[1]: ディレクトリ `/usr/src/linux-headers-2.6.26-2-686' に入ります
  CC [M]  /usr/src/via-velocity/via-velocity.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/src/via-velocity/via-velocity.mod.o
  LD [M]  /usr/src/via-velocity/via-velocity.ko
make[1]: ディレクトリ `/usr/src/linux-headers-2.6.26-2-686' から出ます
mkdir -p /lib/modules/2.6.26-2-686/kernel/drivers/net
*****  Move current driver via-velocity.ko to via-velocity.ko.2009-09-24-1253781710 file
mv /lib/modules/2.6.26-2-686/kernel/drivers/net/via-velocity.ko /lib/modules/2.6.26-2-686/kernel/drivers/net/via-velocity.ko.2009-09-24-1253781710

install -m 644 -o root via-velocity.ko /lib/modules/2.6.26-2-686/kernel/drivers/net
/sbin/depmod -a || true
&lt;/pre&gt;
最後に rmmod/modprobe してモジュールを更新して完了。&lt;/p&gt;

&lt;p&gt;これで機能的には同程度になったので、性能比較でもしますかぁ。&lt;/p&gt;

&lt;h4&gt;追記 (2009/09/26)&lt;/h4&gt;

&lt;p&gt;どうも via-velocity には、ネットワーク負荷が高いときにシステムが黙りをする症状(&lt;a href="http://quovadis.sakura.ne.jp/wifky.cgi?p=trouble+with+vt6122"&gt;1&lt;/a&gt;,&lt;a href="http://search.luky.org/vine-users.7/msg08074.html"&gt;2&lt;/a&gt; 等々)？が報告されている。velocityget を使えば症状が出ないので、velocitygetを使うべしとなってるらしい。。。&lt;/p&gt;

&lt;p&gt;ソースを見比べると、割り込みハンドラ内の処理が問題のようだ。それぞれは、大まかに次のようになっている。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;via-velocity
&lt;ol&gt;
&lt;li&gt;未処理の割り込み要因がなくなるまでループする&lt;/li&gt;
&lt;li&gt;ループの一単位は、受信/送信ディスクリプタをそれぞれ最大15ディスクリプタ分を処理する&lt;/li&gt;
&lt;li&gt;処理したディスクリプタ数が int_works を超えたらメッセージを出力する&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;velocityget
&lt;ol&gt;
&lt;li&gt;受信/送信ディスクリプタをそれぞれ最大int_worksディスクリプタ分を処理する&lt;/li&gt;
&lt;li&gt;上記の処理を２回繰り返す&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;要するに via-velocity では int_works の取り扱いが杜撰で、かつネットワーク負荷が高いと割り込みハンドラ内に捕われてしまう。なので、割り込みを共有してるデバイスの処理が滞る症状が現れる。&lt;/p&gt;

&lt;p&gt;他のネットワークチップのドライバーを見る限り、割り込みハンドラ内で全部のディスクリプタを処理せずに抜ける実装は多々有るので、バグなんだろうなぁ。&lt;/p&gt;

&lt;p&gt;うんで、修正パッチを作ってみた&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; via-velocity の int_works 関連の修正パッチ (debian lenny/kernel-2.6.26用) / &lt;a href="http://gist.github.com/370496#file_via_velocity_fixed_int_works.patch"&gt;via-velocity-fixed-int_works.patch&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;上のWOL対応パッチの後に当てればいい
&lt;pre class="screen"&gt;# tar xfz via-velocity-buildpack-nosrc.tgz
# cp /usr/src/linux-source-2.6.26/drivers/net/via-velocity.[ch] via-velocity/
# patch -p 3 -d via-velocity &amp;lt; via-velocity-fixed-wol.patch
# patch -p 3 -d via-velocity &amp;lt; via-velocity-fixed-int_works.patch
# cd via-velocity
# make install
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;これで、本当に不具合が無い状態？になったので、性能比較でもしますかぁ。&lt;/p&gt;

&lt;h4&gt;追記 (2009/09/29)&lt;/h4&gt;

&lt;p&gt;どうも via-velocity-fixed-int_works.patch の velocity_tx_srv の修正部分がバグってたみたいだ。なので、修正版に差し替えました。申し訳ない。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-4427303044911144130?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/4427303044911144130/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=4427303044911144130' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4427303044911144130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4427303044911144130'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/09/prepare-linux-driver-for-vt6122.html' title='VT6122 の性能(1) - Linux のドライバの準備'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6425727785171086407</id><published>2009-09-10T16:53:00.001+09:00</published><updated>2009-09-24T22:25:57.292+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='iSCSI'/><category scheme='http://www.blogger.com/atom/ns#' term='IPSec'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Time Machine を iSCSI 経由で使う (3) - 性能比較</title><content type='html'>&lt;p&gt;ボリュームをiSCSIの載せたときの性能と、IPSecで保護した場合やWiFi経由にした場合の性能劣化を測定してみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;設定条件&lt;/h4&gt;

&lt;p&gt;
接続の経路に結構余分な機器が挟まっているが、
測定用に別環境は用意していないためである。
実環境ベースと考えて勘弁してもらいたい。&lt;/a&gt;

&lt;h5&gt;Linux ターゲット側&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;ASUS M2NPV-VM / Athlon64X2 3800+ (2GHz) / DDR2-533 1G x 4&lt;/li&gt;
&lt;li&gt;onboard Gigabit Ethernet (nVidia MCP51)を利用。&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Mac OSX のイニシエータ側&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;MacBookPro5,1 / Intel Core 2 Duo / 2.4 GHz / DDR3-1066 2G x 2&lt;/li&gt;
&lt;li&gt;onboard Gigabit Ethernet / AirMac(WiFi) を利用。&lt;/li&gt;
&lt;li&gt;Wifi経由では 802.11n/WPA2でアクセスポイントに接続&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;接続形態&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;ローカルHDD &lt;br/&gt;
MacBookPro &lt;br/&gt;
⇔ ExpressCard(&lt;a href="http://www.green-house.co.jp/products/cable/esata/excesa2/index.html"&gt;GH-EXC-ESA2&lt;/a&gt;/eSATA接続) ⇔ HDDケース(&lt;a href="http://www.logitec.co.jp/products/hd/lhrds02sau2.html"&gt;LHR-DS02SAU2BU&lt;/a&gt;) ⇔ HDD 
&lt;/li&gt;
&lt;li&gt;有線ネットワークでは &lt;br/&gt;
MacBookPro&lt;br&gt;
⇔ Gigabit Hub(&lt;a href="http://buffalo.jp/products/catalog/item/l/lsw-gt-8nsr/index.html"&gt;LSW-GT-8NSR&lt;/a&gt;) &lt;br&gt;
⇔  Gigabit Hub(&lt;a href="http://www.allied-telesis.co.jp/products/list/switch/gs900m/catalog.html"&gt;GS908M&lt;/a&gt;) ⇔  Gigabit Hub(&lt;a href="http://www.allied-telesis.co.jp/products/list/switch/gs900m/catalog.html"&gt;GS908M&lt;/a&gt;) &lt;br/&gt;
⇔ Linux マシン(SATA接続) ⇔ HDD 
&lt;/li&gt;
&lt;li&gt;Wifi経由では&lt;br&gt;
MacBookPro&lt;br&gt;
⇔ AirMac Extreme (2007モデル？有線100Baseの奴) &lt;br/&gt;
⇔  Gigabit Hub(&lt;a href="http://www.allied-telesis.co.jp/products/list/switch/gs900m/catalog.html"&gt;GS908M&lt;/a&gt;) ⇔  Gigabit Hub(&lt;a href="http://www.allied-telesis.co.jp/products/list/switch/gs900m/catalog.html"&gt;GS908M&lt;/a&gt;) &lt;br/&gt;
⇔ Linux マシン(SATA接続) ⇔ HDD 
&lt;/ul&gt;

&lt;h5&gt;測定したHDD&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;SATA 320G HDD(ST3320620AS)&lt;/li&gt;
&lt;li&gt;3.0Gbps が有効になる用にジャンパー設定&lt;/li&gt;
&lt;li&gt;iSCSI／ローカル接続でも同じモデルを利用&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;測定結果&lt;/h4&gt;
&lt;p&gt;
&lt;table border="1"&gt;
&lt;tr align="center"&gt;&lt;th colspan="2" rowspan="2"&gt;&lt;/th&gt;&lt;td rowspan="2"&gt;ローカルHDD&lt;/td&gt;&lt;td&gt;GigaEther&lt;/td&gt;&lt;td&gt;Wifi経由&lt;/td&gt;&lt;td&gt;GigaEther&lt;/td&gt;&lt;td&gt;Wifi経由&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;td colspan="2"&gt;IPSec 無&lt;/td&gt;&lt;td colspan="2"&gt;IPSec 有&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th rowspan="4"&gt;Sequential&lt;/th&gt;&lt;th&gt;Uncached Write [4K blocks]&lt;/th&gt;&lt;td&gt;58.19&lt;/td&gt;&lt;td&gt;60.51&lt;/td&gt;&lt;td&gt;5.34&lt;/td&gt;&lt;td&gt;13.15&lt;/td&gt;&lt;td&gt;5.48&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th&gt;Uncached Write [256K blocks]&lt;/th&gt;&lt;td&gt;47.58&lt;/td&gt;&lt;td&gt;50.82&lt;/td&gt;&lt;td&gt;7.33&lt;/td&gt;&lt;td&gt;12.65&lt;/td&gt;&lt;td&gt;4.72&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th&gt;Uncached Read [4K blocks]&lt;/th&gt;&lt;td&gt;16.16&lt;/td&gt;&lt;td&gt;6.02&lt;/td&gt;&lt;td&gt;1.46&lt;/td&gt;&lt;td&gt;4.75&lt;/td&gt;&lt;td&gt;1.38&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th&gt;Uncached Read [256K blocks]&lt;/th&gt;&lt;td&gt;75.55&lt;/td&gt;&lt;td&gt;28.86&lt;/td&gt;&lt;td&gt;3.39&lt;/td&gt;&lt;td&gt;15.86&lt;/td&gt;&lt;td&gt;4.90&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th rowspan="4"&gt;Random&lt;/th&gt;&lt;th&gt;Uncached Write [4K blocks]&lt;/th&gt;&lt;td&gt;1.25&lt;/td&gt;&lt;td&gt;1.36&lt;/td&gt;&lt;td&gt;1.32&lt;/td&gt;&lt;td&gt;1.35&lt;/td&gt;&lt;td&gt;1.26&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th&gt;Uncached Write [256K blocks]&lt;/th&gt;&lt;td&gt;26.19&lt;/td&gt;&lt;td&gt;24.37&lt;/td&gt;&lt;td&gt;6.19&lt;/td&gt;&lt;td&gt;13.10&lt;/td&gt;&lt;td&gt;6.93&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th&gt;Uncached Read [4K blocks]&lt;/th&gt;&lt;td&gt;0.64&lt;/td&gt;&lt;td&gt;0.61&lt;/td&gt;&lt;td&gt;0.45&lt;/td&gt;&lt;td&gt;0.58&lt;/td&gt;&lt;td&gt;0.43&lt;/td&gt;&lt;/tr&gt;
&lt;tr align="center"&gt;&lt;th&gt;Uncached Read [256K blocks]&lt;/th&gt;&lt;td&gt;26.68&lt;/td&gt;&lt;td&gt;23.66&lt;/td&gt;&lt;td&gt;3.21&lt;/td&gt;&lt;td&gt;11.17&lt;/td&gt;&lt;td&gt;4.63&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
測定単位は全て MByte/sec
&lt;/p&gt;

&lt;h4&gt;ゴタク&lt;/h4&gt;

&lt;p&gt;iSCSI を有線／noIPSec で通す場合、シーケンシャル読込み以外はほとんど劣化が無い。
シーケンシャル読込みはキャッシュがほとんど効かない為か、iSCSIターゲット実装の良し悪しが出ていると思う。
また、チューニングを実施せずにデフォルト設定にしているので、それも影響しているのかも。&lt;/p&gt;

&lt;p&gt;IPSec で保護すると、約120Mbps (15Mbyte/sec) 程度で頭打ちになっている。IPSec の実効帯域と思われる。Gigabit Ethernet なのに帯域が一割程度とはちょっと情けない。IPSec 固有の問題か、Linux の実装の問題か、iSCSI との組み合わせか、判然としない。何処に文句を言っていいのか分からない。&lt;/p&gt;

&lt;p&gt;iSCSI を無線にした場合は、大きな問題は経路の帯域である。iSCSIとか、IPSec の有無とかは、もはや問題ではない。周囲の電波状況によって影響を受けるが、WPA2で50Mbpsくらいは流れるので良いのかなぁ。&lt;/p&gt;

&lt;h4&gt;結論&lt;/h4&gt;
&lt;p&gt;
iSCSIをIPSecで保護することは、
無線を使って Time Machine でバックアップすることには殆ど影響しないと言えそうだ。
また、差分は一時間に一度であり、有線であっても約 120Mbps 程度の帯域を確保できることを考えると、
目くじらを立てるものではないのかなぁ。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6425727785171086407?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6425727785171086407/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6425727785171086407' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6425727785171086407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6425727785171086407'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/09/measure-iscsi-device-protected-by-ipsec.html' title='Time Machine を iSCSI 経由で使う (3) - 性能比較'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-65129963152141071</id><published>2009-09-08T15:49:00.001+09:00</published><updated>2009-09-24T22:25:52.453+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='iSCSI'/><category scheme='http://www.blogger.com/atom/ns#' term='IPSec'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Time Machine を iSCSI 経由で使う (2) - IPSecで保護</title><content type='html'>&lt;p&gt;iSCSI はブロックデータが Network 上に流れるので気を付けなくはいけない。
専用のネットワークかVLANとかを組むのが定石らしいが、そうでない場合 IPSec が使うのが望ましいらしい。&lt;/p&gt;

&lt;p&gt;設定が面倒で、大抵ノーガードですなぁ。&lt;/p&gt;

&lt;p&gt;MacOSX でも普通にIPSecが使えるので、iSCSI のデータのみを保護する設定をしてみよう。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;IPSec の設定内容&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Linux と Mac OSX の相互にIPSec接続をする。&lt;/li&gt;
&lt;li&gt;既に iSCSI の設定が済んでおり、Linux側のiSCSIターゲットボリュームをMacOSX側のiSCSIイニシエータからマウントできる。&lt;/li&gt;
&lt;li&gt;IPSec はトランスポートモードで使い、iSCSI のデータ(3260/tcp)に限定する。&lt;/li&gt;
&lt;li&gt;IKE デーモンは racoon (IKEv1) を使う。&lt;/li&gt;
&lt;li&gt;認証は事前共有秘密鍵／aggressive mode を使う。&lt;/li&gt;
&lt;li&gt;暗号はAES/SHA1をなるべく使う。&lt;/li&gt;
&lt;/ol&gt;

&lt;table border="1"&gt;
&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;役割&lt;/th&gt;&lt;th&gt;IPアドレス&lt;/th&gt;&lt;th&gt;ホスト名&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Linux 側&lt;/td&gt;&lt;td&gt;iSCSIターゲット&lt;/td&gt;&lt;td&gt;192.168.0.10/24 (固定)&lt;/td&gt;&lt;td&gt;server1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;MacOSX 側&lt;/td&gt;&lt;td&gt;iSCSIイニシエータ&lt;/td&gt;&lt;td&gt;192.168.0.20/24&lt;/td&gt;&lt;td&gt;client1&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;h4&gt;SADの設定&lt;/h4&gt;

&lt;p&gt;基本的に、上りと下りのそれぞれで、サーバ側のIPアドレスとポート番号を指定すれば、iSCSI通信のみに限定できる。クライアント側は、DHCP等で振れる事を考えて範囲指定にする。&lt;/p&gt;

&lt;p&gt;BSDの実装では PF tag なるものがあり「spdadd tagged」と組み合わせてフィルタルールに溶け込ませる事ができるそうなのだが、Linux側では同等の機能が実装されていないようなので残念ですなぁ。。。&lt;/p&gt;

&lt;h5&gt;Linux ターゲット側&lt;/h5&gt;

&lt;pre class="screen"&gt;# apt-get install ipsec-tools
&lt;/pre&gt;
&lt;p&gt;
/etc/ipsec-tools.conf
&lt;pre class="screen"&gt;&lt;code&gt;...
flush;
spdflush;

spdadd 192.168.0.10[3260] 192.168.0.0/24 tcp -P out ipsec esp/transport//require;
spdadd 192.168.0.0/24 192.168.0.10[3260] tcp -P in ipsec esp/transport//require;
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;h5&gt;Mac OSX のイニシエータ側&lt;/h5&gt;

&lt;p&gt;MacOSXでは、setkey 用の設定ファルの置き場がデフォルトでは用意されていないので、適当な場所に保存して、起動時に setkey コマンドで読み込み必要がある。&lt;/p&gt;

&lt;p&gt;
/etc/racoon/setkey.conf
&lt;pre class="screen"&gt;&lt;code&gt;flush;
spdflush;

spdadd 192.168.0.0/24 192.168.0.10[3260] tcp -P out ipsec esp/transport//require;
spdadd 192.168.0.10[3260] 192.168.0.0/24 tcp -P in  ipsec esp/transport//require;
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;h4&gt;racoonの設定&lt;/h4&gt;

&lt;p&gt;Linux/MacOSX ともに、racoon を使うので設定ファイル racoon.conf の内容はほぼ同じになる。ただし、事前共有秘密鍵ファイル psk.txt は、同じ鍵をそれぞれの相手側のものとして書く必要があり、ちょっと注意が必要。&lt;/p&gt;

&lt;h5&gt;Linux ターゲット側&lt;/h5&gt;

&lt;p&gt;
/etc/racoon/racoon.conf
&lt;pre class="screen"&gt;&lt;code&gt;...
remote anonymous {
	exchange_mode aggressive,main;
	my_identifier fqdn "server1";	# サーバの認識情報
	dpd_delay 20;

	proposal {
		encryption_algorithm 3des;
		lifetime time 2 hour;
		hash_algorithm sha1;
		authentication_method pre_shared_key;
		dh_group 2;
	}
	generate_policy off;
}

sainfo anonymous {
	pfs_group 2;
	lifetime time 1 hour;
	encryption_algorithm aes, 3des;
	authentication_algorithm hmac_sha1;
	compression_algorithm deflate;
}
&lt;/code&gt;&lt;/pre&gt;
/etc/racoon/psk.txt
&lt;pre class="screen"&gt;&lt;code&gt;...
client1	secret1
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;h5&gt;Mac OSX のイニシエータ側&lt;/h5&gt;

&lt;p&gt;他にVPNなど IPSec を使うものと衝突する可能性がある気がしないでも無い。。。anonymous の部分をアドレス指定しれば、行けそうな気がするが。。。未検証。&lt;/p&gt;

&lt;p&gt;
/etc/racoon/racoon.conf
&lt;pre class="screen"&gt;&lt;code&gt;...
remote anonymous {
	exchange_mode aggressive,main;
	my_identifier fqdn "client1";	# クライアントの認識情報
	dpd_delay 20;

	proposal {
		encryption_algorithm 3des;
		lifetime time 2 hour;
		hash_algorithm sha1;
		authentication_method pre_shared_key;
		dh_group 2;
	}
	generate_policy off;
}

sainfo anonymous {
	pfs_group 2;
	lifetime time 1 hour;
	encryption_algorithm aes, 3des;
	authentication_algorithm hmac_sha1;
	compression_algorithm deflate;
}
&lt;/code&gt;&lt;/pre&gt;
/etc/racoon/psk.txt
&lt;pre class="screen"&gt;&lt;code&gt;...
server1	secret1
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;racoonは自動に起動しないので、適当名タイミングで起動する必要はある。
&lt;pre class="screen"&gt;% sudo setkey -f /etc/racoon/setkey.conf
% sudo racoon
&lt;/pre&gt;
自動起動するには、「&lt;a href="http://www.oreilly.co.jp/books/4873112958/"&gt;マスタリングIPsec 第2版&lt;/a&gt;」に記述の方法が簡単である。
&lt;/p&gt;

&lt;h4&gt;確認&lt;/h4&gt;

&lt;p&gt;IPSec はアプリケーション側の修正の必要の無い物なので、、、普通にボリュームをマウントすると普通に使える。&lt;/p&gt;

&lt;p&gt;まぁ気休めに、IPSec_SAをチェックすれば、
&lt;pre class="screen"&gt;# setkey -D
192.168.0.20 192.168.0.10 
	esp mode=transport spi=131341201(0x07d41b91) reqid=0(0x00000000)
	E: aes-cbc  8250b455 59cc8799 c0d0b0b0 71b570a8
	A: hmac-sha1  6ff81843 b28130ed a5722694 32b134ee a0fc5b96
	seq=0x00000000 replay=4 flags=0x00000000 state=dying 
	created: Sep  8 14:51:43 2009	current: Sep  8 15:40:54 2009
	diff: 2951(s)	hard: 3600(s)	soft: 2880(s)
	last: Sep  8 14:51:45 2009	hard: 0(s)	soft: 0(s)
	current: 50750612(bytes)	hard: 0(bytes)	soft: 0(bytes)
	allocated: 49393	hard: 0	soft: 0
	sadb_seq=1 pid=1233 refcnt=0
192.168.0.10 192.168.0.20 
	esp mode=transport spi=17664308(0x010d8934) reqid=0(0x00000000)
	E: aes-cbc  5d2d422b fe916f6d 501fedce e3d9650d
	A: hmac-sha1  6cfbf657 2eb74cb3 b64b5074 e34148b9 7bcaf934
	seq=0x00000000 replay=4 flags=0x00000000 state=dying 
	created: Sep  8 14:51:43 2009	current: Sep  8 15:40:54 2009
	diff: 2951(s)	hard: 3600(s)	soft: 2880(s)
	last: Sep  8 14:51:45 2009	hard: 0(s)	soft: 0(s)
	current: 2142076(bytes)	hard: 0(bytes)	soft: 0(bytes)
	allocated: 26881	hard: 0	soft: 0
	sadb_seq=2 pid=1233 refcnt=0
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;ついでに tcpdump でサーバ側のパケットの流れを見れば、ESPパケットが飛び交ってるのが見える。。。
&lt;pre class="screen"&gt;# tcpdump -i eth0 not port 22
...
15:38:24.183860 IP client1 &gt; server1: ESP(spi=0x07d41b91,seq=0xc0ba), length 116
15:38:24.184162 IP server1 &gt; client1: ESP(spi=0x010d8934,seq=0x68e6), length 116
15:38:24.184625 IP client1 &gt; server1: ESP(spi=0x07d41b91,seq=0xc0bb), length 68
15:38:27.186886 IP client1 &gt; server1: ESP(spi=0x07d41b91,seq=0xc0bc), length 116
...
&lt;/pre&gt;
&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;SADの設定をちまちま行えば、他の通信もIPSecで保護が出来そうである。気になるのは、パフォーマンスがどこまで劣化するかなのだが。。。あまり期待は出来ないのかなぁ。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-65129963152141071?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/65129963152141071/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=65129963152141071' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/65129963152141071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/65129963152141071'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/09/protect-iscsi-stream-by-ipsec.html' title='Time Machine を iSCSI 経由で使う (2) - IPSecで保護'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8149992841273390396</id><published>2009-09-03T14:38:00.001+09:00</published><updated>2009-09-24T22:25:45.898+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='iSCSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk'/><title type='text'>Time Machine を iSCSI 経由で使う (1) - 設定</title><content type='html'>&lt;p&gt;Leopard から実装された Time Machine は非常に使い易い。
ただ、常にノートブックに外付けのHDDをぶら下げるのは、可搬性が損なわれる。
Time Capsule を使えば良いのだが、約10M Byte/s 位しか出ないらしい。&lt;/p&gt;

&lt;p&gt;どうも iSCSI 経由で外部ストレージを繋げてバックアップ先に指定すれば、いい感じになれるらしい。&lt;/p&gt;

&lt;p&gt;最近 Linux でよく使われているターゲットは「&lt;a href="http://iscsitarget.sourceforge.net/"&gt;iSCSI Enterprise Target&lt;/a&gt;」であり、Debian lenny からカーネルモジュールもパッケージ化されており、apt 一発で使える。また、ストレージ層は Linux に依存しており、フォーマット縛りが無い。そのため、HDD単体をiSCSI経由で接続して使っていた場合、そのHDDをUSB等の変換アダプタで直に接続しても、そのままで使える利点がある。&lt;/p&gt;

&lt;p&gt;Mac OSX のイニシエータは標準では用意されていないが、サードベンダー製の「&lt;a href="http://www.studionetworksolutions.com/products/product_detail.php?t=more&amp;pi=11"&gt;globalSAN iSCSI Initiator for OS X&lt;/a&gt;」が無料で制限なしで利用できる。&lt;/p&gt;

&lt;p&gt;コイツらを組み合わせると、Time Machine の初期化やリカバリ時だけマシンに直付けして、差分バックアップ運用時はiSCSI経由で行う事が出来る。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;Linux で iSCSI target 設定&lt;/h4&gt;

&lt;p&gt;設定の内容は、
&lt;ol&gt;
&lt;li&gt;お手軽な単方向CHAP認証を使い、ユーザ名 iscsiadmin ／パスワードは12～16文字の適当な文字列にする。&lt;/li&gt;
&lt;li&gt;IQN(ISCSI Qualified Name)は iqn.YYYY-MM.domainなんたらをユニークになるように適当に付ける。&lt;/li&gt;
&lt;li&gt;デバイスの名前に関しては、固定される用に /dev/sd? ではなく /dev/disk/by-id/? を使う。&lt;/li&gt;
&lt;li&gt;イニシエータ制限をサブネット範囲でかけておく。&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;Debian lenny にバイナリパッケージが用意されている。
&lt;pre class="screen"&gt;# apt-get install iscsitarget iscsitarget-modules-2.6-amd64&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;/etc/default/iscsitarget
&lt;pre class="screen"&gt;&lt;code&gt;ISCSITARGET_ENABLE=true
&lt;/code&gt;&lt;/pre&gt;
/etc/ietd.conf
&lt;pre class="screen"&gt;&lt;code&gt;IncomingUser iscsiadmin 123456789012

Target iqn.2009-09.com.example:stroage.fileserver.timemachine
	IncomingUser iscsiadmin 123456789012
	Lun 0 Path=/dev/disk/by-id/scsi-XXXXXX,Type=blockio
&lt;/code&gt;&lt;/pre&gt;
/etc/initiators.allow
&lt;pre class="screen"&gt;&lt;code&gt;ALL xx.xx.xx.xx/24
&lt;/code&gt;&lt;/pre&gt;
うんで、/etc/init.d/iscsitargt start で、iSCSI ターゲットのサービスを有効化する。
&lt;/p&gt;

&lt;h4&gt;Linux の Open-ISCSIを使って確認&lt;/h4&gt;

&lt;p&gt;適当な iSCSI イニシエータが必要なので、&lt;a href="http://www.open-iscsi.org/"&gt;Open-iSCSI&lt;/a&gt; を設定して確認する。
&lt;pre class="screen"&gt;# apt-get install open-iscsi&lt;/pre&gt;
/etc/iscsi/iscsid.conf
&lt;pre class="screen"&gt;&lt;code&gt;...
node.session.auth.authmethod = CHAP
node.session.auth.username = iscsiadmin
node.session.auth.password = 123456789012
...
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = iscsiadmin
discovery.sendtargets.auth.password = 123456789012
...&lt;/code&gt;&lt;/pre&gt;
うんで、/etc/init.d/open-iscsi start で、iSCSI イニシエータのサービスを有効化する。
&lt;/p&gt;

&lt;p&gt;取り敢えず、検索すると
&lt;pre class="screen"&gt;# iscsi_discovery xx.xx.xx.xx
iscsiadm: No active sessions.
Set target iqn.2009-09.com.example:stroage.fileserver.timemachine to automatic login over tcp to portal xx.xx.xx.xx:3260
Logging out of session [sid: 5, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]
Logout of [sid: 5, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]: successful
discovered 1 targets at xx.xx.xx.xx
&lt;/pre&gt;
何となく、ターゲットが発見できる。
&lt;/p&gt;

&lt;p&gt;ついでに、ノードに接続して確認すると
&lt;pre class="screen"&gt;# iscsiadm -m node -p xx.xx.xx.xx -l
Logging in to [iface: default, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]
Login to [iface: default, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]: successful
# cat /proc/scsi/scsi
...
Host: scsi27 Channel: 00 Id: 00 Lun: 00
  Vendor: IET      Model: VIRTUAL-DISK     Rev: 0   
  Type:   Direct-Access                    ANSI  SCSI revision: 04
...
# iscsiadm -m node -p xx.xx.xx.xx -u
Logging out of session [sid: 7, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]
Logout of [sid: 7, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]: successful
&lt;/pre&gt;
まぁ、ディスクが見える！
&lt;/p&gt;

&lt;h4&gt;Mac OSX 上での設定&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://www.studionetworksolutions.com/products/product_detail.php?t=more&amp;pi=11"&gt;globalSAN iSCSI Initiator for OS X&lt;/a&gt;から、パッケージをインストールして再起動し、GUIに従って設定すれば良い。
&lt;ol&gt;
&lt;li&gt;「システム環境設定」から「globalSAN iSCSI」を選択&lt;/li&gt;
&lt;li&gt;「Portals」タブで、ターゲットマシンのIPを追加する。このとき、「Advanced Settings」で、CHAP認証を有効にして、User Name/Target Secret をISCSIターゲットで設定したものにする。&lt;/li&gt;
&lt;li&gt;「Targets」タブにISCSIターゲットのIQNが見えるようになる。&lt;/li&gt;
&lt;li&gt;ISCSIターゲットのIQNを選択して「Log On」をする。&lt;/li&gt;
&lt;li&gt;後の扱いはローカル接続のHDDと同じで、必要に応じて「ディスクユーティリティ」で初期化する。&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;Time Machine の設定は、ローカル接続のHDDと同じような扱いで、HFS+のボリュームを作って指定すれば普通に使える。。。快適じゃぁ。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8149992841273390396?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8149992841273390396/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8149992841273390396' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8149992841273390396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8149992841273390396'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/09/use-time-machine-on-iscsi.html' title='Time Machine を iSCSI 経由で使う (1) - 設定'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5135298562803429599</id><published>2009-07-21T19:56:00.001+09:00</published><updated>2009-10-19T01:15:41.526+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>Linux でボリュームを暗号化する (3) - 性能比較</title><content type='html'>&lt;p&gt;ボリュームを暗号化する上で気になることは、どれくらいIOの性能が落ちるかである。&lt;/p&gt;

&lt;p&gt;普通にそこら辺にある２台でベンチを取ってみた。
&lt;ul&gt;
&lt;li&gt;ASUS M2NPV-VM / Athlon64X2 3800+ (2GHz) / DDR2-533 1G x 4&lt;/li&gt;
&lt;li&gt;EPIA-EN12000EG (C7 1.2GHz) / DDR2-533 1G &lt;/li&gt; 
&lt;/ul&gt;
暗号化するのは、ちゃっと起動用とは別に確保してた SATA 320G HDD(ST3320620AS) を使った。次いでなので、VIA PadLock の有無も比較してみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;測定は hdparm -t を使って３回で最も良い値を使った。&lt;/p&gt;

&lt;table border="1"&gt;
&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;読み込み速度(MB/sec)&lt;/th&gt;&lt;th&gt;比&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;M2NPV-VM (2GHz) - 素&lt;/td&gt;&lt;td&gt;74.82&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;M2NPV-VM (2GHz) - cryptoあり&lt;/td&gt;&lt;td&gt;71.65&lt;/td&gt;&lt;td&gt;0.96&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;M2NPV-VM (1GHz) - cryptoあり&lt;/td&gt;&lt;td&gt;36.10&lt;/td&gt;&lt;td&gt;0.48&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;EPIA-EN12000EG - 素&lt;/td&gt;&lt;td&gt;76.04&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;EPIA-EN12000EG - cryptoあり/PadLock 有&lt;/td&gt;&lt;td&gt;43.26&lt;/td&gt;&lt;td&gt;0.57&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;EPIA-EN12000EG - cryptoあり/PadLock 無&lt;/td&gt;&lt;td&gt;12.64&lt;/td&gt;&lt;td&gt;0.17&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;格段に劣化する訳では無さそうで、
ファイルシステムが絡めば DiskIO と暗号化処理が並列化しそうなので、
気にならない程度に落ち着くのかなぁ。。。&lt;/p&gt;
&lt;p&gt;あと VIA PadLock は結構効果があり、in-order 1.2G だけだと非力なのかぁ？&lt;/p&gt;
&lt;p&gt;Intel Atom だとどの程度になるか気になるなぁ〜。。。それとも Atom 系に AES-NIが実装されるのを気長に待つ方がいいのかなぁ。。。&lt;/p&gt;

&lt;h4&gt;修正(2009/09/08)&lt;/h4&gt;

&lt;p&gt; Athlon64X2 は cpufreq の ondemand governor を使ってたため、どうも結果が怪しかったので、クロックを固定して再度計測し直した。&lt;/p&gt;

&lt;p&gt;結果、Athlon64X2に関しては 結構クロック周波数に比例した性能であり、2GHz 程度の性能があれば汎用CPUには苦にならないようである。C7は PadLock を使うとやっと一人前であるが、他を凌駕する性能とかは無さそうだなぁ。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5135298562803429599?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5135298562803429599/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5135298562803429599' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5135298562803429599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5135298562803429599'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/07/measure-encrypted-device.html' title='Linux でボリュームを暗号化する (3) - 性能比較'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3509837085672611641</id><published>2009-07-20T15:31:00.001+09:00</published><updated>2009-07-20T15:31:43.811+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk'/><title type='text'>Linux でボリュームを暗号化する (2) - LVMの保護</title><content type='html'>&lt;p&gt;最近は、起動用の小容量HDD/SSDと複数データ用の大容量HDDの組み合わせでPCを組んでいる。SSDが手頃な価格になれば、その傾向も大きくなると思う。起動用のHDDの暗号化は、手法が多く、それぞれに結構面倒設定が多いし、どんどん新しい手法が出てきそうだし、枯れるまで様子見の方がいいかなと思う。なので、データ用の大容量HDDを暗号化することのみを考える。&lt;/p&gt;

&lt;p&gt;次のサイトを参考に設定した。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/quox/20080311/p1"&gt;LinuxでLVM領域を暗号化: 導入&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="fullpost"&gt;


&lt;pre class="screen"&gt;PC
- 起動用 HDD/SDD
  /dev/sda
- データ用 大容量HDD (今はこっちだけ暗号化)
  /dev/sdb
&lt;/pre&gt;

&lt;h5&gt;古いデータの消去とパーティションの作成&lt;/h5&gt;
&lt;p&gt;新品のHDDを買ってきたのならば必要は無いが、念のため古いデータを乱数で上書きする。全容量を一つのパーティションに割り当てる構成にする。&lt;/p&gt;

&lt;pre class="screen"&gt;
# shred -n 3 -v /dev/sdb
# echo "0,,8e" | sfdisk -D /dev/sdb
&lt;/pre&gt;

&lt;h5&gt;LUKSパーティションの作成&lt;/h5&gt;

&lt;p&gt;LUKSパーティションには２種類のキースロットを割り当てる
&lt;ol&gt;
&lt;li&gt;パスフレーズ(難解で長文なもの)を使う奴 -- 運用上何かと必要&lt;/li&gt;
&lt;li&gt;キーファイルを使う奴&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;pre class="screen"&gt;# cryptsetup --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdb1
...
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: &amp;lt;= パスフレーズを入力
Verify passphrase: &amp;lt;= パスフレーズを入力
...
# mkdir -m 700 /etc/luks
# dd if=/dev/random of=/etc/luks/data01.key bs=1 count=32
# chmod 400 /etc/luks/data01.key
# cryptsetup luksAddKey /dev/sdb1 /etc/luks/data01.key
Enter LUKS passphrase: &amp;lt;= パスフレーズを入力
key slot 0 unlocked.
...
&lt;/pre&gt;

&lt;h5&gt;起動時にキーファイルを使って自動的に開始する設定&lt;/h5&gt;

&lt;p&gt;
/etc/crypttab
&lt;pre class="screen"&gt;&lt;code&gt;# &amp;lt;target&amp;gt; &amp;lt;source&amp;gt;  &amp;lt;key file&amp;gt;  &amp;lt;options&amp;gt;
crypt-sdb1 /dev/sdb1 /etc/luks/data01.key luks
...
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;後は再起動するか、次のコマンドで暗号化を開始しとく。&lt;/p&gt;

&lt;pre class="screen"&gt;# cryptdisks_start crypt-sdb1
&lt;/pre&gt;

&lt;h5&gt;VGの作成&lt;/h5&gt;

&lt;p&gt;出来上がったブロックデバイスを使って、LVMを組めば良く。&lt;/p&gt;

&lt;pre class="screen"&gt;
# pvcreate /dev/mapper/crypt-sdb1
  Physical volume "/dev/mapper/crypt-sdb1" successfully created
# vgcreate Data01 /dev/mapper/crypt-sdb1
  Volume group "Data01" successfully created
&lt;/pre&gt;

&lt;p&gt;Volume Group が作成まで出来れば、あとは普通のLVMの使い方そのものなので、略。。。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;キーファイルを起動用ディスク内に保存することで、データ用ディスクが単体で切り離された場合にデータが保護できるようになるし、先頭ブロックの1MBくらいを消去することで完全に破棄することも可能になる。&lt;/p&gt;

&lt;p&gt;これで 1T級HDD の破棄する場合のデータ消去が簡単になるんかいなぁ！？&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3509837085672611641?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3509837085672611641/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3509837085672611641' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3509837085672611641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3509837085672611641'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/07/use-encrypted-block-device.html' title='Linux でボリュームを暗号化する (2) - LVMの保護'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-821903020376693983</id><published>2009-07-16T21:57:00.001+09:00</published><updated>2009-07-16T21:58:00.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk'/><title type='text'>Linux でボリュームを暗号化する (1) - swapの保護</title><content type='html'>&lt;p&gt;Linux のブロックデバイスの暗号化は結構昔から行われている。鍵の管理が貧弱なので、使ってはいなかった。初回に選んだパスワードを未来永劫使うのは、どう考えても高リスクだろう。&lt;/p&gt;

&lt;p&gt;諸々の要求に応える為に、Linuxでは &lt;a href="http://code.google.com/p/cryptsetup/"&gt;LUKS(Linux Unified Key Setup)&lt;/a&gt; という珠玉の成果がある。コイツを使えば、パスワードの変更だけでなく、複数のパスワードを持つことも出来るという有り難い代物。&lt;/p&gt;

&lt;p&gt;再三設定してるので、ちょっとメモっとかないと、禿げの進行が年2ミリ位 早くなってしますので、取り敢えず書いとく。&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;h4&gt;swapの暗号化&lt;/h4&gt;
&lt;p&gt;LUKSと言いながら、そうでないものを最初に書くのは何だが、メモリのベタ情報を swap から平文で読まれたくない人は、必ずすべき設定ですね。。。&lt;/p&gt;

&lt;p&gt;Debian の cryptsetup 付属の文書 /usr/share/doc/cryptsetup/README.Debian.gz のそのまんまですねぇ。&lt;/p&gt;

&lt;h5&gt;現在のスワップの無効化&lt;/h5&gt;
&lt;p&gt;先ず、現在のシステムで /dev/sda2 が swap デバイスとして、swapを無効化し、中身を全消去する(新品で何にも書かれていない場合は、消さなくても構わない)。&lt;/p&gt;
&lt;pre class="screen"&gt;# swapoff -a
# shred -n 1 /dev/sda2
&lt;/pre&gt;

&lt;h5&gt;設定ファイルを変更する&lt;/h5&gt;
&lt;p&gt;
/etc/crypttab
&lt;pre class="screen"&gt;&lt;code&gt;# &amp;lt;target&amp;gt; &amp;lt;source&amp;gt;  &amp;lt;key file&amp;gt;  &amp;lt;options&amp;gt;
crypt-swap /dev/sda2 /dev/random swap,cipher=aes-cbc-essiv:sha256,size=256,hash=sha256
...
&lt;/code&gt;&lt;/pre&gt;

/etc/fstab
&lt;pre class="screen"&gt;&lt;code&gt;...
/dev/mapper/crypt-swap none swap sw 0 0
...
&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;

&lt;h5&gt;暗号化スワップの有効化&lt;/h5&gt;
&lt;pre class="screen"&gt;# cryptdisks_start crypt-swap
# swapon -a
&lt;/pre&gt;

&lt;p&gt;仮想化環境のゲストOSはメモリ割当が少ない場合が多々あるので、要設定かと思う。&lt;/p&gt;

&lt;p&gt;何でも無いが、Linux KVM 上のゲストOSの乱数エントロピーが溜まるの遅くないかぁ。時々、暗号化スワップの開始で４〜５分くらい止まることがときどきある。。。&lt;/p&gt;
&lt;p&gt;おやぁ、&lt;a href="http://kerneltrap.org/mailarchive/linux-kernel/2008/5/15/1836574"&gt;virtio_rng&lt;/a&gt; とか言うモジュールがあるなぁ。。。あるよなぁ。。。コイツが kvm-85 ではまだサポートされていないからなのかぁ。。。KVM に virtio_blk, virtio_net, kvm-clock, virtio_rng の四つ揃えば、準仮想化と変わらんなぁ。。。取り敢えず、待つべし！&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-821903020376693983?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/821903020376693983/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=821903020376693983' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/821903020376693983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/821903020376693983'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/07/use-encrypted-swap-partition.html' title='Linux でボリュームを暗号化する (1) - swapの保護'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7223613479899459136</id><published>2009-07-09T15:31:00.000+09:00</published><updated>2009-07-09T15:47:38.555+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><title type='text'>debian lenny の kvm はバグってる?</title><content type='html'>&lt;p&gt;以前 Ubuntu に乗り換え宣言したのだが、マイナーなパッケージが無かったり、古いままだったり(まぁコミュニティーベースだから仕方ない)で、Debian lenny に再度乗り換えた。&lt;/p&gt;

&lt;p&gt;一番の難点は、、、言わないのが約束だなぁ。&lt;/p&gt;

&lt;p&gt;Debian lenny だと kvm-72 がパッケージングされているので、サクサクインストールして使えるのだが、どうも２個以上のゲストOSを立ち上げると何故だか次のメッセージをだしてゲストOSがフリーズしてしまう。&lt;/p&gt;

&lt;pre class="screen"&gt; BUG: soft lockup - CPU#0 stuck for 4096s!&lt;/pre&gt;

&lt;p&gt;なんすかねぇ？&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;p&gt;症状としては、下記のバグ報告と同じっぽい。
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=496917"&gt; BUG: soft lockup - CPU#1 stuck for 4096s! [java:3174] and crash (kvm guest)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
で、kvm-84 だと直ってるらしい。。。&lt;/p&gt;

&lt;p&gt;ぐふぅ。取り敢えずは、適当に sid からkvm/libvirtのソースパッケージを取ってきてビルドして諸々更新したら、複数のゲストOSがフリーズせずに安定した、、、気がする。&lt;/p&gt;

&lt;p&gt;またもや debian squeeze 待ちかなぁ&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7223613479899459136?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7223613479899459136/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7223613479899459136' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7223613479899459136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7223613479899459136'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/07/debian-lenny-kvm-bug.html' title='debian lenny の kvm はバグってる?'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-4619297120525221174</id><published>2009-07-07T18:50:00.000+09:00</published><updated>2009-07-07T18:58:19.264+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk'/><title type='text'>HDDの内容を全部消去する</title><content type='html'>&lt;p&gt;掃除をしたら多量にPATAのHDDも出てきた。&lt;/p&gt;
&lt;p&gt;今まで簡単に特殊なドライバでサクサク開封して磁性体に多量の傷を付けて不燃ゴミにしていた。
個人で使っていたもので重要な機密とかが入ってる訳ではないが、少々心もとない。&lt;/p&gt;

&lt;p&gt;shred を使って２回の乱数埋めと１回のゼロクリアでHDDの内容を全消去するのが、簡便で良い方法らしい。&lt;/p&gt;

&lt;pre class="screen"&gt;# shred -n 3 -z -v /dev/hdb
&lt;/pre&gt;

&lt;p&gt;だが、本当に遅い！&lt;/p&gt;

&lt;p&gt; Debian/lenny のバージョンの GNU shred どうも必要な乱数全部を /dev/urandom から読み込むため、乱数生成の帯域で制限されてるっぽい。&lt;/p&gt;

&lt;p&gt;『&lt;a href="http://dsas.blog.klab.org/archives/51326926.html"&gt;shredのあれこれ&lt;/a&gt;』
によれば、coreutils-5 では利用する乱数は内部で生成しており、coreutils-6 から /dev/urandom から利用する形になり、６倍遅くなったよという。。。つまり別の乱数発生器の openssl rand を使えと。&lt;/p&gt;

&lt;p&gt;で、使ってみたが、、、途中で終ってしまいます。。。&lt;/p&gt;

&lt;p&gt;なんでやぁ！！&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;暫し、熟考の結果 openssl rand の引数は int32_t だったらしく、100Gとかの HDD の消去とかには使えないですなぁ。。。。次のようにすれば完遂できますなぁ&lt;/p&gt;

&lt;pre class="screen"&gt;
# mkfifo rnd
# while true ; do openssl rand  $((2**31-1)) ; done &gt; rnd &amp;
# shred --random-source=rnd -n 3 -z -v /dev/hdb
&lt;/pre&gt;

&lt;p&gt;大体、上の方法で 300G で 10時間くらい？&lt;/p&gt;

&lt;p&gt;ここまではバットノウハウの話。&lt;/p&gt;

&lt;p&gt;coreutils の &lt;a href="http://git.savannah.gnu.org/cgit/coreutils.git"&gt;git レポジトリ&lt;/a&gt;をつらつら流し見たところ。
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=af5723c71e3efbfe60266162ebb5d07b45d72725"&gt;2009-04-07	shred,sort,shuf: don't use /dev/urandom by default&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=83ae1bdd44432055e2cb6cf1502d1cc0cd651746"&gt;2009-01-22	shred: change default number of overwrites from 25 to 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
と言う訳で、coreutils 7.3 からは coreutils-5 の頃の内部乱数(ISAAC)生成が復活し、パス数のデフォルトが 3 pass になるという。&lt;/p&gt;

&lt;p&gt;要するに、shred を何も考えずに使った奴が勝者！&lt;/p&gt;

&lt;p&gt;それよりも、320G HDD が８台もある敗北者の僕は 100MB/secくらいでるハードウェア乱数生成ボードが欲しい。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-4619297120525221174?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/4619297120525221174/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=4619297120525221174' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4619297120525221174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4619297120525221174'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/07/erase-all-content-of-hdd-by-shred.html' title='HDDの内容を全部消去する'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7903614997779013515</id><published>2009-06-29T20:07:00.001+09:00</published><updated>2009-06-29T20:07:24.318+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk'/><title type='text'>ReadyNAS の HDD の内容を普通のPCで読む</title><content type='html'>&lt;p&gt;最近、HDDを整理してたら 320G SATA HDD (Seagate製) が 8台も出てきた。&lt;/p&gt;
&lt;p&gt;うちで使っている ReadyNAS Duoには ２台の750G SATA HDD を載せているが、ボリュームの使用率が10%未満なので宝の持ち腐れな気がするので、ちょっと入れ替えてみた。&lt;/p&gt;
&lt;p&gt;ReadyNAS Duoで実装されているX-RAIDは、HDDの容量を大きくする方向の変更は出来ても、小さくする変更は出来ない。まぁしょうがないので、大人しく別途バックアップを取って入れ替えた。&lt;/p&gt;

&lt;p&gt;使っていた 750G HDDがフリーになったので、もの試しに読めるかどうか調べてみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;LVMへのアクセス&lt;/h4&gt;

&lt;p&gt;普通のPCに繋いでみると、
一台のみにIBM PCベースのパーティションテーブルらしきある。&lt;/p&gt;

&lt;p&gt;どうも先頭の２セクタを除いてミラーリングされているっぽく、２台中１台のみにパーティションテーブルが書かれているようだ。まぁ、同じ内容のディスクが変に認識されて混乱するのを避ける為なんだろうなぁ。&lt;/p&gt;

&lt;p&gt;パーティションの最後が LVM のボリュームになっており、論理ボリューム上にデータ領域が確保されている。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;# sfdisk -l -uS /dev/sdd

Disk /dev/sdd: 91201 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdd1             2   4096001    4096000  83  Linux
/dev/sdd2       4096002   4608001     512000  82  Linux swap / Solaris
/dev/sdd3       4608002 1465112305 1460504304   5  Extended
/dev/sdd4             0         -          0   0  Empty
/dev/sdd5       4608003 1465112305 1460504303  8e  Linux LVM
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;個々のパーティションは、シリンダ境界で区切られておらず、パーティションが無いもう一台に再現するのは、先頭２セクタをコピーするか、sfdisk を駆使するか、ちぃと面倒。&lt;/p&gt;

&lt;p&gt;X-RAIDで容量の拡張とかしていなければ、dmsetup を使うのも良いかも。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;# lvmsize=$((`blockdev --getsz /dev/sdd` - 4608003))
# echo 0 $lvmsize linear /dev/sdd 4608003 | dmsetup create readynas-pv 
# pvscan
# lvchange -ay -pr c/c
# lvs
  LV        VG     Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  c         c      -ri-a- 696.41G                                      
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;ファイルシステムへのアクセス&lt;/h4&gt;

&lt;p&gt;LVMの論理ボリュームがアクセスできるようになったら、何にも考えずに ext2/ext3 でマウントをしてみると上手く行かない。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;# mount -t ext3 -oro /dev/c/c /mnt
mount: wrong fs type, bad option, bad superblock on /dev/mapper/c-c,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
# dmesg | tail -1
[ 3446.561022] EXT3-fs: bad blocksize 16384.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;man を見ると、ブロックサイズは1024,2048,4096の３種類しか有効でないが、いつの時点で実装されたか分からないが、ext2/ext3のブロックサイズはCPUアーキテクチャのページサイズまで拡張されている。ReadyNAS で使われていたext2/ext3 ファイルシステムはブロックサイズが 16K なので、普通にはマウントできなかったようである。&lt;/p&gt;

&lt;p&gt;ext2/ext3でブロックサイズが大きすぎる場合、読むだけなら２通りの方法がありそうである。&lt;/p&gt;

&lt;h4&gt;dump/restore でのアクセス&lt;/h4&gt;

&lt;p&gt;まぁ何も考えずに dump/restore を使えば、ブロックサイズを気にせずにファイルシステム全体をコピーできるので、ファイルを取り出すことが出来る。容量が大きいHDDが用意できるのならば、安定したアクセスが出来る。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;# dump 0f - /dev/c/c | ( cd /backup ; restore rf - )
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;fuse ext2 でのアクセス&lt;/h4&gt;

&lt;p&gt;fuse 様にお伺いすると、ext2/ext3 にアクセスできる奴がある。。。コイツもブロックサイズの制限を気にせずにアクセスできる。ただ、、、まぁ、、、枯れきっていない感があるなぁ。&lt;/p&gt;

&lt;pre class="screen"&gt;&lt;code&gt;# apt-get install fuseext2
...
# fuseext2 -o ro /dev/c/c /mnt
# mount | grep mnt
fuseext2 on /mnt type fuse.fuseext2 (ro,nosuid,nodev)
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;取り敢えず、ReadyNAS Duo からサクサクとファイルを抜き出せるようになりましたと。。。まぁ、ファンが五月蝿いから捨てますかねぇ。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7903614997779013515?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7903614997779013515/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7903614997779013515' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7903614997779013515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7903614997779013515'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/06/access-readynas-hdd-by-normal-linux-pc.html' title='ReadyNAS の HDD の内容を普通のPCで読む'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6328316781068528902</id><published>2009-04-21T01:44:00.001+09:00</published><updated>2009-04-21T12:38:02.419+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>ファイルサーバのHDDを省エネHDDに変更</title><content type='html'>&lt;p&gt;VIA EPIA-EN が安定運用？の見込みが出てきたので、ちょっくら省エネを追求してみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;p&gt;今使っている Mini-ITX ケースは、&lt;a href="http://www.e-lets.co.jp/product/pc-gw6200/index.htm"&gt;「Be Silent GAWA6200」&lt;/a&gt;で、今使っている EPIA-ENシリーズにまさに対応しており、ファンレス運用が可能。ただ、どうも安定しないので12cmファンをぽこっと載せ、風量を確保する為に、エアフロー用の金網部分を外していた。するとちょうどいい具合に、オンボードの SATA ポートにアクセス出来る。なので、eSATA接続の外付けHDDが使える！!&lt;/p&gt;
&lt;div align="center"&gt;
&lt;a href="http://www.flickr.com/photos/24156556@N07/3459136119/"&gt;&lt;img src="http://farm4.static.flickr.com/3633/3459136119_39744d9bac_m.jpg" height="180" width="240" alt="P1010640"/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;eSATA接続の外付けHDDは、USB接続みたいに速度が出ないことは無く、各社多様に製品群が発売されており、いろいろ選べてお得だし！安いし！速いし！良いこと尽くめ！&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;交換可能で静かなのが欲しいので、&lt;a href="http://www.logitec.co.jp/products/hd/lhrds02sau2.html"&gt;「LogitecのLHR-DS02SAU2」&lt;/a&gt;とWD10EADSの組み合わせを選んでみた。&lt;/p&gt;

&lt;p style="text-align:center"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/41c-GyoryKL._SL160_.jpg" /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/Logitec-%E3%82%AF%E3%83%AC%E3%83%BC%E3%83%89%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%97-HDD%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC-%E3%83%A9%E3%82%A4%E3%82%BF%E3%83%BC-LHR-DS02SAU2BU/dp/B001LF3GLI%3FSubscriptionId%3D0PZ7TM66EXQCXFVTMTR2%26tag%3Dblogmoimoitei-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001LF3GLI"&gt;&amp;quot;Logitec クレードルタイプ HDDリーダー/ライター LHR-DS02SAU2BU&amp;quot; (ロジテック)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;さっと入れ替えてみると、、、アイドル時に約23W程度で、かつHDD が spindown? すると 20W 弱。負荷をかけても 30 W程度くらい。&lt;/p&gt;
&lt;div align="center"&gt;
&lt;a href="http://www.flickr.com/photos/24156556@N07/3452861888/"&gt;&lt;img src="http://farm4.static.flickr.com/3642/3452861888_a95f437d57_m.jpg" height="180" width="240" alt="P1010639"/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;いい感じだぁ。全部が収まる Mini-ITXケースがあればいいのかぁ。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6328316781068528902?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6328316781068528902/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6328316781068528902' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6328316781068528902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6328316781068528902'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/04/replace-wd-caviar-green-and-esata-hdd.html' title='ファイルサーバのHDDを省エネHDDに変更'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3633/3459136119_39744d9bac_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2645024988406407199</id><published>2009-04-19T02:43:00.001+09:00</published><updated>2009-04-19T02:43:56.502+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>MacOSX で USB-RS232 アダプタを使う</title><content type='html'>&lt;p&gt;USB-RS232 アダプタで MacOSX 対応のドライバを提供してるのはあまり見かけない。
初期設定を RS232 経由で行うルータとかハブとかがあり、その時だけWindowsとか言う奴を使っていた。&lt;/p&gt;

&lt;p&gt;しつこく探してみたところ、オープンソースでドライバを作っているところがあった。
Prolific 社の PL2303 チップを使ったUSBアダプタ全般で使えるようである。
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://osx-pl2303.sourceforge.net/"&gt;Mac OS X Prolific PL2303 driver project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;手持ちにある以下の二種類のアダプタで問題なく使えた。
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.allied-telesis.co.jp/products/list/accssry/connect/catalog.html#07"&gt;CentreCOM VT-Kit2 plus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.iodata.jp/prod/mobile/serial/2003/usb-rsaq2/"&gt;I/O DATA USB-RSAQ2&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
アレイドの奴は使えて結構嬉しい。&lt;/p&gt;

&lt;p&gt;端末エミュレータには、MacPorts から screen を使えばよい。
&lt;pre class="screen"&gt;
% screen /dev/tty.PL2303-XXXXXXXX 9600 cs8
&lt;/pre&gt;
端末から抜けたいときはつかさず C-a C-\ とかやる。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2645024988406407199?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2645024988406407199/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2645024988406407199' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2645024988406407199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2645024988406407199'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/04/use-macosx-usb-serial-adapter-driver.html' title='MacOSX で USB-RS232 アダプタを使う'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-793509166339543554</id><published>2009-04-13T23:31:00.001+09:00</published><updated>2009-04-13T23:32:08.177+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>VIA EPIA-EN で watchdog を設定</title><content type='html'>&lt;p&gt;
iPod Touch のアプリに某掲示板の専用ビューア BB2C がある。
結構使い勝手が良いので、最近ぱらぱら見るようになった。
その中で、自作PC板の低消費電力なんとかスレッドを覗いたら、
PCのアイドル時の消費電力が 20W〜30W の報告があり、10Wとかもある。
ちょっとビックリ。
&lt;/p&gt;
&lt;p&gt;
なんやかんやで、ここ２年くらいCPUもマザーボードも買っていないので、
すっかり取り残されてしまったようである。
手持ちのパーツの Athlon64X2 3800+/M2NPV-VM/DDR2-800 2Gx4 を組み合わせて、
アイドル時の消費電力が 70W となど浮かれていたのは、どうも井戸の中の蛙だったようである。
&lt;/p&gt;

&lt;p&gt;はぁ〜〜。金欠だし、どうしてくれようかぁ&lt;/p&gt;

&lt;p&gt;しょうがないので、箪笥の奥に眠っていた &lt;a href="http://www.viatech.co.jp/jp/products/mainboards/motherboards.jsp?motherboard_id=399"&gt;EPIA-EN12000EG&lt;/a&gt;を引っ張りだしてきたのだが、
コイツは Linux では時々ちょっと原因不明のハングアップして常時運用とか向かないので
ゴミかなと思っていた代物である。
&lt;/p&gt;

&lt;p&gt;動かせるように組み直して計測してみると、アイドル時の消費電力が 15Wくらいである。
某 Early2009 とほぼ同じ。でもあっちは Core2Duo 、、、懐が淋しいので我慢しよう。&lt;/p&gt;

&lt;div align="center"&gt;
&lt;a href="http://www.flickr.com/photos/24156556@N07/3437585627/"&gt;&lt;img src="http://farm4.static.flickr.com/3574/3437585627_38c4007c1b_m.jpg" height="180" width="240" alt="P1010634"/&gt;&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/24156556@N07/3438396942/"&gt;&lt;img src="http://farm4.static.flickr.com/3640/3438396942_967ddce3d5_m.jpg" height="180" width="240" alt="P1010635"/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;最新のカーネルであれば、問題が修正されているかと思って様子を見たが、
頻度は多くないがハングアップする現象はあるようである。&lt;/p&gt;

&lt;p&gt;マニュアルには「Watchdog Timer」の記述があり、コイツがなんとかできればハングアップしても強制再起動ができ、常時運用が出来そうである。&lt;/p&gt;

&lt;p&gt;、、、えっと、ドライバはどれ？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;ググるところ、小一時間。下記のURL のフォーラムにズバリの回答があった。&lt;br/&gt;
&lt;a href="http://www.tkarena.com/forums/via-epia-mini-itx-nano-itx-pico-itx-arena/33172-hardware-watchdog.html"&gt;tkArena Forums &gt; VIA Arena &gt; VIA EPIA (Mini-ITX, Nano-ITX, Pico-ITX) Arena - hardware watchdog&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Super I/Oチップの w83697hf に watchdog timer が実装されており、そいつがどっかにリセットのシグナルを出すらしい。&lt;/p&gt;

&lt;h4&gt; watchdog モジュールのロード &lt;/h4&gt;

&lt;p&gt;EPIA-EN12000EGの場合、watchdog はデフォルトI/Oポートにいないので、
w83697hf_wdtをロードしても、次のようなログが残り使えない。&lt;/p&gt;
&lt;pre class="screen"&gt;
[   30.529537] w83697hf/hg WDT: WDT driver for W83697HF/HG initializing
[   30.529550] w83697hf/hg WDT: Looking for watchdog at address 0x2e
[   30.529573] w83697hf/hg WDT: watchdog not found at address 0x2e
[   30.529580] w83697hf/hg WDT: No W83697HF/HG could be found
&lt;/pre&gt;
&lt;p&gt;なので watchdog の I/Oポートを検索するために、wdt_io=0 を指定してロードすると、結果がdmesgに出力される。&lt;/p&gt;
&lt;pre class="screen"&gt;
[  202.597226] w83697hf/hg WDT: WDT driver for W83697HF/HG initializing
[  202.597241] w83697hf/hg WDT: Looking for watchdog at address 0x4e
[  202.597260] w83697hf/hg WDT: watchdog found at address 0x4e
[  202.597401] w83697hf/hg WDT: initialized. timeout=60 sec (nowayout=0)
&lt;/pre&gt;
&lt;p&gt;再起動後に発見したI/Oポートを探すように、/etc/modprobe.d/local に書き出しておく。&lt;/p&gt;
&lt;pre class="code"&gt;
options w83697hf_wdt wdt_io=0x4e timeout=60
&lt;/pre&gt;

&lt;h4&gt; watchdog パッケージの設定 &lt;/h4&gt;
&lt;p&gt; Debian lenny なので、パッケージをサクッとインストールする。&lt;/p&gt;
&lt;pre class="screen"&gt;
# apt-get install watchdog
&lt;/pre&gt;
&lt;p&gt;/etc/default/watchdog にモジュールの指定を書く。&lt;/p&gt;
&lt;pre class="code"&gt;
watchdog_module="w83697hf_wdt"
&lt;/pre&gt;
&lt;p&gt;今回は死活のみを監視するので、
/etc/watchdog.conf は下手にいじらないで次の行のみ有効化する。ただ、watchdog自体の負荷が気になるならば interval を多めに取ればいい(ドライバ指定のtimeout以下になるように)。&lt;/p&gt;
&lt;pre class="code"&gt;
watchdog-device	= /dev/watchdog
&lt;/pre&gt;
&lt;p&gt;watchdogデーモンを立ち上げると完了する&lt;/p&gt;
&lt;pre class="screen"&gt;
# /etc/init.d/watchdog restart
&lt;/pre&gt;

&lt;h4&gt; watchdog の確認 &lt;/h4&gt;
&lt;p&gt;あぁ、、、「killall -9 watchdog 」で暫くして強制再起動がかかれば確認完了。。。&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;なにげにSSD-IDEを載せたので、内蔵ストレージに書き込みが頻発するのは避けたい気がするので、箪笥の中から掘出した3年ものの外部ストレージをつけてみた。&lt;/p&gt;
&lt;div align="center"&gt;
&lt;a href="http://www.flickr.com/photos/24156556@N07/3437585243/"&gt;&lt;img src="http://farm4.static.flickr.com/3342/3437585243_0b792913a8_m.jpg" height="180" width="240" alt="P1010636"/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;なに！PCの同じだけ電力を食うのかこの外付けHDDは！&lt;/p&gt;

&lt;p&gt;なにげに、VIA EPIA-EN を使いこなしているような気がする。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-793509166339543554?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/793509166339543554/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=793509166339543554' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/793509166339543554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/793509166339543554'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/04/linux-watchdog-via-epia-en.html' title='VIA EPIA-EN で watchdog を設定'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3574/3437585627_38c4007c1b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2549523207261591004</id><published>2009-02-01T23:34:00.000+09:00</published><updated>2009-02-01T23:35:39.202+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>NetBSD 4.0.1 の amd64 版の boot-big.fs はどこ？</title><content type='html'>&lt;p&gt;最近、Debain/NetBSD/OpenBSD/FreeDOSの安定版のインストーラー(amd64版があればそいつを含んだ奴)を一つにまとめた DVD を欲しくて作ってみた。&lt;/p&gt;

&lt;p&gt; grub2 は USB-CD/DVD のアクセス対応のコードがまだ&lt;a href="http://grub.enbug.org/USBSupport"&gt;天から降ってこない&lt;/a&gt;ので、まだ isolinux を使う必要がある。(grub2のbsd系のブートコマンドは、まだ 64bit ELFをサポートしていないので、まだまだなんだがなぁ。。。)&lt;/p&gt;

&lt;p&gt;Linux 以外では、floppy イメージを&lt;a href="http://syslinux.zytor.com/wiki/index.php/MEMDISK"&gt;syslinux の memdisk&lt;/a&gt;でエミュレートすることで、インストール作業ができる。ただし、floppy ディスクの交換までエミュレートできないので、一つにまとまったイメージが必要になる。&lt;/p&gt;

&lt;p&gt;で、&lt;br/&gt;&lt;br/&gt;
NetBSD/amd64 4.0 には、boot-big.fs はあったのだが、4.0.1 では提供されていないぞっと。。。なんでかぁ&lt;/p&gt;

&lt;p&gt;困ったなぁ&lt;/p&gt;

&lt;p&gt;コイツらは普通につくれるのかぁ、、、、Linux システム上で！&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;小一時間考えて、作ってみた。&lt;/p&gt;

&lt;p&gt;NetBSD 4.0.1 のバイナリファイル群を取ってくる。下のスクリプトのTOPDIRに指定して、スクリプトを走らせると。。。memdisk でブートできる boot-big.fs を出来る。。。 &lt;/p&gt;

&lt;pre class="code"&gt;
#!/bin/sh

TOPDIR=/path/to/NetBSD-4.0.1/amd64

BOOTBIGFS=${TOPDIR}/installation/floppy/boot-big.fs

[ -e $BOOTBIGFS ] &amp;&amp; exit

#VOLSIZE=5760  # blocks

workdir=/tmp/work$$
mkdir $workdir
mkdir $workdir/USTAR

tar xfz ${TOPDIR}/binary/sets/base.tgz -C $workdir ./usr/mdec

cp $workdir/usr/mdec/boot $workdir/USTAR
cp $workdir/usr/mdec/bootxx_ustarfs $workdir
cp ${TOPDIR}/binary/kernel/netbsd-INSTALL.gz $workdir/USTAR/netbsd

if [ "x$VOLSIZE" = "x" ] ; then
	needblocks=`du -s -B512 $workdir/USTAR | awk '{print $1}'`
	VOLSIZE=`expr $needblocks + 20`
fi

OVOLSIZE=`printf "%o" $VOLSIZE`
touch $workdir/USTAR/USTAR.volsize.$OVOLSIZE
tar --posix -cf $workdir/USTAR.tgz -C $workdir/USTAR boot USTAR.volsize.$OVOLSIZE netbsd

dd if=$workdir/bootxx_ustarfs of=$workdir/boot-big.fs
dd if=$workdir/USTAR.tgz of=$workdir/boot-big.fs seek=16

cp $workdir/boot-big.fs $BOOTBIGFS

rm -rf $workdir
&lt;/pre&gt;

&lt;p&gt;USTARFSは、initrd で cpio イメージを使うっぽい感じで tar を扱う奴らしい(ちょっと違うけど)。ボリュームのサイズは含まれる特殊なファイル名(USTAR.volsize.XXXX)で指定され、かつ８進数を使うのは、、、如何にも歴史を感じられるなぁ～&lt;/p&gt;

&lt;p&gt;で、目的のDVDを無事ゲットできましたとさぁ。。。&lt;br/&gt;&lt;br/&gt;
まぁ、ついでに Ubunut 8.04.2 LTS Desktop/Server i386/amd64 も作ってもうたぁが、それは別の話。&lt;/p&gt;

&lt;/div&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2549523207261591004?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2549523207261591004/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2549523207261591004' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2549523207261591004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2549523207261591004'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/02/netbsd-401-amd64-boot-bigfs.html' title='NetBSD 4.0.1 の amd64 版の boot-big.fs はどこ？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3719156140133907394</id><published>2009-02-01T20:08:00.001+09:00</published><updated>2009-02-01T20:21:54.981+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>CPANでインストールしたモジュールは？</title><content type='html'>&lt;p&gt;
Linux 上で Perl を使う場合、
自前ではビルドせずに大抵ディストロのパッケージ(rpm/deb)を使うのがほとんどである。
CPAN上のモジュールでも対応するディストロの方を使うのが、僕は好みである。
ディストロ側に対応するパッケージが無い場合は、仕方なく cpan コマンドを使ってインストールして使っている。
&lt;/p&gt;
&lt;pre class="screen"&gt;
cpan -i モジュール名
&lt;/pre&gt;
&lt;p&gt;
cpan コマンドでインストールしたモジュールをアンインストールしたいとか思っても、いまいち方法が分からなかった。。。
&lt;/p&gt;
&lt;p&gt;
「cpan help」 とかやると、よくわからん help モジュールがインストールされたり、「cpan list」とやっても、list モジュールが、、、以下略。
&lt;/p&gt;
&lt;p&gt;
で、CPANを使うと運用状態が続くと /usr/local 以下が何故だか意味不明な状態になってしまう。
&lt;/p&gt;
&lt;p&gt;私だけだろうけど、、、どうしたもんだろうかなぁ。&lt;/p&gt;
&lt;div class="fullpost"&gt;
&lt;h4&gt;cpanコマンドでインストールされたもののリスト&lt;/h4&gt;

&lt;p&gt;ExtUtils::Installed モジュールを組み合わせると取得できるようなので、次のようにスクリプトを組んでみた。&lt;/p&gt;

&lt;p&gt;cpan-list&lt;/p&gt;
&lt;pre class="code"&gt;
#!/usr/bin/perl

use ExtUtils::Installed;

$inst = ExtUtils::Installed-&amp;gt;new();

for $module (sort $inst-&amp;gt;modules()) {
	$version = $inst-&amp;gt;version($module);
	print "$module $version\n";
}
&lt;/pre&gt;

&lt;p&gt;どっかの御大ならば一行スクリプトに仕立てるんだろうけどねぇ。。。&lt;br/&gt;
そこまで Perl 臭が染み付いていないので、これでいいかなぁ。。。&lt;/p&gt;

&lt;p&gt;実行例&lt;/p&gt;
&lt;pre class="screen"&gt;
# ./bin/cpan-list      
HTML::Perlinfo 1.54
Perl 5.8.8
&lt;/pre&gt;

&lt;h4&gt;cpanコマンドでインストールされたもののアンインストール&lt;/h4&gt;

&lt;p&gt;同様に ExtUtils::Installedとかを組み合わせると、アンインストールするスクリプトが作れる。&lt;/p&gt;

&lt;p&gt;cpan-uninstall&lt;/p&gt;
&lt;pre class="code"&gt;
#!/usr/bin/perl

use ExtUtils::Installed;
use ExtUtils::Install;

$module = $ARGV[0];

$inst = ExtUtils::Installed-&amp;gt;new();
@modules = $inst-&amp;gt;modules();

(grep $module,@modules) || die "$module is not install...";

uninstall($inst-&amp;gt;packlist($module)-&amp;gt;packlist_file());
print "uninstalled $module\n";
&lt;/pre&gt;

&lt;p&gt;削除したいものを指定すれば削除できる。&lt;/p&gt;

&lt;p&gt;実行例&lt;/p&gt;
&lt;pre class="screen"&gt;
# ./cpan-uninstall Module::Name
uninstalled Module::Name
&lt;/pre&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;
&lt;p&gt;果たして、これで良いのか疑問に残るが、目的は達したので良いのかなぁ。。。&lt;br/&gt;
取り敢えず、ディストロとCPANの組み合わせは怖くなくなったぞぃと。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3719156140133907394?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3719156140133907394/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3719156140133907394' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3719156140133907394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3719156140133907394'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2009/02/uninstall-cpan-module.html' title='CPANでインストールしたモジュールは？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5253848341992319471</id><published>2008-11-29T18:16:00.000+09:00</published><updated>2008-11-29T18:18:15.606+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk'/><title type='text'>ReadyNAS Duo を購入</title><content type='html'>&lt;p&gt;ファイルサーバを普通のPCで組み、常時起動して運用すると、月々の電気代がちょっと気になる。&lt;/p&gt;

&lt;p&gt;今使っている PC+HDDx4 台の電力消費をワットチェッカで計測すると、ほぼ130W前後になる。コイツが、24時間通電してると、一日 約3kW/h で、約60円程度になる。年間約2万円くらい使ってる計算になる。&lt;/p&gt;

&lt;p&gt;RAID0+1の構成が取れるHDDx4台は魅力的だが、、、長期的に見ればHDDx2台(RAID1)のNASに移行するべきですかぁね。。。&lt;/p&gt;

&lt;p&gt;HDDx2(RAID1)のNASは、各社多様に製品が展開されている主戦場ですなぁ〜〜&lt;/p&gt;

&lt;p&gt;HDDが交換が簡単で扱い易そうなものが良いので、「&lt;a href="http://www.readynas.com/"&gt;ReadyNAS Duo&lt;/a&gt;」のべアボーンタイプを選択してみた。&lt;/p&gt;

&lt;p style="text-align:center"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51qN9Bp8vyL._SL160_.jpg" /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/%E3%83%8D%E3%83%83%E3%83%88%E3%82%AE%E3%82%A2-ReadyNAS-Duo-%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%BB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%9A%E3%82%A2%E3%83%9C%E3%83%BC%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%97/dp/B0018APX8A%3FSubscriptionId%3D0PZ7TM66EXQCXFVTMTR2%26tag%3Dblogmoimoitei-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB0018APX8A"&gt;&amp;quot;ReadyNAS Duo ホームメディア・サーバー ペアボーンタイプ&amp;quot; (ネットギア)&lt;/a&gt;&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;搭載されているX-RAIDを使えば、容量が同じでない場合でも冗長構成を取れる。余っているSATA HDDとかは容量はまちまちな場合が多いので結構便利だと思う。&lt;p&gt;

&lt;p&gt;最初の初期化は何やらHDD上にファームを展開してるためなのか結構時間がかかる。焦らずに Web管理画面(FrontView) にアクセスできるまで気長に待つ必要がある。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.readynas.com/?page_id=617"&gt;add-on&lt;/a&gt;で種々の拡張ができるのも売りで、SSHアクセスやDebian由来のAPTが可能である。 apt が参照してるパッケージ群はベンダーのNETGEAR提供のものに加え、Debian/sarge のものが使える。&lt;/p&gt;

&lt;p&gt;ただ sarge 自体はサポート終了してるので、apt-line を &lt;a href="http://www.debian.org/distrib/archive"&gt;debian-archive&lt;/a&gt; の近いサイトに変更する必要がある。&lt;/p&gt;

&lt;pre class="screen"&gt;
deb http://www.readynas.com/packages readynas/

deb http://ftp.riken.jp/Linux/debian/debian-archive sarge main contrib non-free
deb http://ftp.riken.jp/Linux/debian/debian-non-US sarge/non-US main contrib non-free
&lt;/pre&gt;

&lt;p&gt;今更な sarge かぁ。。。&lt;/p&gt;

&lt;p&gt;また、NASには珍しく主メモリS.O.DIMMで提供されてより大きなものに交換ができ、より複雑なアプリでもを動かした場合も、結構スラッシングを抑えられる。&lt;/p&gt;

&lt;p&gt;でもsargeベースなんだよなぁ。。。&lt;/p&gt;

&lt;p&gt;普通にベンダーのファームを使い切るのがベストなんだと思うなぁ。&lt;/p&gt;

&lt;p&gt;コイツに使われてる IT3017 は、どうも &lt;a href="http://www.gaisler.com/cms/index.php?option=com_content&amp;task=section&amp;id=4&amp;Itemid=33"&gt;LEON&lt;/a&gt; とか言う Sparc v8 互換のCPUらしい、、、つまり、初めて所有する Sparc になりましたっす。。。
というか Sparc+aptの２点で買いだったのだが、、、 
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.analogzone.com/iop_0418.htm"&gt;Infrant Technologies IT3107/02 NAS/Raid-on-Chip Devices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linuxdevices.com/news/NS9172293423.html"&gt;Linux brings enterprise RAID features to SOHO/SMB NAS gadgets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.halfhill.com/MDRlinks.html"&gt;Microprocessor Report Archive&lt;/a&gt;の「Storage Processor Leverages LEON 」(適当にググルと、、、)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;SSH でアクセス出来るので、ローカルでベンチを取ったところシーケンスIn/Outともに、普通のPCの半分以下程度だったっす。ベンチの計測中は、どうもPCに比べてCPUが回りすぎる気がする。&lt;/p&gt;
&lt;p&gt;コイツのSATAのバスマスタ転送の実装がヘボイのか、今のx86系のChipsetが優秀すぎるのか、どっちだろう？&lt;/p&gt;

&lt;p&gt;今後出てくるだろうATOM系のNASの性能が答えを出してくれるんだろうなぁ。というか、早く優秀なChipset積んで出てこいやぁ！！&lt;/p&gt;

&lt;p&gt;まぁ ReadyNAS Duo はNASとしては買っても損はないが、もう少し凝ったことをやりたければ、debian/lenny がインストールできる&lt;a href="http://www.qnap.com/pro_application.asp?ap_id=136"&gt;QNAP NAS&lt;/a&gt;や&lt;a href="http://ja.wikipedia.org/wiki/GLAN_Tank"&gt;GLAN Tank&lt;/a&gt;とかがお勧めだなぁ。&lt;/p&gt; 

&lt;p&gt;sarge 止まりなんだよなぁ。。。惜しいなぁ&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5253848341992319471?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5253848341992319471/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5253848341992319471' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5253848341992319471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5253848341992319471'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/11/buy-readynas-duo.html' title='ReadyNAS Duo を購入'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7854426971125015077</id><published>2008-10-23T19:48:00.001+09:00</published><updated>2008-10-23T20:28:47.456+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>MacOSX 上の Acrobat の OCR の奇妙な文字化けに対処する</title><content type='html'>&lt;p&gt;MacOSX の OCR の選択肢は狭く、ちょっと躊躇する分野である。そのため、Acrobat 搭載の OCR が重宝すると思う。&lt;/p&gt;

&lt;p&gt;しかし！！&lt;/p&gt;

&lt;p&gt;僕の持っている Acrobat 8.1.2 では OCR 処理後に埋め込まれる文字が奇妙な文字化けを起こして、全く使えなかった。&lt;/p&gt;

&lt;p&gt;ググりまくっても対処法が見つからずに途方に暮れていた。&lt;/p&gt;

&lt;p&gt;はて？なんすかね？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;ふと文字化け文字列をコピペして UTF-8として再認識させると 80% 位が日本語として識別できるようになった。&lt;/p&gt;

&lt;p&gt;詳しく調べてみると、OCR処理後に埋め込まれる文字列が「90ms-RKSJ-H」というエンコードで符号化される(要するにShift-JISの亜流)はずが、コイツの中身が勝手に「UTF-8」になってるっぽい？らしい。&lt;/p&gt;

&lt;p&gt;小一日後、、、ふと思ったのが、環境変数LANGかなくらい。。。&lt;/p&gt;

&lt;p&gt;LANG変数は、結構昔に ~/.MacOSX/environment.plistで ja_JP.UTF-8 と設定してある。&lt;/p&gt;

&lt;p&gt;コイツを削除してみた。。。&lt;/p&gt;

&lt;p&gt;あぁぁ、奇妙な文字化けがなくなったぁぁ。&lt;/p&gt;

&lt;p&gt;どうやら、MacOSX 版の Acrobat Pro 8.1.2 に含まれる OCR 機能は、勝手に環境変数LANGを参照して、文字化けになってるっぽい。&lt;/p&gt;

&lt;p&gt;なんだかなぁ、、、疲れる仕様だなぁ&lt;p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7854426971125015077?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7854426971125015077/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7854426971125015077' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7854426971125015077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7854426971125015077'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/10/macosx-acrobat-ocr-strange.html' title='MacOSX 上の Acrobat の OCR の奇妙な文字化けに対処する'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5367297338378303502</id><published>2008-08-05T22:48:00.001+09:00</published><updated>2008-08-06T22:57:54.736+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WWW'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>NicoProxy2 と Squid を MacOSX 上で 組み合わせる</title><content type='html'>&lt;p&gt;最近は元気が無いがニコニコ動画は面白い。Youtube や Veoh に上がってる動画も面白い。&lt;/p&gt;

&lt;p&gt;しかし、動画のファイルサイズは HTML/CSS/JavaScript に比べて大きすぎるためか、
&lt;em&gt;キャッシュ&lt;/em&gt;プロクシとは本当に相性が悪すぎる。Squid でキャッシュ保存するサイズを大きめに取って対処していたのだが、、、どうも気持ちが悪い。&lt;/p&gt;

&lt;p&gt;ニコニコ動画限定だが専用のキャッシュサーバ「&lt;a href="http://d.hatena.ne.jp/hayori/20080609/1213005114"&gt;NicoProxy2&lt;/a&gt;」が出てきている。そのうち、動画専用キャッシュサーバがぼこぼこ出て来るんかいなぁ。&lt;/p&gt;

&lt;p&gt;なので、Squid と NicoProxy2 を組み合わせてみた。&lt;/p&gt;

&lt;p&gt;ユーザは外部サイトを Squid を通してアクセスする状況で、Squid がニコニコ動画の動画リクエストのみNicoProxy2 に委託するのが目的。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;NicoProxy2の立ち上げ&lt;/h4&gt;

&lt;p&gt;手軽に launchd 経由で立ち上げたいので daemondo が含まれる MacPorts を入れてく。&lt;/p&gt;

&lt;p&gt;ソースを取ってきて、適当な場所に置く。&lt;/p&gt;

&lt;pre class="screen"&gt;# ls -l /opt/local/etc/nicoproxy/
total 24
-rw-r--r--  1 root  admin   321 Aug  5 16:36 conf.yml
-rw-r--r--  1 root  admin  8062 Aug  5 18:58 nicoproxy.rb
&lt;/pre&gt;

&lt;p&gt;もうこの状態で、conf.yml を弄れば、Proxy として機能すると思う。動作確認したら、launchd 用の定義ファイルとラッパースクリプトを書く。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist&lt;/code&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&amp;gt;
&amp;lt;plist version="1.0"&amp;gt;
&amp;lt;dict&amp;gt;
	&amp;lt;key&amp;gt;Debug&amp;lt;/key&amp;gt;
	&amp;lt;false/&amp;gt;
	&amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
	&amp;lt;string&amp;gt;org.macports.nicoproxy&amp;lt;/string&amp;gt;
	&amp;lt;key&amp;gt;OnDemand&amp;lt;/key&amp;gt;
	&amp;lt;false/&amp;gt;
	&amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
	&amp;lt;array&amp;gt;
		&amp;lt;string&amp;gt;/opt/local/bin/daemondo&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;--label=nicoproxy&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;--start-cmd&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;start&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;;&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;--stop-cmd&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;stop&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;;&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;--restart-cmd&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;restart&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;;&amp;lt;/string&amp;gt;
		&amp;lt;string&amp;gt;--pid=none&amp;lt;/string&amp;gt;
	&amp;lt;/array&amp;gt;
	&amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;
	&amp;lt;false/&amp;gt;
&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper&lt;/code&gt;&lt;/p&gt;
&lt;pre class="code"&gt;#!/bin/sh

prefix=/opt/local
pidfile=/opt/local/var/run/nicoproxy.pid

Start()
{
	cd /opt/local/etc/nicoproxy
	ruby ./nicoproxy.rb &amp;amp;
	echo $! &amp;gt; $pidfile
}

Stop()
{
	kill `cat $pidfile`
}

Restart()
{
	Stop
	Start
}

Run()
{
case $1 in
  start  ) Start   ;;
  stop   ) Stop    ;;
  restart) Restart ;;
  *      ) echo "$0: unknown argument: $1";;
esac
}

Run $1&lt;/pre&gt;

&lt;p&gt;launchd に登録すれば、再起動しても自動的に上がってくれる筈？&lt;/p&gt;

&lt;pre class="screen"&gt;
# launchctl load -w /opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist
...
# launchctl list | grep nicoproxy    
62595	-	org.macports.nicoproxy
...
# ln -s /opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist /Library/LaunchDaemons/
&lt;/pre&gt;

&lt;p&gt;まぁ、MacPorts に含まれていないのに、org.macports.XXXX なのは愛嬌ってことで。&lt;/p&gt;

&lt;h4&gt;Squid と連携する&lt;/h4&gt;

&lt;p&gt;Squid は、MacPorts のものを入れ、取り敢えず動かせる所まではやっておく。NicoProxy2 連携用に、次の設定を加える。但し、例では NicoProxy2 のポートは 25255に変えてあり、自身のホストがCNAMEとか追加して nicoproxy.example.com で引けるようになっているので、各自の環境に合わせる必要がある。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;squid.conf&lt;/code&gt;&lt;/p&gt;
&lt;pre class="code"&gt;
...
# nico proxy
acl nico url_regex -i ^http://www\.nicovideo\.jp/api/getflv/?
acl nico url_regex -i ^http://.*\.nicovideo\.jp/smile\?
cache_peer nicoproxy.example.com. parent 25255 0 proxy-only no-query
cache_peer_access nicoproxy.example.com. allow nico
never_direct allow nico&lt;/pre&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;NicoProxy2はon-the-flyでは転送しないのかぁ。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5367297338378303502?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5367297338378303502/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5367297338378303502' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5367297338378303502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5367297338378303502'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/08/nicoproxy2-squid-macosx.html' title='NicoProxy2 と Squid を MacOSX 上で 組み合わせる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6615089637373172811</id><published>2008-08-03T01:12:00.000+09:00</published><updated>2010-05-18T02:12:52.218+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>CentOS 5.2 上で Ruby の環境を整える</title><content type='html'>&lt;p&gt;CentOS 5.2 の標準では ruby 1.8.5 止まりである。&lt;/p&gt;

&lt;p&gt; Ruby を最新バージョンに上げて、RubyGems入れて、Railsも入れるとか、結構、巷で行われている&lt;/p&gt;

&lt;p&gt;まぁ、記念なので、次のサイトを参考にインストールしたら、すんなりできた&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.takuto.biz/private/memo/changelog/2008-07-13.html" title="MuraTaka 速記メモ / 2008-07-13"&gt;MuraTaka 速記メモ / 2008-07-13&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;RPMforge の追加&lt;/h4&gt;

&lt;p&gt;公開鍵の取得し、レポジトリのパッケージの確認し、インストールし、デフォルトでは使わない設定をする。&lt;/p&gt;

&lt;pre class="screen"&gt;# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -K rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpmforge-release-0.3.6-1.el5.rf.i386.rpm: (sha1) dsa sha1 md5 gpg OK
# rpm -i rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# sed -ie 's/enabled = [01]/enabled = 0/' /etc/yum.repos.d/rpmforge.repo
# yum --enablerepo=rpmforge list&lt;/pre&gt;

&lt;p&gt;気持ち ffmpeg や mencoder をインストール出来るようになるってうれしい&lt;/p&gt;

&lt;pre class="screen"&gt;
# yum --enablerepo=rpmforge install fmpeg mencoder&lt;/pre&gt;

&lt;h4&gt;&lt;a href="http://www.asic-linux.com.mx/~izto/checkinstall/"&gt;checkinstall&lt;/a&gt; のインストール&lt;/h4&gt;

&lt;p&gt;tarball からRPMパッケージなどを簡単に作れるようにするものらしい。(&lt;a href="http://www.atmarkit.co.jp/flinux/rensai/linuxtips/530mkrpmfs.html"&gt;1&lt;/a&gt;, &lt;a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20070821/280029/?ST=desktop&amp;P=2"&gt;2&lt;/a&gt;)、、、ちょっとだけいい。&lt;/p&gt;

&lt;pre class="screen"&gt;# yum --enablerepo=rpmforge install checkinstall&lt;/pre&gt;


&lt;h4&gt;ruby 1.8.7 のインストール&lt;/h4&gt;

&lt;p&gt;公式サイトから取得して、つらつらとRPMパッケージに仕立てて、インストールする。バイナリパッケージなので、依存するライブラリを気をつければ、別の環境にもサクサク移せるとは、いい感じ。&lt;/p&gt;

&lt;pre class="screen"&gt;# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p17.tar.bz2
# tar xfj ruby-1.8.7-p17.tar.bz2
# cd ruby-1.8.7-p17
# ./configure --prefix=/usr
...
# make
...
# checkinstall --fstrans=no
...
# rpm -ih /usr/src/redhat/RPMS/i386/ruby-1.8.7-p17-1.i386.rpm 
# ruby -v
ruby 1.8.7 (2008-06-09 patchlevel 17) [i686-linux]&lt;/pre&gt;

&lt;h4&gt;RubyGemsのインストール&lt;/h4&gt;

&lt;p&gt;公式サイトから取得して、サクッとRPMパッケージに仕立てて、インストールする。&lt;/p&gt;

&lt;pre class="screen"&gt;# wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
# tar xfz rubygems-1.2.0.tgz 
# cd rubygems-1.2.0
# checkinstall -R "ruby setup.rb"
...
# rpm -ih /usr/src/redhat/RPMS/i386/rubygems-1.2.0-1.i386.rpm 
# gem -v
1.2.0&lt;/pre&gt;

&lt;p&gt;ここまでくると、gem コマンドが使える状態になるので、あとはそいつに任せれば、環境が出来上がる。&lt;/p&gt;

&lt;pre class="screen"&gt;# gem install rails&lt;/pre&gt;

&lt;p&gt;どっかに、CentOS 用の ruby 最新版のレポジトリとか無いのかなぁ。。。&lt;/P&gt;

&lt;h4&gt;追記(2010-05-18)&lt;/h4&gt;

&lt;p&gt;２年も経つとURLも変わるらしい。上手く行かない時は次の記事を参考にと。&lt;/p&gt;

&lt;a href="http://rubyist.g.hatena.ne.jp/watarum/20100412"&gt;1.8.7へアップデート死亡遊技 - Rubyの勉強を始めます。 - Rubyist&lt;/a&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6615089637373172811?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6615089637373172811/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6615089637373172811' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6615089637373172811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6615089637373172811'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/08/centos-52-ruby.html' title='CentOS 5.2 上で Ruby の環境を整える'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2643820729695433638</id><published>2008-08-01T19:35:00.001+09:00</published><updated>2008-12-10T14:28:03.216+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Xen'/><title type='text'>Xen on CentOS5 は安定してる</title><content type='html'>&lt;p&gt; P4P800-VM に CentOS 5.2 をインストールしてみた。インストール時に、パッケージ選択に仮想化をチェックすれば、インストール直後から Xen+Dom0 の環境が素で出来ていた。RHEL から流用しているからか、変に固まること無く本当に安定してる。&lt;/p&gt;

&lt;p&gt;但し、２点くらい留意する必要があるっぽい。&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;ol&gt;
&lt;li&gt;CentOS 5.2 のインストールメディアを使う場合、インストール時とカーネルを最新バージョンにするまで irqpoll を付ける必要がある。逆に言えば、yum で最新バージョンにすれば必要ない。&lt;font size="-1"&gt;つまり、CentOS 5.3 くらいには、過去の事になるんだろうなぁ。&lt;/font&gt;&lt;/li&gt;
&lt;li&gt; 別途PCIカードに差し込んだ e1000 のアダプタで Wake On Lan が機能しない。これは &lt;a href="http://lists.debian.or.jp/debian-users/200804/msg00007.html"&gt;Xen によるブリッジが放置される問題&lt;/a&gt;で、終了処理にブリッジを落とせば問題なく機能する。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;「&lt;a href="http://www.myelin.co.nz/post/2007/6/8/" title="Second p0st: Wake on LAN"&gt;Second p0st: Wake on LAN&lt;/a&gt;」には debian 向けに書かれているが、これを CentOS 用に変更し、/etc/init.d/xen-bridge-phil に書き落とす。その後、適当なコマンドで登録する。&lt;/p&gt;

&lt;pre class="code"&gt;#!/bin/sh
#
# xen-bridge-phil	Stopping Xen network bridge so WOL will work
#
# Author:       localadmin &amp;lt;localadmin@localhost&amp;gt;
#
# chkconfig: 2345 99 02
# description: Stopping Xen network bridge so WOL will work

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0
prog=xen-bridge-phil
ETH=eth0

stop()
{
        /etc/xen/scripts/network-bridge stop &amp;gt; /dev/null 2&amp;gt;&amp;1
        test "x$ETH" != "x" &amp;&amp; /sbin/ethtool -s ${ETH} wol g
}

case "$1" in
  start)
	touch /var/lock/subsys/$prog
	;;
  stop)
        echo -n "Stopping Xen network bridge so WOL will work"
        stop
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		rm -f /var/lock/subsys/$prog
		success $"$prog shutdown"
	else
		failure $"$prog shutdown"
	fi
	echo
        ;;
esac

exit 0&lt;/pre&gt;

&lt;p&gt;登録処理&lt;/p&gt;

&lt;pre class="screen"&gt;# chkconfig --add xen-bridge-phil&lt;/pre&gt;

&lt;p&gt;ついでなのだが、終了時に xend が呼ばれていない気がするので、/etc/init.d/xend の中に適当な位置に&lt;/p&gt;
&lt;pre class="code"&gt;...
start)
...
  touch /var/lock/subsys/xend
...
stop)
...
  rm -f /var/lock/subsys/xend
...&lt;/pre&gt;

&lt;p&gt;を埋め込む必要があるかもしれん。&lt;/p&gt;

&lt;h4&gt;追記 (2008/12/10)&lt;/h4&gt;

&lt;p&gt;某OKWaveの質問サイトに&lt;a href="http://okwave.jp/qa4392796.html"&gt;リンク&lt;/a&gt;の記載がある。それは良いんだが、ホスト名が異なるだけのコピーが約30サイトもあるのには、ビックリした、、、OKWaveって。。。&lt;/p&gt;

&lt;p&gt;大本の質問のやり取りは、&lt;a href="http://centossrv.com/patio/patio.cgi?mode=view&amp;no=994"&gt;「XenでWOLできない？」&lt;/a&gt;がそうらしい。&lt;/p&gt;

&lt;p&gt;最近のNICのWOLの設定は、電源を完全に落とすと保存されないものが多くなったなぁ。それに、カーネルのバージョンがあがると思い出したようにWOLの不具合が発生するし、みんなIPMPに流れて使っていないのかんなぁ。。。普通のマザボでも載るならよいのに。。。グチグチ&lt;/p&gt;

&lt;p&gt;まぁ、ethtool で設定を入れ込むとしたら、/etc/init.d/xen-bridge-phil ファイルのstop()関数の中で、上のようにすればよいかも。&lt;/p&gt;

&lt;p&gt;WOL設定って、udev で何とかするのがモダンな解法なのかなぁ。。。良くわからんが。。。。&lt;/p&gt;

&lt;p&gt;がんばれ＞＞RedHat/Fedoraチーム&lt;/p&gt;


&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2643820729695433638?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2643820729695433638/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2643820729695433638' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2643820729695433638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2643820729695433638'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/08/xen-on-centos5.html' title='Xen on CentOS5 は安定してる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3059911085724460233</id><published>2008-08-01T16:17:00.001+09:00</published><updated>2008-08-01T16:17:05.572+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>Remote がiTunesから登録を解除される問題の対処法</title><content type='html'>&lt;p&gt;iPhone/iPod touch アプリに Remote という、iTunes を制御できる優れものアプリがあるらしい。iPod touch のファームを 2.0 に上げて以来試しているが、なぜかiTunesから登録が解除される挙動に悩まされてきた。。。&lt;/p&gt;

&lt;p&gt;今日なんと対処法が分かった。。。&lt;/p&gt;

&lt;p&gt;どうも4桁のピンコードを入力した後に、折り返しに iTuens から iPod touch へ HTTP アクセスがあって登録が完了するらしい。このとき iTunes が動いてるマシンにプロクシ設定があるとき、折り返しアクセスが HTTPプロクシを通して返され、別のIPアドレスから登録完了の通知なので iPod touch に拒絶されるのが原因らしい。。。あばば&lt;/p&gt;

&lt;p&gt;つまり、4桁のピンコード登録時にはiTunes が動いてるマシンのプロクシを一時的に切れば良い。&lt;/p&gt;

&lt;p&gt;で登録できましたよ〜〜。。。Remote アプリいいすぅね。。。&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3059911085724460233?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3059911085724460233/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3059911085724460233' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3059911085724460233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3059911085724460233'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/08/remote-itunes.html' title='Remote がiTunesから登録を解除される問題の対処法'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6100959946161346268</id><published>2008-07-31T19:29:00.001+09:00</published><updated>2008-07-31T19:29:57.642+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Xen'/><title type='text'>Xen 3.2 on Ubuntu でNFSが固まる</title><content type='html'>&lt;p&gt;捨てるには勿体ない ASUSTek P4P800-VM / Pentium 4 3GHz の構成を生かそうと思い Xen 3.2 on Ubuntu で準仮想化を試そうとした。&lt;/p&gt;

&lt;p&gt;幾つかの地雷原を上手く避けたのだが、どうも Dom0 上の NFS サーバが動作時に下記メッセージを吐いて固まってしまう。&lt;/p&gt;

&lt;pre class="screen"&gt;BUG: unable to handle kernel paging request at virtual address xxxxx&lt;/pre&gt;

&lt;p&gt;同様なメッセージは Xサーバでも出るがドライバを i810 から vesa に変更すれば回避が可能である。&lt;/p&gt;

&lt;p&gt;イマイチ分からん挙動で Dom0 上で NFS サーバを使わなければ良いのだが、、、少なくともワシはやじゃ！&lt;/p&gt;

&lt;p&gt;CentOS5.2 でも試そう&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6100959946161346268?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6100959946161346268/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6100959946161346268' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6100959946161346268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6100959946161346268'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/xen-32-on-ubuntu-nfs.html' title='Xen 3.2 on Ubuntu でNFSが固まる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7076127801944651985</id><published>2008-07-28T18:21:00.000+09:00</published><updated>2008-07-28T21:22:35.997+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>libvirt on MacOSX を試してみる</title><content type='html'>&lt;p&gt;あまり意味は無いが、libvirt は Windows 上でも動いているので、UNIXを名乗ってる MacOSX でも動かないことは無いと思うので試してみた。&lt;/p&gt;

&lt;p&gt;依存するライブラリやパッケージをインストールするために MacPorts を使う。。。取り敢えず適当に入れとく。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;次に、gnutls/pkgconfigを入れる。&lt;/p&gt;

&lt;pre class="screen"&gt;$ sudo port install gnutls
$ sudo port install pkgconfig&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://libvirt.org/"&gt;libvirt&lt;/a&gt;のサイトから、ソースを取ってくる。４カ所修正を行い、configure &amp; make を行う。&lt;/p&gt;

&lt;pre class="screen"&gt;$ tar xfz libvirt-0.4.4.tar.gz
$ cd libvirt-0.4.4
$ sed -i .bak 's/test -z "\$PKG_CONFIG/test -n \"$PKG_CONFIG/' configure
$ sed -i .bak 's#-Wl,--version-script=\$(srcdir)/libvirt_sym.version##' src/Makefile.in
$ sed -i .bak 's/xdr_quad_t/xdr_int64_t/;s/xdr_u_quad_t/xdr_u_int64_t/' qemud/remote_protocol.c
$ sed -i .bak 's/rl_completion_matches/completion_matches/' src/virsh.c
$ ./configure --without-xen --without-qemu --without-libvirtd --without-storage-fs
$ make
$ make install&lt;/pre&gt;

&lt;p&gt;実際使えるのは、virsh のみだが、リモート対向の libvirtd の設定に応じてURIを指定する必要がある。
ssh経由のトランスポートを指定する場合、socket オプションを明示する必要がある。
あと、お互いのシステムで nc コマンドが動く必要がある。&lt;/p&gt;

&lt;pre class="screen"&gt;$ virsh -c qemu+ssh://remote-machine/system?socket=/var/run/libvirt/libvirt-sock&lt;/pre&gt;

&lt;p&gt;&lt;br/&gt;普通に動く。。。&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;

&lt;p&gt;&lt;del&gt;ただ、virt-managerを入れようとしてるが macports の gtk2 が上手く入らんので、試せん。。。意味無いなぁ。&lt;/del&gt;
gtk2が入らないのは &lt;a href="http://trac.macports.org/ticket/15816" title="#15816 (gtk2 does not build on PowerPC because of glib2) - MacPorts - Trac"&gt;#15816&lt;/a&gt;が原因で、port sync で問題なくインストールで来た。でも、virt-managerが依存する virtinst とかは libxen ? が必要なのでイマイチ動かん。。。&lt;/p&gt;



&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7076127801944651985?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7076127801944651985/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7076127801944651985' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7076127801944651985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7076127801944651985'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/libvirt-on-macosx.html' title='libvirt on MacOSX を試してみる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1839703782964767271</id><published>2008-07-24T20:02:00.001+09:00</published><updated>2008-07-29T21:21:35.027+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><title type='text'>Solaris on Linux KVM はまだまだ？</title><content type='html'>&lt;p&gt; KVM+libvirt の組み合わせは最高！Redhat6.2からFedora9まで起動し安定している。&lt;/p&gt;

&lt;p&gt;勢い余って、Solarisをインストールしたが、どうもだめだめの状態
&lt;ol&gt;
&lt;li&gt;Solaris 8/9 に関しては、CDブートでのインストールは出来るが、
初回のHDDの起動時に、しょっぱなから「Can't read gemotery」と出力されて先に進まない。どうも、ブート処理のかなり初期の段階 mboot か pboot のどっちかが巧く動かないようで、KVMの16bit命令のエミュレートの問題か、BIOSの挙動の問題のどちらのような気がする。&lt;/li&gt;
&lt;li&gt;Solaris 10/OpenSolaris に関しては、インストールも起動も出来る。&lt;del&gt;ただし、ゲストOSがアイドル時にホスト側のエミュレータが 100% CPU を食いつぶしている状態で、ちょっといただけない。KVM/QEMU側のMONITOR/MWAITのエミュレートが巧くいっていないので busy wait になってるとか、なってないとからしい。
（参考「&lt;a href="http://opensolaris.org/jive/thread.jspa?messageID=159876" title="OpenSolaris Forums: QEMU and MWAIT/HLT? cpu idle loop ..."&gt;OpenSolaris Forums: QEMU and MWAIT/HLT? cpu idle loop ...&lt;/a&gt;」等々）&lt;/del&gt;
どうも思い過ごしだったらしく、起動して暫くするとアイドル状態になりほぼ 0% になる。ただし、Solaris10は最新パッチまで当てると起動しなくなる。
&lt;/li&gt;
&lt;/ol&gt;
Virtual Box とかではきっと動くんだから、そのうち、安定するんでしょうね。
&lt;/p&gt;

&lt;div class="fullpost"&gt;
&lt;p&gt;
&lt;/div&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1839703782964767271?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1839703782964767271/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1839703782964767271' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1839703782964767271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1839703782964767271'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/solaris-on-linux-kvm.html' title='Solaris on Linux KVM はまだまだ？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7892852269247647720</id><published>2008-07-24T10:23:00.000+09:00</published><updated>2008-07-24T11:00:53.054+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>sata_nv で NCQ を有効にする方法</title><content type='html'>&lt;p&gt;何となく、dmesgを見てたら&lt;/p&gt;

&lt;pre&gt;[   51.265072] ata3.00: 625142448 sectors, multi 1: LBA48 NCQ (depth 0/32)&lt;/pre&gt;

&lt;p&gt;と、NCQが有効になっていなかった。&lt;/p&gt;

&lt;p&gt;どうやら sata_nv.swncq=1 を&lt;a href="https://answers.launchpad.net/ubuntu/+question/32840"&gt;カーネルオプションを付ければ良い&lt;/a&gt;のだが、イマイチ有効にならないようだ。&lt;/p&gt;

&lt;p&gt;はて、どうしたもんだか？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;Debian/Ubnuntu のカーネルはディスク周りもモジュールになるような修正が入ってるためか、オプションを記述する部分は制限されるようで、initramfs-tools の設定で渡す必要があるらしい？&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/initramfs-tools/modules&lt;/code&gt;&lt;/p&gt;
&lt;pre class="code"&gt;sata_nv swncq=1&lt;/pre&gt;

&lt;p&gt;その後、initrd を再構築して、再起動。&lt;/p&gt;
&lt;pre class="screen"&gt;
# update-initramfs -k all -u
update-initramfs: Generating /boot/initrd.img-2.6.24-19-generic
&lt;/pre&gt;

&lt;p&gt;dmesg で確認すると、NCQが有効になってるっぽい&lt;/p&gt;

&lt;pre class="screen"&gt;[   44.429828] sata_nv 0000:00:0e.0: Using SWNCQ mode
...
[   44.953114] ata1.00: 625142448 sectors, multi 1: LBA48 NCQ (depth 31/32)&lt;/pre&gt;

&lt;p&gt;ただし、イマイチ速くなった気がしないが、いいのかなぁ&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7892852269247647720?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7892852269247647720/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7892852269247647720' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7892852269247647720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7892852269247647720'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/satanv-ncq.html' title='sata_nv で NCQ を有効にする方法'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6052917906338372287</id><published>2008-07-23T20:55:00.000+09:00</published><updated>2008-12-01T09:51:50.969+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>FreeBSD 7.0 と Linux KVM</title><content type='html'>&lt;p&gt;KVM 上に FreeBSD 7.0 をインストールした。&lt;/p&gt;

&lt;p&gt;その前に、FreeBSD は CD 数枚組で配布されており、DVD は無い。
&lt;a href="http://it.toolbox.com/blogs/bsd-guru/creating-your-own-freebsd-70-dvd-22791" title="Creating Your Own FreeBSD 7.0 DVD"&gt;Creating Your Own FreeBSD 7.0 DVD&lt;/a&gt;を参考に作成してみた。
&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;FreeBSD 7.0 DVD イメージの用意&lt;/h4&gt;

&lt;p&gt;近場のミラーサイトから
&lt;ul&gt;
&lt;li&gt;7.0-RELEASE-i386-disc1.iso&lt;/li&gt;
&lt;li&gt;7.0-RELEASE-i386-disc2.iso&lt;/li&gt;
&lt;li&gt;7.0-RELEASE-i386-disc3.iso&lt;/li&gt;
&lt;li&gt;7.0-RELEASE-i386-docs.iso&lt;/li&gt;
&lt;/ul&gt;
を入手する。&lt;/p&gt;

&lt;h4&gt;DVDイメージの作成&lt;/h4&gt;

&lt;p&gt;下記コマンドは、Linux上で作業。&lt;/p&gt;
&lt;pre class="screen"&gt;
# mkdir /path/to/dvd-freebsd7
#
# for suffix in "disc1 disc2 disc3 docs"; do
#   iso="7.0-RELEASE-i386-$suffix.iso"
#   mount -oloop /path/to/$iso /mnt
#   tar -C /mnt -c . | tar -C /path/to/dvd-freebsd7 x
#   umount /mnt
# done
#
# rm -Rf /path/to/dvd-freebsd7/rr_moved
#
# sed -ie 's/|[123]$//' /path/to/dvd-freebsd7/all/packages/INDEX
#
# cat &amp;gt;&amp;gt; /path/to/dvd-freebsd7/cdrom.inf &amp;lt;&amp;lt;EOF
CD_VOLUME = 0
CD_VOLUME = 1
CD_VOLUME = 2
CD_VOLUME = 3
EOF
#
# mkisofs -v -V FreeBSD -J -R -no-emul-boot -b boot/cdboot -o /path/to/7.0-RELEASE-i386-dvd.iso /path/to/dvd-freebsd7
&lt;/pre&gt;

&lt;h4&gt;インストール&lt;/h4&gt;

&lt;p&gt;KVM上では、２点問題がでたが、それを除けば難なくインストールできた。&lt;/p&gt;

&lt;h5&gt;ACPI/APICが機能しない&lt;/h5&gt;
&lt;p&gt;ACPI/APICが上手く機能しいので、それを除けてインストールし、最後にブートローダ側での設定を行った。&lt;/p&gt;
&lt;p&gt;&lt;del&gt;&lt;code&gt;/boot/loader.conf&lt;/code&gt;&lt;/del&gt;&lt;br/&gt;&lt;code&gt;/boot/device.hints&lt;/code&gt;&lt;/p&gt;
&lt;pre class="code"&gt;hint.acpi.0.disabled=1
hint.apic.0.disabled=1&lt;/pre&gt;

&lt;p&gt;libvirtではshutdown制御がACPI経由で行われるようなので、いちいちログインして終了する必要があり、&lt;del&gt;自動でVMが終了しない&lt;/del&gt;。ちょっと嫌ですな。。。そのうちFreeBSD on Linux KVM でACPI対応するんだろうなぁ&lt;/p&gt;

&lt;em&gt;追記(2008/07/24)&lt;/em&gt;
&lt;p&gt;ACPIを無効にして、APMを使うようにすれば、自動でVMを終了することができる。但し、libvirtではshutdown制御は効かない。。。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/boot/device.hints&lt;/code&gt;に、hint.apm.0.disabled=0&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/boot/loader.conf&lt;/code&gt;に、apm_load="YES"&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/rc.conf&lt;/code&gt;に apm_enable="YES"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;参考「&lt;a href="http://www.homefry.net/2007/12/freebsdacpiapm.html" title="FreeBSDでACPIを無効にしAPMを有効にする方法 - かっちゃんの自己満足"&gt;FreeBSDでACPIを無効にしAPMを有効にする方法&lt;/a&gt;」&lt;/p&gt;

&lt;h5&gt;NICが安定しない&lt;/h5&gt;

&lt;p&gt;また、KVMのデフォルトで選択される rtl8139では、FreeBSD側のドライバが安定してない。何か timeout とかのメッセージが出る。&lt;/p&gt;

&lt;p&gt;libvirt 0.4.2 から NIC のmodel指定ができるようになったので、手動で最新ソース libvirt_0.4.4-0ubuntu1 からパッケージを構築し、NICのモデルに e1000 を指定したら安定して動くようになった。&lt;/p&gt;

&lt;pre class="code"&gt;...
   &amp;lt;interface type='bridge'&amp;gt;
     &amp;lt;mac address='xxxxxx'/&amp;gt;
     &amp;lt;source bridge='br0'/&amp;gt;
     &amp;lt;model type='e1000'/&amp;gt;
   &amp;lt;/interface&amp;gt;
...&lt;/pre&gt;

&lt;p&gt;NetBSD on Linux KVM も似た感じで、ACPI無効で適当なNICモデルを選択すれば良い。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6052917906338372287?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6052917906338372287/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6052917906338372287' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6052917906338372287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6052917906338372287'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/freebsd-70-linux-kvm.html' title='FreeBSD 7.0 と Linux KVM'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-92864517114732011</id><published>2008-07-23T17:45:00.001+09:00</published><updated>2008-07-28T18:28:35.372+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><title type='text'>完全仮想化のときディスクの CHS 値がちょっとだけおかしい？</title><content type='html'>&lt;p&gt;KVM / QEMU 等で、ちょっと古めの OS を入れて遊んでいたら、次のようなメッセージが出るが、
何事もなく動く場合がある。&lt;/p&gt;

&lt;pre class="screen"&gt;kernel: hda: C/H/S=780/0/63 from BIOS ignored&lt;/pre&gt;

&lt;p&gt;多分、CHS変換が上手くいっていないがLBAモードでアクセスするので問題が起きていないんだろうが、
正直言うと気持ちが悪い。&lt;/p&gt;

&lt;p&gt;Googleの&lt;a href="http://www.google.co.jp/search?q=%220%2F63+from+BIOS+Ignored%22" title=""0/63 from BIOS Ignored" - Google 検索"&gt;検索&lt;/a&gt;だと6件くらい引っかかる&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;くよくよ調べてみた。&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;起動時にホスト側のエミュレータでディスクのCHS値から変換方法は自動的に最適な変換アルゴリズムが選択される。（「&lt;a href="http://bochs.sourceforge.net/cgi-bin/topper.pl?name=New+Bochs+Documentation&amp;url=http://bochs.sourceforge.net/doc/docbook" title="bochs: The Open Source IA-32 Emulation Project (New Bochs Documentation)"&gt;bochs: The Open Source IA-32 Emulation Project (New Bochs Documentation)&lt;/a&gt;」にあるnone, large, rechs, lbaの４種類)&lt;/li&gt;
&lt;li&gt;仮想マシン上で実行されるBIOSの初期化処理で、論理CHSの最大値が計算される。&lt;/li&gt;
&lt;li&gt;エミュレータで指定された変換アルゴリズムで計算した値が
EBDA(Extended BIOS Data Area)に保存されている。&lt;/li&gt;
&lt;li&gt;上とは無関係な方法で計算した値がFDPT (Fixed Disk Parameter Table)に保存される。&lt;br /&gt;
（「&lt;a href="http://www.phoenix.com/NR/rdonlyres/9BEDED98-6B3F-4DAC-BBB7-FA89FA5C30F0/0/specsedd11.pdf" title="Enhanced Disk Drive Specification Ver 1.1"&gt;Enhanced Disk Drive Specification Ver 1.1&lt;/a&gt;」に基づいた方法。。。1995年に作成って）&lt;/li&gt;
&lt;li&gt;EBDAとFDPT上の論理CHSの最大値が一致しない場合がある。&lt;/li&gt;
&lt;li&gt;FDPTの計算に使われる方法は、Head値が256の可能性があり、古いシステムでは誤認識する場合もある。（おおよそディスクサイズが 4Gの以上の時かなぁ？）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;変なメッセージが出るのが嫌なのでパッチを作ってみた。ただし、FDPTはどう扱うべきかイマイチ分からないので、正しい対処法かどうかは分からない。&lt;/p&gt;

&lt;pre class="code"&gt;--- kvm-62+dfsg/bios/rombios.c	2008-02-25 18:30:14.000000000 +0900
+++ ../rombios.c	2008-07-23 15:39:17.000000000 +0900
@@ -2450,6 +2450,15 @@
       write_word(ebda_seg,&amp;EbdaData-&gt;ata.devices[device].lchs.cylinders, cylinders);
       write_word(ebda_seg,&amp;EbdaData-&gt;ata.devices[device].lchs.spt, spt);
 
+      if (device == 0 || device == 1) {
+       Bit8u *fdpt = (device==0) ? EbdaData-&gt;fdpt0 : EbdaData-&gt;fdpt1;
+
+       write_word(ebda_seg, fdpt, cylinders);
+       write_byte(ebda_seg, fdpt+0x02, heads);
+      }
+
       // fill hdidmap
       write_byte(ebda_seg,&amp;EbdaData-&gt;ata.hdidmap[hdcount], device);
       hdcount++;&lt;/pre&gt;

&lt;p&gt;パッチ書いた後、Googleって見たら、Virtual Box では同様のパッチ
&lt;a href="http://virtual-box.org/changeset/6294" title="Changeset 6294 - VirtualBox"&gt;Changeset 6294 - VirtualBox&lt;/a&gt;
が当たってるようである。（Sunの古いシステムで不具合とかあったのかなぁ。。。）&lt;/p&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;FDPTの値に不整合があるが、相当古いシステムしか影響を受けないので、気にする必要は無いらしい。
そのうちKVM/QEMU等のrombios.cにも変更が下りて来るのかもしれない。。。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-92864517114732011?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/92864517114732011/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=92864517114732011' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/92864517114732011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/92864517114732011'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/chs.html' title='完全仮想化のときディスクの CHS 値がちょっとだけおかしい？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-609601175649087406</id><published>2008-07-22T18:11:00.000+09:00</published><updated>2008-07-28T18:28:26.534+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntuだと Bridge設定すると WakeOnLan 出来ないの何故？</title><content type='html'>&lt;p&gt;仮想化のため bridge の設定を行ったあと、WOL (Wake-On-Lan) の機能が動かなくなってしまった。&lt;/p&gt;

&lt;p&gt;はて、どうしたもんだか？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;現状&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;M2NPV-VM の nForce 430 組込みのGigabit のNIC&lt;/li&gt;
&lt;li&gt;BIOSでWOLの設定(Power Up On By PCI/PCIE Devices)済み&lt;/li&gt;
&lt;li&gt;forcedeth (ver 0.61)&lt;/li&gt;
&lt;li&gt;起動毎に、WOLの設定を有効化するために、&lt;code&gt;/etc/rc.local&lt;/code&gt;の中に記述する。
&lt;pre class="code"&gt;...
/usr/sbin/ethtool -s eth0 wol g
...&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;これで、&lt;a href="http://moimoitei.blogspot.com/2008/07/ubuntu-kvm-libvirt.html"&gt;Bridgeの設定&lt;/a&gt;を行わなければ、癖があるがWakeOnLanが有効に機能する。&lt;/p&gt;

&lt;p&gt;不具合の現象に関しては類似の&lt;a href="http://lists.debian.or.jp/debian-users/200804/msg00007.html"&gt;報告&lt;/a&gt;があり、シャットダウン時にブリッジの設定を無効にすれば良いらしい。。。&lt;/p&gt;

&lt;p&gt;よくよく調べると、Ubuntu 特有の問題で、「&lt;a href="https://launchpad.net/ubuntu/edgy/+source/netbase/4.25ubuntu2" title="netbase 4.25ubuntu2 (source) in ubuntu edgy"&gt;netbase 4.25ubuntu2 (source) in ubuntu edgy&lt;/a&gt;」の変更で、
シャットダウン時にネットワークを落とす処理を削除したためのようである。つまり、Debian etch/lennyには影響しない。。。&lt;/p&gt;

&lt;p&gt;何を思って変更したのだろ？dhcdbd/NetManager側で対処してるので、冗長として切ったのだろうか。。。&lt;/p&gt;

&lt;h4&gt;対応&lt;/h4&gt;

&lt;p&gt;単に、削除した処理を手動で実行すれば良い。&lt;/p&gt;

&lt;pre class="screen"&gt;
# update-rc.d -f networking remove
# update-rc.d -f networking start 40 S . start 35 0 6 .
&lt;/pre&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;がんばれ Ubuntu!&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-609601175649087406?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/609601175649087406/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=609601175649087406' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/609601175649087406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/609601175649087406'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/ubuntu-bridge-wakeonlan.html' title='Ubuntuだと Bridge設定すると WakeOnLan 出来ないの何故？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-976994696412882041</id><published>2008-07-22T11:04:00.001+09:00</published><updated>2009-04-14T00:25:44.831+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>libvirt 経由で日本語キーボードを扱う</title><content type='html'>&lt;p&gt;libvirt の管理下の仮想化ドメインから、virt-manager を使って、仮想グラフィック画面をVNC経由でアクセスすると、正しくキー入力ができない場合がある。&lt;/p&gt;

&lt;p&gt;kvm/qemu のエミュレータに対してキーボードのレイアウトを指定するオプションを付ければ、対応が可能であるが、、、libvirt のドメイン設定ファイル
「&lt;a href="http://libvirt.org/formatdomain.html" title="libvirt: Domain XML format"&gt;libvirt: Domain XML format&lt;/a&gt;」には&lt;del&gt;どうも関連する設定項目が無いようである。&lt;/del&gt;（追記2009/04/14 記事の最後の方を参照）&lt;/p&gt;

&lt;p&gt;まぁ、日本語キーボードの keycodes の問題なんで、英字キーボードを用意すれば済むのだが、
日本にいる以上、日本語配列には慣れていかないといけないわけで、、、&lt;/p&gt;

&lt;p&gt;はて、どうしたもんだか？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;まぁ、スクリプトを挿めばいい&lt;/p&gt;

&lt;p&gt;実行バイナリを別名に変更し&lt;/p&gt;
&lt;pre class="screen"&gt;
# mv /usr/bin/kvm /usr/bin/kvm.bin
# mv /usr/bin/qemu-system-x86_64 /usr/bin/qemu-system-x86_64.bin
&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;/usr/bin/kvm&lt;/code&gt;と&lt;code&gt;/usr/bin/qemu-system-x86_64&lt;/code&gt;の中身を次のラッパースクリプトに変更する。&lt;/p&gt;
&lt;pre class="code"&gt;
#!/bin/sh

exec $0.bin -k ja $*
&lt;/pre&gt;

&lt;p&gt;これにより、日本語キーボードでも正しく文字が入力できるようになる。&lt;/p&gt;

&lt;p&gt;なんだろ？&lt;/p&gt;
&lt;p&gt;VNCでkeycodes配列をネゴしないのが問題なのかなぁ、、、イマイチ分からん&lt;/p&gt;

&lt;h4&gt;追記 (2009/04/14)&lt;/h4&gt;
&lt;p&gt;ふと、気づいてみると XMLフォーマットの中で、VNCのキーマップの指定が出来るようになっている！&lt;/p&gt;

&lt;pre class="code"&gt;
    &amp;lt;graphics type='vnc' port='-1' autoport='yes' listen='' keymap='ja'/&amp;gt;
&lt;/pre&gt;

&lt;p&gt;開発サイトのデータを検索する
&lt;a href="http://git.et.redhat.com/?p=libvirt.git&amp;a=search&amp;h=HEAD&amp;st=commit&amp;s=keymap"&gt;「libvirt.git/search: keymap」&lt;/a&gt;と、
どうもドキュメントに記載が無いだけで libvirt 0.4.1 位から使えてたようでした。
なので、このバッドノウハウは要らなくなりました。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-976994696412882041?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/976994696412882041/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=976994696412882041' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/976994696412882041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/976994696412882041'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/libvirt.html' title='libvirt 経由で日本語キーボードを扱う'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5745888749101838403</id><published>2008-07-21T01:27:00.000+09:00</published><updated>2008-07-28T18:27:44.724+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu + KVM + libvirt で仮想化</title><content type='html'>&lt;p&gt;以前、Xenで完全仮想化ができるので&lt;a href="http://moimoitei.blogspot.com/2006/06/l-bought-athlon64x2.html" title="新しい Athlon64x2 を購入！"&gt;Athlon64x2 を購入&lt;/a&gt;したのだが、
ちょっとしか試していなかった。 変な結構制約があったりで比較的安定している VMware Server を使っていた。
&lt;/p&gt;

&lt;p&gt;時は経って、&lt;a href="http://kvm.qumranet.com/kvmwiki"&gt;Linux KVM&lt;/a&gt; というのが活発に開発が行われており、前途有望である。
同時に、色々な仮想化技術を統一したAPIで扱える&lt;a href="http://libvirt.org/"&gt;libvirt&lt;/a&gt;も整備されてきている。
特に、&lt;a href="http://virt-manager.et.redhat.com/"&gt;virt-manager&lt;/a&gt;は、 VMware Server Console を彷彿し、ローカルからリモートまで管理が可能になりつつある。&lt;/p&gt;

&lt;p&gt;なので、Ubuntu+KVM+libvirt に移行してみようと思う。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;インストール&lt;/h4&gt;

&lt;p&gt;KVM と virt-manager のパッケージをインストール。&lt;/p&gt;
&lt;pre class="screen"&gt;# apt-get install kvm libvirt-bin virt-manager
# addgroup &amp;lt;自分&amp;gt; libvirtd&lt;/pre&gt;

&lt;p&gt;ついでに、QEMU/KQEMU も入れとくと何かと便利かも、、、仮想化命令をサポートしないCPUを使っている場合はこっちがメインになると思う。&lt;/p&gt;
&lt;pre class="screen"&gt;# apt-get install qemu kqemu-source
# module-assistant prepare
# module-assistant build kqemu
# module-assistant install kqemu
# modprobe kqemu
# echo "kqemu" &gt;&gt; /etc/modules&lt;/pre&gt;

&lt;p&gt;あとは、virt-managerを使うと仮想化ドメインが&lt;em&gt;GUI&lt;/em&gt;で簡単に作れるようになる。&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/2685932400/"&gt;&lt;img src="http://farm4.static.flickr.com/3198/2685932400_697f3f116b_m.jpg" height="240" width="194" alt="20080721virt-manager"/&gt;&lt;/a&gt;

&lt;h4&gt;ブリッジの設定&lt;/h4&gt;

&lt;p&gt;何もしなければ、仮想化ドメインのネットワークは、専用のサブネットが割り当てられる。なので、NATで外に出るか、ルーティングをせっせと張ることになる。&lt;/p&gt;

&lt;p&gt;外からサーバ用途としてアクセスしたければ、bridge が簡単でいい。
&lt;a href="http://doc.ubuntu.com/ubuntu/serverguide/C/libvirt.html" title="libvirt"&gt;Ubuntu libvirt guide &lt;/a&gt;を参考にして。
そいつの設定をする&lt;/p&gt;

&lt;p&gt;まず、現在のNetworkManager/dhcdbd等の自動ネットワーク設定機能切る。&lt;/p&gt;
&lt;pre class="screen"&gt;# /etc/dbus-1/event.d/26NetworkManagerDispatcher stop
# /etc/dbus-1/event.d/25NetworkManager stop
# echo "exit" &gt; /etc/default/NetworkManager
# echo "exit" &gt; /etc/default/NetworkManagerDispatcher
# /etc/init.d/dhcdbd stop
# update-rc.d -f dhcdbd remove
# /etc/init.d/networking stop&lt;/pre&gt;

&lt;p&gt;固定IPアドレスと bridge の設定を行う。&lt;/p&gt;

&lt;p&gt;/etc/network/interfaces&lt;/p&gt;
&lt;pre class="code"&gt;auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
	address 192.168.1.123
	netmask 255.255.255.0
	network	192.168.1.0
	broadcast 192.168.1.255
	gateway 192.168.1.254
	bridge_ports eth0
	bridge_fd 9
	bridge_hello 2
	bridge_maxage 12
	bridge_stp off&lt;/pre&gt;

&lt;p&gt;ネットワークを有効化する。&lt;/p&gt;
&lt;pre class="screen"&gt;# cat &amp;gt;&amp;gt; /etc/sysctl.conf &amp;lt;&amp;lt;EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF
# sysctl -p /etc/sysctl.conf
# /etc/init.d/networking start&lt;/pre&gt;

&lt;p&gt;virt-manager を使って新規の仮想化ドメインを作成時に、ブリッジが選択できるようになる。&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/2685882280/"&gt;&lt;img src="http://farm4.static.flickr.com/3181/2685882280_90d54a2a48_m.jpg" height="225" width="240" alt="20080720virt-manager.png"/&gt;&lt;/a&gt;

&lt;h4&gt;まとめ&lt;/h4&gt;

&lt;p&gt;Linux KVM よ〜、賢くな〜れ&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5745888749101838403?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5745888749101838403/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5745888749101838403' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5745888749101838403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5745888749101838403'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/ubuntu-kvm-libvirt.html' title='Ubuntu + KVM + libvirt で仮想化'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3198/2685932400_697f3f116b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3990910700300916430</id><published>2008-07-16T20:14:00.001+09:00</published><updated>2008-07-28T18:27:37.857+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 8.04 LTS に乗り換える。</title><content type='html'>&lt;p&gt;Debian 安定版の進捗はあまりにも遅く、testing や sid ではあまりにもパッケージの更新が頻繁すぎる。インストールするパッケージを選別すれば良いのだが、それも結構骨の折れる作業である。&lt;/p&gt;

&lt;p&gt;世の中を見渡してみると、Ubuntu LTS のリリース方針が自分の要望に怖いほど合致している。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;初期インストールで、日常作業に必要かつ最小限度のパッケージが使える状態になる。&lt;/li&gt;
&lt;li&gt;X の設定とかも、Debian だと鬼門だったのだが、Ubuntu では手厚いサポートがある。&lt;/li&gt;
&lt;li&gt;近年 &lt;a href="http://www.freedesktop.org/"&gt;freedesktop.org&lt;/a&gt; で整理された部分が、普通に使えるようになってる。&lt;/li&gt;
&lt;li&gt;その他、沢山。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;兎に角、最初に悩まなくて良いのが一番良い。上手くいかなくても、Debian 使いのバッドノウハウを使えば良いだけのことだし。&lt;/p&gt;

&lt;p&gt;なので、Debian/etch から &lt;a href="http://www.ubuntu.com/news/ubuntu-8.04-lts-desktop"&gt;Ubuntu 8.04 LTS&lt;/a&gt; に乗り換えてみた。&lt;/p&gt;

&lt;p&gt;あと認証系とかの赤帽の authconfig を移植すれば完璧な気がする。。。。&lt;/p&gt;

&lt;p&gt;やべ本当だ。。。頼んだ &amp;gt; Ubuntu&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3990910700300916430?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3990910700300916430/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3990910700300916430' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3990910700300916430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3990910700300916430'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/ubuntu-804-lts.html' title='Ubuntu 8.04 LTS に乗り換える。'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5393550247574628725</id><published>2008-07-16T18:51:00.001+09:00</published><updated>2008-07-16T18:51:47.967+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>iPod touch で App Store から沢山落としてみた。</title><content type='html'>&lt;a href="http://www.flickr.com/photos/24156556@N07/2673173103/"&gt;&lt;img src="http://farm4.static.flickr.com/3081/2673173103_51a65a67b8_m.jpg" height="240" width="180" alt="P1010221.jpg" align="right"/&gt;&lt;/a&gt;

&lt;p&gt;巷では iPhone 3G の話題が沸騰してるが、
２年でトータル２０万以上も出費とは、、、
私は当分買わない。&lt;/p&gt;

&lt;p&gt;iPod Touch でもカメラとBluetoothとGPSが付けば、電話機能なんて要らんし。。。&lt;/p&gt;

&lt;p&gt;「iPhone 2.0 Software Update 」を適用さえすれば、Wi-Fiが届く場所にいる限り、殆ど同じ触りごごちが味わえる。&lt;/p&gt;

&lt;p&gt;幾つか漫画のアプリがあるが、結構サクサクして読み易い。コミックの配信プラットフォームとしてもありかと思う。&lt;/p&gt;

&lt;p&gt;ただし、アプリ単体のみの課金パターンしか用意されていないようなので、ホーム画面に漫画の数だけ無数のアイコンが並ぶのはやだなぁ。&lt;/p&gt;

&lt;p&gt;「無料のビューア」+「専用の有料コンテンツ」のパターンとかそのうち出てくるのかなぁ。。。課金はそれぞれ用意するとかなのかぁ。。。&lt;/p&gt;

&lt;p&gt;ふぅーむ。。。アップルに期待すっかぁ&lt;/p&gt;






&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5393550247574628725?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5393550247574628725/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5393550247574628725' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5393550247574628725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5393550247574628725'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/ipod-touch-app-store.html' title='iPod touch で App Store から沢山落としてみた。'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3081/2673173103_51a65a67b8_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2647148505062423132</id><published>2008-07-16T14:25:00.000+09:00</published><updated>2008-07-28T18:37:21.272+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogアプリ'/><title type='text'>Blogger で title を変更してみる</title><content type='html'>&lt;p&gt;どうも長々としたブログ名のためかタイトルがどうもクドいくらい長い。&lt;/p&gt;
&lt;p&gt;Blogger の標準的なテンプレートだと個々の投稿のタイトルが「ブログ名：投稿タイトル」なので、これを「投稿タイトル」変更したい。&lt;/p&gt;

&lt;p&gt;Google にお伺いを立てたらタイトルは結構いじくりたい人が多いらしく、トリッキーな方法が沢山出てきたが、、、今やってもテンプレートが不正だとかで修正できなくなってる。&lt;/p&gt;

&lt;p&gt;どうしたもんだろうかと、思っていたら、
本家で&lt;a href="http://buzz.blogger.com/2008/05/updates-and-bug-fixes-for-may-9th.html"&gt;2008/05に修正&lt;/a&gt;が入っていて結構簡単にできることが分かった。&lt;/p&gt;

そのまま「&lt;a href="http://www.corpseofattic.com/2008/05/change-title-for-blogger-post-pages.html"&gt;Change Title for Blogger Post Pages&lt;/a&gt;」に書かれた通りにすればできる。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;具体的に書けば、Blogger の管理画面で「レイアウト」&amp;gt; 「HTMLの編集」に遷移して、

&lt;pre class="code"&gt;&amp;lt;title&amp;gt;&amp;lt;data:blog.pagetitle/&amp;gt;&amp;lt;/title&amp;gt;&lt;/pre&gt;

の部分を

&lt;pre class="code"&gt;&amp;lt;!-- Start of Changing the Blogger Title Tag --&amp;gt;
&amp;lt;b:if cond='data:blog.pageType == "item"'&amp;gt;
&amp;lt;title&amp;gt;&amp;lt;data:blog.pageName/&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;b:else/&amp;gt;
&amp;lt;title&amp;gt;&amp;lt;data:blog.pageTitle/&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/b:if&amp;gt;
&amp;lt;!-- End of Changing the Blogger Title Tag --&amp;gt;&lt;/pre&gt;

に変更すれば良い。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2647148505062423132?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2647148505062423132/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2647148505062423132' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2647148505062423132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2647148505062423132'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/blogger-title.html' title='Blogger で title を変更してみる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-4607517155176174579</id><published>2008-07-10T10:28:00.003+09:00</published><updated>2008-08-05T00:26:25.920+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogアプリ'/><title type='text'>ブログ移転と検索インデックスの移行</title><content type='html'>&lt;p&gt;ブログを移転したが、検索サイトの結果も移転したい気がする。殆どアクセスが無いサイトだけど、結構 Google の検索順位は高かったので、勿体ない。いろいろ調べると 301リダイレクトを行えば良いらしい。&lt;/p&gt;

&lt;p&gt;詳細は Google のヘルプ「&lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=83105&amp;topic=8523"&gt;サイトの移転に関するヒント&lt;/a&gt;」に記述があり、他の検索エンジンとかの対処法も同様らしい。&lt;/p&gt;

&lt;p&gt;自前で運用してた typo は、Apache 2.0.x + mod_proxy -&gt; mongrel -&gt; Rails 1.2.x なので、色んな所に実装できそうだが、一番簡単な apache の方で対応してみた&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;対応&lt;/h4&gt;

&lt;p&gt;Blogger が生成する permalink は記事タイトルの適当に変換したもので、特定の文字列に変更することはどうも出来ないらしい。記事毎に旧ブログと新ブログのURLの対応づけを指定する必要がある。&lt;/p&gt;

&lt;p&gt;対応付け毎に 301リダイレクトする設定に加えて、
移行済みの記事は railsのアプリサーバに渡さないようにすると、次のようになる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ProxyPass &amp;lt;旧ブログのURLパス&amp;gt; !
redirect 301 &amp;lt;旧ブログのURLパス&amp;gt; &amp;lt;Bloggerでの対応するURL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これを、記事毎に用意すれば良い。。。後は力技だわ。&lt;/p&gt;

&lt;h4&gt;力技&lt;/h4&gt;

&lt;p&gt;記事を移行しつつ、対応付けを下記の書式で一行毎に記録する。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;redirect.conf.in&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;旧ブログのURLパス片&amp;gt; &amp;lt;Bloggerでの対応するURLパス&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;このファイルを上の設定に変換する perl スクリプトに通して、&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cvt.pl&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/env perl

$dsite = "http://XXXXX.blogspot.com";

while (&lt;&gt;) {
 ($s, $d) = split(/\s+/);
 $surlpath = "/articles$s";
 $durl = "$dsite$d";
 print &amp;lt;&amp;lt;EOM
ProxyPass $surlpath !
redirect 301 $surlpath $durl
EOM
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;出てきた設定を include 命令で読み込むようにすれば良い。&lt;/p&gt;

&lt;pre class="screen"&gt;
# cvt.pl redirect.conf.in &gt; redirect.conf
# /etc/init.d/httpd configtest
Syntax OK
# /etc/init.d/httpd graceful
&lt;/pre&gt;

&lt;p&gt;この時点で、旧ブログで移行済みの記事を参照すると、Bloggerへ誘導されるようになる。&lt;/p&gt;
&lt;p&gt;あとはクローラが認識するまで180日くらいは必要らしい。。。本当に移行できるんかいなぁ。&lt;/p&gt;

&lt;h4&gt;追記(2008/08/05)&lt;/h4&gt;

&lt;p&gt;RSS/Atom の移転に関しても、301のレスポンスを返すと参照先を変更してくれるらしい。なので、RSS/Atomに関しても301リダイレクトを返すようにした。。。&lt;p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-4607517155176174579?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/4607517155176174579/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=4607517155176174579' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4607517155176174579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4607517155176174579'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/relocate-index-with-rails-apps.html' title='ブログ移転と検索インデックスの移行'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1201280873455759059</id><published>2008-07-09T19:49:00.002+09:00</published><updated>2008-07-28T18:36:42.848+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogアプリ'/><title type='text'>typo の markdown を ecto3 で扱う方法</title><content type='html'>&lt;p&gt;&lt;a href="http://typosphere.org/"&gt;typo&lt;/a&gt; と ecto を組み合わせるとき、 ecto 内の markdown パーサが性能が悪いので、プリビューが上手く表示できないことがある。&lt;/p&gt;

&lt;p&gt;「&lt;a href="http://travel-lab.info/tech/pblog/files/article.php?id=4"&gt;Markdown Extra for ecto&lt;/a&gt;」を使えば、対処が可能らしいが、ecto 3.0b49 では上手くいかなかった。
パッチの内容は、Perlスクリプトの markdown -&gt; html コンバータを、PHP ベースの変えるものらしい。&lt;/p&gt;

&lt;p&gt;ふーむ。&lt;/p&gt;

&lt;p&gt;typo は Ruby の RedCloth モジュールの markdown パーサを利用してるので、こっちを使う物を変えれば、上手くいきそうである。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;RedCloth インストール&lt;/h4&gt;

&lt;p&gt;MacOSX 10.5 では、rubygems が使えるので、&lt;/p&gt;

&lt;pre class="screen"&gt;
# sudo gem install RedCloth
&lt;/pre&gt;

&lt;p&gt;で完了&lt;/p&gt;

&lt;h4&gt;ecto の markdown フォーマッタの変更&lt;/h4&gt;

&lt;p&gt;ファイル &lt;code&gt;ecto.app/Contents/PlugIns/Markdown.formatter/Contents/Resources/markdown.perl&lt;/code&gt; を名前を変えてバックアップを取り、
次のように変える。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/ruby

require 'rubygems'
require 'RedCloth'

text = ""
readlines.each { |line|
  line.gsub!(%r{&amp;lt;typo:code&amp;gt;},"&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;")
  line.gsub!(%r{&amp;lt;/typo:code&amp;gt;},"&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;")
  text += line
}

doc = RedCloth.new(text)
puts doc.to_html(:markdown)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;めでたく、プリビューが上手く表示されるようになりましたっす。&lt;/p&gt;
&lt;p&gt;
「&lt;a href="http://infinite-sushi.com/software/ecto/news/2008/07/writing_your_own_formatter.php"&gt;Writing your own formatter&lt;/a&gt;」
に従えば、独自のフォーマッタが結構簡単に作れるらしいので、、、余力があれば遊んでみるのも良いかも。
&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1201280873455759059?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1201280873455759059/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1201280873455759059' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1201280873455759059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1201280873455759059'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/typo-markdown-ecto.html' title='typo の markdown を ecto3 で扱う方法'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8618106087919154760</id><published>2008-07-09T18:40:00.000+09:00</published><updated>2008-07-09T18:48:03.979+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>ブログの移転してきたお知らせ</title><content type='html'>&lt;p&gt;インターネットは Google 優勢なので Blogger に 移行することに決めました。&lt;/p&gt;

&lt;p&gt;更新が滞ることが多いので、Web上ではなくブログ投稿アプリを使おうと思ったら、
そういうツールとかは、markdownとか「はてな記法」とかは結構サポート度合いが低い。
ごちゃごちゃするより、HTMLベースの記法の方が不具合が少ない気がする。&lt;/p&gt;

&lt;p&gt;MacOSX でのブログ投稿アプリは有名どころで &lt;a href="http://infinite-sushi.com/software/ecto/"&gt;ecto&lt;/a&gt; か &lt;a href="http://www.red-sweater.com/marsedit/"&gt;MarsEdit&lt;/a&gt; か悩んだが、ecto に決めた。
&lt;br /&gt;&lt;br /&gt;
まあ安かったからだが。。。&lt;/p&gt;

&lt;p&gt;新しいURLは &lt;a href="http://moimoitei.blogspot.com/"&gt;http://moimoitei.blogspot.com/&lt;/a&gt; になります。
順次古い投稿も移していこうかと思います。古いURLは &lt;a href="http://blog.moimoitei.jp/"&gt;http://blog.moimoitei.jp/&lt;/a&gt; でした。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8618106087919154760?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8618106087919154760/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8618106087919154760' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8618106087919154760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8618106087919154760'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/blog-post.html' title='ブログの移転してきたお知らせ'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5452381333065159639</id><published>2008-07-03T11:43:00.000+09:00</published><updated>2008-07-09T05:17:18.836+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>XFSのファイルシステムがまた壊れた。。。</title><content type='html'>&lt;p&gt;何でも無いが、LVM+XFS で運用したファイルシステムが壊れた。。。&lt;/p&gt;

&lt;p&gt;強制電源断をしたからだけど、ほとんど書き込みが無いボリュームで修復も出来ないほど壊れるのは何故だ！！&lt;/p&gt;

&lt;p&gt;いっそう XFS が嫌いになったっす。&lt;/p&gt;

&lt;p&gt;dm とかは write barrier 機能が有効でないのが問題らしいが、、、はぁ。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5452381333065159639?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5452381333065159639/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5452381333065159639' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5452381333065159639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5452381333065159639'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/07/xfs_03.html' title='XFSのファイルシステムがまた壊れた。。。'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8317139605126146525</id><published>2008-06-24T14:40:00.001+09:00</published><updated>2009-01-15T14:16:11.567+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>P4P800-VM でPATA/SATA混合時のLinux 2.6.x 挙動がいい感じ</title><content type='html'>&lt;p&gt;二年前に、&lt;a href="http://moimoitei.blogspot.com/2006/04/p4p800-vm-pata-sata-linux-26-bad.html"&gt;P4P800-VM でPATA/SATA混合時のLinux 2.6.x 挙動？&lt;/a&gt;という記事を書いた。&lt;/p&gt;
&lt;p&gt;現状の対応度合いが気になったので、試しに Ubuntu8.04 をインストールしてみた。&lt;/p&gt;
&lt;p&gt;。。。&lt;/p&gt;
&lt;p&gt;あっさり入ってしまった。。。余分なカーネルオプション(irqpollとか)を付けずにも、起動できるようである。挙動不審な問題(スループットとか)とかも起きないようである。&lt;/p&gt;
&lt;div class="fullpost"&gt;
&lt;p&gt;どうも、2.6.16から2.6.24のどこかで対応が進んだらしい。確認するのに骨が折れるので気にしないことが一番である。&lt;/p&gt; 
 
&lt;p&gt;Debian/etch の標準カーネルでは irqpoll が必要であるが、&lt;a href="http://wiki.debian.org/EtchAndAHalf"&gt;Etch&amp;amp;Half&lt;/a&gt;に含まれるlinux-2.6.24 を使うようにすれば不要である。&lt;/p&gt; 
 
&lt;p&gt;要は、ディストリビューションの最新安定版(Debianは除く)を使えば良いのかなぁ？&lt;/p&gt; 
 
&lt;p&gt;さて、P4P800-VMは一年以上使っていないし、捨てますか。。。&lt;/p&gt; 
 
&lt;h4&gt;追記(2008/06/25)&lt;/h4&gt; 
 
&lt;p&gt;CentOS 5.2 がリリースした記念にインストールしてみたが、見事の途中で「Disabling IRQ #XX」と出力されて、殆ど止まってしまった。。。2.6.18 では直ってないっぽい。&lt;/p&gt; 
 
&lt;p&gt;次いでに Fedora 9 とか入れてると変に引っかかること無くインストールできたので、CentOS 6.x くらいまで待たないと完全対応とはいかないのかぁ。&lt;/p&gt; 
 
&lt;p&gt;でも、やっぱり P4P800-VM は捨てますか。。。&lt;/p&gt; 
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8317139605126146525?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8317139605126146525/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8317139605126146525' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8317139605126146525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8317139605126146525'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/06/p4p800-vm-patasatalinux-26x.html' title='P4P800-VM でPATA/SATA混合時のLinux 2.6.x 挙動がいい感じ'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-112962838381692999</id><published>2008-06-03T13:06:00.001+09:00</published><updated>2008-07-09T05:10:17.532+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>ブログの移転の予定の予定？</title><content type='html'>&lt;p&gt;取り敢えず、そのうち&lt;a href="http://blog.moimoitei.jp/"&gt;ブログ&lt;/a&gt;を移転します。ただ、半年前から思ってるので半年後になるかもしれん。&lt;/p&gt;

&lt;p&gt;どこかは決めていませんが、&lt;a href="http://www.blogger.com/home"&gt;Blogger&lt;/a&gt; か &lt;a href="http://d.hatena.ne.jp/"&gt;はてな&lt;/a&gt; のどっちかにしようかと思案中です。&lt;/p&gt;

&lt;p&gt;取り敢えず、無料で、長期期間放置しても(死後も)削除されないようなとこが良い。。。&lt;/p&gt;

&lt;p&gt;べつな良さげなところがあれば、そっちにするかも。&lt;/p&gt;

&lt;p&gt;Blogger に書いてみるが、、、いいのかなぁ？&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-112962838381692999?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/112962838381692999/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=112962838381692999' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/112962838381692999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/112962838381692999'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/06/blog-post.html' title='ブログの移転の予定の予定？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7363532809901668198</id><published>2008-05-10T14:38:00.001+09:00</published><updated>2008-07-09T06:21:15.784+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>ちょっとだけ cpufreqd を使って Dothan の発熱を抑える</title><content type='html'>&lt;p&gt;i915GMm-HFS にインストールしてある Debian を
etch から lenny にしたところ、勝手にシャットダウンするようになってしまった。&lt;/p&gt;

&lt;p&gt;前後のログをみると、

&lt;pre class="screen"&gt;May  8 19:23:22 myhost kernel: ACPI: Critical trip point
May  8 19:23:22 myhost kernel: Critical temperature reached (109 C), shutting down.&lt;/pre&gt;

温度が異常に高いため保護のためにシャットダウンしてるようである。&lt;/p&gt;

&lt;p&gt;どうしたもんだろう？&lt;/p&gt;
&lt;div class="fullpost"&gt;
 
&lt;h4&gt;現状&lt;/h4&gt; 
 
&lt;ol&gt; 
&lt;li&gt;i915GMm-HFS&lt;/li&gt; 
&lt;li&gt;Pentium M 770 / Dothan / 2.13G Hz&lt;/li&gt; 
&lt;li&gt;cpufrequtils を使って周波数制御の設定を行っている。&lt;/li&gt; 
&lt;li&gt;ondemand governor で負荷に応じて 800M Hz〜2.13G Hz の変動させる。&lt;/li&gt; 
&lt;/ol&gt; 
 
&lt;p&gt;/etc/default/cpufrequtils
 
&lt;pre&gt;&lt;code&gt;ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED=2133000
MIN_SPEED=800000&lt;/code&gt;&lt;/pre&gt; 
 
この状況で負荷が高いときにシャットダウンするようになった。&lt;/p&gt; 
 
&lt;p&gt;例えば「openssl speed」で長時間の高負荷状態にすると確実に１〜２分以内でシャットダウンする。
どうも、シャットダウンの処理主体はLinuxカーネルの drivers/acpi/thermal.c 内の acpi_thermal_critical 関数らしく、正規の動作らしい。&lt;/p&gt; 
 
&lt;p&gt;&lt;a href="http://www.gentoo.org/doc/ja/power-management-guide.xml#doc_chap3"&gt;Gentoo 電力管理ガイド&lt;/a&gt;を参照すると、ondemand/conservative を使う限り、
温度に依存した抑制動作がないので、ちょっとした負荷で頻繁に周波数が上がったり下がったりで発熱して、致命的な温度になるらしい。&lt;/p&gt; 
 
&lt;p&gt;筐体の廃熱がうまくいってないのかもしれん。&lt;/p&gt; 
 
&lt;h4&gt;対応&lt;/h4&gt; 
 
&lt;p&gt;温度状況もいれて周波数管理するためには cpufreqd を使うのが良さげである。
試行錯誤の結果「openssl speed」の実行完了してもシャットダウンしない設定を見つけた。&lt;/p&gt; 
 
&lt;ol&gt; 
&lt;li&gt;conversative governor で負荷に応じて 800M Hz〜1.60G Hz の変動させる。&lt;/li&gt; 
&lt;li&gt;CPUが 65℃以上になったら、800M Hz に制限する。&lt;/li&gt; 
&lt;/ol&gt; 
 
&lt;p&gt;/etc/cpufreqd.conf&lt;/p&gt; 
 
&lt;pre&gt;&lt;code&gt;[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=4
#enable_remote=1
#remote_group=root
[/General]
 
[acpi]
acpid_socket=/var/run/acpid.socket
[/acpi]
 
[sensors_plugin]
sensors_conf=/etc/sensors.conf
[/sensors_plugin]
 
[Profile]
name=Performance High
minfreq=0%
maxfreq=100%
policy=conservative
[/Profile]
 
[Profile]
name=Performance Low
minfreq=0%
maxfreq=75%
policy=conservative
[/Profile]
 
[Profile]
name=Powersave
minfreq=40%
maxfreq=40%
policy=powersave
[/Profile]
 
##
# Basic states
##
[Rule]
name=Normal
cpu_interval=0-100
#profile=Performance High
profile=Performance Low
[/Rule]
 
# CPU Too hot!
[Rule]
name=CPU too Hot
acpi_temperature=65-150
cpu_interval=0-100
profile=Powersave
[/Rule]&lt;/code&gt;&lt;/pre&gt; 
 
&lt;h4&gt;cpufreqd に一言&lt;/h4&gt; 
 
&lt;p&gt;何で、acpi でバッテリとACアダプタの状態が取得できない場合、ACアダプタが刺さって無く、バッテリ容量が０%として認識するんだい！？　&lt;/p&gt; 
 
&lt;p&gt;ソースを見る限り変数が適当な値で初期化していないので、偶然０になり、そういう状態になるらしいが。。。&lt;/p&gt; 
 
&lt;p&gt;そのうち Ubuntu とかがまた整理してくれるのかなぁ。&lt;/p&gt; 
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7363532809901668198?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7363532809901668198/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7363532809901668198' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7363532809901668198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7363532809901668198'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/05/cpufreqd-dothan_10.html' title='ちょっとだけ cpufreqd を使って Dothan の発熱を抑える'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6646855520728117959</id><published>2008-05-06T21:25:00.000+09:00</published><updated>2009-08-02T14:15:48.041+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux でビープ音を消す</title><content type='html'>&lt;p&gt;Linux を使ってると大きなビープ音がしてとても恐縮する。最近は対応方法があるらしく pcskpr モジュールを読み込まないようにすれば良いらしい。&lt;/p&gt;

&lt;p&gt;/etc/modprobe.d/blacklist&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;blacklist pcspkr&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ビープ音を適当なメロディにするとかはできないらしい。。。でも？&lt;/p&gt;

&lt;h4&gt;追記(2009/08/02)&lt;/h4&gt;

&lt;p&gt;最近のカーネルでは、PC-Speaker の制御が pcspkr/snd_pcsp のどちらかで出来るようになっている。なので、両方をブラックリストに追加する必要がある。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;blacklist pcspkr
blacklist snd_pcsp&lt;/code&gt;&lt;/pre&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6646855520728117959?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6646855520728117959/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6646855520728117959' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6646855520728117959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6646855520728117959'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/05/linux-no-beep.html' title='Linux でビープ音を消す'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3843589118412791833</id><published>2008-04-30T19:50:00.000+09:00</published><updated>2008-07-15T02:28:19.462+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>CF-R3 の HDD 交換</title><content type='html'>&lt;p&gt;３年半使っていた CF-R3 のHDD から異音が発生して、とうとうOSも起動しなくなってしまった。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://letsnote.xrea.jp/?FrontPage"&gt;Let&amp;#8217;snote テンプレ Wiki&lt;/a&gt; に従って、交換してみた。&lt;/p&gt;

&lt;p&gt;持っているCF-R3は、マイレッツ倶楽部モデルで型番 CF-R3DW4AXP で HDD は特殊仕様でなく5Vで駆動する。何にも考えず 2.5HDD ATA100 を適当に選んで交換できる。120G 容量 HTS541612J9AT00  を選んでみた。&lt;/p&gt;

&lt;p&gt;D2D のリカバリなのでHDD が逝かれると、工場出荷状態にリカバリできなくなってしまう。&lt;/p&gt;

&lt;p&gt;リカバリ領域を移行するには、壊れる前に作業しなければいけない。&lt;/p&gt;

&lt;p&gt;もう起動しない。&lt;/p&gt;

&lt;p&gt;男は黙って dd かぁ？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;リカバリ領域のバックアップ&lt;/h4&gt;

&lt;p&gt;取り敢えず適当な Linux の Live CD を確保して、USB-CD/DVD 経由で作業用のLinux システムを確保する。&lt;/p&gt;

&lt;p&gt;今回は、&lt;a href="http://unit.aist.go.jp/itri/knoppix/index.html"&gt;KNOPPIX&lt;/a&gt;を使った。&lt;/p&gt;

&lt;p&gt;で、HDD の最後から 392 シリンダー分がリカバリ領域である。
運が良く破損しておらずアクセスできた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# total=`blockdev --getsz /dev/hda`
# count=`expr 392 \* 16065`
# skip=`expr $total - $count`
# dd if=/dev/hda of=recovery-fat32.img bs=512 skip=$skip count=$count&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;できたイメージ recover-fat32.img が fat32 としてマウントできれば成功。サイズが3Gもあるので、netcat を使って転送して、別のマシンに保存した。&lt;/p&gt;

&lt;h4&gt;HDD 交換&lt;/h4&gt;

&lt;p&gt;交換方法は、&lt;a href="http://www.youtube.com/watch?v=EDEF-i7Clew"&gt;動画&lt;/a&gt;もあがってるので、そんなに難しいことではない。&lt;/p&gt;

&lt;h4&gt;リカバリ領域の復活とリカバリ&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;MS-DOSの起動ディスクにmakebeer.exe/recvmode.exeを仕込んだものを用意する。&lt;/li&gt;
&lt;li&gt;用意した起動ディスクを起動。&lt;/li&gt;
&lt;li&gt;makebeer.exe 3 &lt;/li&gt;
&lt;li&gt;makebeer.exe /fat32&lt;/li&gt;
&lt;li&gt;再度、Linux の Live CD を起動。&lt;/li&gt;
&lt;li&gt;/dev/hda4 が作成されているので、「dd if=recovery-fat32.img of=/dev/hda4 」で書き戻し。&lt;/li&gt;
&lt;li&gt;GRUB 起動ディスクを用意し、/dev/hda4 のパーティションブートする。&lt;/li&gt;
&lt;li&gt;リカバリメニューに従ってWindowsXPをリカバリ。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;本当は 「makebeer /copy 」=&gt;「makebeer /remove」=&gt;「recvmode /normal」で、BIOSのリカバリメニューからリカバリできるらしいが、、、うまくいかなかった。&lt;/p&gt;

&lt;p&gt;HDD が 4200 ppm -&gt; 5400 ppm に変更されたためか、体感速度が早く感じられる。&lt;/p&gt;

&lt;p&gt;また、３年半くらい使えるかなぁ。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3843589118412791833?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3843589118412791833/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3843589118412791833' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3843589118412791833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3843589118412791833'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/04/recovery-hdd-cf-r3.html' title='CF-R3 の HDD 交換'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1458906040335478360</id><published>2008-04-25T05:31:00.000+09:00</published><updated>2009-04-13T19:49:57.271+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VIA EPIA'/><title type='text'>Debian で VIA の PadLock を使ってみる</title><content type='html'>&lt;p&gt;以前持っていた EPIA-ME6000 が不幸なことに&lt;a href="http://moimoitei.blogspot.com/2006/11/condenser-bursts-epia-me6000.html"&gt;再起不能&lt;/a&gt;になってしまった。直ぐに&lt;a href="http://www.viatech.co.jp/jp/products/mainboards/motherboards.jsp?motherboard_id=399"&gt;EPIA-EN12000EG&lt;/a&gt;を入手してたのだが、当時のLinuxのSATA_VIAドライバは不安定だったので、放ったらかしにしていた。&lt;/p&gt;

&lt;p&gt;症状として、立ち上げ直後は問題ないが、それからしばらくするとディスク関連でエラーを吐いてフリーズしてしまい、長時間運用ができない、、、何じゃこれって感じ。&lt;/p&gt;

&lt;p&gt;最近(etch/lenny ともに最新版)試したところ sata_via は非常に安定している気がする。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ja.wikipedia.org/wiki/VIA_C3"&gt;VIA C7 Esther&lt;/a&gt; には、ハードウェア処理のAES暗号化、SHA関数、乱数生成といった目玉な機能が実装されている。&lt;/p&gt;

&lt;p&gt;なんで、Linux で使いましょう。。。。&lt;/p&gt;

&lt;p&gt;参考 &lt;a href="http://www.logix.cz/michal/devel/padlock/"&gt;VIA PadLock support for Linux&lt;/a&gt;&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;ハードウェア乱数生成&lt;/h4&gt;

&lt;p&gt;Debian etch/lenny の Linux 2.6.18/2.6.24? ともに十分なサポートがあり、rng-tools を使うと、/dev/random からの乱数生成の帯域が太くなるらしい。&lt;/p&gt;

&lt;p&gt;apt でインストール&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install rng-tools&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;設定を行い&lt;/p&gt;

&lt;p&gt;/etc/default/rng-tools&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
RNGDOPTIONS=&amp;quot;--hrng=via&amp;quot;
...&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;/etc/modules&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;via_rng&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;rngd を立ち上げ、動作確認をする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# /etc/init.d/rng-tools stop
# dd if=/dev/random of=/dev/null bs=512 count=1000 &amp;amp; pid=$!
# sleep 10 ; kill -USR1 $pid ; sleep 1 ; kill $pid
0+0 records in
0+0 records out
0 bytes (0 B) copied, 10.0067 seconds, 0.0 kB/s
# /etc/init.d/rng-tools start
# dd  if=/dev/random of=/dev/null bs=512 count=1000       
0+1000 records in
0+1000 records out
96169 bytes (96 kB) copied, 1.04326 seconds, 92.2 kB/s&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;/dev/random に十分なエントロピーが供給されているので、ブロックされることは殆ど無くなる。&lt;/p&gt;

&lt;h4&gt;VIA Padlock for Linux Crypto API&lt;/h4&gt;

&lt;p&gt;VIA Padlock は Linux 2.6.19 からフルサポートされる。素のDebian etch のままだと 2.4.18 止まりなのだが、最近 etch-proposed-updates にバージョンに &lt;a href="http://dannf.org/bloggf/tech/etchnhalf-kernel-in-p-u.html"&gt;etchnhalf&lt;/a&gt; が含まれる linux-image が提供され、こいつが最新カーネルバージョンに追随してるっぽい。なので、etch でも 2.6.24 が使えるのでこいつを使う。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install linux-image-2.6-686-etchnhalf
# reboot
...
# uname -r
2.6.24-etchnhalf.1-686&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;VIA Padlock のモジュールを読み込むように設定&lt;/p&gt;

&lt;p&gt;/etc/modules&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;padlock_aes
padlock_sha&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;リブートして&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# grep driver.*padlock /proc/crypto
driver       : sha256-padlock
driver       : sha1-padlock
driver       : cbc-aes-padlock
driver       : ecb-aes-padlock
driver       : aes-padlock&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;カーネルで使える暗号化処理 AES/SHA が高速化するらしい。IPSec 、dm-crypt、とかが、、、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# dd if=/dev/zero of=/dev/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.0236812 seconds, 221 MB/s
...
# modprobe padlock_aes
# cryptsetup create -c aes-cbc-essiv:sha256 -d /dev/random ram1 /dev/ram1
# dd if=/dev/zero of=/dev/mapper/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.142272 seconds, 36.9 MB/s
# cryptsetup remove ram1
# rmmod padlock_aes
...
# modprobe aes_i586
# cryptsetup create -c aes-cbc-essiv:sha256 -d /dev/random ram1 /dev/ram1
# dd if=/dev/zero of=/dev/mapper/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.902938 seconds, 5.8 MB/s
# cryptsetup remove ram1
# rmmod aes_i586&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;VIA Padlock を使った方が 6倍くらい速くなるらしい。。。&lt;/p&gt;

&lt;p&gt;これでユーザランドで高速化されるかと言うと、Linux Crypto API は、userland にはインタフェースを持っていない。。。パッチは２種類(&lt;a href="http://www.logix.cz/michal/devel/cryptodev/"&gt;CryptoDev for Linux&lt;/a&gt;,&lt;a href="http://ocf-linux.sourceforge.net/"&gt;OCF-Linux&lt;/a&gt;)あるらしいが、いまだに&lt;a href="http://www.atmarkit.co.jp/flinux/rensai/watch2005/watch04b.html"&gt;議論&lt;/a&gt;があるらしく、マージされてない。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.openbsd.org/crypto.html#hardware"&gt;OpenBSD&lt;/a&gt;/&lt;a href="http://www.freebsd.org/news/status/report-2002-09-2002-10.html#Hardware-Crypto-Support-Status"&gt;FreeBSD&lt;/a&gt; だと OpenSSLが CryptoDev を使うようになってるので、何もせずに高速化されるらしい。。。いいなぁ。&lt;/p&gt;

&lt;h4&gt;VIA Padlock for OpenSSL&lt;/h4&gt;

&lt;p&gt;Debian etch/lenny ともに、VIA Padlock の engine が有効にして構築されていなので、自前で用意する必要がある。どうも共有ライブラリの形でプラグイン化できないのが駄目らしい。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.logix.cz/michal/devel/padlock/#openssl098-dynamic"&gt;VIA PadLock support for Linux&lt;/a&gt; 内の以下のパッチを当て、パッケージを再構築。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;openssl098-padlock-shared-move.diff&lt;/li&gt;
&lt;li&gt;openssl098-padlock-shared-makefiles.diff&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;インストール後、/usr/lib/ssl/engines/libpadlock.so がインストールされる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# openssl speed -evp aes256            
Doing aes-256-cbc for 3s on 16 size blocks: 1847840 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 575493 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 154125 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 39230 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 4929 aes-256-cbc's in 3.00s
...
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-256-cbc       9855.15k    12277.18k    13152.00k    13390.51k    13459.46k
# openssl speed -evp aes256 -engine padlock
engine &amp;quot;padlock&amp;quot; set.
Doing aes-256-cbc for 3s on 16 size blocks: 10478263 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 8095021 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 256 size blocks: 4480017 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 1600314 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 228568 aes-256-cbc's in 3.00s
...
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-256-cbc      55884.07k   173271.35k   382294.78k   546240.51k   624143.02k&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;via_rng/padlock_aes の効果で、実に約46倍速くなるらしい。。。はや。&lt;/p&gt;

&lt;p&gt;OpenSSL を使う奴のほとんどが簡単なパッチを当てる必要があるらしい。そのうち改善されていくのかなぁ。&lt;/p&gt;

&lt;p&gt;OpenSSH にパッチを当てて VIA Padlock を有効にした場合、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; ...  ssh/sshd ともにソフトウェアバージョンを利用 ...
# dd if=/dev/zero count=50 bs=1M | ssh -c aes256-cbc localhost &amp;quot;cat &amp;gt;/dev/null&amp;quot;
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 11.8916 seconds, 4.4 MB/s
 ...  ssh/sshd ともに padlock engine を利用 ...
# dd if=/dev/zero count=50 bs=1M | ssh -c aes256-cbc localhost &amp;quot;cat &amp;gt;/dev/null&amp;quot;
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 7.88281 seconds, 6.7 MB/s&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;約 50 % の高速化かぁ。。。&lt;/p&gt;

&lt;p&gt;さて EPIA-EN12000EG をどう活用しようかなぁ。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1458906040335478360?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1458906040335478360/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1458906040335478360' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1458906040335478360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1458906040335478360'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/04/via-padlock-for-debian.html' title='Debian で VIA の PadLock を使ってみる'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2266138224821279483</id><published>2008-04-14T20:25:00.000+09:00</published><updated>2008-07-15T02:19:39.659+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>Power Mac G5 Quad の内蔵GPUを交換してみて。。。</title><content type='html'>&lt;p&gt;手持ちのPowerMac G5 Quad には、三昔前くらいのGPUであるGeForce 6600 が内蔵されている。より新しめのカードに交換すれば、もしかしたらとても快適になるかと思って物色してみた。&lt;/p&gt;

&lt;p&gt;PowerMac G5 には普通のPC用やMacPro用のGPUカードはBIOSが異なるためか使えないようである。その上、GPUに対応するカーネル拡張が、無かったり、intel 用のみ、とか選択肢が全くない。(GeForce 8xxxx 用のはIntelバイナリのみってのは、、、）&lt;/p&gt;

&lt;p&gt;旧世代のマシン向けの拡張カードがあまりでないのは、Apple の方針なのかなぁ。。。さびしい。&lt;/p&gt;

&lt;p&gt;結局、PowerMac G5 の BTO の一つである GeForce 7800 GT を &lt;a href="http://www.vintagecomp.com/"&gt;Vintage Computer&lt;/a&gt; から購入した。&lt;/p&gt;

&lt;p&gt;早くなったのか？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;&lt;a href="http://www.xbench.com/"&gt;XBench&lt;/a&gt; でベンチマークをとってみた。&lt;/p&gt;

&lt;p&gt;PowerMac G5 w GeForce 6600&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Quartz Graphics Test 180.91 
    Line    142.19  9.47 Klines/sec [50% alpha]
    Rectangle   173.37  51.76 Krects/sec [50% alpha]
    Circle  159.51  13.00 Kcircles/sec [50% alpha]
    Bezier  157.00  3.96 Kbeziers/sec [50% alpha]
    Text    454.80  28.45 Kchars/sec
OpenGL Graphics Test    111.88 
    Spinning Squares    111.88  141.92 frames/sec&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;PowerMac G5 w GeForce 7800&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Quartz Graphics Test 184.46 
    Line    143.23  9.54 Klines/sec [50% alpha]
    Rectangle   179.68  53.64 Krects/sec [50% alpha]
    Circle  163.49  13.33 Kcircles/sec [50% alpha]
    Bezier  160.60  4.05 Kbeziers/sec [50% alpha]
    Text    451.39  28.24 Kchars/sec
OpenGL Graphics Test    111.99 
    Spinning Squares    111.99  142.07 frames/sec&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;全く変わらない。。。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.maxon.net/pages/download/cinebench_e.html"&gt;CINEBENCH R10&lt;/a&gt; でも、OpenGL のベンチマークもとってみた。&lt;/p&gt;

&lt;p&gt;PowerMac G5 w GeForce 6600&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Shading (OpenGL Standard)          : 1861 CB-GFX &lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;PowerMac G5 w GeForce 7800&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Shading (OpenGL Standard)          : 2414 CB-GFX &lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;約３０％くらい速い？のか。。。&lt;/p&gt;

&lt;p&gt;どうも、OpenGL のハード処理が早くなるらしい。。。イマイチ効果が分からない。&lt;/p&gt;

&lt;p&gt;最後のだめ押し、&lt;a href="http://www.daionet.gr.jp/~masa/glclock/"&gt;glclock&lt;/a&gt; の OpenGL のベンチマークを取ってみた。&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/2410219422/"&gt;&lt;img src="http://farm3.static.flickr.com/2411/2410219422_612db1340c.jpg" height="255" width="500" alt="blog20080413"/&gt;&lt;/a&gt;

&lt;p&gt;時計の回転が早すぎてチカチカして、結果が正しいかよくわからないが、どうやら GeForce 7800 GT の方が早いらしいのは分かった。でも、イマイチ。&lt;/p&gt;

&lt;p&gt;UIの早さも体感の早さは変わらないので、ちょっと損した気がする。ファンレスだったGeForce 6600を使ってたので GeForce 7800 GT のファンの音がちょっとだけ気になる。&lt;/p&gt;

&lt;p&gt;静かな方が良いので、GeForce 6600 のほうに軍配が上がる。&lt;/p&gt;

&lt;p&gt;で、もとに戻してしまった。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2266138224821279483?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2266138224821279483/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2266138224821279483' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2266138224821279483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2266138224821279483'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/04/powermac-g5-quad-exchange-gpu.html' title='Power Mac G5 Quad の内蔵GPUを交換してみて。。。'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2411/2410219422_612db1340c_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-1790499433566713353</id><published>2008-03-16T21:40:00.000+09:00</published><updated>2010-04-19T05:48:37.589+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WWW'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>MediaWiki から MoinMoin への移行ツール</title><content type='html'>&lt;p&gt;技術のメモ書き用に、自宅内に&lt;a href="http://www.mediawiki.org/wiki/MediaWiki"&gt;MediaWiki&lt;/a&gt; を立てているのだが、
イマイチ使い勝手がよく無さげなので、別の Wiki システムを探ってみた。
内部的にUTF-8を使ってて、編集の履歴が見れて、そんなやつが良い。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://moinmo.in/"&gt;MoinMoin&lt;/a&gt; が結構良さげなので移行してみた。&lt;/p&gt;

&lt;p&gt;問題は MediaWiki に書き貯めた文書片を MoinMoin の形式に変換するのは手動では面倒である。&lt;/p&gt;

&lt;p&gt;なので、ヘボイ変換ツールでも書いてみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;ソースコード &lt;del&gt;WikiConverter20080316.zip&lt;/del&gt;&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/2336618107/"&gt;&lt;img src="http://farm3.static.flickr.com/2191/2336618107_020efc4a2e_m.jpg" height="228" width="243" alt="blog20080316"/&gt;&lt;/a&gt;

&lt;p&gt;MediaWiki の書式で変換できるのは一部のみ(リスト、整形済みテキスト、テーブル)である。うまく行かない場合は、ソースコード内の convert.rb を変更する必要がある。というか、自前で変更しないと使い物にはならないかも。&lt;/p&gt;

&lt;p&gt;CUIでは一行スクリプトや書捨てスクリプトがよく作られる。そいつのGUI版と考えれば、書捨てGUIもあっても良いと思う。β版でもα版でもなく、こいつはそんなもんだ。&lt;/p&gt;

&lt;p&gt;まぁ、Cocoa / CoreData / WebKit 万歳と言う話かなぁ。&lt;/p&gt;

&lt;p&gt;Wiki 書式の変換ライブラリってのはないのかぇ。。。。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-1790499433566713353?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/1790499433566713353/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=1790499433566713353' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1790499433566713353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/1790499433566713353'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/03/convert-from-mediawiki-to-moinmoin.html' title='MediaWiki から MoinMoin への移行ツール'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2191/2336618107_020efc4a2e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-440856191127595687</id><published>2008-03-15T16:32:00.000+09:00</published><updated>2010-04-19T03:38:01.505+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WWW'/><title type='text'>Safari で REFERER を削除する Javascript</title><content type='html'>&lt;p&gt;普通のブラウザでリンクを辿ると、前のページのURIが次のページのリクエストにHTTP_REFERER として通知される。
Firefox / IE / Opera などのブラウザは拡張なりを入れれば、設定としてreferer を送らないことが出来る。
また referer を削除するプロクシ経由でアクセスする方法もある。ただ、プロクシとは大げさな気がする。&lt;/p&gt;

&lt;p&gt;私が常用している Safari では、ブラウザの設定として、referer を削除する機能はついてない気がする。&lt;/p&gt;

&lt;p&gt;だらグル(だらだらGoogleで検索)してたら、良い情報があったので、ちょっと組み立ててみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;全部のリンクのリファーラを抑制するのでなく、class属性が external になっているリンクのみに限定にしてみた。
ソースをちょっとだけ書き換えればリファーラ抑制の条件は変えられる。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://gist.github.com/370450#file_cutreferer.js"&gt;cutreferer.js&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
&amp;lt;script type="text/javascript" src="cutreferer.js"&amp;gt;&amp;lt;/script&amp;gt;
...
&amp;lt;a href="http://external.link" class="external"&amp;gt;外部リンク&amp;lt;/a&amp;gt;
...&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Safari 2/Firefox 2/ IE6 で動作する。ただし Safari 2 のみブラウザ履歴のリストにゴミが残ってしまう。&lt;/p&gt;

&lt;p&gt;Lightbox JS の効果を見て、HTMLソースにものすごい埋め込みとかが必要かと思ったが、属性一つだけなのをみて、ちょっと衝撃的だった、、、ので思いついてみた、、、。&lt;/p&gt;

&lt;p&gt;参考&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.teria.com/~koseki/memo/referrer/index.html"&gt;リファラ実験&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://qootas.org/blog/archives/2004/11/referrer.html"&gt;referrerを空にするリンクの作成方法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://logic.stepserver.jp/data/archives/569.html"&gt;REFERRERを消して外部ページに移動する&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dean.edwards.name/weblog/2007/03/sniff/"&gt;isMSIE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.huddletogether.com/projects/lightbox/"&gt;Lightbox JS&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://www.greasespot.net/"&gt;Greasemonkey&lt;/a&gt; とか &lt;a href="http://8-p.info/greasekit/"&gt;GreaseKit&lt;/a&gt; 使えるともっと面白いかも&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-440856191127595687?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/440856191127595687/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=440856191127595687' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/440856191127595687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/440856191127595687'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/03/cutreferer-js-for-safari.html' title='Safari で REFERER を削除する Javascript'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5811729344539399195</id><published>2008-03-07T16:05:00.000+09:00</published><updated>2010-04-19T05:49:21.600+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>iPhone SDK on PowerMac G5 って動くのかぁ</title><content type='html'>&lt;p&gt;当ブログは全く今時の話題を書かない「端っこブログ」なのだが、&lt;a href="http://developer.apple.com/iphone/program/"&gt;iPhone SDK&lt;/a&gt; ベータを取り上げたい。&lt;/p&gt;

&lt;p&gt;iPhone SDK は、Mac OSX 10.5.2 以降の Intel-Mac 上で動く。&lt;/p&gt;

&lt;p&gt;はて、PowerPC 上では動か無いのかぁ。&lt;/p&gt;

&lt;p&gt;Apple めぇ。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;普通にインストールすると、iPhone 関連のパッケージはインストールされない。
なので、以下のパケージを手動で追加する。
Xcode3.1があるディレクトリを指定する必要がある。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AspenDocumentation.pkg&lt;/li&gt;
&lt;li&gt;AspenHostSideTools.pkg&lt;/li&gt;
&lt;li&gt;AspenSDKHeadersAndLibs.pkg&lt;/li&gt;
&lt;li&gt;AspenSimulatorPlatform.pkg&lt;/li&gt;
&lt;li&gt;AspenSystemComponents.pkg&lt;/li&gt;
&lt;li&gt;DeveloperDiskImage.pkg&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;と、適当にプロジェクトを作ってビルドするとPPCベースのバイナリが普通にできるようである。&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/2336331649/"&gt;&lt;img src="http://farm3.static.flickr.com/2353/2336331649_210f56418e_m.jpg" height="232" width="243" alt="blog20080307-iphone-sdk"/&gt;&lt;/a&gt;

&lt;p&gt;シミュレーション用の互換ライブラリ群にはちゃんと PPC 用のコードも含まれている。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd /Developer/Platforms/AspenSimulator.platform
$ cd ./Developer/SDKs/AspenSimulator1.2.sdk
$ cd ./System/Library/Frameworks/UIKit.framework
$ file UIKit
UIKit: Mach-O universal binary with 2 architectures
UIKit (for architecture ppc7400):   Mach-O dynamically linked shared library ppc
UIKit (for architecture i386):  Mach-O dynamically linked shared library i386&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;なんだろう？正式版では PowerPC でもサポートされるのだろうか？それとも削除されるのだろうか？&lt;/p&gt;

&lt;p&gt;なんかまた端っこの話題でしたね。&lt;/p&gt;

&lt;h4&gt;追記(2008/07/22)&lt;/h4&gt;

&lt;p&gt;iPhone SDK の最終版が公開されていので、同様に試した。含まれているパッケージ名は Aspen ⇒ iPhone に変更になっているだけで、シミュレーション用の互換ライブラリも ppc 用も含まれている。&lt;/p&gt;

&lt;p&gt;大きな違いは！！&lt;/p&gt;

&lt;p&gt;Xcode のGUIから下記エラーが出て構築できなかった。。。&lt;/p&gt;

&lt;pre class="screen"&gt;
No architectures to compile for (ARCHS=ppc, VALID_ARCHS=i386).
&lt;/pre&gt;

&lt;p&gt;どうも、GUIからは VALID_ARCHSが固定値になってるようである。実際、適当な設定をして xcodebuild コマンドをターミナルから直打ちすれば構築はでき、シミュレータでの動作確認ぐらいはできるようである。&lt;/p&gt;

&lt;p&gt;Appleは、本格的に PowerPC 上での開発を縮小する意思表示なんだろうなぁ。。。&lt;/p&gt;

&lt;p&gt;本当に残念だ。。。。Mac Pro への買い替え時なのかぁ！？&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5811729344539399195?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5811729344539399195/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5811729344539399195' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5811729344539399195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5811729344539399195'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/03/iphone-sdk-on-powerpc.html' title='iPhone SDK on PowerMac G5 って動くのかぁ'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2353/2336331649_210f56418e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5019223221237525005</id><published>2008-03-05T17:35:00.000+09:00</published><updated>2010-04-19T03:41:38.336+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>NFS サーバ側でUTF8 NFD ⇔ UTF8 NFC の変換はできるのか？</title><content type='html'>&lt;p&gt;MacOSX で Unicode が全面的にサポートされている。その中で一番分からないのは、ファイル名が UTF8 NFD (Normalization Form Decomposition) で正規化されていることである。詳しく言えば NFD をベースにした微妙に異なるルールらしい(&lt;a href="http://www.tech-arts.co.jp/macosx/macosx-jp/htdocs/9700/9739.html"&gt;1&lt;/a&gt;, &lt;a href="http://blog.miraclelinux.com/asianpen/2007/09/macos_x_4772.html"&gt;2&lt;/a&gt;)。その結果なのか知れないが UTF-8-MAC と呼ばれることが多い。&lt;/p&gt;

&lt;p&gt;Linux 界隈でサポートされる UTF8 は NFC で正規化されると言われている。ただし、正規化処理が為された結果ではなく、専ら合成済みの文字のみを扱っている結果として、UTF-8 NFC なんだと思う。 Windows とおんなじ理由と思う。&lt;/p&gt;

&lt;p&gt;根拠は全くない。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;Linux というより上位のフレームワーク／アプリケーション(Gnome,KDE 等)の扱いの問題なんだと思う。&lt;/p&gt;

&lt;p&gt;UTF8 の正規化の問題は、Samba や netatalk では&lt;a href="http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html"&gt;対応&lt;/a&gt;が進んでおり、運用上問題が出ないレベルまで押さえ込むことができるそうなぁ。&lt;/p&gt;

&lt;p&gt;NFS に関しては、どっかで議論されている&lt;a href="http://tools.ietf.org/id/draft-ietf-nfsv4-minorversion1-21.txt"&gt;?&lt;/a&gt;だろうが、一般的な運用まで下りてきていない。&lt;/p&gt;

&lt;p&gt;現状は、&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;MacOSX はファイル名を UTF-8-MAC にして、NFSサーバに送っている。&lt;/li&gt;
&lt;li&gt;一般的な NFS サーバは、ファイル名の変換を行わずに、ローカルなファイルシステムに送る。&lt;/li&gt;
&lt;li&gt;ローカルなファイルシステムも、ファイル名の変換を行わず、ディスクに記録される。&lt;/li&gt;
&lt;li&gt;MacOSX が作成したファイル名は UTF-8-MAC (NFD) で正規化されており、UTF8 NFC と異なるバイト列だった場合、Linux のNFSクライアントで不整合が発生する。&lt;/li&gt;
&lt;/ol&gt;

&lt;a href="http://www.flickr.com/photos/24156556@N07/2311500265/"&gt;&lt;img src="http://farm3.static.flickr.com/2231/2311500265_ebb9e7ae81.jpg" height="217" width="404" alt="nfs-fig01"/&gt;&lt;/a&gt;

&lt;p&gt;ローカルな記録をUTF-8-MAC に変えたり、NFS は&lt;a href="http://moimoitei.blogspot.com/2007/11/get-leopard-server.html"&gt;諦め&lt;/a&gt;たり、MacOSX の対応が進まないか祈ってみたり、四苦八苦である。&lt;/p&gt;

&lt;h4&gt;NFSの実験&lt;/h4&gt;

&lt;p&gt;どうしたもんかなぁと思いつつ、ちょっとだけ実験することにした。&lt;/p&gt;

&lt;p&gt;NFSサーバに以下の機能があればいいのかなぁ&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;クライアントからのファイル名をUTF8 NFC に正規化する。&lt;/li&gt;
&lt;li&gt;クライアントに応じて、正規化方法を選択して、ファイル名をその正規化をして返す。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NFS のファイル名は変換しても大丈夫なんだろうか？とか疑問だが、一番最低限の実装を作ってみた。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;検証するNFSサーバの実装は &lt;a href="http://unfs3.sourceforge.net/"&gt;unfs3&lt;/a&gt; を使う。従って、NFSv3 が対象。&lt;/li&gt;
&lt;li&gt;NFS プロトコールのみで、NFS の MOUNT プロトコールは手をつけない。&lt;/li&gt;
&lt;li&gt;NFD &amp;lt;=&gt; NFC の変換は、かなの濁音・半濁音に限定する。&lt;/li&gt;
&lt;li&gt;クライアントの区別をせずに常に変換する。&lt;/li&gt;
&lt;li&gt;NFD =&gt; NFC の変換が行われるのは、LOOKUP / CREATE / MKDIR / SYMLINK / MKNOD / REMOVE / RMDIR / RENAME / LINKの引数内のファイル名とSYMLINKの引数内のシンボリックデータ。&lt;/li&gt;
&lt;li&gt;NFC =&gt; NFD の変換が行われるのは、READDIRの返答内のファイル名。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://gist.github.com/370456#file_unfs3_0.9.20.utf8mac_20080305.diff"&gt;unfs3-0.9.20.utf8mac-20080305.patch.txt&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;検証方法&lt;/h4&gt;

&lt;p&gt;Linuxでは カーネルベースのNFSを使いつつ検証が出来するのが通なんだろうなぁ。&lt;/p&gt;

&lt;p&gt;サーバ側(fserver)でパッチを当てた unfs3 のバイナリを作っておく。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# UNFSD=/usr/src/unfs3-0.9.20.utf8mac/unfsd   &amp;lt;-- パッチ済みバイナリ
# EXPORTS=/etc/exports_test                   &amp;lt;-- テスト用の exportsファイル
# ${UNFSD} -d -u -p -n 44000 -m 44100 -e ${EXPORTS}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;/etc/exports_test&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/export/share 192.168.0.23(rw,no_root_squash)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;MacOSX 側(192.168.0.23)でマウント&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# mkdir /Volumes/unfs
# sudo mount -omountport=44100,port=44000 fserver:/export/share /Volumes/unfs
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;結び&lt;/h4&gt;

&lt;p&gt;濁点・半濁音だけだが変換が行われて、MacOSX から普通に扱える。。。&lt;/p&gt;

&lt;p&gt;まぁ、いろいろ試したいことが思い浮かぶので、ちまちま実験していくかなぁ。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5019223221237525005?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5019223221237525005/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5019223221237525005' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5019223221237525005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5019223221237525005'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/03/nfs-normalization-form-conversion-test1.html' title='NFS サーバ側でUTF8 NFD ⇔ UTF8 NFC の変換はできるのか？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2231/2311500265_ebb9e7ae81_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7692407977732383169</id><published>2008-03-02T09:11:00.000+09:00</published><updated>2008-07-28T18:38:11.476+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogアプリ'/><title type='text'>ブログのテーマを変更してみた</title><content type='html'>&lt;p&gt;typo のテーマファイルをちょっと弄くって、可変幅で表示できるようにしてみた。&lt;/p&gt;

&lt;p&gt;Safari/Firefox/IE6 で同じ表示にしたつもりだが、所々おかしいかもしれない。&lt;/p&gt;

&lt;p&gt;CSS のUA依存の動作が結構多いのはゲンナリする。細かいノウハウを蓄積しないと対応できないが、、、なんだかなぁ。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7692407977732383169?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7692407977732383169/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7692407977732383169' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7692407977732383169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7692407977732383169'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/03/change-typo-theme.html' title='ブログのテーマを変更してみた'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3131361912541752791</id><published>2008-02-27T03:41:00.000+09:00</published><updated>2008-07-28T18:39:41.254+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Typo を 5系列にする</title><content type='html'>&lt;p&gt;気がついてみたら、&lt;a href="http://www.typosphere.org/"&gt;typo&lt;/a&gt;  5.0.2 が出ていたので更新してみた。&lt;/p&gt;

&lt;p&gt;ほんとに呆気なく出来てしまった。。。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;まず rails 1.2.x から rails 2.x への更新&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# gem update -y
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;rails と typo の最新版がgemパッケージがインストールされる。
gem が複数のバージョンを同時に使えるので、ほとんど typo 4 運用中でも実行できる。。。本当かぁ！すげ。&lt;/p&gt;

&lt;p&gt;で、typo 4 から typo 5 への更新&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ typo_dir=~/typo                  # 運用中のディレクトリ
$ typo stop ${typo_dir}
$ typo install ${typo_dir}
...
暫く、ファイルのコピーやら削除やら、データベースの更新やらのメッセージ
...
Starting Typo on port XXXX
...&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;で最後に、管理画面にログインすると、再度データベースを更新する趣旨のボタンがでる。なので、こいつを押して、完了。&lt;/p&gt;

&lt;p&gt;操作性は殆ど変わらない。ただ、typo 4 では sitealizer というアクセス解析ツールが含まれていたが、それが無くなってしまった。。。&lt;/p&gt;

&lt;p&gt;ついでなので画像ファイルを &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt; へ移行してみたら、&lt;a href="http://www.huddletogether.com/projects/lightbox/"&gt;Lightbox JS&lt;/a&gt; と絡めて簡単使える拡張タグがあり結構 typo のサポートが良い。&lt;/p&gt;

&lt;p&gt;他のブログシステムか、他の企業が提供してるブログに乗り換えようかと思ったが、もうちょっと typo を使い続けてみようかなぁ。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3131361912541752791?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3131361912541752791/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3131361912541752791' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3131361912541752791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3131361912541752791'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/02/update-typo-from-4-to-5.html' title='Typo を 5系列にする'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8728260772558675448</id><published>2008-02-23T05:22:00.000+09:00</published><updated>2010-04-19T04:36:26.886+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Leopard 上の NSTreeController は挙動不審？</title><content type='html'>&lt;p&gt;Leopard において NSTreeController の挙動が素直でない現象に出くわした。
Tiger で同じバイナリは素直な動作をするので、バグなのか、仕様の変更なのか。。。さっぱいり分からない。&lt;/p&gt;

&lt;p&gt;途中まで Tiger 上で開発して放り投げておいたものを、Leopard 上で再開した途端、地雷原に突っ込みまくっている。。。&lt;/p&gt;

&lt;p&gt;でだ、問題は NSTreeController は、childrenKeyPath の先のモデルを、Array として扱うのか、Set として扱うのか？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;簡単なサンプルを作ってみた。&lt;/p&gt;

&lt;p&gt;&lt;del&gt;MoiView.zip&lt;/del&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;モデルに Core Data を使わずにNSMutableDictionary を使い、newObject/newChildObject で単純な初期を行う。このとき children には NSMutableArray のインスタンスを割り当てている。&lt;/li&gt;
&lt;li&gt;NSTreeController と NSOutlineView を一般的な binding をしてある。&lt;/li&gt;
&lt;li&gt;五つのボタンのそれぞれのアクションに、NSTreeController のadd:/addChild:/addInsert:/addInsertChild:/remove: を接続して、同時に、それぞれのボタンの enabled に canXXX をbindingする。&lt;/li&gt;
&lt;li&gt;別のボタンに、NSTreeController に rearrangedObjects を実行するアクションを接続する。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/confuse-timing-call-for-canadd.html"&gt;こちの挙動&lt;/a&gt;の対処の有無のチェックボックスをつける。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;トップレベルに追加(add:)や挿入(insert:)を沢山した後、rearrangedObjects を呼び出しても、項目の順序は変化しない。これは、Tiger でも Leopard でも同じ。&lt;/p&gt;

&lt;p&gt;トップレベルよりしたの階層で、追加(add:/addChild:)や、挿入(insert:/insertChild:)を沢山した後、rearrangedObjects を呼び出すと、項目の順序は変化しないはずなのだが、僕のLeopard の環境では変化する。&lt;/p&gt;

&lt;p&gt;再現性もある。モデル上では insert:はadd:として、insertChild:はaddChild:として振る舞う。。。&lt;/p&gt;

&lt;p&gt;でだ、問題は insertObject:atArrangedObjectIndexPath:でも同じように、モデル上では indexpathで指定された階層の最後尾に追加される。。。&lt;/p&gt;

&lt;p&gt;ビューとモデルでは違うのは分かるが、Core Data を使わずに適当なクラスを使っているのだから、childrenKeyPath の先を Array として扱って、挿入位置もモデルに反映してほしいのだが、、、。&lt;/p&gt;

&lt;del&gt;
困った。
仕様なのか、バグなのか、環境なのか、分からん。
&lt;/del&gt;

&lt;del&gt;
最初の話だが、childrenKeyPath の先は、Core Data のエンティティを使う場合は Set であり、クラスを使う場合は出来る限りArray であると思うのだが、違ったのか？
&lt;/del&gt;

&lt;del&gt;
まぁ、抜け道はあるから良いのだけども。
そのうち、なんか出てくるかぁ。
&lt;/del&gt;

&lt;h4&gt;追記 (2008/06/21)&lt;/h4&gt;

&lt;p&gt;MacOSX 10.5.3 になって直ぐには確認していないので、どの時点で改良されたか分からないが、近々の最新状態で確認したところ、insert系のビューとモデルの操作の奇妙な差異が改善された。&lt;/p&gt;

&lt;p&gt;どうもバグだったらしい。&lt;/p&gt;

&lt;p&gt;要求条件が 「MacOSX 10.5.3 以上」とか見るが、どうもこれらの原因なのかなぁ。。。&lt;/p&gt;

&lt;p&gt;よきことかなぁ。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8728260772558675448?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8728260772558675448/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8728260772558675448' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8728260772558675448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8728260772558675448'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/02/leopard-nstreecontroller-array-or-set.html' title='Leopard 上の NSTreeController は挙動不審？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-795199193059504562</id><published>2008-02-22T22:58:00.000+09:00</published><updated>2008-07-15T01:52:12.059+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>PowerPC 上の Leopard で Virtual PC 7 を動かす</title><content type='html'>&lt;p&gt;公式に &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0002ZBKJS/blogmoimoitei-22"&gt;Virtual PC&lt;/a&gt; は Leopard 上では&lt;a href="http://www.microsoft.com/japan/mac/support/macos/leopard/default.mspx"&gt;動作保証外&lt;/a&gt;になっている。&lt;/p&gt;

&lt;p&gt;まぁ、使えないのかと思っていたが、インストールとか起動とかできるようである。Leopard で使うならば、自己責任で、文句言うなということらしい。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;動作時に気になるは、VirtualPCNetworing1040.kext というアイコンがVPCの起動に伴ってぽこっと出てきてしまう。&lt;/p&gt;

&lt;p&gt;この動作を押さえるためには、/Library/Extensions/VirtualPCNetworking1040.kext/Contents/Info.plist に次のエントリを加えれば&lt;a href="http://www.macosxhints.com/article.php?story=20080109131926970"&gt;良い&lt;/a&gt;らしい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;key&amp;gt;LSUIElement&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;1&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;当分、動くのかなぁ。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-795199193059504562?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/795199193059504562/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=795199193059504562' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/795199193059504562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/795199193059504562'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/02/run-vpc-on-leopard-powerpc.html' title='PowerPC 上の Leopard で Virtual PC 7 を動かす'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7266196517810813891</id><published>2008-02-20T23:11:00.000+09:00</published><updated>2008-07-15T01:50:20.121+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>Cocoa Binding の canAdd はいつ呼ばれるのか？</title><content type='html'>&lt;p&gt;NSArrayController/NSTreeController の canAdd/canInsert が呼ばれるタイミングが、素直ではないような気がする。&lt;/p&gt;

&lt;p&gt;仕様なのだろうか？&lt;/p&gt;

&lt;p&gt;canRemove や canAddChild/canInsertChild などは、それぞれのコントローラの選択(selection)が変化した毎に呼ばれる。&lt;/p&gt;

&lt;p&gt;canAdd/canInsertも同じようなタイミングで呼ばれると思うのだが、呼ばれない、、、何故！&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;素直な期待を満たす動作にするためには、それぞれの派生コントローラを作って、KVOを使って下記のようにしてみた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@interface CustomController : NSArrayController {  
}
@end

@implementation CustomController

- (void)awakeFromNib
{
    [self addObserver:self
           forKeyPath:@"selection"
              options:0 context:nil];
}

- (void) observeValueForKeyPath:(NSString *)keyPath
                   ofObject:(id)object
                     change:(NSDictionary *)change
                    context:(void *)context
{
    if ([keyPath isEqualToString:@"selection"]) {
        [self willChangeValueForKey:@"canAdd"];
        [self didChangeValueForKey:@"canAdd"];
        [self willChangeValueForKey:@"canInsert"];
        [self didChangeValueForKey:@"canInsert"];
    }
    [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
@end&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;setKeys:triggerChangeNotificationsForDependentKey:を使っても同じことが出来ると思うが、同じ動作は実現できなかった、、、canAdd/canInsert は Controller Key だからなのかぁ。そもそも canRemove はどうしてるのだろうかぁ、、、&lt;/p&gt;

&lt;p&gt;全く分からん。&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7266196517810813891?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7266196517810813891/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7266196517810813891' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7266196517810813891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7266196517810813891'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/02/confuse-timing-call-for-canadd.html' title='Cocoa Binding の canAdd はいつ呼ばれるのか？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-4116354717486006453</id><published>2008-02-19T00:53:00.000+09:00</published><updated>2008-07-15T01:48:04.522+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>気付いてみると 5インチFDD は終焉してたのかぁ</title><content type='html'>&lt;p&gt;２年くらい前 TEAC の自販サイトで FD-55GFR の新品で入手可能だったが、今は自販サイト自体無くなっており、完全に入手不能になっていた。&lt;/p&gt;

&lt;p&gt;サポート終了日は &lt;a href="http://www.teac.co.jp/bs/support/news/070705.html"&gt;2007.6.30&lt;/a&gt; なので、そのちょっと前に在庫が尽きたのだろう。&lt;/p&gt;

&lt;p&gt;かなり遅れたが、ご苦労さん、5inch FD。&lt;/p&gt;

&lt;p&gt;3.5インチFDDは無くなるのは何時だろう。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-4116354717486006453?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/4116354717486006453/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=4116354717486006453' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4116354717486006453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4116354717486006453'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/02/end-of-5inch-fdd.html' title='気付いてみると 5インチFDD は終焉してたのかぁ'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-995735136718682029</id><published>2008-02-18T06:34:00.000+09:00</published><updated>2008-07-15T01:46:02.247+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>MacOSX 10.5.2 で AFP の Kerberos 認証がおかしい？</title><content type='html'>&lt;p&gt;更新して 10.5.2 にして以来か分からないが、AFPの共有の認証がうまく&lt;a href="http://discussions.apple.com/thread.jspa?threadID=1397383&amp;amp;tstart=60"&gt;機能&lt;/a&gt;しなくなってしまった。&lt;/p&gt;

&lt;p&gt;パケットをみる限り、AFPクライアントからKerberos認証が行われた形跡がない、、、どうもその前後で NetAuthAgent が落ちているのも気になる。&lt;/p&gt;

&lt;p&gt;分からん。&lt;br/&gt;
そのうち直るんかいなぁ。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;追記 (2008/03/19)&lt;/h4&gt;

&lt;p&gt;昨日公開された Security Update 2008-002 当ててみたところ、NetAuthAgent が落ちる現象は無くなって、Finderがフリーズ気味の症状は無くなった。&lt;/p&gt;

&lt;p&gt;しかし、完全に AFP+Kerberos認証は無効になってしまった。&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;10.5.1&lt;/dt&gt;
&lt;dd&gt;AFP-Client+Kerberos認証 が問題なく機能&lt;/dd&gt;
&lt;dt&gt;10.5.2&lt;/dt&gt;
&lt;dd&gt;AFP-Client+Kerberos認証 が機能しない、かつNetAuthAgent が落ちる。Finder がフリーズ気味&lt;/dd&gt;
&lt;dt&gt;10.5.2 + Security Update 2008-002&lt;/dt&gt;
&lt;dd&gt;AFP-Client+Kerberos認証 が機能しない。NetAuthAgent は安定。Finder もフリーズもしない&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;次の更新を乞うご期待！？かぁ、、、。&lt;/p&gt;

&lt;h4&gt;追記 (2008/05/29)&lt;/h4&gt;

&lt;p&gt;10.5.3 が出たので、更新したところ、状況は変わらない。。。&lt;/p&gt;

&lt;p&gt;もう少し調べたところ&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Finderの「サイドバー」の「共有」のエントリからアクセスした場合、Kerberos 認証は行われない。&lt;/li&gt;
&lt;li&gt;Finder のメニュー「サーバへ接続」でサーバアドレス「afp://servername」を指定した場合、可能ならば Kerberos認証が行われる。&lt;/li&gt;
&lt;li&gt;ゲスト認証ができないサーバに対して、2. の方法でマウントした場合、「サイドバー」からのアクセスとアンマウントの時に、頻繁にFinder がフリーズする。。。&lt;/li&gt;
&lt;li&gt;上記の 2. の方法でマウント済みのボリュームがあるサーバの別のボリュームは、1./2. の両方で Kerberos 認証が使われる。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;要するに、Finder がAFP共有の一般的なKerberos認証(LKDCでない奴)での接続を想定していない？扱えてない？のが原因らしい。&lt;/p&gt;

&lt;p&gt;えっと、Finder のバグ？かなぁ&lt;/p&gt;

&lt;p&gt;対処療法としては、ファイルサーバはゲスト認証+Kerberos認証を有効にして、未マウントのサーバに対しては Finderのメニュー「サーバへ接続」を使えば良いらしい。&lt;/p&gt;

&lt;p&gt;また次の更新を。。。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-995735136718682029?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/995735136718682029/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=995735136718682029' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/995735136718682029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/995735136718682029'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/02/leopard-afp-kerberos-bug.html' title='MacOSX 10.5.2 で AFP の Kerberos 認証がおかしい？'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6602327891973212285</id><published>2008-02-18T05:55:00.000+09:00</published><updated>2008-07-13T23:45:04.881+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='まとめ'/><title type='text'>Open Directory の設定のまとめ 2008Q1</title><content type='html'>&lt;p&gt;Leopard Server をサーバに利用しようと思えば、なんとか出来る。
去年だけど、いっぱい書いたのでちょっと纏めてみた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/get-leopard-server.html"&gt;祝 Leopard Server げっと、、、10日後&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;認証&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/opendirectory-feodra-centos-auth.html"&gt;OpenDirectory で Feodra/CentOSを認証&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/opendirectory-debian-auth.html"&gt;OpenDirectory で Debian系を認証&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/opendirectory-freebsd-netbsd-auth.html"&gt;OpenDirectory で FreeBSD/NetBSDを認証&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/12/opendirectory-solaris-auth.html"&gt;OpenDirectory で Solaris8〜10を認証&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/ldap-idletimelimit-missmatch.html"&gt;nscd がちょっと詰まる&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NFS/自動マウンタ&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/nfsv4-kerberos.html"&gt;NFSv4とKerberosを組み合わせる&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/linux-nfs3-nfs4-same-export-point.html"&gt;LinuxのNFSv4とNFSv3でエクスポートポイントを共通化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/linux-autofs-ldap-map.html"&gt;Linux の autofs とLDAPの関係はどうなってる&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/12/automount-map-variation.html"&gt;OpenDirectory で自動マウンタのマップ&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;netatalk&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/avahi-notify-netatalk-service.html"&gt;Leopard が netatalk サーバを自動的に見つられる設定&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/11/netatalk-kerberos-auth.html"&gt;netatalk で Kerberos 認証&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;メールの Null クライアント&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/12/mail-nullclient-sendmail-cf.html"&gt;Nullクライアントでメールを集める - sendmail編&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2007/12/mail-nullclient-postfix.html"&gt;Nullクライアントでメールを集める - postfix編&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/mail-nullclient-exim4.html"&gt;Nullクライアントでメールを集める - exim4編&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6602327891973212285?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6602327891973212285/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6602327891973212285' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6602327891973212285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6602327891973212285'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html' title='Open Directory の設定のまとめ 2008Q1'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8290823788114164941</id><published>2008-02-18T05:48:00.000+09:00</published><updated>2008-07-13T23:24:44.520+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Nullクライアントでメールを集める - exim4編</title><content type='html'>&lt;p&gt;Debian 標準のMTAは exim4 なので、コイツにも Null クライアントの設定をしてみましょう。あの exim4 の設定ファイルはなんと言うか、マクロ言語をまじめに実装せんでもいいのに、、、&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;インストール直後は「ローカル配信のみ」になっている。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;「スマートホストでメール送信; ローカルメールなし」に変更&lt;/li&gt;
&lt;li&gt;mail name/visible  domain name に example.com&lt;/li&gt;
&lt;li&gt;smarthost にMail Hub のホスト名 にleopard.example.com&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;に変更する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# debconf-show exim4-config | grep ^*
* exim4/dc_smarthost: leopard.example.com
* exim4/mailname: example.com
* exim4/dc_local_interfaces: 127.0.0.1
* exim4/dc_minimaldns: false
* exim4/dc_other_hostnames:
* exim4/dc_eximconfig_configtype: mail sent by smarthost; no local mail
* exim4/dc_readhost: example.com
* exim4/use_split_config: true
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで、ローカルもリモートも Mail Hub に送られることになる。&lt;/p&gt;

&lt;h4&gt;EXPOSED_USER を実現？&lt;/h4&gt;

&lt;p&gt;root ユーザのヘッダ送信者/ヘッダ受信者のみにホスト名を残すには、ちょっとした細工が必要である。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;独自 rewrite ルールを付け加える。&lt;/li&gt;
&lt;li&gt;「 設定ファイルを小さなファイルに分割」に設定&lt;/li&gt;
&lt;li&gt;mail name/visible domain name に host.example.com&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;その独自 rewrite ルールファイルは次の通り&lt;/p&gt;

&lt;p&gt;/etc/exim4/conf.d/rewrite/50_exim4-config_nullclient_rewriting&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;root@+local_domains *           frt
*@+local_domains    $1@example.com  Efrst
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;、、、ただ、あまりお勧めしない。&lt;/p&gt;

&lt;p&gt;詳細は &lt;a href="http://www.exim.org/"&gt;eximの配布元&lt;/a&gt; のドキュメントを参照かなぁ。&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html"&gt;Open Directory の設定のまとめ 2008Q1&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8290823788114164941?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8290823788114164941/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8290823788114164941' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8290823788114164941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8290823788114164941'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2008/02/mail-nullclient-exim4.html' title='Nullクライアントでメールを集める - exim4編'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-6888427860268369105</id><published>2007-12-12T22:52:00.000+09:00</published><updated>2008-07-13T23:21:38.851+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Nullクライアントでメールを集める - postfix編</title><content type='html'>&lt;p&gt;これから先はメールサーバを管理しようと思う人ならば、sendmail は捨てて postfix から始めた方がよい。&lt;/p&gt;

&lt;p&gt;そのうち新人の管理者が、&lt;/p&gt;

&lt;p&gt;「sendmailってなんすか」&lt;/p&gt;

&lt;p&gt;「むかしのあれっすね。骨董品ですよ。はぁはぁ」&lt;/p&gt;

&lt;p&gt;とか言う時代が来るんだろうなぁ。&lt;/p&gt;

&lt;p&gt;気落とさずにpostfixに対して Null クライアントの設定をしよう。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;postfix のNullクライアント設定&lt;/h4&gt;

&lt;p&gt;設定の内容は&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;smtp 接続はループバックにのみで、リモートアクセスさせない。&lt;/li&gt;
&lt;li&gt;ローカルで受ける宛先ドメインを空にする。&lt;/li&gt;
&lt;li&gt;ローカル以外宛先のメールを、Mail Hub にリレーする。&lt;/li&gt;
&lt;li&gt;アドレスのドメイン部分に対して$mydomain へのマスカレードを行う。&lt;/li&gt;
&lt;li&gt;マスカレードの対象は、エンベロープ送信者、ヘッダ送信者、エンベロープ受信者、ヘッダ受信者の全て。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;/etc/postfix/main.cf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;inet_interfaces = loopback-only
myhostname = host.example.com
mydomain = example.com
myorigin = $myhostname
mydestination =
relayhost = $mydomain

masquerade_classes =  envelope_sender,header_sender,envelope_recipient,header_recipient
masquerade_domains = $mydomain
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで、sendmail の EXPOSED_USERが空の場合と同じになる。&lt;/p&gt;

&lt;h4&gt;postfix で EXPOSED_USER を実現？&lt;/h4&gt;

&lt;p&gt;sendmail の EXPOSED_USER と同じことを行うにはどうすればよいのか？&lt;/p&gt;

&lt;p&gt;EXPOSED_USER で指定したユーザがマスカレード対象を除外されるのは、ヘッダ送信者／ヘッダ受信者の変換のみのようである。
実際の挙動とcf で変換した sendmail.cf をざっと見た限りそう思う。&lt;/p&gt;

&lt;p&gt;どこにも一次情報が見当たらない。。。だから嘘かもしれない。&lt;/p&gt;

&lt;p&gt;postfix で、masquerade_exceptions にユーザを追加すると、エンベロープ送信者／エンベロープ受信者の変換も除外になるので、ちょっとだけ追加の設定が必要である。&lt;/p&gt;

&lt;p&gt;/etc/postfix/main.cf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
masquerade_exceptions = root
virtual_alias_maps = regexp:/etc/postfix/virtual_regexp
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;/etc/postfix/virtual_regexp&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/^root@.+\.example\.com$/ root@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで、ヘッダ部分のFrom:/To:でのみ root@host.example.com 形式のまま残るようになる。&lt;/p&gt;

&lt;p&gt;ただ、無理して sendmail と同じ動作するようにする必要は無いかも。&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;存在しないホストでも変換してしまう。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;user@host.example.com -&amp;gt; user@example.com
user@ZZZ.example.com -&amp;gt; user@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;postfix の masquerade_domains 設定はちょっと外向きのメールサーバには向かないなぁ。。。&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html"&gt;Open Directory の設定のまとめ 2008Q1&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-6888427860268369105?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/6888427860268369105/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=6888427860268369105' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6888427860268369105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/6888427860268369105'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/12/mail-nullclient-postfix.html' title='Nullクライアントでメールを集める - postfix編'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5711283257476431116</id><published>2007-12-12T01:07:00.000+09:00</published><updated>2008-09-13T03:40:08.398+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Nullクライアントでメールを集める - sendmail編</title><content type='html'>&lt;p&gt;OpenDirectory で認証を一元管理すると、個別のホストにメールスプールがある必要は無く、一カ所のドメインの Mail Hub に集めるのがよい。このとき、個々のホストのメールサーバの設定は、Null クライアントと呼ばれる。&lt;/p&gt;

&lt;p&gt;Leopard Server をドメインの Mail Hub にするには次の設定を必要がある。ただ、実際には GUI ツールの「サーバ管理」で対応する項目を変更する。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;DNSサーバで、ドメイン名に対してMXレコードを設定する&lt;/p&gt;

&lt;p&gt;example.com   IN MX 10 leopard.example.com&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ドメイン名を mydestination に追加する&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;/etc/postfix/main.cf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
mydomain = example.com
...
mydestination = ... $mydomain
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;今まで認証してきたOSのNullクライアントの設定をしよう。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;Sendmail の設定&lt;/h4&gt;

&lt;p&gt;伝統的にほとんどのシステムのデフォルトになっている。
設定ファイル sendmail.cf を直に編集するには骨が折れるので、
簡便に設定できる cf (?) のソース設定ファイル sendmail.mc を使うのが要である。&lt;/p&gt;

&lt;table border="1" align="center"&gt;
 &lt;tr&gt;
  &lt;td&gt;OS&lt;/td&gt;&lt;td&gt;sendmail&lt;/td&gt;
  &lt;td&gt;cfの場所&lt;/td&gt;&lt;td&gt;OSTYPE&lt;/td&gt;&lt;td&gt;DOMAIN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;RedHat 6.2&lt;/td&gt;&lt;td&gt;8.11.6&lt;/td&gt;
 &lt;td&gt;/usr/lib/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;RedHat 7.2&lt;/td&gt;&lt;td&gt;8.11.6&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;RedHat 7.3&lt;/td&gt;&lt;td&gt;8.12.11.20060308&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;RedHat 8&lt;/td&gt;&lt;td&gt;8.12.8&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;RedHat 9&lt;/td&gt;&lt;td&gt;8.12.11.20060308&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora Core 1&lt;/td&gt;&lt;td&gt;8.12.11.20060308&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora Core 2&lt;/td&gt;&lt;td&gt;8.12.11.20060308&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora Core 3&lt;/td&gt;&lt;td&gt;8.13.1&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora Core 4&lt;/td&gt;&lt;td&gt;8.13.7&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora Core 5&lt;/td&gt;&lt;td&gt;8.13.8&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora Core 6&lt;/td&gt;&lt;td&gt;8.14.1&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora7&lt;/td&gt;&lt;td&gt;8.14.1&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Fedora8&lt;/td&gt;&lt;td&gt;8.14.1&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;CentOS 4.x&lt;/td&gt;&lt;td&gt;8.13.1&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;CentOS 5.x&lt;/td&gt;&lt;td&gt;8.13.8&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail-cf&lt;/td&gt;
 &lt;td&gt;linux&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;FreeBSD 6.2&lt;/td&gt;&lt;td&gt;8.13.8&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail/cf&lt;/td&gt;
 &lt;td&gt;freebsd6&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NetBSD 3.1&lt;/td&gt;&lt;td&gt;8.13.5.20060614&lt;/td&gt;
 &lt;td&gt;/usr/share/sendmail&lt;/td&gt;
 &lt;td&gt;bsd4.4&lt;/td&gt;&lt;td&gt;generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Solaris8&lt;/td&gt;&lt;td&gt;8.11.7p3+Sun&lt;/td&gt;
 &lt;td&gt;/usr/lib/mail&lt;/td&gt;
 &lt;td&gt;solaris8&lt;/td&gt;&lt;td&gt;solaris-generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Solaris9&lt;/td&gt;&lt;td&gt;8.13.8+Sun&lt;/td&gt;
  &lt;td&gt;/usr/lib/mail&lt;/td&gt;
 &lt;td&gt;solaris8&lt;/td&gt;&lt;td&gt;solaris-generic&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Solaris10&lt;/td&gt;&lt;td&gt;8.13.8+Sun&lt;/td&gt;
  &lt;td&gt;/etc/mail/cf&lt;/td&gt;
 &lt;td&gt;solaris8&lt;/td&gt;&lt;td&gt;solaris-generic&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;取り敢えず、今日の時点の最新パッチを当てたり、当てなかったりの状態なので、異なって場合もある。&lt;/p&gt;

&lt;h4&gt;sendmail.mc の設定&lt;/h4&gt;

&lt;p&gt;/etc/mail/sendmail.mc&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;include(`/usr/share/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
DOMAIN(`generic')
# 上の３行は、システムに応じて変更
FEATURE(`no_default_msa')
FEATURE(`nullclient', `example.com.')
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Null クライアント設定で、エンベロープ／ヘッダの発信者／受信者ともに example.com ドメインにマスカレードする。
ただし、ヘッダの発信者／受信者のrootユーザのみ除外される。
(rootも対象にする場合、generic.m4 ファイル内の EXPOSED_USER を変更すればよい)。
かつ、リモートアクセスを受けない。&lt;/p&gt;

&lt;h4&gt;sendmail.cf の生成&lt;/h4&gt;

&lt;p&gt;m4 を使って生成する。
Solarisだと companionパッケージのGNU m4を使った方(/{opt,usr}/sfw/bin/gm4)がよい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ${M4} /etc/mail/sendmail.mc &amp;gt; /etc/mail/sendmail.cf
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;sendmail の起動&lt;/h4&gt;

&lt;p&gt;RedHat/Fedora/CentOS/Solaris8/9の場合&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# /etc/init.d/sendmail restart
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;FreeBSD 6.2&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# grep sendmail /etc/rc.conf
sendmail_enable="YES"
# /etc/rc.d/sendmail restart
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NetNSD 3.1&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# grep sendmail /etc/rc.conf
sendmail=YES
# /etc/rc.d/sendmail restart
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Solaris10の場合&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# svccfg -s sendmail setprop config/local_only=false
# svcadm refresh sendmail
# svcadm restart sendmail
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;メールの配送確認&lt;/h4&gt;

&lt;p&gt;これで、root, 一般ユーザ, 不明ユーザでメールを出して、戻されること無くMail Hub 内で処理されればよい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# date | mailx -s Test root
# date | mailx -s Test user
# date | mailx -s Test unknown
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html"&gt;Open Directory の設定のまとめ 2008Q1&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5711283257476431116?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5711283257476431116/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5711283257476431116' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5711283257476431116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5711283257476431116'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/12/mail-nullclient-sendmail-cf.html' title='Nullクライアントでメールを集める - sendmail編'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3507619496537905897</id><published>2007-12-06T22:50:00.000+09:00</published><updated>2009-01-15T14:13:50.770+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>OpenDirectory で自動マウンタのマップ</title><content type='html'>&lt;p&gt;自動マウントのマップを提供するのは Open Directory に限らず一般的なLDAPサーバのお話になる。&lt;/p&gt;

&lt;p&gt;Open Directory で使うのに留意するのは２点のみである。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;利用できる LDAP schema は２種類である。
&lt;ol&gt;
&lt;li&gt;automountMap/auotmount (rfc2307bisに記載があるもの)&lt;/li&gt;
&lt;li&gt;nisMap/nisObject (rfc2307に定義されている)&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;エントリの置き場所は、cn=automountMap,&amp;lt;basedn&amp;gt; の下が推奨&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;今まで、Open Directory で認証できたOSのために、マップ情報を提供してみた。&lt;/p&gt;

&lt;p&gt;ただし、amdは除く、、、&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;前提&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Open Directory にユーザの認証情報がある。&lt;/li&gt;
&lt;li&gt;ユーザのホームディレクトリは、/home/fileserver/usernameの形式にする。&lt;/li&gt;
&lt;li&gt;fileserver はDebian/Linux etch の普通のNFSサーバである。&lt;/li&gt;
&lt;li&gt;NFSv3/NFSv4 で共通のエクスポートポイントで、/export/home を公開している。&lt;/li&gt;
&lt;li&gt;sec=sys/krb5/krb5i/krb5pのセキュリティモードにも対応してる。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;本当は、sec=sys を切り捨てたいが、未だにNFSv3でsec=sysのみでの対応しかできないクライアントがまだまだある。。。&lt;/p&gt;

&lt;p&gt;2 に関しては、ホームディレクトリ直上のディレクトリが間接マップだと、MacOSX の Finder が正しくホームディレクトリを扱えない場合があるためで、特にファイルサーバ名でなくグループ名でも構わない。&lt;/p&gt;

&lt;h4&gt;MacOSX 10.5.x 用&lt;/h4&gt;

&lt;p&gt;ファイルベースのauto_master/auto_home は既にあり、同時にNIS or LDAP への参照のエントリが書かれている。なので、auto_home にエントリを追加すればよい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: automountMapName=auto_home,cn=automountMap,dc=example,dc=com
objectClass: automountMap
objectClass: top
automountMapName: auto_home

dn: automountKey=fileserver,automountMapName=auto_home,cn=automountMap,dc=example,dc=com
objectClass: automount
objectClass: top
automountInformation: fileserver:/export/home
automountKey: fileserver&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Solaris 8〜10 用&lt;/h4&gt;

&lt;p&gt;Solaris8/9 は NFSv3 で、 Solaris10 は NFSv4 がデフォルトになるが、/etc/default/nfs で変更ができる。サーバ側でNFSv3/NFSv4 両方の対応ができているが、sec=krb5i ありでマウントできるようにしたい。。。なぁ。&lt;/p&gt;

&lt;p&gt;そのために、auto_master マップ名をauto_master_solaris別名で参照する&lt;a href="http://moimoitei.blogspot.com/2007/12/opendirectory-solaris-auth.html"&gt;設定&lt;/a&gt;をしたので、こいつにオプションを付加して対応する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: automountMapName=auto_master_solaris,cn=automountMap,dc=example,dc=com
objectClass: automountMap
objectClass: top
automountMapName: auto_master_solaris

dn: automountKey=/home,automountMapName=auto_master_solaris,cn=automountMap,dc=example,dc=com
objectClass: automount
objectClass: top
automountInformation: auto_home -sec=krb5i
automountKey: /home&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Linux autofs 5.x 用&lt;/h4&gt;

&lt;p&gt;未だに主流にならない autofs 5.x はどこに行く。。。&lt;/p&gt;

&lt;p&gt;マップ名は既にauto.master であり別名化しなくてもよい。LDAP schema は automountMap/automount(rfc2307bis) を選択する。(CentOS/Fedora系では/etc/sysconfig/autofs とかで設定)。&lt;/p&gt;

&lt;p&gt;/home エントリは、auto_home を再利用し、同時に NFSv4 と sec=krb5i を利用するようにする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: automountMapName=auto.master,cn=automountMap,dc=example,dc=com
objectClass: automountMap
objectClass: top
automountMapName: auto.master

dn: automountKey=/home,automountMapName=auto.master,cn=automountMap,dc=example,dc=com
objectClass: automount
objectClass: top
automountInformation: ldap:auto_home -fstype=nfs4,sec=krb5i
automountKey: /home&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Linux autofs 3.x, 4.x 用&lt;/h4&gt;

&lt;p&gt;未だにこっちの方(CentOS4, etchとか)が多いのか？！&lt;/p&gt;

&lt;p&gt;3.x, 4.x と通して共通の設定にするには&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;LDAP schema は nisMap/nisObject&lt;/li&gt;
&lt;li&gt;autmount情報は古い形式(ldap:host:basedn)で書く必要がある。&lt;/li&gt;
&lt;li&gt;NFSv3 で、セキュリティフレーバなし。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;が必要なので、auto.master/auto.home をnisMap/nisObject として登録する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dn: nisMapName=auto.master,cn=automountMap,dc=example,dc=com
objectClass: nisMap
objectClass: top
nisMapName: auto.master

dn: nisMapName=auto.master,cn=automountMap,dc=example,dc=com
objectClass: nisObject
objectClass: top
cn: /home
nisMapEntry: ldap:auth.home.moimoitei.jp:nisMapName=auto.home,cn=automountMap,dc=example,dc=com
nisMapName: auto.master

dn: nisMapName=auto.home,cn=automountMap,dc=example,dc=com
objectClass: nisMap
objectClass: top
nisMapName: auto.home

dn: nisMapName=auto.home,cn=automountMap,dc=example,dc=com
objectClass: nisObject
objectClass: top
cn: fileserver
nisMapEntry: fileserver:/export/home
nisMapName: auto.home&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ちょっと、無理し過ぎかも。&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html"&gt;Open Directory の設定のまとめ 2008Q1&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-3507619496537905897?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/3507619496537905897/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=3507619496537905897' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3507619496537905897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/3507619496537905897'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/12/automount-map-variation.html' title='OpenDirectory で自動マウンタのマップ'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8160790901755477435</id><published>2007-12-02T19:32:00.000+09:00</published><updated>2008-09-16T17:43:30.720+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>OpenDirectory で Solaris8〜10を認証</title><content type='html'>&lt;p&gt;物好きで Solaris8から入手していたので設定してみた。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Solaris 8 + Admin Pack(SEAMのサーバとか？)&lt;/li&gt;
&lt;li&gt;Solaris 9 &lt;/li&gt;
&lt;li&gt;Solaris 10&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;とりあえず、全部最新パッチを当ててある。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;追加パッケージ&lt;/h4&gt;

&lt;p&gt;Solaris 8 には、標準で SSH が含まれていないので、&lt;a href="http://www.sunfreeware.com/"&gt;Freeware for Solaris&lt;/a&gt;から入手してインストールする。&lt;/p&gt;

&lt;p&gt;Solaris8&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# sudo pkgadd -d libgcc-3.4.6-sol8-x86-local
# sudo pkgadd -d zlib-1.2.3-sol8-x86-local
# sudo pkgadd -d libintl-3.4.0-sol8-intel-local
# sudo pkgadd -d libiconv-1.11-sol8-x86-local
# sudo pkgadd -d openssl-0.9.8f-sol8-x86-local
# sudo pkgadd -d openssh-4.7p1-sol8-x86-local
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;SunFreeware の openssh は GSSAPI が有効になって構築されていない。Admin Pack の SEAM の中の SUNWkr5sv に kerberozied telnetd があるので、とりあえず入れとく。
telnetdはいまさらなので要らないかも。&lt;/p&gt;

&lt;p&gt;Solaris9/10 のSSHは、Sun の手によるGSSAPIのサポートが組込まれているので、標準のものを使うようにする。&lt;/p&gt;

&lt;h4&gt;Kerberos5 設定&lt;/h4&gt;

&lt;p&gt;Solaris 8-10 は、MIT Kerberos のカスタムバージョンが使われているが、設定ファイルはほぼ同じ。&lt;/p&gt;

&lt;p&gt;/etc/krb5/krb5.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
[libdefaults]
    default_realm = EXAMPLE.COM
...
[realms]
    EXAMPLE.COM = {
        kdc = leopardserver.example.com:88
        admin_server = leopardserver.example.com:749
    }
...
[domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Solaris8-9ではデフォルトで利用できる暗号化タイプが少なく des-cbc-crc:normal に限定したプリンシプルの鍵を作成する。&lt;/p&gt;

&lt;p&gt;Solaris8-9 のkadminは利用できる暗号化タイプのみに限定して keytab に保存ができない(ktaddの-eオプションが使えないみたい)ので、OpenDirectory があるマシン上で生成した方がよい。&lt;/p&gt;

&lt;p&gt;Solaris8まではKerberozied NFS を利用する場合のNFSクライアント側で使うものは nfsプリンシプルではなくrootプリンシプルなので、こちらを生成する。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# kinit -p diradmin
Authenticating as principal diradmin with password.
Password for diradmin@EXAMPLE.COM:
kadmin:  addprinc -randkey host/solaris8.example.com@EXAMPLE.COM
kadmin:  addprinc -randkey root/solaris8.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/solaris8.keytab -e des-cbc-crc:normal host/solaris8.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/solaris8.keytab -e des-cbc-crc:normal root/solaris8.example.com@EXAMPLE.COM
...
kadmin:  addprinc -randkey host/solaris9.example.com@EXAMPLE.COM
kadmin:  addprinc -randkey nfs/solaris9.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/solaris9.keytab -e des-cbc-crc:normal host/solaris9.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/solaris9.keytab -e des-cbc-crc:normal nfs/solaris9.example.com@EXAMPLE.COM
...
kadmin:  addprinc -randkey host/solaris10.example.com@EXAMPLE.COM
kadmin:  addprinc -randkey nfs/solaris10.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/solaris10.keytab host/solaris10.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/solaris10.keytab nfs/solaris10.example.com@EXAMPLE.COM
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;それぞれのマシンの /etc/krb5/krb5.keytab にコピーする。&lt;/p&gt;

&lt;p&gt;時間の同期がとれてるかは要確認。 &lt;/p&gt;

&lt;h4&gt;LDAP の設定&lt;/h4&gt;

&lt;p&gt;手動で設定する方法をとる。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;XX.XX.XX.XX は Open Directory があるマシンのIPアドレス&lt;/li&gt;
&lt;li&gt;auto_master マップに関しては、Solaris限定のマップ auto_master_solaris を参照するように変更する。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solaris8&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ldapclient -v -i \
-d example.com \
-b "dc=example,dc=com" \
-a none \
-o 60 \
-s one \
-S passwd:cn=users,?one \
-S group:cn=groups,?one \
-S automount:cn=automountMap,?one \
-S auto_master:automountMapName=auto_master_solaris,cn=automountMap,?one \
XX.XX.XX.XX
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Solaris9-10&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ldapclient -v manual \
-a domainName=example.com \
-a defaultSearchBase="dc=example,dc=com" \
-a defaultServerList=XX.XX.XX.XX \
-a credentialLevel=anonymous \
-a authenticationMethod=none \
-a bindTimeLimit=60 \
-a searchTimeLimit=60 \
-a defaultSearchScope=one \
-a serviceSearchDescriptor=passwd:cn=users,?one \
-a serviceSearchDescriptor=group:cn=groups,?one \
-a serviceSearchDescriptor=automount:cn=automountMap,?one \
-a serviceSearchDescriptor=auto_master:automountMapName=auto_master_solaris,cn=automountMap,?one
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ここまでやると nsswitch.conf のほとんどのエントリが ldap を見るようになる。でも、対応するレコード群がないので困ったモード全開になってしまう。&lt;/p&gt;

&lt;h4&gt;NSSの設定&lt;/h4&gt;

&lt;p&gt;Solaris 8-10&lt;/p&gt;

&lt;p&gt;/etc/nsswitch.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
passwd:     files ldap
group:      files ldap
...
hosts:      files dns
...
automount:  files ldap
...
&amp;lt;それ以外のエントリに含まれる ldap は削除&amp;gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで Open Directory 上のユーザ情報が見えれば良し。&lt;/p&gt;

&lt;h4&gt;PAMの設定&lt;/h4&gt;

&lt;p&gt;ユーザのパスワードのタイプが「暗号化パスワード」のみの運用では、何もする必要が無さそうである。。。ここら辺事情はどうも分からん。&lt;/p&gt;

&lt;p&gt;Solairs の PAM は１つのファイルに全部の設定が列挙されている。必要なサービスで変更が必要であるが、雑多なのでloginとother に限って設定例として上げる。&lt;/p&gt;

&lt;p&gt;Solaris8-10&lt;/p&gt;

&lt;p&gt;/etc/pam.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
login   auth sufficient         pam_krb5.so.1 use_first_pass
login   auth required           pam_unix_auth.so.1
...
other   auth sufficient         pam_krb5.so.1 use_first_pass
other   auth required           pam_unix_auth.so.1
...
login   account required        pam_unix_account.so.1
login   account optional         pam_krb5.so.1
...
other   account required        pam_unix_account.so.1
other   account optional         pam_krb5.so.1
...
other   session required         pam_unix_session.so.1
other   session optional          pam_krb5.so.1
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;取り敢えず、pam_unix_* 前後ののそれぞれに pam_krb5 を入れ込むようにする。。。でいいと思う。パスワード変更はいまいち分からんので放っとく。&lt;/p&gt;

&lt;h4&gt;GSSやらnfssecやらの設定&lt;/h4&gt;

&lt;p&gt;Kerberozied NFS が利用できるように、&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;/etc/nfssec.conf の krb5/krb5i/krb5p のコメントアウト部分を外す。&lt;/li&gt;
&lt;li&gt;/etc/gss/mech の kerberos_v5 のコメントアウト部分を外す。&lt;/li&gt;
&lt;li&gt;/etc/gss/gsscred.conf で、files 指定にする。&lt;/li&gt;
&lt;li&gt;何のためか分からんが gsscred -m kerberos_v5 -a を実行しとく。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solaris10 が使うNFSのバージョンが気になる場合は /etc/default/nfs で変更する。&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;

&lt;p&gt;何となく、認証できたり、ホームディレクトリがautomountしたり、、、だなぁ。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ telnet -f solaris8
Trying 172.30.2.23...
Connected to solaris8.example.com.
Escape character is '^]'.
[ Kerberos V5 accepts you as ``user@EXAMPLE.COM'' ]
[ Kerberos V5 accepted forwarded credentials ]
Last login: Sun Dec  2 22:22:03 from xx.xx.xx.xx
% klist
チケットキャッシュ: /tmp/krb5cc_5000
デフォルトプリンシパル: user@EXAMPLE.COM

有効開始時間                       期限切れ                       サービスプリンシパル
Sun Dec 02 22:22:26 2007  Mon Dec 03 07:21:28 2007  krbtgt/EXAMPLE.COM@EXAMPLE.COM
        更新時間(迄) Sun Dec 09 21:21:28 2007
Sun Dec 02 22:22:26 2007  Mon Dec 03 07:21:28 2007  nfs/fileserver.exmaple.com@EXAMPLE.COM
        更新時間(迄) Sun Dec 09 21:21:28 2007
% /sbin/mount
...
/home/fileserver on fileserver:/export/home remote/read/write/setuid/sec=krb5i/dev=2f80006 on Sun Dec  2 22:16:36 2007
....
$ ssh solaris9
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Sun Dec  2 21:45:30 2007 from xx.xx.xx.xx
Sun Microsystems Inc.   SunOS 5.9       Generic January 2003
....
$ ssh solairs10
....
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;あぁ、後でautomount 用のレコードもちょっと残しておこう。&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html"&gt;Open Directory の設定のまとめ 2008Q1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8160790901755477435?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8160790901755477435/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8160790901755477435' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8160790901755477435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8160790901755477435'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/12/opendirectory-solaris-auth.html' title='OpenDirectory で Solaris8〜10を認証'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-5705595975573866182</id><published>2007-11-29T13:14:00.000+09:00</published><updated>2008-07-13T23:08:33.684+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>auto_master と auto.master の違い</title><content type='html'>&lt;p&gt;auto.master / auto_master など、アンダーライン&amp;#8217;_&amp;#8217;とドット&amp;#8217;.&amp;#8217;だけ異なるautomount のマップ名が表記される
ことがある。&lt;/p&gt;

&lt;p&gt;Linux の autofs では、ドットの名前にこだわったり、Solaris とかのドキュメントを読むとアンダーラインの名前だったり、どんな違いがあるのだろうか？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;又聞きの話だと、NISからNIS+の移行時に、NIS+ではドット文字が特殊な意味を持つので、auto.masterからauto_masterに変更になったらしい。(例,&lt;a href="http://www.mpi-inf.mpg.de/~hitoshi/otherprojects/admin/solaris/automount-j.shtml"&gt;1&lt;/a&gt;,&lt;a href="http://docs.sun.com/app/docs/doc/819-0384/6n2qjd37r?l=ja&amp;amp;a=view"&gt;2&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Linux ではNIS+サーバが実装されなかったのもあり、&amp;#8217;.&amp;#8217;-&gt;&amp;#8217;_&amp;#8217;の変更が行われずにそのままになったらしい。&lt;/p&gt;

&lt;p&gt;Linux の automount の情報は他とは微妙に違うので、別々にできるのも、そのままになっている理由かもしれない。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-5705595975573866182?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/5705595975573866182/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=5705595975573866182' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5705595975573866182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/5705595975573866182'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/11/automount-mapname-dot-underline.html' title='auto_master と auto.master の違い'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-8080694860820429481</id><published>2007-11-28T16:59:00.000+09:00</published><updated>2008-07-13T23:06:33.346+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>OpenDirectory で FreeBSD/NetBSDを認証</title><content type='html'>&lt;p&gt;なんかシリーズ化して申し訳ないが、とりあえず設定してみた。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;FreeBSD 6.2-Release + ports (portsnap使って最新？)&lt;/li&gt;
&lt;li&gt;NetBSD 3.1 + pkgsrc-2007Q3&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OpenBSD はPAMでは無くBSD_AUTH とかいう仕組みを使っており、かつ NSS に当たるものが見当たらないので、ちょっと諦めた。&lt;/p&gt;

&lt;p&gt;ただ、３つともにはKerberos 5 認証は組み込まれている。。。不思議だ。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;追加パッケージ&lt;/h4&gt;

&lt;p&gt;FreeBSD 6.2-Release&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cd /usr/ports/net/nss_ldap
# make install clean
...
# cd /usr/ports/security/pam_ldap
# make install clean
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NetBSD 3.1&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cd /usr/pkgsrc/databases/nss_ldap
# make install clean
...
# cd /usr/pkgsrc/security/pam-ldap
# make install clean
...
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Kerberos5 設定&lt;/h4&gt;

&lt;p&gt;FreeBSD/NetBSDともに KTH Heimdal Kerberos 5 が使われているのが、設定ファイルに関してはほぼ流用できる。&lt;/p&gt;

&lt;p&gt;/etc/krb5.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
[libdefaults]
    default_realm = EXAMPLE.COM
...
[realms]
    HOME.MOIMOITEI.JP = {
        kdc = leopardserver.example.com:88
    }
...
[domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Open Directoryに使われているのは MIT Kerberos なので
FreeBSD/NetBSD 上の kadmin は使えない。適当なマシンで keytab を作成してコピーする。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# kinit -p diradmin
Authenticating as principal diradmin with password.
Password for diradmin@EXAMPLE.COM:
kadmin:  addprinc -randkey host/freebsd.example.com@EXAMPLE.COM
kadmin:  addprinc -randkey host/netbsd.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/freebsd.keytab host/freebsd.example.com@EXAMPLE.COM
kadmin:  ktadd -k /tmp/netbsd.keytab host/netbsd.example.com@EXAMPLE.COM
...
/tmp/freebsd.keytab, /tmp/netbsd.keytab をそれぞれのマシンの/etc/krb5.keytabにコピー
...
freebsd# chmod 600 /etc/krb5.keytab
freebsd# ktutil list
FILE:/etc/krb5.keytab:

Vno  Type              Principal                                      
  3  des3-cbc-sha1     host/freebsd.example.com@EXAMPLE.COM
  3  arcfour-hmac-md5  host/freebsd.example.com@EXAMPLE.COM
  3  des-cbc-crc       host/freebsd.example.com@EXAMPLE.COM
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;時間の同期がとれてるかは要確認。&lt;/p&gt;

&lt;h4&gt;LDAP の設定&lt;/h4&gt;

&lt;p&gt;LDAP用のPAM/NSS モジュールは、Linux でよく使われている &lt;a href="http://www.padl.com"&gt;PADL Software Pty Ltd&lt;/a&gt; のものなので、完全に同じ設定ファイルが使える。(参照&lt;a href="http://moimoitei.blogspot.com/2007/11/opendirectory-debian-auth.html"&gt;OpenDirectory で Debian系を認証&lt;/a&gt;の/etc/ldap.conf)&lt;/p&gt;

&lt;p&gt;FreeBSD 6.2-Release&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# scp ubutnu71s:/etc/ldap.conf /tmp/ldap.conf
# cp /tmp/ldap.conf /usr/local/etc/ldap.conf
# cp /tmp/ldap.conf /usr/local/etc/nss_ldap.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NetBSD 3.1&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# scp ubutnu71s:/etc/ldap.conf /tmp/ldap.conf
# cp /tmp/ldap.conf /usr/pkg/etc/pam_ldap.conf
# cp /tmp/ldap.conf /usr/pkg/etc/nss_ldap.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;NSSの設定&lt;/h4&gt;

&lt;p&gt;FreeBSD 6.2-Release&lt;/p&gt;

&lt;p&gt;/etc/nsswitch.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;group: files ldap
hosts: files dns
networks: files
passwd: files ldap
shells: files
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NetBSD 3.1&lt;/p&gt;

&lt;p&gt;/etc/nsswitch.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;group:          files ldap
hosts:          files dns
netgroup:       files
networks:       files
passwd:         files ldap
shells:         files
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで Open Directory 上のユーザ情報が見えれば良し。&lt;/p&gt;

&lt;h4&gt;PAM の設定&lt;/h4&gt;

&lt;p&gt;ユーザのパスワードのタイプが「Open Directory」でのみの運用であれば、/etc/pam.d/system の pam_krb5 をコメントアウトを外してやれば良い。&lt;/p&gt;

&lt;p&gt;「暗号化パスワード」も使う場合は pam_ldap を追加する。&lt;/p&gt;

&lt;p&gt;FreeBSD 6.2-Release&lt;/p&gt;

&lt;p&gt;/etc/pam.d/system&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# auth
auth            sufficient      pam_opie.so             no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so       no_warn allow_local
auth            sufficient      pam_krb5.so             no_warn try_first_pass
auth            sufficient      /usr/local/lib/pam_ldap.so no_warn try_first_pass
#auth           sufficient      pam_ssh.so              no_warn try_first_pass
auth            required        pam_unix.so             no_warn try_first_pass nullok

# account
account         required        pam_krb5.so
account         required        pam_login_access.so
account         required        pam_unix.so

# session
#session        optional        pam_ssh.so
session         required        pam_lastlog.so          no_fail

# password
password        sufficient      pam_krb5.so             no_warn try_first_pass
password        sufficient      /usr/local/lib/pam_ldap.so no_warn try_first_pass
password        required        pam_unix.so             no_warn try_first_pass
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NetBSD 3.1&lt;/p&gt;

&lt;p&gt;/etc/pam.d/system&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# auth
auth            sufficient      pam_krb5.so             no_warn try_first_pass
auth            sufficient      /usr/pkg/lib/security/pam_ldap.so no_warn try_first_pass
auth            required        pam_unix.so             no_warn try_first_pass nullok

# account
account         required        pam_krb5.so
account         required        pam_unix.so

# session
session         required        pam_lastlog.so          no_fail no_nested

# password
password        sufficient      pam_krb5.so             no_warn try_first_pass
password        sufficient      /usr/pkg/lib/security/pam_ldap.so no_warn try_first_pass
password        required        pam_unix.so             no_warn try_first_pass
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ただし、両方のOSともに /etc/pam.d/sshd は上記に設定をincludeしていないので、同様な変更が必要。&lt;/p&gt;

&lt;p&gt;try_first_pass よりも use_first_pass を混ぜる方が好みだが、、、BSD 系はこうなんだろうなぁ。&lt;/p&gt;

&lt;p&gt;accountタスクにpam_ldapを使ったエントリを加えると、何故かパスワードを変えろとかプロンプトが出るんだが、なんか設定が足らんかも。。。&lt;/p&gt;

&lt;h4&gt;amd の設定&lt;/h4&gt;

&lt;p&gt;FreeBSD/NetBSD ともに amd は標準の配布に含まれているが、ldap マップタイプが使えるようには構築されていない。また、amd の ldap 実装で使われる ldap schema は Open Directory には含まれていない。 なので、素直にファイルベースのものを使う。。。&lt;/p&gt;

&lt;p&gt;そのうち&lt;a href="http://www.bsdcan.org/2007/schedule/events/32.en.html"&gt;AutoFS on FreeBSD 6&lt;/a&gt;が入ってくるのかなぁ。。。&lt;/p&gt;

&lt;p&gt;FreeBSD 6.2-Release&lt;/p&gt;

&lt;p&gt;/etc/rc.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
rpcbind_enable="YES"
amd_enable="YES"
amd_flags="-F /etc/amd.conf"
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NetBSD 3.1&lt;/p&gt;

&lt;p&gt;/etc/rc.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
rpcbind=YES
amd=YES
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;FreeBSD 6.2-Release/NetBSD3.1 両方&lt;/p&gt;

&lt;p&gt;/etc/amd.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[ global ]
browsable_dirs = no
restart_mounts = yes
unmount_on_exit = yes
log_file = syslog
#log_options = all
auto_dir = /amd

map_type = file
mount_type = nfs
search_path = /etc

dismount_interval = 60

[ /home ]
map_name = amd.home
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;/etc/amd.home&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/defaults       opts:=rw

fileserver        type:=nfs;rhost:=${key};rfs:=/export/home
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;/amd ディレクトリが無ければ作成。&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html"&gt;Open Directory の設定のまとめ 2008Q1&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-8080694860820429481?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/8080694860820429481/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=8080694860820429481' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8080694860820429481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/8080694860820429481'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/11/opendirectory-freebsd-netbsd-auth.html' title='OpenDirectory で FreeBSD/NetBSDを認証'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-7439923396458482685</id><published>2007-11-26T22:35:00.000+09:00</published><updated>2008-07-13T23:36:53.925+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>FreeBSD でコケる。でも立ち上がる。</title><content type='html'>&lt;p&gt;向学のために VMware 上に FreeBSDをインストールしてみていたが、amd の設定で不明なエラーが出て詰まっていた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# /etc/rc.d/amd start
# amq
amq: localhost: RPC: Port mapper failure - RPC: Unable to send
# dmesg
...
nfs send error 49 for server pid473@freebsd:/home
nfs server pid473@freebsd:/home: not responding
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Google先生に聞くと、そんな&lt;a href="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=117374+0+archive/2005/freebsd-questions/20050814.freebsd-questions"&gt;例&lt;/a&gt;が出てくるが、結局うやむやに解消されている、、、。&lt;/p&gt;

&lt;p&gt;ふと気付いた。&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;ホスト名を指定すると、amqがマトモな返事を返してくれる！&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# amq -h freebsd
/      root    "root"         freebsd:(pid473)
/home  toplvl  /etc/amd.home  /home
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;熟考の結果、ループバックインタフェースにIPv4のアドレス127.0.0.1が付いていなかった。。。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ifconfig lo0
lo0: flags=8049&amp;lt;UP,LOOPBACK,RUNNING,MULTICAST&amp;gt; mtu 16384
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
    inet6 ::1 prefixlen 128
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;原因はインストール直後のネットワーク設定をテキトウに書いたため。&lt;/p&gt;

&lt;p&gt;/etc/rc.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
network_interfaces="lo0 lnc0"
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;設定を変更して、再起動。。。ちゃんと動く。。。ばかぁ&lt;/p&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-7439923396458482685?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/7439923396458482685/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=7439923396458482685' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7439923396458482685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/7439923396458482685'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/11/freebsd-confuse-loopback-noipv4.html' title='FreeBSD でコケる。でも立ち上がる。'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-4436403280141673958</id><published>2007-11-26T16:08:00.000+09:00</published><updated>2008-07-13T23:01:08.010+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Ubuntuサーバー版って</title><content type='html'>&lt;p&gt;Ubuntuサーバー版って Web 系とかの個々のノードサーバ用なんだ。。。&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-4436403280141673958?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/4436403280141673958/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=4436403280141673958' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4436403280141673958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/4436403280141673958'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/11/ubuntu71-server-node.html' title='Ubuntuサーバー版って'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-2869825628858391232</id><published>2007-11-26T14:05:00.000+09:00</published><updated>2008-07-13T22:59:14.978+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>OpenDirectory で Debian系を認証</title><content type='html'>&lt;p&gt;Debian系は認証設定のツール群が充実していない。結局は設定ファイルを直に編集するのが近道になる。Debian Policy Manualを見る限り、ローカルユーザとNISなりLDAPなり外部由来ユーザの区別が無い。。。何だが X っぽい。&lt;/p&gt;

&lt;p&gt;Ubuntu 7.10 リリース記念なので、こいつの Server 版を、Leopard Server にぶら下げてみた。&lt;/p&gt;

&lt;p&gt;参考 &lt;a href="http://moimoitei.blogspot.com/2007/11/opendirectory-feodra-centos-auth.html"&gt;OpenDirectory で Feodra/CentOSを 認証&lt;/a&gt;&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;h4&gt;追加パッケージ&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install libnss-ldap libpam-ldap
# apt-get install libpam-krb5 krb5-user
# apt-get install libpam-cracklib
# apt-get install portmap nfs-common autofs-ldap
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Kerberos 5 設定&lt;/h4&gt;

&lt;p&gt;/etc/krb5.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
[libdefaults]
    default_realm = EXAMPLE.COM
...
[realms]
    HOME.MOIMOITEI.JP = {
        kdc = leopardserver.example.com:88
        admin_server = leopardserver.example.com:749
    }
...
[domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM
...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これでKerberos5関連のコマンドが有効に機能するので確認するついでに、host/nfsプリンシパルを作成しとく。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# kinit -p diradmin
Authenticating as principal diradmin with password.
Password for diradmin@EXAMPLE.COM:
kadmin:  addprinc -randkey host/ubuntu71s.example.com@EXAMPLE.COM
kadmin:  addprinc -randkey nfs/ubuntu71s.example.com@EXAMPLE.COM
kadmin:  ktadd host/ubuntu71s.example.com@EXAMPLE.COM
kadmin:  ktadd -e des-cbc-crc:normal nfs/ubuntu71s.example.com@EXAMPLE.COM
# klist -k -e
keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   3 host/ubuntu71s.example.com@EXAMPLE.COM (Triple DES cbc mode with HMAC/sha1)
   3 host/ubuntu71s.example.com@EXAMPLE.COM (ArcFour with HMAC/md5)
   3 host/ubuntu71s.example.com@EXAMPLE.COM (DES cbc mode with CRC-32)
   3 nfs/ubuntu71s.example.com@EXAMPLE.COM (DES cbc mode with CRC-32)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;うまく行かない場合、ネットワーク設定や時間同期を見直す。&lt;/p&gt;

&lt;h4&gt;LDAP 設定&lt;/h4&gt;

&lt;p&gt;Debian/etch の libnss-ldap/libpam-ldapの設定ファイルは、別々になっているが、特に分ける必要がないので、シンボリックリンクを張っとく。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ln -sf /etc/ldap.conf /etc/libnss-ldap.conf
# ln -sf /etc/ldap.conf /etc/pam_ldap.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ldap の設定では、ホスト名ではなくIPアドレスを直に設定する。
(XX.XX.XX.XXがleopardserverのアドレス)&lt;/p&gt;

&lt;p&gt;/etc/ldap.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;host XX.XX.XX.XX
uri ldap://XX.XX.XX.XX/
base dc=example,dc=com
ldap_version 3
port 389
#bind_policy [hard|soft]
bind_policy soft

#binddn cn=proxyuser,??,dc=example,dc=com
#bindpw secret
#rootbinddn ???

ssl no
#ssl [no|on|start_tls]
#tls_cacertfile /etc/openldap/cacert
#tls_cacertdir /etc/openldap/cacerts
#tls_checkpeer yes
#tls_ciphers [SSLv2|SSLv3|TLSv1]
#tls_cert mycert
#tls_key mykey

timelimit 60
bind_timelimit 60
idle_timelimit 300

####
scope one

nss_schema rfc2307
nss_base_passwd cn=users,?one
nss_base_shadow cn=users,?one
nss_base_group  cn=groups,?one
nss_base_hosts  cn=machines,?one

pam_password exop
#pam_filter objectclass=account
pam_login_attribute uid
pam_check_host_attr no
pam_check_service_attr no
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;NSSの設定&lt;/h4&gt;

&lt;p&gt;/etc/nsswitch.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;passwd:         files ldap
group:          files ldap
shadow:         files ldap

hosts:          files dns
networks:       files

protocols:      files
services:       files
ethers:         files
rpc:            files

netgroup:       ldap

automount:  files ldap
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これで Open Directory 上のユーザ情報が見えれば良し。&lt;/p&gt;

&lt;h4&gt;PAMの設定&lt;/h4&gt;

&lt;p&gt;pam の設定は管理者の数だけ書き方があるのだが、2点を留意して設定する。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Linux-PAM の独自の制御フィールド構文を使わない。&lt;/li&gt;
&lt;li&gt;Debian 系の独自パッチにあまり依存しない。(特に、@include文ってなに？)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;管理の簡便性のため、/etc/pam.d/common-* の設定ファイルは /etc/pam.d/system に纏めておく。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# echo "auth include system" &amp;gt; /etc/pam.d/common-auth
# echo "account include system" &amp;gt; /etc/pam.d/common-account
# echo "password include system" &amp;gt; /etc/pam.d/common-password
# echo "session include system" &amp;gt; /etc/pam.d/common-session
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;/etc/pam.d/system&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#
# /etc/pam.d/system - authentication settings common to all services
#

# account
account sufficient  pam_unix.so
account sufficient  pam_krb5.so
account sufficient  pam_ldap.so
account required    pam_deny.so

# auth
auth    sufficient  pam_unix.so nullok_secure
auth    sufficient  pam_krb5.so use_first_pass
auth    sufficient  pam_ldap.so use_first_pass
auth    required    pam_deny.so

# password
password required   pam_cracklib.so retry=3 minlen=6 difok=3
password sufficient pam_unix.so use_authtok nullok md5
password sufficient pam_krb5.so use_authtok
password sufficient pam_ldap.so use_authtok
password required   pam_deny.so

# session
session required    pam_unix.so
session optional    pam_krb5.so
session optional    pam_ldap.so
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ただし、他のサービスでのcommon-auth/common-account/common-password の取り込み位置がそれぞれのauth/account/passwordタスクエントリの最後になるように調節する必要がある。&lt;/p&gt;

&lt;h4&gt;autofs の設定&lt;/h4&gt;

&lt;p&gt;Debian etch / Ubuntu 7.10 は、まだautofs ver 4.x 系なので、rfc2307bisで定義されている automountMap/automountオブジェクトクラスは使えない。従って、nisMap/nisObject オブジェクトクラスのレコードを Open Directory 上に登録しておく必要がある。&lt;/p&gt;

&lt;p&gt;/etc/default/autofs&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;...
LDAPURI=ldap://XX.XX.XX.XX
...
LDAPBASE="dc=example,dc=com"
...
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://moimoitei.blogspot.com/2008/02/leopard-server-summary-2008q1.html"&gt;Open Directory の設定のまとめ 2008Q1&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1747986548294113572-2869825628858391232?l=moimoitei.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://moimoitei.blogspot.com/feeds/2869825628858391232/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1747986548294113572&amp;postID=2869825628858391232' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2869825628858391232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1747986548294113572/posts/default/2869825628858391232'/><link rel='alternate' type='text/html' href='http://moimoitei.blogspot.com/2007/11/opendirectory-debian-auth.html' title='OpenDirectory で Debian系を認証'/><author><name>moimoi</name><uri>http://www.blogger.com/profile/18029788760478806809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_uOwZNbw4Pqw/TNjUxKDcnJI/AAAAAAAAAdc/JoCOziIMEF4/S220/photo.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1747986548294113572.post-3387740902959760049</id><published>2007-11-23T06:52:00.000+09:00</published><updated>2008-07-13T22:54:50.986+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>nscd がちょっと詰まる</title><content type='html'>&lt;p&gt;LDAPサーバをLeopard Server のOpen Directory を使い、新しめのCentOS/Fedora をクライアントにした場合、ls コマンドとかが不定期に固まる症状が出た。それ以外にも、automount+NFS4を組み合わせるとログインがちょっと固まった。&lt;/p&gt;

&lt;p&gt;ログにはたくさん LDAPサーバを再接続してるよん〜って出ている。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Nov 10 05:54:25 centos5 nscd: nss_ldap: reconnected to LDAP server ldap://xx/ after 1 attempt
Nov 10 06:02:12 centos5 rpc.idmapd[1589]: nss_ldap: reconnected to LDAP server ldap://xx/ after 1 attempt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;はて？&lt;/p&gt;

&lt;p&gt;再接続してるならば、良いじゃない。&lt;/p&gt;

&lt;p&gt;でも、時々固まる？？&lt;/p&gt;

&lt;p&gt;何故に？&lt;/p&gt;

&lt;div class="fullpost"&gt;

&lt;p&gt;調べてみると、LDAP サーバ／クライアントの idle_timelimit の値がサーバの方が小さいためのようである。&lt;/p&gt;

&lt;p&gt;クライアントがサーバから強制切断されると、何故に固まるようである、、、
