「玄箱」ハッキング録


Last Update:2005-07-14


情報


未解決事項

No. Detail Priority Memo
1. メーリングリスト管理ソフト(CML)をインストールするためにconfigureを実行したところ、「uuencodeがない」とエラー。 middle CML使用を断念。ppmlを使用。
2. ircサーバを動かしたいが、手付かず。 low 取り敢えず、急がないので放置。
3. analogを動かすべく、rpmファイルを入手したが、必要とするglibcが存在しないとエラー。 high analogのソースコードってどこにある???


はじめに(2004.8.19)

「いつかは自宅で自分のドメインを運用したい」と思っていた。そんなことを漠然と考えていたら、ある日
「玄箱」というものの存在に気が付いた。なんでも、Linuxがnativeで搭載されていて、自宅サーバーにできるらしい。
「これだっ」まさに自分が探していたもの、そのものだ。その日からPCショップに行っては玄箱を探すようになった。
が、こちらの思惑とは裏腹に「玄箱」は見つからない。聞くところによれば、「玄箱」はかなり人気が高いらしく、一部のマニア(って誰?)の間では、「在庫を見つけたら、買い占めろ」と言われているらしい。
半ば諦めかけていたとき、知り合いから某ショップに在庫があることを教えて貰った。ちゃんと在庫があった。予想よりも小さかった。速攻で購入。
我が家の「玄箱」はちゃんと自宅サーバーとして動作するでしょうか、、、

組み立て(2004.8.17)

なぜか過去に遡る(笑)。 まず組み立てなければ話が始まらない。「玄箱」には出荷状態ではハードディスクが内蔵されていないので、まずハードディスクを組み込むことから始める。
添付されていた説明書を頼りに「玄箱」をバラす。これがなかなか難しい。自分の要領が悪いこともあるかもしれないが、ハードディスクを組み込むことができるくらいまでバラすのに20分ほどかかってしまった。「玄箱」にハードディスクを組み込むためには、本当にバラバラにしなければならないので注意。
ハードディスクをホルダーに装着したら、バラバラにしたものを組み直す。自分はホルダーの装着方法を間違えていて、箱がちゃんと閉まらなくなり、20分ほど悩んでしまった。バラす時に組み立てることを考えながらバラすことが重要。
無事、元通りに組み上がったので、本日はこれで終り。


電源投入とバージョンアップ(2004.8.19)

ネットワークのトラブルが片付いたので、「玄箱」のセットアップに取り掛かる。まずは付属のセットアップCDをPCへ。中に"KuroBoxSetup.exe"というファイルがあるので、実行。内蔵ハードディスクは80Gだが、10分ほどでセットアップが完了。
玄人指向のホームページに「玄箱」のOSバージョンアップがあったので、それをホームページからダウンロードし、「玄箱」にインストール。これまたあっけないほど簡単にインストール終了。
バージョンアップが終了したのはいいが、どうやって「玄箱」にアクセスするんだろうか、、、付属CD-ROMにマニュアルなんて入ってないし、、、
Tera-Termを使って「玄箱」に割り当てられたアドレスにtelnetしてみた。なんかプロンプトが出てきた、、、ユーザIDとパスワードを入力すると、、、おぉ、ちゃんとログインできた。見事にLinuxである。
「defaultでhttpdも入っているよ」とホームページに書いてあるので、ブラウザでアクセスしてみたら、『パスワードが設定されてねぇぞ』と怒られた。出荷状態で設定してるパスワードはtelnetアクセス時のみ有効らしい。
Linuxなんて今まで一度も触ったことがないので、良く分からないことだらけ、、、良く分からないので本日はこれで終り。


Linuxのお勉強(2004.8.20)

Linuxなんていままで一度も触ったことがない(幸か不幸か、私用でも仕事でもいままでずっとBSDだった)ので、ネットで情報を仕入れようにも、書いてあることが理解できない、、、
このままじゃいけないと思い、「Linux 2004 インターネットサーバ構築ガイド」なる本を購入。
これから勉強に励みます、、、


ハックキット(2004.8.21)

玄人志向さんもいろいろ考えているようで、「玄箱王コンテスト」なるものを定期的に開催している。ちなみに、いまも第三回が開催中。そこでいろんな人がさまざまなアイディアを出している。玄箱初心者、Linux初心者の自分にとって、いろいろと勉強になるページだ。
その中に、第一回のコンテストで優秀賞を授賞している山下康成さんのページに目が止まった。玄箱をVine化してホームサーバにしている。まさに自分が実現したいと思っている環境だ。
山下さんはご自身の経験の集大成として「LinkStation/玄箱ハックキット」を実費(メディア代、郵送料)で配布している。早速、山下さんにメールしてハックキットの配布をお願いした。
「LinkStation/玄箱ハックキット」については、山下さんのホームページであるLinkStation/玄箱をハックしようを参照。


ハックキットのインストール(2004.9.18)

せっかく8月末にハックキットを入手していたのに、忙しくて全く進んでいなかった。3連休でもあったので、Vine化を進めることにした。
まず、自分は玄箱を一度セットアップしてしまっていたので、玄箱をもう一度バラしてディスクを取り出し、WinXPなPCに繋いでパーティションを削除した。パーティションを削除したら、再度玄箱に組み込む。
山下さんのホームページの中にある『ハックキットを使ってホームサーバを構築しよう』から『ハックキット1.2のインストール』を参考にしながら作業を進める。
Vine化キットの展開までは問題なく進み、再起動するところまできた。ところが、再起動するとPOWER LEDの点滅がいつまで経っても終らない。あれこれと悩んでいたら、DIAG LEDの5回点滅が始まった。玄箱に付属の説明書を読むと、『ハードディスクの問題、もしくは、ハードディスク上のソフトの問題』とある、、、(;o;)
装置起動直後からPOWER LEDの点滅が始まり、この間はpingには答えるものの、telnetやhttpdには全く応答しない状態になってしまう。DIAG LEDが点滅すると、メイン電源が落ちてしまう。まるでSunWSがROMモードに落ちた時みたい。う〜ん、、、アクセスできない状態に陥ってしまったぞ、、、
さて、、、困った、、、


ハックキットのインストールにむけて(2004.9.23)

どんな手段を使っても玄箱にログインできそうにないので、もう一度玄箱をバラし、ディスクを取り外す。WinXPなPCに繋いで、パーティションを削除し、ディスクを玄箱に組み込み直す。
電源を入れて、正常に起動することを確認。telnetでログインした時のプロンプトの表示もOK。インストールの準備は整った。
『LinkStation/玄箱 Hack BBS』によると、日付が狂っていたために自分と同じような症状に陥った人がいた。その方曰く、日付をきちんと合わせれば問題は解決したとのこと。参考にしよう。


ハックキットのインストール、2(2004.9.25)

前回失敗しているので、リベンジなるか、、、
よくよく記憶の糸をたどってみると、前回のインストール作業では想定されていないディレクトリにパーティションをマウントしてしまっていたような気がしたので、今回は全く同じようにインストールしてみた。
Vine Linuxを玄箱に転送して、付属のファイルを転送して、展開して、最低限のセットアップをやって、、、、、、、、作業完了。前回は再起動したら、二度とアクセスできないマシンになってしまった、、、、緊張の一瞬、、、、
まずは玄箱のshutdown。完了。さて、いよいよ再起動、、、電源ボタンを押す、、、、POWER LEDが点滅、、、、おー。POWER LEDが点灯に変わった。telnetでアクセス、、、おーー。ちゃんとアクセス出来た。
めでたく、自宅サーバの基礎が出来上がりました。(^o^)これでようやくスタートラインに立った。
これから柱を立てたり、壁を作ったり、庭に木を植えたりしながら、自宅サーバを作っていきたいと思います。
ちなみに、時計は狂っていたものの、なんの影響もありませんでした。そんなものかも、、、(^^;;)


まずはDNSから(2004.9.27)

自宅サーバに向けて、まずはDNSから手を付ける。
ハックキットにはbind9が入っているので、設定ファイルをシコシコ書く。DNSの設定ファイルをいじるなんて、大学生の時以来だな、、、(^^;;;)
以下のファイルを作る。
  1. /etc/named.conf
  2. /var/named/named.boot
  3. /var/named/localhost.zone
  4. /var/named/0.0.127-rev
  5. /var/named/foo.com-in-zone
  6. /var/named/11.168.192-rev
  • ※/var/named/foo.com-in-zone については、実際に使っているドメイン名にするものなので、適宜変更すること
  • 設定ファイルを書き上げた時点で睡魔に勝てなかったので、namedの起動はせず。今日はここまで。


    インタフェースアドレスの変更(2005.2.18)

    あっという間に4ヶ月が経過、、、(^^;;;)
    実際に玄箱で「おうちサーバ」を構築するためには、いま玄箱に割り当ててあるIPアドレスを変更しなければならない。というのも、いま割り当ててあるIPアドレスはローカルネットワークのDHCP割り当てゾーンに属していて、このIPアドレスで「おうちサーバ」を運用するのはちょっと支障がある。
    /etc/hostsの記述を変更し、/etc/sysconfig配下にあるファイルを修正。修正したファイルをre-checkして間違っていないことを確認。よしよし、、、
    rebootコマンドで玄箱をrestartさせる、、、(しばし待つ)、、、LEDが正常に点灯。めでたしめでたし、、、、のはずが、新しいIPアドレスでtelnetできない。pingにも応答しない、、、試しに古いIPアドレスでも同じことをやってみるがダメ、、、げげげ、、、
    LEDは異常を示すような点灯ではないが、ネットワーク的に全く見えなくなってしまった、、、解決方法を悩んでいたら睡魔に襲われたので、本日中の解決を断念、、、


    インタフェースアドレスの変更、その2(2005.3.5)

    海外出張があったので、さらに3週間が経過、、、
    帰りの飛行機の中でぼんやり考えていた。『もしかして、電源off/onしないと変更が反映されないんじゃ、、、』
    玄箱の電源ボタン長押しでも落ちない。一瞬迷ったが、祈りを捧げてからコンセントを抜く。コンセントを挿す前に同一ネットワーク上にノートPCを準備し、etherealを起動しておいた。もう一度祈ってからコンセントを挿す・・・ちゃんと起動した。
    etherealにもパケットがモニターされているが、どうも、変更したIPアドレスでパケットが飛んできているように見える、、、telnetしてみた、、、うまくいった、、、
    どうも、LinuxではrebootではインタフェースのIPアドレスは変更できないらしい。


    ドメイン名取得(2005.3.6)

    すでに一つドメイン名を持っている(wakemasa.com)が、いきなりこれを「おうちサーバ」に移行させようとすると、失敗した場合にメールやら何やらが全く届かなくなるため、練習用(爆)にあらたにドメイン名を取得することにした。
    取得したレジストラは
    バリュードメインさん。.comや.net、.orgならドメイン維持費が年間990円。非常に安い。
    ちなみに、取得したのはwakemasa.net。(笑)


    NATの設定(2005.3.7)

    玄箱はローカルネットワークの中に置いているので、gatewayとなっているブロードバンドルータにstatic NATを設定しなければならない。取り敢えず、いまは何も動かしていないので、DNSだけを通すように設定。


    改めて、DNS(2005.3.7)

    「おうちサーバ」のIPアドレスを修正し、ドメイン名を修正して、bind9を起動。内向きサーバーはうまくいった。次は外向き。bind9では、viewコマンドに "IN" や "OUT" というオプションを付けることで内向きと外向きを分けることができるようになっている。外向きの設定を作ってbind9をrestartするが、うまく情報を引くことができない、、、
    しばし悩むが、原因が見つからない、、、ログファイル(/var/log/message)を見ると、設定ファイルの記述が間違っているというエラーメッセージが、、、修行が足りないようです、、、


    メールサーバの構築(2005.3.8)

    DNSがうまくいったので、次はメールシステムに取り掛かる。Linuxでは、デフォルトでsendmailが入っていないらしいので、apt-get install sendmailを実行。が、『そのようなパッケージは見つからない』と言われる、、、apt-get source sendmailもダメ。
    static NATでDNSしか通さないようになっているので、それが悪いんだと思い、ftpとhttpを通すように設定してみたが結果は同じ。
    う〜ん、、、何が足りない????


    メールサーバの構築、その2(2005.3.9)

    あれこれやっている間にコマンドを打ち間違えて apt-get update を実行してしまった。すると、コマンドはサクサク実行される。apt-get upgradeを実行してもサクサクいく。。。。ということはネットワーク周りの設定が悪いわけじゃない、、、
    Vine Linuxのホームページから配布サーバーにアクセスできるので、実際にリンクをたどってみたところ、自分がアクセスしているディレクトリにはsendmailがなかった。他のバージョンのディレクトリにはsendmailがあったが、脆弱性が報告されているバージョンだった。
    sendmailを何とかして捜し出すか、Linuxに標準で入っているpostfixを使うか、、、ちょっと悩んだが、postfixを使うことに決めた。これも修行のうち。(笑)
    postfixを使うのは良いが、設定が全く分からない、、、ググっていると、Homeserver on Vine Linuxといううってつけのページを見つけた。ここにPostfixの設定方法が載っていたので、これを見ながら設定。
    テストメールを出してみたら、ちゃんと届いた。テストメールに返信してみると、エラーとなって届かない、、、どうもDNS的にメールサーバが見えてないと文句を言っている、、、むむむ、、、
    どこかで設定をミスったか、、、


    DNSでの設定ミス(2005.3.9)

    チェックしてみたら「おうちサーバ」の設定にミスはなかった。ということは、対外的なアナウンスがうまくいってないということ。
    レジストラでDNSの設定をしたはずだがとチェックしてみたら、操作をミスっていてちゃんと設定されていなかった、、、はぁ、、、
    もう一度DNSの設定をやり直す。変更内容が世界的に反映されるまで最低でも半日はかかるので、しばらく様子見。


    メールサーバの構築、その3(2005.3.10)

    nslookupコマンドを使ってDNS情報が反映されたことを確認。まずはメール送信から確認。問題なし。次に受信を確認。今回は問題なく受信できた。
    めでたし、めでたし。
    次はpopの設定をやらねば、、、


    メールサーバの構築、その4(2005.3.11)

    qpopperをインストールしようと思い、"apt-get install qpopper"を実行すると、『すでに最新版がインストールされています』というメッセージが、、、
    それではとばかりにWinXPなPCでメーラーのセットアップをやって、アクセスしてみる。見事に失敗する、、、う〜ん、、、設定は間違っていないはずだが、、、
    あれこれと見直しているうちに、ふと気づいた。WinXPなPCはdhcpでアドレスなどの情報を入手しているが、Broadband Routerの設定変更をしていないので、自前で立ち上げたDNSを見ていない。そうなると、必然的にメールサーバに内側からアクセスするのではなく、外側からアクセスしていることになるが、Broadband Routerではpopを通さないように設定してあるので、アクセスに失敗していた。
    Broadband Routerのdhcpの部分の設定を変更し、再起動。WinXPなPCでDNSの情報が変更されていることを確認。メーラーを起動してメールサーバにアクセス。今度はちゃんとメールを読むことができました。送信もOK。


    Webサーバの構築(2005.3.13)

    Vine Linuxにはdefaultでapacheが入っている。/etc/httpd配下にある設定ファイルを自分が運営するサーバに合うように変更し、httpdが常時起動されるように/sbin/chkconfigで設定。最初は手動で立ち上げるしかないので、"/etc/rc.d/init.d/httpd start"とコマンドを実行する。
    これでhttpdが起動される。設定したURLにアクセスすると/home/html配下にあるテスト用のページが表示される。このページが表示されたらWebサーバがうまく稼働している証拠。
    あとは/home/html配下に自分で作成したページを置いていけばWebサーバの完成。


    CGIを動かしたい(2005.4.2)

    Webサーバが動いたので、次はCGI。httpd.confをちょいちょいといじって(ExecCGIを有効にして)、httpd自体を再起動。簡単なサンプルプログラムを作ってみたが、"Internal Server Error"、、、
    "perl -cw"でsyntax checkができるようなので、確認してみたが、文法的には問題ないらしい。う〜ん、、、
    「CGI」「Internal Server Error」でググってみたところ、perlの所在を書く部分(#!/usr/local/bin/perl)の最後に"--"を付けるとうまくいくという情報をえた。半信半疑でサンプルプログラムで "#!/usr/local/bin/perl --" と書き、ブラウザでアクセスしてみたら、ちゃんとCGIが動いた、、、
    そんなのアリか????


    Pukiwikiを動かしたい(2005.4.2)

    会社の後輩がPukiwikiを使って面白いことをやっていたので、「いっちょやってみるべ」と思い、おうちサーバでPukiwikiを動かすことを考え始めた。
    http://www.pukiwiki.org/から生ソースをゲット。インストールに際しての注意書きやちょっとググって調べてみたところ、どうもpukiwikiを動かすためにはphpが必要らしい。まずはphpをインストールするところから始めなければならないようだ。


    PHPのインストール(2005.4.2)

    phpのオフィシャルサイト(http://www.php.net/)からphp-4.3.11を入手。
    configureを実行すると、「"flex"、"byacc"がない」と文句を垂れる。ring.or.jpからflex-2.5.4a-13vl1.ppc.rpm、byacc-1.9-17vl2.ppc.rpmを入手し、インストール。再度configureを実行すると通った。
    makeを実行し、放置していたら、コンパイラさんがZend/zend.cの776行目で"incompatible types in assignment"と文句を言う。む〜、、、
    「php Linux incompatible types in assignment」でググってみたところ、このコンパイルエラーは超有名らしく、対処方法が載っていた。zend.cを修正してremake。
    今度は805行目で同じエラーが、、、こちらは対処方法が載ってません、、、


    PHPのインストール、その2(2005.4.3)

    アメリカ出張間際だが、成田にある某エアラインのラウンジからおうちサーバにloginして問題解決。
    新たに指摘された805行目のエラーについても、776行目と同じように修正し、re-compile。makeは通った。
    make installしてみたら、coreを吐いて死んでしまった、、、"make: *** [install-pear-installer] Error 255"などと文句を垂れている、、、しばし悩むが理由がさっぱり分からない、、、
    飛行機の時間が迫ってきたので、このまま放置。


    PHPのインストール、その3(2005.4.10)

    php-4.3.11がmake install時にcoreを吐いて死ぬ問題を調査。「php Linux install-pear-installer」でググってみたところ、同じような問題で苦しんだ人がいた。その人の解決策は以下のように "|| true" を追加するというもの。
    上記の例ではphp-5.0.2。自分はphp-4.3.11だが、実際に同じようにやってみた。不思議なことにcoreを吐かなくなった。表面上はphpのインストールが終ったように見える。


    PHPのインストール、その4(2005.4.12)

    phpがインストールできたようなので、httpd.confでphp関連の設定を有効にする。さらに、以下のようなphpinfo.phpというテストファイルを作ってブラウザからアクセスしてみる。
    が、、、ファイルの内容がそのまま表示されてしまう、、、これはphpがちゃんとインストールされていないか、httpd.confの設定が間違っていることを示している、、、う〜ん、、、
    おうちサーバをいろいろと調べてみたが、httpd.confには間違いがない(と思われる)が、必要なファイルがインストールされていないように見える。やっぱりmake install中にcoreを吐いて死ぬのが間違っているような気がしてきた。


    PHPのデバッグ(2005.5.28)

    make installしたときに、作成したphpを使っていることが分かっていて、これを使う部分でcoreを吐いていることも分かっている。ということは、coreをデバッグすればいい。
    おうちサーバにはgdbがなかったので、ring.or.jpからgdb-5.0-13vl4.ppc.rpmを入手。gdbが使用可能になったところで、再度make installを実行してcoreを吐かせる。
    ・・・・gdbの使い方が分からん・・・・
    私の職業ってソフトウェア開発者だったような気が、、、gdbの使い方をググる。なんとか使い方を見つける。
    その結果、「eval.cが見つからない」というメッセージが出ていた。php-4.3.11のディレクトリ全体でfindをかけてみるがeval.cというファイルはない。いや〜な予感、、、
    いろいろなキーワードでググってみたところ、「eval.cが見つからない」というエラーメッセージの原因はglibcのバージョンが低いか、glibc自体が存在しないというところに行き着くような記述があった、、、
    急速に意識が遠のいた、、、


    もう一度整理しなおそう(2005.5.29)

    混乱しているので、状況を整理。
    最終目標は『おうちサーバでpukiwikiを動かして、ごにょごにょする』こと。pukiwikiを動かすためには何が必要か?
    phpが必要。phpを動かすためには何が必要か?ここをちゃんと理解してなかった。いろいろググってみたところ、mysqlを入れる(必要なのはインストールだけで、mysqlを常時起動する必要なないらしい。)必要があるらしい。
    じゃ、以下をやろう。
    1. mysqlの入手とmake、make install
    2. apache2の入手とmake、make install、設定、動作確認
    3. phpのmake、make install、設定、動作確認
    4. pukiwikiの設定、動作確認
    Let's do it!!!


    Mysqlのインストール(2005.6.4)

    まず、ソース一式を入手。しかるべき場所に展開する。configureを実行。configureだけで1.5時間ほどかかったが、『ncursesがない』というエラーで終了。ncursesを入手し、configure→make→make install。
    再度configureを実行すると、今度は『readlineがない』というエラー。同じくreadlineを入手し、configure→make→make install。 今度はmysqlのconfigureが成功した。
    mysqlのmake開始。豪華な食事ができるほどの時間がかかった(約1.5時間ほど)挙げ句にc++がないとか言ってる、、、頭に来たので、c++を引っ張ってくる。
    mysqlをremake。今度はちゃんとmakeが終了。make installも問題なく完了。


    Apache2のインストール(2005.6.4)

    Vine化キットのhttpdをそのまま使い続けるのはいろいろと不都合があった ので、apache2をインストールし直す。 suExecとSSL、DAVを有効にしておいた。


    PHPのインストール、その5(2005.6.4)

    phpをremake。 make時にZend/zend.cでエラー。修正を忘れていた、、、orz
    修正前は以下。 これを、以下のように修正。 phpのmakeが完了。make installもエラーなく完了。
    一応、コマンドラインで "php --version" を実行し、情報が表示されることを確認。
    /etc/httpd.confを修正し、ブラウザからphpの情報が表示されることを確認。
    あぁ、、、ようやくここまで来た、、、長かった、、、


    Pukiwikiのインストール(2005.6.8)

    あらかじめpukiwiki-1.4.5を入手しておいたので、しかるべきディレクトリに展開。pukiwiki.ini.phpを修正してブラウザからアクセス。ちゃんと表示されました。/(^o^)/
    あとは、好みの問題なので、細かい部分をちょこちょこといじる。これでよ うやく初期の目標が達成!

    ppmlのインストール(2005.7.6)

    おうちサーバでメーリングリストを動かすにはどうするかを考えていた。知り合いから "PPML" というメーリングリストドライバを紹介された。ppmlの詳細については、こちら
    READMEの指定に従ってほとんど何も考えずにインストールするとちゃんと動いた。テスト用にメーリングリストを作ってみた。若干ヘッダの表示内容に個人的な不満があったので微調整。それ以外は問題なし。 ppml はそんなに重くなさそうなので、非力なおうちサーバにはぴったりかも。


    免責事項

    このページは和氣正恒が自分自身で玄箱をハックし、試行錯誤を繰り返しながらまとめているページです。そのため、このページを参考にしたことによって発生したいかなる損害については、一切関知しません。また、発生した損害に対する補償も一切行ないません。
    このページを参考にして頂くことは非常に光栄なことですが、改造等についてはあくまで自己判断、自己責任でお願いします。
    Copyright (c) Masatsune Wake (2004-2005), wake@wakemasa.com