MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

コアテクノロジー部

ミラクル・リナックスのOS開発やサポートを担う、技術部の精鋭陣が交代で担当します。

ミラクル関連リンク

採用情報

サイト検索

2008年5月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

新しいブログのお知らせ

今週、無事に新しいブログを立ち上げることができました。前回のエントリで約束した通り、ここでは簡単にそれぞれのブログを紹介させていただきます。ぜひRSSリーダーに登録して購読していただけたらと思います。

1. Asianuxチーム『アジアのペンギン (http://www.miraclelinux.com/asianpen/)

弊社の主力製品である MIRACLE LINUX (Asianux) を開発するチームのブログです。エッジの効いたカーネル技術を得意とする熱血虎党titoさんや、笑顔のまぶしいyoishiさんが中心となり、日々製品開発に勤しんでいます。CGLなどの先端技術のほか、中国で揉まれた国際的(?)英語も見物です。

メンバが書いたコアテクの路地のエントリ:

2. バックエンドチーム『ペンギン飼育係が見た(http://blog.miraclelinux.com/penguin/)

多数のベンダーさまとバックエンドサポート契約を結び、クリティカルなシステム障害をカーネルソースレベルで解析・修正できるカーネルハッカー集団です。九月よりVFATメンテナであるhirofumiさんも参加してさらにパワーアップ。日立製作所さまと共同で行っているカーネル差分解析の情報や、定期的に行われているカーネル勉強会なる催しの発表など、濃ゆいネタをご期待ください。

メンバが書いたコアテクの路地のエントリ:

3. テクニカルサービスとR&Dチーム『第三のペンギン(http://blog.miraclelinux.com/thethird/)

新機能開発からシステムの導入コンサルティング、アフターサポートまで網羅する技術者集団のブログです。実地で培ったトラブルシューティングの腕前と、問題を特定する鋭い勘はミラクル随一。Linuxのことならなんでもござれ、ゆりかごから墓場までお供します。shigeoさんの、プロジェクト管理ノウハウも参考になります。

メンバが書いたコアテクの路地のエントリ:

なお、わたくし『拓かれた世界へ向かって』ブログを執筆していますshiro3といいます。上の三つともどもよろしくお願いします。

コアテクの路地終了(&新ブログ発足)のおしらせ

こんにちは。このBlog管理者のkodaiです。

唐突ではありますが、このBlogは今回をもって最後の記事となります。

とはいっても、技術者のBlogがなくなるわけではなく、来週からコアテクノロジー部を3つに分けて、それぞれのチームでBlogを書くことになります。今後はこれまでより小人数で記事を書くことになりますので、その分濃い内容をご期待ください。

新BlogのURLは追ってこのブログでご紹介しますので、お手数ですがRSSリーダーのブックマークに登録して頂いている方は変更をよろしくお願いします。

最後に、これまでコアテクの路地をご覧頂きありがとうございました。また、新たに発足する3つのブログもよろしくお願いします。

PRINしかも京ポン?でLinux

toyoshimaです、あいかわらずPCのLinux化に勤しんでいます。タイトルが??な方もおられるでしょうが、ある分野ではとても普通に話されていることです。意味はこんな感じです

  • PRIN:「PROVIDER INCLUDED」の意味で、WILLCOMさんが提供するプロバイダーサービスです。 by WillCOM
  • 京ポン: WILLCOMさんが出されている京セラ製PHP「AH-K3001V」の愛称、「京ポン」でググるとトップが京セラのHPになっている。 by Hatena
  • Linux:このページを見られている方は説明要りませんよね?

したがって、LinuxでPHP(AH-K3001V)を使ったモバイルを使ってみよう!ということになります。最初は気軽に「ppp」の設定でもやれば継るでしょうと思っていたのですが、実際つないでみると「ドライバが動いていない?」というわけで、Wirelwssのときとあいかわらず「サーバOS MIRACLE LINUX」には教えてくれるエンジニアもおらず、またまたググり始めたわけですが、ネットには様々な情報が流れていました。キーワードは「京ポン!!」MacOSやZAURUSなどでのチャレンジの歴史が +++ MIRACLE LINUXもこの歴史に名を刻むのか!? +++ なんて大したことでは無いのですが、奮闘記を記しておきます。

京ポン接続までのざっくりした手順は以下です。

1.材料

 PC 1台(USBポートが必要です、しかもモバイルできるサイズじゃないと意味がありません)、京ポン「AH-K3001V」 1台(付属 USBケーブル 1本)、MIRACLE LINUX 1箱(kernel-srcのrpmが必要です、私がチャレンジしたのはMIRACLE LINUX V4.0 SP1)

2.作り方

 まず京ポン用にドライバ(cdc-acm.ko)をカスタマイズします。カスタマイズ内容は簡単で、USB接続した京ポンを認識するようにするだけです。ちなみにもちろんサポート対象外です(^^;)。ドライバが作成したデバイスにリンクを張ります、これはppp用に使う/dev/modemとマッピングさせるためです。kpppを起動し、デバイスを作成(設定)し、Accountを作成します。最後にppp起動時にGWとDNSの設定をするスクリプトを登録して完成です。

詳細は次の機会にご紹介いたします。 

OpenLDAPのindex

こんにちは。秋からミラクルに引っ越してきましたanaitoです。

今日は、OpenLDAPのチューニングについて書きたいと思います。まずは基本的なところからということでindexについて設定して行きたいと思います。(そもそもそんなに迷うほど設定項目は多く無いのですけどね)

OpenLDAPも最近ではMTA連携だったりSamba連携だったりと情報が溢れており導入ハードルも下がっているのではないでしょうか?しかし、自宅サーバにありがちな人の設定をコピ&ペーストではいざという時に困ったりするのでキチンと理解しつつindexを設定出来るように順に説明して行きたいと思います。

まずはログをファイルに出力するようにしましょう。標準出力に出してもいいのですが出力も多いのでファイルの方が追いやすいでしょう。
OpenLDAPはdefaultはファシリティlocal4を使いますので/etc/syslog.confに以下を追加します。

local4.* /var/log/ldap.log

※一応丁寧にファイルを作成して再起動

# touch /var/log/ldap.log; chown ldap:ldap /var/log/ldap.log
# service syslog restart

次にslapdのloglevelを設定します。/etc/openldap/slapd.confにloglevelディレクティブを追加します。デフォルトは256ですが「検索フィルタ処理」の32も出力させたいので

loglevel    288

とします。余談ですがパフォーマンスを考えた場合、最終的にはloglevel 0(ゼロ)とした方が良いですね。ログが出力されないので一番速いです。注意としてはコメントアウトはダメです。defaultの256が生きてしまいます。例えファイル出力しなくても負荷がありますので必ず明示的に指定して下さい。(あくまでパフォーマンス第一に考えた場合です。ログがなければ当然困ることもありますよん)

# service ldap restart

あとは自分が使いたいサービスを動かしてみてログからindex対象を拾います。

例えば

# ldapsearch -x -b "dc=example,dc=com"

あたりだと以下のようなログが出力されます。(※バックエンドDBによって違いがあります)

slapd[2416]: conn=0 op=1 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(objectClass=*)"
slapd[2416]:  AND
slapd[2416]:  DN SUBTREE
slapd[2416]:  OR
slapd[2416]:  EQUALITY
slapd[2416]:  PRESENT
slapd[2416]: => test_filter
slapd[2416]:     PRESENT
slapd[2416]: <= test_filter 6
- snip -
slapd[2416]: conn=0 op=1 SEARCH RESULT tag=101 err=0 nentries=18 text=

K&Rやった人にはなつかしいポーランド記法です。
そうするとアスタリスクを用いたフィルタはPRESENT(存在)で検索している事が分かります。その前のEQUALITYは暗黙的に(ObjectClass=NULL)のfilterが入っているため出力されています。(この辺りまでログ出力させるにはloglevel -1でどうぞ)つまり

(dc=example,dc=comのサブツリー検索) AND { (ObjectClass=NULL) OR (ObjectClass=*)}

ということで導き出されるindexは

index objectClass   pres,eq

ということになります。

次はauthconfigコマンドでユーザ認証にldapを追加するとsuなんかした時にこんなのが出てきます。

slapd[2416]: conn=2 op=1 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=root))"
slapd[2416]:  AND
slapd[2416]:  DN SUBTREE
slapd[2416]:  OR
slapd[2416]:  EQUALITY
slapd[2416]:  AND
slapd[2416]:  EQUALITY
slapd[2416]:  EQUALITY
slapd[2416]: conn=2 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=

この場合、ORの後のEQUALITYは前回と同様でプラスその後ろということで

index objectClass, uid    eq

となります。

さらに、ThunderbirdのLDAPアドレス帳を使った場合を見てみましょう。

slapd[2344]: conn=5 op=1 SRCH base="ou=users,dc=example,dc=com" scope=2 deref=0 filter="(|(mail=*test*)(cn=*test*)(givenName=*test*)(sn=*test*))"
slapd[2344]:      AND
slapd[2344]:      DN SUBTREE
slapd[2344]:      OR
slapd[2344]:      EQUALITY
slapd[2344]:      OR
slapd[2344]:      SUBSTRINGS
slapd[2344]:      SUBSTRINGS
slapd[2344]:      SUBSTRINGS
slapd[2344]:      SUBSTRINGS
slapd[2344]: => test_filter
slapd[2344]:     OR
slapd[2344]: => test_filter_or
slapd[2344]: => test_filter
slapd[2344]:     SUBSTRINGS
slapd[2344]: begin test_substrings_filter
slapd[2344]: end test_substrings_filter 1
slapd[2344]: <= test_filter 5
slapd[2344]: => test_filter
- snip -
slapd[2344]: conn=5 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=

メールアドレスをtestで検索した場合4つの属性でSUBSTRINGS(部分文字列)検索をしていることがわかります。

この場合のindexは

index   mail, cn, givenName, surname    sub
index   objectClass                           eq

ということになります。

主立った3パターンを試してみましたが如何でしょうか?イメージ出来ましたでしょうか?

最後に・・・
パフォーマンスを考えれば使わないindexは張らない方が良いでしょう。indexは参照には有効ですが更新には足かせとなります。特にSUBSTRINGSはindexが大きくなりますので気をつけて下さい。あとは

index objectClass    eq

は指定した方が良いでしょうね。次はチューニング結果を試すためのツールなんかを紹介出来ればいいと思っています。

LX-2010にMIRACLE LINUX V4.0をインストール

先日、x86組み込み用CPUボード LX-2010にMIRACLE LINUX V4.0(ML40)をインストールしたのですが、その時のことをblogに書きたいと思います。先ずは、ボードのご紹介から。

  • CPU: AMD Geode LX700
  • memory:256MB
  • CFカード:1GB
  • 多少スペックが異なるかもしれませんが、詳細はこちらです。http://www.innotech.co.jp/products/product_list/board/cpubord/amd.html

インストールの開始前に行わなければならないのは、周辺ハード(ディスプレイ/キーボード/マウスなど)の準備です。幸い、USBポートが4つもついているため、キーボード/マウス/CDドライブ/FDドライブはUSB接続にしたので、それほど大変ではありませんでした。周辺機器の準備が完了後、早速CDからインストールを開始、インストーラの起動まではうまくいったのですが、ML40での起動までに3つの問題(3 step)に遭遇しました。

  • 非サポートマシンへのインストールという表示後、インストールが先に進めない
  • 上記問題解決後、CFカードの容量不足のためインストールができない
  • さらに上記問題解決後、kernelパッケージのみインストールされずgrub.confの作成に失敗し、起動されない

一つ目の問題は、ML40のanacondaインストーラの内部処理で、マシンアーキテクチャがi386である場合は、非サポートマシンとして扱い、インストールを終了させる処理を行っています。ただし、i386アーキテクチャであっても特段問題はないはずなので、ここの判定処理をとばすようにanacondaに手をいれることにしましました。

二つ目の問題は、CFカードの容量不足です。さらに容量の大きいCFカードがあれば、素直に変えればいいのですが、あいにく1GBのCFカードしかありませんでした。ただ、容量不足といっても、ML40の最小構成を選択するば、パッケージ自体をインストールするだけの容量は十分にあります。では、なぜ容量不足でインストールが先に進めないかというとML40 anacondaではパッケージのインストールに必要となる容量+500MBの空き領域がなければ、インストールを終了させる仕様となっているからです。これも必須ではないので、この判定もとばすようにanacondaにさらに手をいれることにしました。

そして、1,2の修正後アップデートディスクを作成してインストールを開始したのですが、インストールの終盤で三つ目のトラブルに遭遇しました。この問題もkernelパッケージをanaconda上で強制的にインストールさせてしまえば、解決するとは思ったのですが、インストールを最初からやり直すには時間がかかるので(スペックの関係から最小構成インストールでも結構時間がかかりました。)、rescueモードで起動後に下記の処理を実施しました。

  • usbメモリからkernelパッケージを取得
  • --ignorearchオプションを追加してkernelをインストール(rpm -ihv --ignorearch kernel-2.6.9-11.19AX.i686.rpm)
  • /boot/grub/grub.confを作成
  • grub-installを実施

上記の作業完了後、見事にML40で起動しました。容量も500MB近く空いているので軽いアプリならばインストールして動作させられると思います。(大量のlogがはかれるとすぐに容量いっぱいになってしまいますが。。。)

すべての道はUNIXに通ず?

こんにちは。二卵性双生児(男女)AB 型というなかなかレアな出生歴を持つ kyagiです。カードダースのキャラだったらプレミアものになっていたかもしれません。現実の人生は平凡そのものを歩んでいます。

最近シェルスクリプト内でのラッパ化(wrapper)を行う機会があったのですがそこでちょっとした落し穴にハマッてしまいました。今回はその落し穴についてのお話と最後に小咄をひとつ。

現在のコマンドを表示かつ終了ステータスのチェックを行うために下記のようなexecute() というラッパ関数を作成したのですが、これだと実行するコマンドラインにパイプ「|」やリダイレクト「>」がまじるとエラーになってしまいます。

#!/bin/sh

execute ()
{
        echo "Executing $command"
        $command
        if [ $? -ne 0 ]; then
                echo "ERROR: $command"
                exit 1
        fi
}

# OK
command='ls'
execute

# NG
command='ls -l | awk "{print $NF}"'
execute

# NG
command='echo "hello" >> outputfile'
execute

どうしたものかと 30分考えた挙句、 bash の eval という機能を思いだしました。evalは受け取った引数を結合してコマンドラインとして実行してくれます。すると、これがどうやらビンゴ!だったみたいでうまくいくようになりました。

$ diff a.sh b.sh
6c6
<       $command
---
>       eval $command
[kyagi@dhcp-0234 labo]$

ラッパ化の話はこれで終わりですが最後に雑談系の小咄をもうひとつ。

UNIXにみる世代間の断絶という興味深い記事がありますが、ふと世代別でプログラムの書き方はどう異なってくるのかと思いました。ここではkyagiが独断と偏見のもとシェルスクリプトのループ(0から9までを出力する)の書き方を、世代別でカテゴリ化してみます。

・旧人類(古き良き expr を使う)

$ i=0; while [ $i -lt 10 ]; do echo $i; i=`expr $i + 1`; done

・新人類と旧人類の中間(expr から let に移行)

$ i=0; while [ $i -lt 10 ]; do echo $i; let i=$i+1; done

・新人類(算術式展開を使う)

$ for ((i=0;i<10;i++)); do echo $i; done

・変人(タイプ数が少ないのがイチバン!)

$ for i in `seq 0 9`; do echo $i;done

いかがだったでしょうか。

上司や同僚の世代やTPOにあわせて書き方を変えてみると、世代間のギャップを埋めるのに役立つかもしれません。:-)

自宅サーバクラッシュ

そろそろ入社半年を迎えるmamanoです。少しずつ仕事にも慣れてきました。

雑談ですが、半年くらい稼働していた自宅のサーバがクラッシュしてしまいました。マシンはMac mini(PowerPC)で、Debian GNU/Linux 3.1(sarge)をインストールしていました。ちょうど以下のようなページが流れていたころです。

  • Installing Debian GNU/Linux on macmini
  • http://sowerbutts.com/linux-mac-mini/

  • 日経Linux1月号
  • http://itpro.nikkeibp.co.jp/linux/backnum/newest_mokuji_01.shtml

ここでちょっと簡単なPCの使用経歴を紹介したいと思います。サーバを初めて立ち上げたのはおよそ3年くらい前で、LAPPでブログを立ち上げて個人的に書いてました。といってもメモ代わりに使っていただけです(今は落ちています)。ブログのツールに不満があれば修正も加えていましたし、簡単な機能追加もしてました。特にいろいろ覚えたのはJavascriptで、まだAjaxだのweb2.0だの騒がれている前からガリガリ書いてたこともありました。自分のやりたいことを自由にやっていたのでなかなか楽しかったですね。Javascriptに関する情報が少なかったものの、それほど難しいと感じなかったので取っ付きやすかったのかもしれません。

このmac miniは自宅のデスクトップマシンとして活動しています。

最近の北京のタクシー事情

Asianuxの開発ミーティングに参加するため、久しぶりに北京を訪問しました。この前の出張が中国の旧正月前(1月末頃)なので、半年以上間隔が空いています。

初めて北京を訪れたのが2003年11月でした。その頃の北京のタクシーは、ほとんどがシトロエン(フランスの自動車メーカ)の赤い車でした。

061020_08450003_1

図1:シトロエン車。
シトロエンの中では結構まともな方です










シトロエン車の中には年季の入ったもの(日本の感覚なら廃車にしても良いほどの古さ)が数多くあり、車内の座席空間も狭く、かつドアを占めても隙間があったりします。
北京の冬は零下でとても寒く、冬にそんなタクシーに乗ると、隙間から冷たい風が入ってきて、体を震わせながら移動するという羽目になってしまいます。
そんな北京のタクシーに乗っていると、日本や韓国のタクシーの乗り心地の良さに素直に感動したりします。

去年ぐらい(?)から現代(ヒュンダイ:韓国の自動車メーカ)製の車が大量に導入され、北京のタクシー事情が様変わりしました。

061020_08450002

図2:現代車。
タクシーに乗るために手をあげ、止まった車が現代車だったりすると、
「今日の俺はついている」と思ったりしました。









乗り心地はいままでのシトロエンと比べ物にならないほど良くなり、「これで同じ値段ってありえない!」と思っていたりしていました。

さて、今回の訪問で驚いたのは、タクシー料金が大きく様変わりしていたことでした。いままでは、1.2元/km、1.6元/km、2.0元/kmの3種類のタクシーがあり、一番多いのが1.6元/km車で、次に1.2元/km車、2.0元/km車だったのですが、ほとんどが2.0元/km車になっていました。

061020_08310001_3

図3:タクシーに張られてある値段のラベル。
個人的にこの車は1.6元/kmが妥当かと。。。









車のグレードは同じで、値段だけが上がっていたという状況です。「えぇ~、こんな車も2.0元/kmなの?」と思う車まであります。現代製のが2.0元/kmならまだ納得もできるのですが、シトロエンも同じ値段っていうのはどうにも納得できません。

東京のように電車/地下鉄が発達していない北京では、タクシーはなくてはならない交通手段です。2008年北京オリンピックでは世界から多くの外国人が訪問するはずでそれに向けて、今後もいろいろ変化(現代車の導入、値段アップもその一つと思われます)があるのでしょうね。

ML4.0サーバをジュークボックス計画

どもyosuzukiです。まだまだ我が家のiTunes + Linuxでやることがあったので今回もそれ関係です。

今回は、せっかく前回の「ML4.0でiTunesサーバ」にしたので、Miracleサーバ上に集まった.mp3,.m4a,wmaをLinux上で聞きたい。これが出来れば、我が家のMiracleがファイルサーバ兼、iTunesサーバ兼、ジュークボックスになる。

我が家の3台のPCたちは、定期的にローカルのファイルをMiracleサーバに差分バックアップしてます。当然、各PCにたまった音楽ファイルもファイルサーバの一箇所に保存されて行きます。まぁ、iTunesサーバごしに各PC(Windows/Mac)から音楽を聞けばいいのですが、ほぼ常時起動のMiracleサーバをジュークボックスとして使わない手はないと考えてのです。

とりあえず今回までのところは、Miracleサーバ(ML4.0SP1)で音楽ファイルをiTunesライクに聞くとこまでやってみました。使用したソース、バイナリは以下の通り。バージョン選択は厄介ですが、インストールは特に難しいところはないので手順は省きます。

#MiracleはRHEL互換なので、、、問題なく動きます。

さて、gtkpodですが慣れるまで使い勝手が悪いですが、iTunesとほぼ同じことが出来そうです。以下、J-POP用のプレイリストからアーティストを選択し、XmmsでRandom再生中。(文字コードもほぼOK)

Gtkpod01_1

ちなみにPodcastは現状は厳しそうなので、とりあえずパス。

本当は、使っていないiPod nanoを指してgtkpodで曲の同期などを行いたかったのですが、我が家のPen3マシンはUSB1.0なので、そうもそもマウントできず。USB2.0のボードを追加して次回チャレンジします。多分問題ない。

※実はこの作業をやるのに一番大変だったのは、音を出すとこまでだったりします。古い自作マシンなので我が家に転がってたSoundカードの3枚目で音がでました。

会社の周辺事情?

最近、会社のあるビルの前で「ザ・たっち」の二人がメキシカンな格好で撮影(と思われる…)をしていました。でもカメラがありません。なぜ??(後半へつづく。)

この付近はヴィータイタリアというイタリア風の町並みを目指した一角な為、よく撮影に使われているようです。結構頻繁に撮影風景を目にします。しかし、ミーハーに思われるのが嫌なので近づいて見たりは絶対にしません。いつも遠くから一別するだけなので有名人を直接目にする事はほとんどありませんでした。撮影されたモノをメディアを通じて目にする事もほとんど無く(気がつかないだけ?)TVCMで、何度かバックに使われているのを目にした程度です。
(伊東美咲さんの出ている車のCMの最後に走り去る場面のバックとか、黒木瞳さんの出ている車のCMのバックとか。。そんなのばっかりだ。)
隣にWINSがあるので、競馬番組のご一行を目にした事はありますが、これは単にテレビ局から近いから?なのでしょうね。

で、最初の「ザ・たっち」の二人は何をしていたかがよく分からないまま、あくまで遠巻きに見ていたのですが、つい最近、病院の待合室で何気なくテレビを見ていたら、日テレの朝の「ラジかる!!」のなかで、おそらくお天気カメラからの映像のなかにいる「ザ・たっち」の二人が写っていました。見た瞬間、「あ、これだったのか。。」と思った次第です。さすがにこの時間の番組は普段見ないからなぁ。そういえばちょうど11時前くらい。なんだ、結局は日テレに近いのが理由だったのか。。

ちょっと前までは汐留とはいいつつも人通りは隣のWINSへ行くと思われる方々ばかりでいかにも「新橋」だったのですが、近頃はだいぶ人通りも増え、道行く方々の雰囲気も「汐留」な感じに変わってきたようです。

あとはビル横のJR高架の工事が終われば最高かな…と思えるのですが、いつ終わる事やら。

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.