2006年05月27日

Solaris10 1/06 インストール直後の sconadm は一発で動いた件について。

sconadm で登録ができないその追調査 の件なんだけど、今回新規インストールした Solaris10 1/06 では解決されているようで。
※以前は 3/05 で悪戦苦闘してました。

# smpatch update
システムに必要なパッチを評価しています...
Failure: Cannot connect to retrieve detectors: This system is currently unregist
ered and is unable to retrieve patches from the Sun Update Connection. Please re
gister your system using the Update Manager.

# cp /usr/lib/breg/data/RegistrationProfile.properties /tmp/
# vim /tmp/RegistrationProfile.properties
... userName とか password とか。

# /usr/sbin/sconadm register -a -r /tmp/RegistrationProfile.properties
sconadm is running
Authenticating user ...
Collecting asset ...
Registering asset ...
sconadm has been completed successfully
/usr/lib/breg/basicreg.jar の中身は、
# unzip -l /usr/lib/breg/basicreg.jar | grep BasicRegCLI
  21985  10-18-05  19:10   com/sun/cns/basicreg/BasicRegCLI.class
もう BasicRegCLI.class がしっかり含まれてますな。
# smpatch update
システムに必要なパッチを評価しています...
取得されたパッチリスト...
パッチをダウンロード中 /var/sadm/spool...
com.sun.patchpro.util.Percentage@5e7020
121308-03 has been validated.
...

もぅこれでいいんじゃね?(泣

Posted by mass at 17:39 | Comments (0) | TrackBack

Solaris10 1/06 の Companion Disc が DVD only ってのはいかがなものかと。

と、何事もなかったかのように更新してみる。
細かいことは聞かない方向で。


という状況。 Total \6k なのに良く動いとる。
ところが Solaris10 初期インストールの中、 Companion Software のインストールで躓く。 1/06 から Companion Disc が DVD only になりゃぁがった。こちとら CD-ROM ドライブしか積んでねぇってんだこんちきしょう。

というわけで再起動後、 Companion Disc の ISO イメージファイルをマウントしてインストールしましたとさ。
手順については追記を参照。



lofi(7D) 、 Loopback file driver というものを使うらしい。 FreeBSD では md(4) 、 memory disk ですね。以下、 FreeBSD で mount する場合のコマンドも併記してみようかと。

# unzip sol-10-u1-companion-ga-iso.zip
Archive:  sol-10-u1-companion-ga-iso.zip
  inflating: sol-10-u1-companion-ga.iso   bad CRC 7cda0d60  (should be ffce1247)
  ↑ 何か言われてるけど気にしない方向で。

# lofiadm -a /tmp/sol-10-u1-companion-ga.iso
/dev/lofi/1
  ↑ -a で対象ファイルをブロックデバイスとして登録。絶対パスで指定!
    以後、コマンド実行後に表示されたデバイス名を使います。
  FreeBSD :
  # mdconfig -a -t vnode -f /tmp/sol-10-u1-companion-ga.iso
  md0

# lofiadm
Block Device             File
/dev/lofi/1              /export/home/mass/sol-10-u1-companion-ga.iso
  ↑ ブロックデバイスの割り当てを確認。
  FreeBSD :
  # mdconfig -l
  md0
  # mdconfig -l -u md0
  md0     vnode     900M  /tmp/sol-10-u1-companion-ga.iso

# mount -F hsfs -o ro /dev/lofi/1 /mnt
  ↑ ISO イメージなので hsfs かつ念のため ReadOnly で mount 。
  FreeBSD :
  # mount -t cd9660 -o ro /dev/md0 /mnt

# cd /mnt/Solaris_sparc/
# ./installer
...

# cd
# umount /mnt
# lofiadm -d /dev/lofi/1
  ↑ -d でブロックデバイスを削除。
  FreeBSD :
  # mdconfig -d -u 0 ← -u 0 は -u md0 でも可。

詳しくは lofiadm(1M) で。


参考リンク:
lofiadmコマンドでisoイメージをそのままマウントしてアクセスする (Solaris User)

Posted by mass at 17:14 | Comments (0) | TrackBack

2006年01月04日

Solaris10 で CLI を使った Update Connection 登録ができなかった件のだめな途中調査報告と挫けネコ。

<ぐち>
Solaris10 で sconadm を使った Sun Update Connection 登録ができない 絡みを調査してて 119107-06 を remove したら、 smpatch analyze で「必要なパッチはありません。」モードに突入してしまった。
日を置いた方がいいか? ぐんにょり。(2006/1/1 当時)
って今日やったら通りましたよ。ぐんにょり。
あれ? smpatch update が全然進まないですよ? patch 配布サーバ死んでる? もりもりぐんにょり。
</ぐち>

# smpatch remove -i 119107-06
は 120335-02 と 120776-03 が依存しているため、
# smpatch remove -i 120335-02
# smpatch remove -i 120776-03
# smpatch remove -i 119107-06
でした。

その時点で /usr/lib/breg/basicreg.jar は残ってて、その中に BasicRegCLI.class があるんですけど...
タイミング的には通りすがりさんと同じですね...
smpatch remove 前は確かに BasicRegCLI.class は無かったですよ。

なんつーか、
Sun Update Connection, System Edition 1.0.1 から取得した updateConnection-sparc.zip 内にある 119107-06 パッチの basicreg.jar 内に BasicRegCLI.class が無い。
が、さらに同 zip 内にある 120776-03 には BasicRegCLI.class が存在する。
同 zip ファイルを展開したディレクトリ直下の installUpdateConnection スクリプトを実行して Update Connection Client をインストールするわけだが、同スクリプトの適用順序をみても、 119107-06 → 120776-03 と適用される。その通りに適用されれば、 /usr/lib/breg/basicreg.jar は 120776-03 のものが配置され、問題なく BasicRegCLI.class が含まれるはず。

で、試しに Solaris10 x86 on qemu on FreeBSD な環境で updateConnection-i386.zip を入手し適用してみたのだが、当時のような状況 は再現しない。
インストール後の /usr/lib/breg/basicreg.jar 内には BasicRegCLI.class がしっかり含まれているのだ。
※ installUpdateConnection スクリプトは sparc 版とまったく同様。 diff で確認。
※ x86 版は sparc 版とパッチ ID が違う。 x86 版のパッチ ID は 119107-06 → 119108-06 、 120776-03 → 120777-03 となる。

なんでにゃ?

あーもぅだめにゃ。調査能力ないにゃ。通りすがりさんごめんにゃ。
もう疲れたにゃ...
死にたいにゃ...
だれか助けてにゃ...

Posted by mass at 00:04 | Comments (2) | TrackBack

2005年12月29日

PLAY-YAN micro はリリカルなの?

そういえば GAME BOY micro と PLAY-YAN micro を買ったんだった。
2005122901.JPG
物欲の記録として残しておこう。

※無駄に画像が多いので注意

って買ったの 10月か...

購入品目:(以下、 Amazon アソシエイトリンク)


セットモデルの方が \800 ほどお得なんですが、あえてバラで。注文した当時はセットモデルの在庫がなく、単品だと在庫があったという悲しい事態なだけだったんですが。
ちなみに PLAY-YAN micro とセットの MediaStage ですが、私のように UNIX マシンがある環境ではまったく不要でした。一部制約がありますが、 FreeBSD 環境では必要なツールを Ports から入れるだけ。詳細は後述します。詳細ってほどもないけど...
Windows 環境は知らん。

  1. ポーチの加工とか。

    2005122902.JPG

    GAME BOY micro 用のポーチ、 ゲームボーイミクロ専用 メッシュポーチミクロ ブラック です。
    一部改造してます。
    まずは見ての通り、前面部のロゴマークをとっぱらってます。
    もう一つは...

    2005122903.JPG
    ゲーム機収納時のカートリッジ側の面を写真のように開きっ放しにできるよう、ちくちくとお裁縫してみました。
    このポーチ、そのままでも PLAY-YAN micro くらいのちょっと出っ張ったカートリッジでも収納はできるのですが...

    2005122904.JPG
    このように開放状にしておくことで、イヤホンを挿しっ放しにしていても収納できるようになりました。
    これ、ぢつは割りと便利で、イヤホン抜き挿しの手間、抜き挿しによる端子の劣化を防ぐ目的もありますが、

    2005122905.JPG
    こう、イヤホンをぐるぐる巻きにして蓋をマジックテープ止めしてしまえば、イヤホンケーブルも収納できてしまうという。
    MP3 Player として使うときはケーブルの余りを巻き付ければ良いし。
    奥さん、ちょっとお得ですよっ!

  2. PLAY-YAN micro 向けの動画変換とか。
    FreeBSD で動画変換ですよ?
    Ports の multimedia/ffmpeg をインストールします。
    ただし、動画コーデックの WMV9 は未対応のようです。元ネタは DivX とかでよろしくです。

    扱う動画の音声部が MP3 だったりする場合は audio/lame も事前にインストールしておきましょう。
    なお、 PLAY-YAN micro でステレオ音声で動画を観る場合は AAC オーディオとなります。 audio/faac も事前にインストールしておきましょう。

    # cd /usr/ports/audio/lame
    # make install clean
    # cd /usr/ports/audio/faac
    # make install clean
    ほかは... なんかあったっけなぁ 。
    まぁとりあえず ffmpeg をインストールしてください。
    # cd /usr/ports/multimedia/ffmpeg
    # make install clean

    で、実際に PLAY-YAN micro 向けに動画変換するのですが。
    パラメータ多すぎで説明するのがすっごく嫌(笑
    極めたい方は
    プレイやん - MobileHackerz Knowledgebase Wiki
    を参考にしてください。 FAQ とか ffmpeg の主要オプションが日本語化されています。
    私もすっごく助かりました。感謝。

    ってだけなのもあれなので、自分用に作った変換スクリプトを置いときます。
    [play-yan.sh.txt]
    そこそこ耐性はあるはず(何

    変換した動画は SD カードに入れて。

  3. いつでもどこでもリリカルなの。
    それが PLAY-YAN micro を買った理由。

    2005122906.JPG
    1GB の SD カード 買ってラベルまで作っちゃいました!
    ラベル面はセロテープコーティング(ダサ
    一期と二期でフォントも違うんだね。

    2005122907.JPG
    リリカル、リリカル、はぁはぁ...

    2005122908.JPG
    A's カートリッジ ロード!

    2005122909.JPG
    合体しますた。

    2005122910.JPG
    「スタンバイ・レディ」わはー

    2005122911.JPG
    あぁっ、いいなぁ、もぅっ!
    ちなみにプライバシーフィルタと光線の加減で暗く青っぽくなってますが、実際はもっと色合いよく観れます。
    ホワイトバランスしくりました。
    責任は撮影技量のない私にあります。

    2005122912.JPG2005122913.JPG
    そーか、最終話のオープニングは
    闇の書 → 杖
    S2U → デュランダル
    になってたのか。

    2005122914.JPG
    ちびリインフォース かわいすぎ。
    ところで俺、こんな画質でこんなに画像ファイルアップする必要あったのか?
    ほんとはもっと綺麗なんですよっ!

    しっかし、 公式ページCharacter のページ細かいなぁ。
    はやて(通常)はやて(覚醒) で切り替えると、下部フェイスウインドウのはやての顔画像まで変わってるよ。
    ほかもこまめに更新されてるし。すげぇな。


えぇ、もぅ最高ですよ。ムービー一覧情報表示時のロードがちょっと長いかな? とか細かい気になるところはあれど、もぅねぇ、どこでもなのはが観られるってのが、なに、もぅすっげぇうれしぃっすよ。なみだちょちょぎれ死。

iPod ムービー対応版もあるけど iPod mini 持ってるから 2代目になっちゃうし、なんつーか新鮮さが、ねぇ。
GAME BOY micro と PLAY-YAN micro の組合わせでなにがうれしいって、


  • カートリッジを替えれば GBA ゲームも遊べる。
  • SD カードの入れ替えでムービープレイヤーにも MP3 プレイヤーにもなる。
    別に一枚のカードに入れてもいいんだけど。
  • 筐体サイズが小さいから、隠しながら/申し訳なさそうに観られる。
    気が小さいのでこれ重要。
  • 左手でホールドすれば十字キーですぐに音量調節/早送り巻き戻しができる。
    気が小さいので音量調節必須。
  • 液晶すげぇ綺麗だぞおぃ。

人の目が気にならないのであれば、プライバシーフィルターをはずせばすっげぇクリアな画質で観賞できます。
これは今年最高に物欲を満たしてくれた逸品ですよっ!!!

あとは GAME BOY micro でのムービーは 3時間が限度らしいので、 GAME BOY micro 用の外部バッテリがあるとうれしいかな。


ちぅわけで、これおすすめっ!


...勢いで 1GB の SD カード 5枚も買っちゃったんだけど、どうしようかな...

Posted by mass at 20:05 | Comments (0) | TrackBack

2005年12月18日

Solaris10 で smpatch update ができなくなった!

# smpatch update
システムに必要なパッチを評価しています...
Failure: Cannot connect to retrieve Database/current.zip: This system is current
ly unregistered and is unable to retrieve patches from the Sun Update Connection
. Please register your system using the Update Manager.
意訳:えーかげん Update Manager 使って Update Connection に登録しなよおまいさん。

かなーり前(およそ 3ヶ月前)からこんな状態になったまま放置しておりましたが、えーかげん気分がよろしくないわけで。
ぐるぐるとネットをさ迷った結果、どうやら Sun Update Connection とやらにツール経由でシステム登録しなければ smpatch を使ったアップデートができなくなるようです。

Solaris10 を入れてるマシン(Ultra5)はキーボードもディスプレイも接続せずに ssh でいぢくってる故に、 GUI を使用した Sun Update Manager による登録はしたくありませんでした。
CUI で登録するツールもありますが、いまいちまともに動かず。

結論から言うと、 GUI のツールを使う以外に簡単に Sun Update Connection に登録する手段はありません。


っつーわけで、こんな場合は以下のような感じで。
ちなみに前提として、 Sun Online に自分のアカウントが存在する必要があります。
ってか Solaris ダウンロードする際にアカウント登録必須だから、この時点でないなんてことは... 無くはないのか?
なんにせよ無料だから登録しておくといいYo!

  1. CUI でシステム登録しようと足掻く。
    まずは Sun Download の Product Downloads : Sun Update Connection, System Edition 1.0.1 をダウンロードしてインストールするですよ。
    # unzip updateConnection-sparc.zip
    # cd updateConnection
    # ./installUpdateConnection
    

    ほいで CUI 登録ツール用の定義ファイルを編集するですよ。
    # cp /usr/lib/breg/data/RegistrationProfile.properties /tmp
    # vim /tmp/RegistrationProfile.properties
    ----
    userName=<Sun Online Account に登録済のユーザー名>
    password=<そのパスワード>
    ----
    
    ファイル名はなんでもよいと思うです。

    いざ CUI の登録ツール sconadm で登録してみるですよ。
    # /usr/sbin/sconadm register -a -r /tmp/RegistrationProfile.properties
    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/cns/basicreg/
    BasicRegCLI
    
    あみゃあぁぁっ! なんにゃあ! これなんにゃのにゃあ!

    # file /usr/sbin/sconadm
    /usr/sbin/sconadm:      実行可能 シェル スクリプト
    
    sconadm 自体はただの sh スクリプトで、その最後に
    exec java -classpath ${MAIN_JAR} com.sun.cns.basicreg.BasicRegCLI $SUBCOMMAND ${
    ARGUMENTS}
    
    な感じで java を起動しているです。
    ${MAIN_JAR} には頭の方で /usr/lib/breg/basicreg.jar がセットされており、 .jar は zip 形式なので unzip で展開できるです。
    展開したディレクトリの中にいかにもあやしい com/sun/cns/basicreg と続くディレクトリがあり、以下には
    # cd /tmp
    # cp /usr/lib/breg/basicreg.jar .
    # unzip basicreg.jar
    # cd basicreg/com/sun/cns/basicreg
    # pwd
    /tmp/basicreg/com/sun/cns/basicreg
    # ls
    BasicReg$1.class                   TestFrame$4.class
    BasicReg$LoadTask.class            TestFrame$5.class
    BasicReg.class                     TestFrame$6.class
    BasicRegFrame$1.class              TestFrame$LanguageListener.class
    BasicRegFrame.class                TestFrame.class
    Collector.class                    adapter/
    TestFrame$1.class                  advertisement/
    TestFrame$2.class                  qa/
    TestFrame$3.class                  util/
    
    ... えーっと ...
    BasicRegCLI なんてものは無いようですよ?
      ※ find . -name "*CLI*" も無駄っ
    それとも何かっ、 BasicReg.class だか BasicReg$1.class あたりを BasicRegCLI.class かなんかにコピって zip 圧縮して配置すればいけるのかっ?
    そこまでさすのかっ?

    Sun は CUI を迫害していると、その日、私は知りました。


  2. GUI で妥協す。
    えぇい背に腹は替えられぬ、せきゅりてぃのためじゃぁ、 GUI を持てぃ。
    Solaris10 のインストール時になんでもかんでも入れさせたので X Library ももろちん入ってるですよ。
    ディスプレイも繋がってないのにどう GUI するかっつーと... もぅお分かりですねっ!
    メインで使ってる FreeBSD 機の X Server に叩き付けるですよっ!
    # setenv DISPLAY <奴のホスト名か IP アドレス>:0
    # updatemanager
    Xlib: connection to "奴:0.0" refused by server
    Xlib: No protocol specified
    
    Can't connect to X11 window server using '奴:0' as the value of the DISPLAY vari
    able.
    
    うわ、やっべ、穴あけわすれてた。

    では改めて。

    1. X Server 側設定
      以下は X Server 側で設定するです。
      ipfw などでフィルタリングしてたら以下のようなルールを追加して開放してあげるですよ。
      たいがい専用のフィルタスクリプト使ってると思うのでそこらへんは適当に。
      ipfw add pass tcp from <X Client の IP アドレス> any to <X Server(自分)の IP アドレス> 6000 setup
      
      次に X Server のアクセス制御設定を追加するですよ。
      startx に TCP を listen するオプションを付けて起動し、 xhost で許可するです。
      > startx -listen_tcp
        ...
        X が起動したら何らかの Terminal を起動して、
      > xhost + <X Client のホスト名か IP アドレス>
      <指定した X Client> being added to access control list
      

    2. X Client 側で Update Manager の起動
      さくっと起動ですよ。
      # setenv DISPLAY <X Server のホスト名か IP アドレス>:0
      # updatemanager
      
      すると...

    3. Update Manager による Sun Update Connection へのシステム登録
      2005121301.png
      「ん、そんな、いきなり...」のように、まずこのウインドウが起動するです。次のウインドウに切り替わるまで待つです。
      Ultra5 だとかなり待つですよ

      2005121302.png
      「ひゃっ、ん...」とやさしく「登録してアップデートを管理」をボタンをクリックするですよ。

      2005121303.png
      「んぅふっ、は、はぁっ、はんっ... はぁっ、はむ、ん...」とじらしながら Sun Online アカウントの「ユーザー名」と「パスワード」を入力して「次へ」をクリックするですよ。
      まだアカウント登録していない場合でも「サンオンラインアカウントの作成」からアカウント登録ができるようですよ。

      2005121304.png
      「ふぅっ、あっ、はっ、はっ、あんっ、いっ、いっ...」という段階です。
      Sun サブスクリプションキーは Sun とソフトウェアサポート契約を結んだ際に発行されるキーで、セキュリティ以外のアップデートや Sun Update Connection でリモート管理する場合云々。
      サポート契約できない貧乏人なのでセキュリティアップデートだけするですよ。
      「Sun サブスクリプションキーを入力せずに続行するか、後で入力します。」をクリックするですよ。
      さらに利用規約もまともに読まずに「契約に同意する」をチェックして「次へ」ですよ。
      こーゆー人間が詐欺に引っ掛かるのですよ。規約はしっかり読むべきですよ。

      2005121305.png
      「あぁんっ! わたしっ、わたしぃっ、送信しちゃうぅぅっ!」な感じで「完了」をクリックですよ。
      「あぁん」の鼻から抜けるような感じと 2回目の「わたしぃっ」がポイント?

      2005121306.png
      「んんんっっ! はあぁぁぁっ!
        ...
        あふ... は... わたし、送信、し、しちゃった...」で「閉じる」ですよ。

      2005121307.png
      「いや... はぁっ... あはっ、もぅそんなに... 見ないで...」という風にシステムへのアップデート適用状況のチェックが始まるですよ。
      うちの Ultra5 ではぶち切れるほど時間がかかるのでゆっくりごはんでも食べるのですよ。

      2005121308.png
      「やぁぁんっ... なに...? こんな格好... 恥かしいよぅ...」と、チェックが終わるとこのようにアップデート可能な一覧が表示されるですよ。
      ここで必要なアップデートのチェックボックスにチェックを入れて、下にある「今すぐインストール」をクリックする、らしいですよ。
      でも今回は CUI でアップデートするためにシステム登録をしただけなので、はっきり言ってこんな画面は不要なのですよ。
      即、ウインドウを閉じるです。
      「えぇぇぇぇっ!? これで終りなのっ!? ちょっと待ってこの格好な


  3. ようやく CUI からアップデート。
    # smpatch update
    
    実行ですよ。

    システムに必要なパッチを評価しています...
    取得されたパッチリスト...
    パッチをダウンロード中 /var/sadm/spool...
    com.sun.patchpro.util.Percentage@1954f89
    121308-01 has been validated.
    com.sun.patchpro.util.Percentage@1d5b89c
    119254-10 has been validated.
    
    ... 途中省略 ...
    
    NOTICE: Patch 119689-06 cannot be installed until the next system shutdown.
    NOTICE: Patch 119546-04 cannot be installed until the next system shutdown.
    119117-09 適用されました。
    121095-01 適用されました。
    119115-13 適用されました。
    119059-09 適用されました。
    /var/sadm/spool/patchpro_dnld_2005.12.13@23:39:43:JST.txt 以下へ移動しました /va
    r/sadm/spool/patchproSequester/patchpro_dnld_2005.12.13@23:39:43:JST.txt
    
    インストールポリシーによって許可されていない
    パッチの ID がファイルに書き込まれました
            /var/sadm/spool/disallowed_patch_list
    
    One or more updates that you installed requires a system shutdown to activate it
    . To initiate the system shutdown, you must use one of the following commands:
    o Power down the system - init 0 or shutdown -i 0
    o Drop to the firmware prompt - init 5 or shutdown -i 5
    o Restart the system - init 6 or shutdown -i 6
    
    無事、アップデートできたです。
    再起動が必要なアップデートがあるので、ここで再起動するですよ。
    # shutdown -g0 -y -i6
    
    shutdown 実行直後に以下のメッセージが出力されるですよ。
    Installing update 118822-23 Succeeded
    Installing update 119689-06 Succeeded
    Installing update 119546-04 Succeeded
    
    インストールできなかったアップデートがインストールされているのですよ。
    再起動後に、
    # smpatch analyze
    
    して、必要なアップデートが出力されなければ万々歳、なのですよ。


「Solaris10 smpatch」の検索ワードでいらっしゃる方がおられるようで、わたしと同じように CUI で頑張っていた方なのかな、と存じます。
まったく CUI では解決できませんでした。軟弱者ですいません。
Open Source Magazine 来月号(2006/2)の「のに子のチャレンジざわ〜るど」で Update Manager に関する記事があるようなので、より詳細な内容はそちらを読むとよいかも。


... しっかし GUI 子ちゃんはあのあとどうなんのかなぁ...


参考リンク:
Sun Update Manager 1.0 管理ガイド
  • 第 2 章 Sun Update Connection ソフトウェアのインストール
  • 第 3 章 - Sun Update Manager によるシステムの登録

    Posted by mass at 00:10 | Comments (3) | TrackBack
  • 2005年12月10日

    FreeBSD 4.11-STABLE → 6.0-RELEASE したメモ。

    4.11-STABLE な自宅のサーバ様を、 400GB の HDD に移し替えるついでに 6.0-RELEASE に移行したですよ。
      ※当作業は 12/3 〜 4 にかけて行いました。

    移行の流れは、

    1. 適当なマシン(仮サーバ)に新 HDD を接続し 6.0-RELEASE をインストゥール(巻き舌)
    2. 現行サーバのデータを仮サーバにリモートバックアップ
    3. 仮サーバで環境構築
    4. 仮サーバで構築した新 HDD を現行サーバの旧 HDD と交換し、現行サーバ運用開始
    てなもんです。



    1. 適当なマシン(仮サーバ)に新 HDD を接続し 6.0-RELEASE をインストゥール(巻き舌)
      設定はバックアップデータから拾うので、インストールはとにかくシンプルに。

      6.0-RELEASE-i386-disc1.iso を CD-R に焼くですよ。 Windows で焼く私は弱者ですよ。
      CD-R を CD ドライヴに突っ込んで起動するですよ。
      sysinstall Main Menu は
      Express      Begin a quick installation (for experts)
      
      を選択してがりがりいくですよ。

      FreeBSD Disklabel Editor で、
      Disk: ad0       Partition name: ad0s1   Free: 0 blocks (0MB)
      
      Part      Mount          Size Newfs   Part      Mount          Size Newfs
      ----      -----          ---- -----   ----      -----          ---- -----
      ad0s1a    /             512MB UFS2   Y
      ad0s1b    swap         1024MB SWAP
      ad0s1d    /var         1024MB UFS2+S Y
      ad0s1e    /tmp          512MB UFS2+S Y
      ad0s1f    /usr        20480MB UFS2+S Y
      ad0s1g    /share        349GB UFS2+S Y
      
      こんな感じに。

      FreeBSD Configuration Menu とかは、
      Root Password    Set the system manager's password
      User Management  Add user and group information
      Time Zone        Set which time zone you're in
      Networking       Configure additional network services
      
      これらだけ設定ですよ。
      Networking は自分の IP アドレスだけ設定すればいいので、内部メニューは Interfaces のみ使用。
      仮サーバとして動作させるので、間違っても現行サーバの IP アドレスなど割り当てしないように...
      細かい設定は現行サーバから持ってくるですよ。

      そしてトップメニューから [X Exit Install] → 再起動。


    2. 現行サーバのデータを仮サーバにリモートバックアップ
      仮サーバのコンソールより:
      # cd /etc/ssh/
      # vi sshd_config
      ----
      PermitRootLogin yes
      PasswordAuthentication yes
      ----
      
      リモートバックアップを簡単にするため、リモートからの root ユーザーログインと Unix パスワード認証を許可。もろちん最後には戻しますが。
      編集後、 sshd を再起動ですよ。
      # /etc/rc.d/sshd restart
      

      現行サーバのコンソールより:
      # tar -C / -cpf - . | ssh root@<仮サーバ> tar -C <転送先DIR> -xpf -
      
      あれこれ考えるのがだるかったから、全部転送してみたよ!
      z オプションを入れて圧縮したほうがよかったかもしれないですよ... 全工程の半分以上がこの転送待ちだったし...


    3. 仮サーバで環境構築
      1. キーマップの変更(左 Ctrl と Caps Lock の入れ替え)
        これやんないともうだめなのですよ。
        # cd /usr/share/syscons/keymaps/
        # cp us.iso.kbd us.isox.kbd
        # chmod +w us.isox.kbd
        # vi us.isox.kbd
        # chmod -w us.isox.kbd
        # diff -u us.iso.kbd us.isox.kbd
        --- us.iso.kbd  Thu Nov  3 17:11:13 2005
        +++ us.isox.kbd Sun Dec  4 12:34:05 2005
        @@ -32,7 +32,7 @@
           026   '['    '{'    esc    esc    '['    '{'    esc    esc     O
           027   ']'    '}'    gs     gs     ']'    '}'    gs     gs      O
           028   cr     cr     nl     nl     cr     cr     nl     nl      O
        -  029   lctrl  lctrl  lctrl  lctrl  lctrl  lctrl  lctrl  lctrl   O
        +  029   clock  clock  clock  clock  clock  clock  clock  clock   O
           030   'a'    'A'    soh    soh    'a'    'A'    soh    soh     C
           031   's'    'S'    dc3    dc3    's'    'S'    dc3    dc3     C
           032   'd'    'D'    eot    eot    'd'    'D'    eot    eot     C
        @@ -61,7 +61,7 @@
           055   '*'    '*'    '*'    '*'    '*'    '*'    '*'    '*'     O
           056   lalt   lalt   lalt   lalt   lalt   lalt   lalt   lalt    O
           057   ' '    ' '    nul    ' '    ' '    ' '    susp   ' '     O
        -  058   clock  clock  clock  clock  clock  clock  clock  clock   O
        +  058   lctrl  lctrl  lctrl  lctrl  lctrl  lctrl  lctrl  lctrl   O
           059   fkey01 fkey13 fkey25 fkey37 scr01  scr11  scr01  scr11   O
           060   fkey02 fkey14 fkey26 fkey38 scr02  scr12  scr02  scr12   O
           061   fkey03 fkey15 fkey27 fkey39 scr03  scr13  scr03  scr13   O
        
        /etc/rc.conf に以下のように追記ですよ。
        keymap="us.isox"
        

      2. /etc の更新
        # cp -Rp /etc /etc.orig
        
        バックアップしとくですよ(^^;
        以下、
        # diff -r <バックアップDIR>/etc /etc | less
        
        の結果を見ながら、「あーこんなこともしてたねー」と昔を懐かしみつつ更新ですよ。
        うちの場合、
        /etc
          aliases → 編集後、 newaliases 実行
          crontab → 再起動前に編集すべし
          exports
          ftpusers
          group
          hosts
          hosts.allow
          hosts.lpd
          inetd.conf
          ipsec.conf ← racoon で遊んでたなごり
          make.conf
          /mail
            local-host-names
          /namedb
            sh make-localhost ← 実行
            named.conf
            /master
              ※各ゾーンファイル更新。ローカルな DNS ですよ。
          natd.conf
          newsyslog.conf
          ntp.conf
          passwd & master.passwd ← vipw 使用
          periodic.conf
          /ppp
            ppp.conf ← PPPoE 関連
          printcap
          rc.conf
          rc.firewall.local ← また見直しが入ってかなり更新
          resolv.conf
          services
          /ssh
            sshd_config
          /supfile/*
          syslog.conf
        
        更新対象はこんだけですよ。

      3. /usr/local の更新
        そのままコピー! つかむしろ移動! ですよ。
        # mv <バックアップDIR>/usr/local /usr
        

      4. /var の更新
        /var/db/pkg/ 、 /var/db/ports/ はそのまま持ってくると portupgrade でいきなり利用可能みたいですよ。
        以下、現行サーバからそのまま持ってきたもの。
        /var/db/pkg/
        /var/db/ports/
        /var/db/samba/
        /var/log/ ← 間違えて全部上書きしちゃった♥
        /var/spool/samba/
        

      5. その他
        • /var/log/ 以下のログを使用する独自スクリプトの修正
          newsyslog.conf にてログローテート時の保存形式が bzip2 化したことに伴い、独自スクリプト内の zcat → bzcat 修正ですよ。

        • 共有ディレクトリ構成変更のため、 /usr/local/etc/smb.conf の修正
          ですよ。

        • 現行サーバは SMP のため、カーネル再構築
          # cd /sys/i386/conf/
          # cp GENERIC HOGEHOGE
          # vi HOGEHOGE
            ↑ SMP 以外にも NETGRAPH とか IPFIREWALL とか。
          # cd /usr/src/
          # make buildkernel KERNCONF=hogehoge
          # make installkernel KERNCONF=hogehoge
          

        • portupgrade -fa ( Ports インストールソフトの全更新)
          だって 4.X 時代のライブラリ読もうとして片っ端からこけるのですよ(泣
          ちまちま ln するよりはいっそのこと綺麗に、と 6.X でリコンパイルさせたですよ(汗


    4. 仮サーバで構築した新 HDD を現行サーバの旧 HDD と交換し、現行サーバ運用開始
      以下、運用開始後に発生した問題点など、ですよ。

      • /usr/local/etc/mrtg/ 以下の設定ファイルの修正
        サーバ自身のリソース変移をグラフ化してるのですが...
        .1.3.6.1.4.1.2021.4 以下が見られなくなり、メモリ残量(Memory, Swap)がわからなくなってしまったですよ...
        .1.3.6.1.4.1.2021.11 以下も見られなくなって CPU 使用率(user, system)も取れなくなってしまったですよ...
        CPU 使用率は .1.3.6.1.4.1.2021.10.1.5.2 〜 3 (5分、15分統計)で代用。
        メモリは... もう知らないですよ。
        ほかにも収集対象が増えたり減ったりしたので、 mrtg の html index ページを更新ですよ。
        # indexmaker --width 400 --height 108 /usr/local/etc/mrtg/<hogehoge>.cfg > <DocumentRoot>/mrtg/<hogehoge>.html
        

      • /usr/local/etc/dhcpd.conf の修正
        サーバのホスト名変えてたので
        option domain-name-servers <hogehoge>
        
        あたりを修正ですよ。
        旧ホスト名も DNS で CNAME 登録してるからいいっちゃぁいいんですけど。

      • /etc/ntp.conf の修正
        サーバ側で
        restrict xxx.xxx.xxx.0 mask 255.255.255.0 nomodify notrust notrap
        
        のような記述をしていた場合、なんでか同サブネット内のクライアントから時刻同期ができなくなったのですよ。
        restrict xxx.xxx.xxx.0 mask 255.255.255.0
        
        のように nomodify notrust notrap を削除し、 /etc/rc.d/ntpd restart することで他のクライアントからの時刻同期が可能になったですよ。

      • /boot/loader.conf の修正
        autoboot_delay="3"
        
        ブートメニューのタイムアウト値はいつもこれですよ。


    ってな感じで FreeBSD メジャーバージョンアップやってみましたですよ。
    想定通り、構築済の HDD に交換してからの調整にかなり手間取ったですよ(笑
    つか、一台にいろいろやらせすぎ。ですよ。
    詳細設計書がない場合に完璧な手順を構築するなら、
    # find / -ls
    
    を印刷してしらみ潰しにチェックしてから手順書を起こすのでしょうか。
    んなんするかっ! 気合いぢゃっ!
    まぁ、 OS のアップデートにトラブルはつきものですよっ! ってことですよ。

    /etc/rc.d 機構ってやっぱ使いやすいなぁ、と思った休日でした。

    Posted by mass at 13:50 | Comments (0) | TrackBack

    2005年11月23日

    Solaris10 の PosgreSQL を 8.0.4 → 8.1.0 へ上げてみたりしたメモ。

    あたらし物好きなので上げてみました。

    8.1.0 ビルドまでの手順は Solaris10 に PostgreSQL 8.0.3 をインストールするメモ(そいえば 8.0.4 に上げてたなぁ)の通りで。
    gcc -shared がらみで src/Makefile.shlib を編集するのも同様に。
    gmake でビルド完了までやっておきましょう。

    では、アップグレード前に以下の作業を。
    ついでに 前回 にはない設定を入れてみたりしてるけど気にしなーい。

    # /etc/init.d/snort stop
    
    # su - postgres
    > pwd
    /usr/local/pgsql
    
    > pg_dumpall > bkup_pg804.db
    > exit
    # /etc/init.d/postgresql stop
    Stopping PostgreSQL: ok
    
    # cd /usr/local/
    # mv pgsql pgsql.804
    
    現状は Snort でしか使ってないので、まずは Snort デーモンを止め。
    postgres ユーザーでデータベースバックアップ。したら PostgreSQL 止め。
    して、PostgreSQL 8.0.4 のディレクトリは別名で退避。
    今回は /usr/local/pgsql/ → /usr/local/pgsql.804/ とすー。
    # cd ~/src/postgresql-8.1.0/
    # gmake install
    
    で、いきなり 8.1.0 インストールしちゃいましゅた。
    # cd /usr/local/pgsql
    # cp -p ../pgsql.804/.cshrc .
    # chown -R postgres:postgres /usr/local/pgsql
    
    # su - postgres
    > initdb -D /usr/local/pgsql/data -E EUC_JP
    
    前バージョンで使用していた postgres ユーザーの .cshrc を戻して /usr/local/pgsql/ 以下の owner/group を変更。
    して、 initdb 。
    > cd data
    > vi postgresql.conf
    ----
    listen_addresses = '<my hostname>'
    stats_start_collector = on
    stats_row_level = on
    autovacuum = on
    ----
    
    > vi pg_hba.conf
    ----
    # IPv4 remote connections for snort:
    host  snort    snortusr  xxx.xxx.xxx.xxx/32  md5
    ----
    
    initdb で生成された data ディレクトリの設定ファイルを編集。
    なにげに postgresql.conf に 8.1.0 で導入された autovacuum デーモンの設定を入れてみたりとか。
    これで cron に頼らず、うきうきばきゅーむ/わくわくおぷてぃまいずなはず。
    > exit
    # /etc/init.d/postgresql start
    Starting PostgreSQL: ok
    
    # su - postgres
    > psql -f ../pgsql.804/bkup_pg804.db
    
    PostgreSQL を開始。して、データベースリストア。
    さぁっ、無事にリストアできたか適当に確認するのよっ。てなもんだ。
    > psql snort
    Welcome to psql 8.1.0, the PostgreSQL interactive terminal.
    
    Type: \copyright for distribution terms
        \h for help with SQL commands
        \? for help with psql commands
        \g or terminate with semicolon to execute query
        \q to quit
    
    snort=# SELECT * FROM event ;
    ...
    snort=# \q
    
    Snort 用データベースの event テーブルしか見てないけど。
    > vacuumdb -a -z
    
    リストアしたなら VACUUM よっ。 -z で統計情報を更新するのよっ。
    > exit
    # /etc/init.d/snort start
    
    Snort を開始するのよっ。
    ってな感じで、ふつーにアップグレード完了。


    で。
    Snort のイベントは BASE 使って見てまふよ。
    もー setup 時に BASE 用のデータベースが生成できないってエラーが出たりとかかなりずたぼろでしたが、そこらへんてけとーにきりぬけて無事見れとります。落ち着いたらメモ書くべかなぁ。


    参考リンク: ※全て 日本 PostgreSQL ユーザー会PostgreSQL 8.1.0文書 より
    第23章バックアップとリストア
    第22章定常的なデータベース保守作業
    17.9. 自動Vacuum

    おまけリンク:
    SQL パワー - SQL チューニング ("Hiz" Laboratory)
    analyze ぢぅやぅ。

    Posted by mass at 02:04 | Comments (0) | TrackBack

    2005年10月09日

    Oinkmaster で Snort ルールを自動更新さす! on Solaris10 なメモなのですよ。

    相変わらずのまったり更新でもはや目も当てられないのですが根本からやる気のない人間なのでしょうがないのですよ!!

    さて、 前回 は Snort with PostgreSQL を動作させるところまでやったのですよ。
    だがしかし、今世間のネットワークは常に新たな脆弱性、それに対する攻撃が生まれているのですよ。それが、ぢ・いんたーねっつ。それらの攻撃に対応するため、 Snort のルールも常に更新されているのですよ。
    今回はそんな常に更新される Snort のルールを、自動でダウンロードして更新してくれる Oinkmaster というものを入れてみるのですよ。

    無駄な前置き書いちゃった! てへっ♥



    またまた適当にダウンロードしてインストールするのですよ。

    > wget http://jaist.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-1.2.tar.gz
    > gzcat oinkmaster-1.2.tar.gz | tar xf -
    > cd oinkmaster-1.2/
    > su
    Password:
    # cp oinkmaster.pl /usr/local/bin/
    # cp oinkmaster.conf /usr/local/etc/
    

    Oinkmaster の設定ファイルをいじるのですよ。
    # cd /usr/local/etc/
    # vim oinkmaster.conf
    
    今回、 Snort 公式の registered user release なルール(無料だけどユーザー登録が必要、 subscription release より 5日遅れて更新されるらしい)と Bleeding Snort のルールを自動更新させるのですよ。
    公式の subscription release なルールはお金無いので使用できないのですよ。
    registered user release なルールを取得する場合は snort 本家Snort.org Registration でアカウント登録をするのですよ。
    登録が完了すると送付されるメールにパスワードが記載されているのですよ。それを使ってログインして ユーザーページ 内の Oink Code 欄にある「Get Code」ボタンを押せば、その場で Oink Code が交付されるのですよ。
    その Oink Code を URL 中に貼り付けるだけなのですよ。
    url = http://www.snort.org/pub-bin/oinkmaster.cgi/<Oink Code>/snortrules-snapshot-2.4.tar.gz
    url = http://www.bleedingsnort.com/bleeding.rules.tar.gz
    
    公式ルールの 〜〜_s.tar.gz なファイルは subscription release なので、お金が必要なのですよ。せいぜい気をつけるのですよ。
    なお、 oinkmaster.pl から gzip, tar, wget コマンドが呼び出されるので、同コマンドのパスが同 oinkmaster.conf の
    path = /bin:/usr/bin:/usr/local/bin
    
    に含まれていない場合はてきとーに path の行末に追加するのですよ。
    その他にもルールの無効化やルールの文字列置換なども、同設定ファイルに記述すればポリシーチューニングまで自動化できるのですよ。わくわくなのですよ。

    まぁチューニングは置いといて、ルールを手動で更新させてみるのですよ。
    # cd /usr/local/snort/rules/
    # cp sid-msg.map.orig sid-msg.map
      ↑ 退避していた公式ルールのみを含むマップに戻すのですよ。
        Oinkmaster は既存と新規の sid-msg.map から、新規追加/更新/削除されたルールをチェックして提示してくれるのですよ。
        でも、 前回導入時 に公式の sid-msg.map と Bleeding Snort の bleeding-sid-msg.map を結合していたのですが、
        Oinkmaster 実行によってダウンロードされる公式の sid-msg.map には Bleeding Snort のルールなんか含まれるわけないのですよ。
        そのままにすると Oinkmaster 実行時に「これこれのルールが Remove されちゃいましゅた!」というメッセージが
        Bleeding Snort のルールの件数だけ(1000 件ほど)出力されるのですよ。
        それを回避するための手順、なのですよ。
        本当は Oinkmaster で Bleeding Snort の bleeding-sid-msg.map もチェックしてくれるとうれしいのですよ。
        ふぁぁぁあっ、こまんどのちゅうしゃくなのにしゅごくながくなっちゃってましゅぅぅ! 
    # mkdir _backup
    # /usr/local/bin/oinkmaster.pl -o /usr/local/snort/rules -b /usr/local/snort/rules/_backup
    # cp sid-msg.map sid-msg.map.orig
    # cat sid-msg.map.orig bleeding-sid-msg.map | sort -un > sid-msg.map
      ↑ 公式と Bleeding Snort の sid-msg.map を結合するのですよ。
    
    snort を再起動してルールを読み直しさせるのですよ。
    # /etc/init.d/snort restart
    

    ルール更新を cron で自動化できるようにスクリプトを作るのですよ。
    #!/bin/sh
    
    BIN="oinkmaster.pl"
    PROG="/usr/local/bin/${BIN}"
    RULEDIR="/usr/local/snort/rules"
    BKUPDIR="${RULEDIR}/_backup"
    FLAG="-o $RULEDIR -b $BKUPDIR"
    
    DIFFCHK=0
    
    test ! -d $RULEDIR && echo "Nothing $RULEDIR directory, aborted." >&2 && exit
    
    test ! -d $BKUPDIR && mkdir $BKUPDIR
    cd $RULEDIR
    test -f sid-msg.map.orig && cp sid-msg.map.orig sid-msg.map
    test -f bleeding-sid-msg.map && cp bleeding-sid-msg.map bleeding-sid-msg.map.orig
    
    $PROG $FLAG
    
    diff sid-msg.map.orig sid-msg.map > /dev/null || DIFFCHK=1
    diff bleeding-sid-msg.map.orig bleeding-sid-msg.map > /dev/null || DIFFCHK=1
    cp sid-msg.map sid-msg.map.orig
    cat sid-msg.map.orig bleeding-sid-msg.map | sort -un > sid-msg.map
    
    test $DIFFCHK -eq 1 && /etc/init.d/snort restart && sleep 20
    /etc/init.d/snort status
    
    最後に snort の再起動とステータス確認もさせているのですよ。
    ルールの更新があった場合は snort が起動しない場合もまれにあるらしいので気をつけるのですよ(特に Bleeding Snort)。

    スクリプトができたら適当に cron 登録するのですよ。時間は適当なのですよ。
    Oinkmaster は実行のたびに各ルールアーカイブを丸ごとダウンロードしてしまうので、負荷をかけないように一日一回程度にしておくのですよ。
    # crontab -e
    
    0 19 * * * /usr/local/bin/oinkmaster.sh
    
    ルールの更新がどれくらいの頻度であるのかまだ良くわかっていないのですが、最悪でも一日一回程度の snort 再起動なら良いかもと思ったりしているのですよ。

    ぷはぁ、これでいつでもルールは最新なのですよ。
    そろそろいいかげんに解析ツールを入れないと IDS の意味が全くないのですよ。
    でも解析ツールもいろいろあって迷ってしまうのですよ。
    というわけで、次回のメモはいつになるか相変わらずわからないのですよ。


    参考リンク:
    Oinkmaster
    にわか鯖管のメモ - Bleedingsnort Rules
    ※たすかりましゅた、っていうかほとんどそのままつかっちゃいましゅた、ご、ごめ、ごめんなしゃいぃぃ! あみゃ(以下自粛


    ---- 10/10 更新
    oinkmaster.sh スクリプト間違ってた(汗

    Posted by mass at 13:21 | Comments (0) | TrackBack

    2005年09月22日

    Solaris10 に Snort 2.4.1 で PostgreSQL 連携なメモなのですよ。

    PostgreSQL がインストールされていることが前提なのですよ。
    良かったら先に オレオレ Solaris10 に PostgreSQL 8.0.3 をインストールするメモ を読んであげてください、なのですよ。

    snort ご本家 からソースアーカイブを持ってくるですよ。

    > wget http://www.snort.org/dl/current/snort-2.4.1.tar.gz
    > gzcat snort-2.4.1.tar.gz | tar xf -
    > cd snort-2.4.1/
    > pwd
    /export/home/mass/src/snort-2.4.1
    

    以下の環境変数を設定しておくのですよ。
    setenv  LD_LIBRARY_PATH "/usr/local/lib:/usr/local/pgsql/lib:/opt/sfw/lib:/usr/sfw/lib:/usr/lib:/lib"
    setenv  LDFLAGS         "-L/usr/local/lib:-L/usr/local/pgsql/lib:-L/opt/sfw/lib:-L/usr/sfw/lib:-L/usr/lib:-L/lib"
    

    てけとーに build して install するですよ。
    prefix は /usr/local/snort としてみたのですよ。
    > ./configure --prefix=/usr/local/snort --with-snmp \
    --with-postgresql=/usr/local/pgsql --with-libpq-includes=/usr/local/pgsql/include \
    --with-libpq-libraries=/usr/local/pgsql/lib CFLAGS='-O3 -pipe -mcpu=v9'
    > make
    > make check
    > su
    Password:
    # make install
    

    さっそく packet dump mode で動かしてみるのですよ。
    Solaris10 の Companion CD とかからフルインストールしてると Ver. 2.0.0 の snort とかが /opt/sfw/bin に入っているのでちぅいなのですよ。
    初回に snort -V は必須なのですよ。
    # rehash
    # snort -V
    # snort -dev -i hme0
    
    てきとーに ping とかしてみてキャプチャできてれば OK ! ですよ。

    snort 用のデータベースを作るのですよ。
    snort のソースアーカイブに各 RDBMS 用の SQL スクリプトが同梱されているので、それを流し込めばいいのですよ。
    # pwd
    /export/home/mass/src/snort-2.4.1
    # cp schemas/create_postgresql ~postgres/
    # su - portgres
    > createdb snort
    > psql snort < create_postgresql
    > psql snort
      ...messages...
    snort=# \d
                             List of relations
     Schema |                Name                |   Type   |  Owner
    --------+------------------------------------+----------+----------
     public | data                               | table    | postgres
     public | detail                             | table    | postgres
     public | encoding                           | table    | postgres
     public | event                              | table    | postgres
     public | icmphdr                            | table    | postgres
     public | iphdr                              | table    | postgres
     public | opt                                | table    | postgres
     public | reference                          | table    | postgres
     public | reference_ref_id_seq               | sequence | postgres
     public | reference_system                   | table    | postgres
     public | reference_system_ref_system_id_seq | sequence | postgres
     public | schema                             | table    | postgres
     public | sensor                             | table    | postgres
     public | sensor_sid_seq                     | sequence | postgres
     public | sig_class                          | table    | postgres
     public | sig_class_sig_class_id_seq         | sequence | postgres
     public | sig_reference                      | table    | postgres
     public | signature                          | table    | postgres
     public | signature_sig_id_seq               | sequence | postgres
     public | tcphdr                             | table    | postgres
     public | udphdr                             | table    | postgres
    (21 rows)
    
    snort=#
    
    table などもろもろが登録されていることをしっかとその目で確認するのですよ。

    snort データベース専用のユーザー snortusr を登録するのですよ。
    ユーザー名はもうドキュメントそのままに。
    snort=# CREATE USER snortusr WITH PASSWORD 'hogehoge';
    CREATE USER
    
    このままでは snortusr から snort データベースに対して一切権限がなく、 SELECT す らもできない状態なので、 snort データベースの各 table / sequence に対して必要な 権限を設定してゆくのですよ。
    ここで同梱のドキュメント(doc/README.database)通りにやってみると、
    snort=# grant INSERT,SELECT on snort.* to snortusr@localhost;
    ERROR:  syntax error at or near "to" at character 32
    LINE 1: grant INSERT,SELECT on snort.* to snortusr@localhost;
                                           ^
    
    と syntax error になるのですよ。ふざけるなですよ。
    ここは
    snort=# \q
    
    \q でおとなしく引き下がるのですよ。

    ここで力業スクリプトの登場ですよ。
    #!/bin/sh
    
    for i in `psql -c "\d" snort | grep "^ public" | awk '{ print $3 }'`; do
      psql -c "GRANT INSERT, SELECT ON $i TO snortusr;" snort > /dev/null
      if [ -n "`echo $i | egrep '^sensor$|_seq$'`" ]; then
        psql -c "GRANT UPDATE ON $i TO snortusr;" snort > /dev/null
      fi
    done
    
    psql で table などを一覧して、さらに psql で GRANT を一回一回実行ですよ。しゅごい効率悪しゅぎ、ですよ。
    やってることがわかっていただければそれでいいのですよ。
    上記スクリプトを grant_snortdb.sh とか適当に保存して、
    > sh grant_snortdb.sh
    
    ちょっとだけ時間がかかりますが、プロンプトが帰ってくるのですよ。
    権限が正しく設定されたか psql 上から確認するのですよ。
    > psql snort
      ...messages...
    snort=# \z
                                       Access privileges for database "snort"
     Schema |                Name                |   Type   |                 Access privileges
    --------+------------------------------------+----------+---------------------------------------------------
     public | data                               | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | detail                             | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | encoding                           | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | event                              | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | icmphdr                            | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | iphdr                              | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | opt                                | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | reference                          | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | reference_ref_id_seq               | sequence | {postgres=arwdRxt/postgres,snortusr=arw/postgres}
     public | reference_system                   | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | reference_system_ref_system_id_seq | sequence | {postgres=arwdRxt/postgres,snortusr=arw/postgres}
     public | schema                             | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | sensor                             | table    | {postgres=arwdRxt/postgres,snortusr=arw/postgres}
     public | sensor_sid_seq                     | sequence | {postgres=arwdRxt/postgres,snortusr=arw/postgres}
     public | sig_class                          | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | sig_class_sig_class_id_seq         | sequence | {postgres=arwdRxt/postgres,snortusr=arw/postgres}
     public | sig_reference                      | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | signature                          | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | signature_sig_id_seq               | sequence | {postgres=arwdRxt/postgres,snortusr=arw/postgres}
     public | tcphdr                             | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
     public | udphdr                             | table    | {postgres=arwdRxt/postgres,snortusr=ar/postgres}
    (21 rows)
    
    snort=#
    
    Access privileges フィールドの snortusr を確認するのですよ。
    ほとんどの table が以下のようになってるはずですよ。
    snortusr=ar/postgres
    
    snortusr に対して、「a : INSERT(append)」「r : SELECT(read)」の権限を postgres ユーザーが設定したよ、という意味ですよ。
    あと、 sensor table と全ての sequence が以下のようになってるはずですよ。
    snortusr=arw/postgres
    
    これは a, r に加えて、「w : UPDATE(write)」の権限も設定されているのですよ。
    名前の末尾に _seq と付くもの(sequence)は UPDATE 権限が必要なようですよ。動作確認したときに sequence に a, r しか設定していなくて snort がエラー吐きまくってし ばらく苦労したのは秘密ですよ。

    権限については PostgreSQL 8.0.3 文書 - GRANT ( 日本 PostgreSQL ユーザ会) に詳しく記載されているのですよ。

    さて、データベースの設定も済んだので snort の設定に戻るのですよ。
    snort=# \q
    > exit
    
    psql を \q で終了し、 postgres ユーザーも終了ですよ。

    ソースアーカイブ同梱の etc 以下の設定ファイル群をコピーですよ。
    # pwd
    /export/home/mass/src/snort-2.4.1
    # cd etc
    # ls | grep -v Makefile | xargs -n 1 -I {} cp {} /usr/local/snort/etc/
    

    snort 公式のルールセットを取得して展開するですよ。 VRT ライセンスだかなんだかややこしいことになってるので、無難な unregistered user release を使うことになるのですよ。
    /usr/local/snort/rules 以下に展開ですよ。
    # cd /usr/local/snort
    # wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_pr/snortrules-pr-2.4.tar.gz
    # gzcat snortrules-pr-2.4.tar.gz | tar xf -
    
    今度は the Bleeding Edge of Snort のルールセットをゲッツするですよ。
    同じく /usr/local/snort/rules 以下に展開するのですよ。
    # pwd
    /usr/local/snort
    # wget http://www.bleedingsnort.com/bleeding.rules.tar.gz
    # gzcat bleeding.rules.tar.gz | tar xf -
    
    展開したら公式ルールと Bleeding Snort の sid-msg.map を結合するのですよ。
    # cd /usr/local/snort/rules/
    # cp sid-msg.map sid-msg.map.orig
    # cat bleeding-sid-msg.map sid-msg.map.orig | sort -n > sid-msg.map
    

    ようやく snort.conf をいぢるのですよ。
    はぢめての snort なのでとにかく初期設定のまま、 Bleeding Snort のルールを有効にしつつ PostgreSQL へログを吐き出しちゃったりする設定なんかを書いちゃったりなんかするのですよ。
    # cd /usr/local/snort/etc/
    # vim snort.conf
    
    # ---- conf ファイル内のコメントを適当に読みつつ以下を追加ですよ。
    # Bleeding Snort variables
    var SSH_PORTS 22
    var SSH_CLIENT_HOSTS any
    var SSH_SERVER_HOSTS any
    
    # Bleeding Snort rules
    include $RULE_PATH/bleeding-attack_response.rules
    include $RULE_PATH/bleeding-custom.rules
    include $RULE_PATH/bleeding-dos.rules
    include $RULE_PATH/bleeding-exploit.rules
    include $RULE_PATH/bleeding-inappropriate.rules
    include $RULE_PATH/bleeding-malware.rules
    include $RULE_PATH/bleeding-p2p.rules
    include $RULE_PATH/bleeding-policy.rules
    include $RULE_PATH/bleeding-scan.rules
    include $RULE_PATH/bleeding-virus.rules
    inclode $RULE_PATH/bleeding-web.rules
    
    output database: log, postgresql, user=snortusr dbname=snort password=hogehoge
    
    snort.conf 自体は上記の通り DB パスワードも記述されているので、一般ユーザーに閲覧できないよう read 権限を絞っちゃうのですよ。ギュッとねっ!
    # chmod go-r snort.conf
    # env LANG=C ls -l snort.conf
    -rw-------   1 root     root       30203 Sep 20 00:40 snort.conf
    

    snort プロセス用のユーザー & グループを作るのですよ。
    危険なネットワーク域を扱うプロセスは専用ユーザーで動かすのが安全なのですよ。
    # groupadd -g 48 snort
    # useradd -d /usr/local/snort -g snort -u 48 snort
    # vipw
    snort:x:48:48::/usr/local/snort:
      ↑ snort ユーザーのシェルを消去。 Solaris の流儀?
    

    snort 用のログディレクトリを作るのですよ。
    作らないとぶーたれるはず。
    # mkdir /var/log/snort
    # chown snort:snort /var/log/snort
    

    ひととおり設定はできたのですよ。いざ NIDS モードで起動するのですよ。
    # snort -u snort -g snort -deD -k none -i hme0 -c /usr/local/snort/etc/snort.conf
    
    "-i hme0" の hme0 は適宜自分が観測したいインターフェイス名で置き換えるのですよ。
    snort.conf で "output database: log, ..." な設定をしていると、 /var/log/snort/ 以下に alert ファイルが作成され、検知したアラートがテキスト化されて追記されてゆくのですよ。 PostgreSQL の snort データベースにも記録されているのですが、まずはこのファイルで検知されているか確認するのですよ。
    snort データベースへの記録状況は "psql snort" して適当に "SELECT * FROM event;" とかやってみて確認するのですよ。
    ちなみに snort.conf のパーミッションを root:root の 600 にしてるのですが、 snort プロセス起動時は root 権限で起動して snort.conf を読み込んだ後、ほどなくして snort ユーザー権限に移行するようなので、 Permission denied で落ちる心配はないようなのですよ。

    もしここまで来て snort がまともに動かないなどといった場合は適当になんとかするのですよ。ちなみに Version 2.4.0 はそこそこ signal 11 とかでこけてた気がするのですよ。

    さて、ですよ。
    なんとなくまともに動いているような雰囲気を醸し出すようになったら、 rc スクリプトを登録するのですよ。
    うちは Quad Fast Ethernet NIC自作 Ether TAP をかまして、
    2005092201.png
    のような構成にしているため、 snort の監視対象インターフェイスが 4つになるのです よ。でも Solaris 上では "-i any" のような指定は却下(Linux だと OK?)のため、デ ーモンモードの snort を 4つ動かすことになるのですよ。
    rc スクリプトは以下のようになるのですよ。
    #!/bin/sh
    
    NAME="snort"
    CONF_FILE=/usr/local/snort/etc/snort.conf
    
    BIN="snort"
    PROG="/usr/local/snort/bin/${BIN}"
    FLAG="-u snort -g snort -deD -k none -c ${CONF_FILE}"
    
    #
    # if changes this variable, change "net_detect()" function
    # and "MAIN SWITCH".
    IF_EXT="ife0 ife1"
    IF_DMZ="ife2 ife3"
    IF_ALL="$IF_EXT $IF_DMZ"
    
    LD_LIBRARY_PATH=/usr/local/lib:/usr/local/pgsql/lib:/opt/sfw/lib:/usr/sfw/lib:/u
    sr/lib:/lib
    export LD_LIBRARY_PATH
    
    #
    # Start snort
    start() {
        for IF in `eval echo \\$IF_${ARGS}`; do
            proc_detect
            if [ -n "$PID" ]; then
                echo "$NAME on $IF[$NET] still running. PIDs: $PID"
            elif [ -f $CONF_FILE -a -x $PROG ]; then
                $PROG -i $IF $FLAG > /dev/null 2>&1
                proc_detect
                echo "$NAME on $IF[$NET] starting. PIDs: $PID"
            fi
        done
    }
    
    #
    # Stop snort
    stop() {
        for IF in `eval echo \\$IF_${ARGS}`; do
            proc_detect
            if [ -z "$PID" ]; then
                echo "$NAME on $IF[$NET] not running."
            else
                kill -TERM ${PID}
                echo "$NAME on $IF[$NET] terminated. PIDs: $PID"
            fi
        done
    }
    
    #
    # Show PID
    status() {
        echo ""
        echo "$NAME running under PIDs [$ARGS]:"
        for IF in `eval echo \\$IF_${ARGS}`; do
            proc_detect
            test -z "$PID" && PID="Not running"
            echo "  $IF[$NET] : $PID"
        done
        echo ""
    }
    
    #
    # Detect PID and the network where interface belongs to.
    proc_detect() {
        PID=`ps -eo pid,args | \
            awk "\\$2 ~ /\\/${BIN}\\$/ && \\$4 ~ /^${IF}\\$/ \
            { print \\$1 }"`
        NET=`echo $IF_EXT | awk "\\$0 ~ /$IF/ { print \\"EXT\\" }"`
        test -z "$NET" && NET=`echo $IF_DMZ | \
            awk "\\$0 ~ /$IF/ { print \\"DMZ\\" }"`
    }
    
    #
    # Show usage
    usage() {
        echo ""
        echo "Usage:"
        echo "  `basename $0` { start | stop | restart | status } [ext|dmz]"
        echo ""
    }
    
    #
    # MAIN SWITCH
    case "$2" in
      ext)  ARGS="EXT";;
      dmz)  ARGS="DMZ";;
      *)    ARGS="ALL";;
    esac
    
    case "$1" in
      start)
            start $ARGS
            ;;
      stop)
            stop $ARGS
            ;;
      status)
            status $ARGS
            ;;
      restart)
            stop $ARGS
            sleep 5
            start $ARGS
            ;;
      *)
            usage
            exit 1
    esac
    
    exit 0
    
    最近 sh スクリプトすきすきーなのですよ。
    上記スクリプトを一通り動作確認した上で、 /etc/init.d/snort として配置するのですよ。
    # cp <hogehoge> /etc/init.d/snort
    # chmod +x /etc/init.d/snort
    # ln -s /etc/init.d/snort /etc/rcS.d/K01snort
    # ln -s /etc/init.d/snort /etc/rc0.d/K01snort
    # ln -s /etc/init.d/snort /etc/rc1.d/K01snort
    # ln -s /etc/init.d/snort /etc/rc2.d/S99snort
    

    ふはー。ようやくまともに動いたのですよ。
    さぁ次は解析ツール入れたりルールの自動更新させたりルールのチューニングしたり、やるべきこと/やりたいことがてんこ盛りなのですよ。
    でも次の更新はいつになることやら... なのですよ。


    参考リンク:
    HRK's OpenBSD Memo - Snort をインストールする
    にわか鯖管のメモ - Snortインストール手順
    snort ご本家
    the Bleeding Edge of Snort


    ---- 10/9 更新
    /etc/init.d/snort スクリプト中にミスがあったので修正なのですよ。
    1. LD_LIBRARY_PATH を追加したのですよ。実は OS 起動時に実行されていなかったのですよ。
    2. ps で表示させるフィールドを -o オプションで限定したのですよ。
      ps -ef での STIME フィールドって起動してから一日以上経ったプロセスに対して書式が変わるってことを失念していたのですよ。

    Posted by mass at 00:21 | Comments (0) | TrackBack

    2005年08月12日

    Solaris10 に wget 1.10 入れるのですよ。

    ただのメモなのですよ。
    configure に渡す値をメモしたいだけなのですよ。

    また適当なところからソースアーカイブを取得するのですよ。

    > gzcat wget-1.10.tar.gz | tar xf -
    > cd wget-1.10
    > ./configure --with-ssl=/usr/sfw CFLAGS='-O2 -pipe -mcpu=v9'
    > make
    > su
    Password:
    # tcsh
    # make install
    書きどころも読みどころもないのですよ。

    Posted by mass at 00:26 | Comments (0) | TrackBack

    2005年08月10日

    Solaris10 に PostgreSQL 8.0.3 をインストールするメモなのですよ。

    もう適当なところからソースアーカイブを持ってくるのですよ。

    > gzcat postgresql-8.0.3.tar.gz | tar xvf -
    > cd postgresql-8.0.3
    > setenv LD_LIBRARY_PATH "/usr/local/lib:/opt/sfw/lib:/usr/sfw/lib:/usr/lib:/lib"
      ↑ /opt/sfw/lib と /usr/sfw/lib を入れないと conftest の時にこけるのですよ。
        以後 ~/.cshrc にぶち込むのですよ。
    > ./configure --with-includes=/opt/sfw/include:/usr/sfw/include --with-libraries=/opt/sfw/lib:/usr/sfw/lib --with-perl --with-openssl CFLAGS='-O2 -pipe -mcpu=v9'

    このまま gmake すると
    ld: 重大なエラー: 割り当て可能ですが、書き込めないセクションに対して再配置が残っています。
    と心ときめく素敵な告白を受けるので、 src/Makefile.shlib を以下のように編集するのですよ。
    要は gcc -shared の挙動がおかしいらしいのですよ。
    ※参考: [Apache-Tech 393] Re: Apache2.0でのDSO モジュールの作成Solaris9 いじり
    > env LANG=C diff -u Makefile.shlib.orig Makefile.shlib
    --- Makefile.shlib.orig Sun Nov 21 06:13:04 2004
    +++ Makefile.shlib      Tue Aug  9 00:08:16 2005
    @@ -177,7 +177,7 @@
    
     ifeq ($(PORTNAME), solaris)
       ifeq ($(GCC), yes)
    -    LINK.shared        = $(CC) -shared
    +    LINK.shared        = $(LD) -G
       else
         LINK.shared        = $(CC) -G
       endif
    そしたら gmake ですよ。

    無事 gmake が終わったらインストールですよ。
    > su
    Password:
    # tcsh
    # gmake install

    各種設定は適当にすればいいのですよ。
    # groupadd -g 5432 postgres
    # useradd -d /usr/local/pgsql/ -s /usr/bin/tcsh -u 5432 -g postgres postgres
    # mkdir /usr/local/pgsql/data
    # chown -R postgres:postgres /usr/local/pgsql

    postgres ユーザーの .cshrc を作るのですよ。
    動かすだけなら LD_LIBRARY_PATH の設定だけでもよかったりするのですよ。
    # su - postgres
    $ tcsh
    > vi .cshrc
    set     path =  ($HOME/bin /usr/local/pgsql/bin /usr/ccs/bin /usr/local/bin /usr/local/sbin /opt/sfw/bin /opt/sfw/sbin /sbin /bin /usr/sbin /usr/bin /usr/ucb)
    setenv  MANPATH "/usr/share/man:/usr/local/man:/usr/local/pgsql/man"
    setenv  LD_LIBRARY_PATH "/usr/local/pgsql/lib:/usr/local/lib:/opt/sfw/lib:/usr/sfw/lib:/usr/lib:/lib"
    
    > source .cshrc

    さぁー initdb ですよ起動確認ですよ。
    initdb の -E (もしくは --encoding=) エンコーディングオプションを指定しないと、実行時の LANG 変数を見て自動で設定するみたいですよ。 ja_JP.eucJP なら EUC_JP 、みたいですよ。
    でも恐いから決め打ちするのですよ。
    > initdb -D /usr/local/pgsql/data -E EUC_JP
    > postmaster -D /usr/local/pgsql/data &
    > createdb test
    > psql test
    SQL のテストとか適当にするがいいのですよ。終わったら \q なのですよ。

    起動スクリプトを配置するのですよ。
    ソースアーカイブにそれなりのがあるらしいのでそれを使うのですよ。
    > exit
    # cp ~/postgresql-8.0.3/contrib/start-scripts/linux /etc/init.d/postgresql
    # chmod +x /etc/init.d/postgresql
    # ln -s /etc/init.d/postgresql /etc/rc0.d/K02postgresql
    # ln -s /etc/init.d/postgresql /etc/rc1.d/K02postgresql
    # ln -s /etc/init.d/postgresql /etc/rc2.d/S98postgresql
    # ln -s /etc/init.d/postgresql /etc/rcS.d/K02postgresql
    # /etc/init.d/postgresql stop
    # /etc/init.d/postgresql start

    とにかく躓いたらその時点の LD_LIBRARY_PATH を確認するのですよ。

    参考リンク:
    PostgreSQL-8.0.1 (Solaris 10 x86 サーバー構築記録)

    Posted by mass at 00:52 | Comments (0) | TrackBack

    2005年08月07日

    Solaris10 でやった雑作業をめも。

    FreeBSD メインマシンで

    > tip sio0
    が大活躍。シリアルコンソールはぁはぁ。

    Quad Ethernet Card の各ポートを起動時に up さす。

    # cd /etc/
    # cat /dev/null > hostname.ife0
    # cat /dev/null > hostname.ife1
    # cat /dev/null > hostname.ife2
    # cat /dev/null > hostname.ife3


    Solaris10 になってからサービス管理機能として SMF とやらが導入され。苦しむ。

    /etc/rc2.d/ , /etc/rc3.d/ 以下の S 系スクリプトはさくさく mv 。


    ntp を有効にす。

    # svcs -a | grep ntp
    disabled 21:54:41 svc:/network/ntp:default

    # cd /etc/inet/
    # cp ntp.client ntp.conf
    # vi ntp.conf
    server ntp

    # svcadm enable ntp
    # svcs -a | grep ntp
    online         21:54:41 svc:/network/ntp:default
    ちょこちょこ ntpq -p で確認しつつ同期するのをまったりと待つ。


    syslogd でリモート待ち受けさせず。

    # cd /etc/default/
    # chmod +w syslogd
    # vi syslogd
    LOG_FROM_REMOTE=NO

    # svcadm restart system-log


    sshd をユーザー公開鍵認証にさすために、まずは sshd を有効にすて、

    # svcadm enable ssh
    メインマシンの公開鍵を scp するなりで ~/.ssh/authorized_keys2 を作る。
    sshd をユーザー公開鍵認証にさす。
    # cd /etc/ssh/
    # vi sshd_config
    ListenAddress xxx.xxx.xxx.xxx
    X11Forwarding no
    PasswordAuthentication no
    PAMAuthenticationViaKBDInt no
      ↑これやらんと ~/.ssh/authorized_keys2 無い場合パスワード認証になってまう。

    # svcadm restart ssh
    おけおけ。


    SMF でサービスを止めすぎて起動できなくなった(!?)ときに Solaris Developer Connection - Solaris 10 OSSolaris のシステム管理 (基本編)破壊されたリポジトリを修復する方法 で助かった!
    んだが、今読むと復旧作業した時と記述内容が違う気がする... どっかから /etc/svc/repository.db に上書きコピって復旧したんだけど...

    ブート時にサービスを対話式に起動する方法

    ok boot -m milestone=none
    は -m を付けるとエラーになりますた。 OpenBoot 3.15 。
    PROM boot コマンドで milestone を指定して起動して必死こいて通常 boot 時のサービス設定を svcadm でやっていたが、まるで無意味なことに気付くまで数時間。

    とりあえず現状の svcs -a の結果を 置いとく
    fmd と zones は止めてもいいけどなんとなく止めたくない、ってことで。
    ipfilter も設定しないとなぁ。勉強せななぁ。


    参考リンク:
    Solaris10 でのサービスの有効化/無効化 [SMF]
    [tech] Solaris 10 SMFの話

    Posted by mass at 22:57 | Comments (0) | TrackBack

    2005年07月20日

    Solaris10/SPARC で Quad Fast Ethernet NIC を認識さすっ!

    6/3 の雑記 に書いていた「ジャンク屋で買い物 \18k」がようやく次のステップへ。
    相も変わらず文体はめちゃめちゃですが、興味を持った方はよろしくお付きあいのほどを。

    2005072001.jpg2005072002.jpg
    MatroxNS-FNIC/4 、 4 Port (Quad) Fast Ethernet NIC ですわ。
    \18k といってもほかの買い物も含んでいたので、これ単体は実質 \12.8k 。
    ものはジャンクでなく 2週間保証付き。しかし当然のごとく 1ヶ月以上放置していた。
    ドライバ CD なんぞ付いてない。メーカーの動作確認も Windows NT 4.0 、 Windows 2000 、 Linux とあるのみ。
    なぜにこれを Solaris で使おうとしたのか。博打だなぁ。 Solaris 全く知らんのに。
    まぁ載ってるチップが i82559 系だったのでまず問題なかろうと。

    ...ちょっと間違いですた...

    まず Solaris10/SPARC に i8255x 系の標準ドライバがないようで。
    man iprb を見ると Architecture: x86 とか書いていやがる。( e1000g もそうやね。)
    /kernel/drv/sparcv9/ 以下にも無い。
    Google しまくってみるも、 iprb の設定は on x86 しか見つからず。
    Intel のサイトにも Solaris ドライバ無し。
    もぅこれは嫌がらせかと。 Ultra5 も QFE-NIC も買ってからずっと放置してたおれに対する嫌がらせかと。ちょっと Solaris を勉強してみんべぇかぁ〜、と安易な気持ちで臨む人間に対する風はこんなにも冷たいものかと。

    そんな世を儚んでいた時に見つけたのが Free NIC drivers for Solaris 。す、すばらしすぎる... 多謝。
    さっそく ife driver をいただきまして。

    基本的には README の通りで良いのですが、自分用にメモ書きを。

    # gzcat ife-0.8.8.tar.gz | tar xf -
    # cd ife-0.8.8/
    # ln -sf Makefile.sparcv9_gcc Makefile
    # make install
    # ./adddrv.sh
    # modload sparcv9/ife
    ここではたと気付いて、 prtconf -pv で確認した i82559ER の PCI ID を以下のように追記してっ、
    # vi /etc/driver_aliases
    ife "pci8086,1209"
    ほんとはここで init 6 しちゃったんだけど、危険なので以下を実行するべきだったの☆
    # devfsadm -i ife
    なにもメッセージが出なかったら、おもむろに
    # ifconfig ife0 plumb
    # ifconfig ife0
    ife0: flags=1000842 mtu 1500 index 3
            inet 0.0.0.0 netmask 0
            ether xx:xx:xx:xx:xx:b4
    をほぉ、出て、出てきたあぁぁぁっ!
    # ifconfig ife1 plumb
    # ifconfig ife2 plumb
    # ifconfig ife3 plumb
    # ifconfig -a
    lo0: flags=2001000849 mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000
    hme0: flags=1000843 mtu 1500 index 2
            inet xxx.xxx.xxx.xxx netmask ffffff00 broadcast xxx.xxx.xxx.255
            ether xx:xx:xx:xx:xx:f7
    ife0: flags=1000842 mtu 1500 index 3
            inet 0.0.0.0 netmask 0
            ether xx:xx:xx:xx:xx:b4
    ife1: flags=1000842 mtu 1500 index 4
            inet 0.0.0.0 netmask 0
            ether xx:xx:xx:xx:xx:b5
    ife2: flags=1000842 mtu 1500 index 5
            inet 0.0.0.0 netmask 0
            ether xx:xx:xx:xx:xx:b6
    ife3: flags=1000842 mtu 1500 index 6
            inet 0.0.0.0 netmask 0
            ether xx:xx:xx:xx:xx:b7
    んをををぉぉ、いぃ、いぃ、出まくっちゃってましゅうぅぅぅ!
    # ifconfig ife0 192.168.20.11/24 up
    # ifconfig ife1 192.168.21.11/24 up
    # ifconfig ife2 192.168.22.11/24 up
    # ifconfig ife3 192.168.23.11/24 up
    # ifconfig -a
    lo0: flags=2001000849 mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000
    hme0: flags=1000843 mtu 1500 index 2
            inet xxx.xxx.xxx.xxx netmask ffffff00 broadcast xxx.xxx.xxx.255
            ether xx:xx:xx:xx:xx:f7
    ife0: flags=1000843 mtu 1500 index 3
            inet 192.168.20.11 netmask ffffff00 broadcast 192.168.20.255
            ether xx:xx:xx:xx:xx:b4
    ife1: flags=1000843 mtu 1500 index 4
            inet 192.168.21.11 netmask ffffff00 broadcast 192.168.21.255
            ether xx:xx:xx:xx:xx:b5
    ife2: flags=1000843 mtu 1500 index 5
            inet 192.168.22.11 netmask ffffff00 broadcast 192.168.22.255
            ether xx:xx:xx:xx:xx:b6
    ife3: flags=1000843 mtu 1500 index 6
            inet 192.168.23.11 netmask ffffff00 broadcast 192.168.23.255
            ether xx:xx:xx:xx:xx:b7
    んほあぁぁぁっおっ(以下自主規制

    スイッチかまして対向のノート PC から ping 試験して結果良好! 負荷試験は気が向いたら!
    いやぁ、一安心(笑

    んで。これをなにに使うかというと。
    せっかく Eterh TAP を 2つも作っている わけですし...

    乞うご期待!


    ……。


    や、だめ、やっぱ期待すんな。


    参考サイト:
    solarisな生活
    Free NIC drivers for Solaris
    The Linux PCI ID Repository
    ほか Google で出会った、貴重な情報を公開していただいたたくさんのサイトの管理者の方々に感謝。

    Posted by mass at 00:20 | Comments (0) | TrackBack

    2005年06月09日

    postanalog の analog6.0 レポート形式対応へっぽこパッチ。

    analog の Ver.6.0 からレポートの形式が変わったため、 postanalog による日本語検索語解析がへくるようになってしまった。
    そのため、「動きゃぁいいやぁ」的へっぽこパッチを作成した。analog6.0 リリースから半年以上も経って。

    postanalog analog6.0 対応へっぽこパッチ

    -q , -w オプションもきっと動いてくれると信じてる。使ってないからわかんないけど。

    Posted by mass at 00:20 | Comments (0) | TrackBack

    2005年05月22日

    iPod mini が届いたよ!

    2005052201.jpg2005052202.jpg
    むひょひょひょひょ。

    で、 FreeBSD からいろいろといじってみようとしたが挫折。
    audio/gtkpod の使い方がわからないよママン。ディレクトリ壊してるようにしか見えないよママン。
    今は Windows マシンで iTunes 使ってます。わりと便利かも。
    へたれ。

    ちぅわけで作業記録は追記行き。


    ささ、メインマシンに繋げてみましょ。

    fwohci0: BUS reset
    fwohci0: node_id=0xc800ffc2, gen=2, CYCLEMASTER mode
    firewire0: 3 nodes, maxhop <= 2, cable IRM = 2 (me)
    firewire0: bus manager 2 (me)
    firewire0: New S400 device ID:000a2700120b2bcf
    da8 at sbp0 bus 0 target 0 lun 0
    da8: Removable Simplified Direct Access SCSI-0 device
    da8: 50.000MB/s transfers
    da8: 3906MB (7999488 512 byte sectors: 255H 63S/T 497C)
    # mount -t msdos /dev/da8 /mnt
    msdosfs: /dev/da8: Invalid argument
    にゃに?

    > fdisk da8
    ******* Working on device /dev/da8 *******
    parameters extracted from in-core disklabel are:
    cylinders=497 heads=255 sectors/track=63 (16065 blks/cyl)

    parameters to be used for BIOS calculations are:
    cylinders=497 heads=255 sectors/track=63 (16065 blks/cyl)

    fdisk: invalid fdisk partition table found
    Media sector size is 512
    Warning: BIOS sector numbering starts with sector 1
    Information from DOS bootblock is:
    The data for partition 1 is:
    sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 7984242 (3898 Meg), flag 80 (active)
    beg: cyl 0/ head 1/ sector 1;
    end: cyl 496/ head 254/ sector 63
    The data for partition 2 is:
    <UNUSED>
    The data for partition 3 is:
    <UNUSED>
    The data for partition 4 is:
    <UNUSED>
    はれ? 165番ですか?
    # mount /dev/da8 /mnt
    mount: /dev/da8 on /mnt: incorrect super block
    うにゃー。めんどうだにゃー。
    # camcontrol eject 2:0:0
    Unit stopped successfully, Media ejected
    たしか iPod のディスクフォーマットって FAT32 のはずなんだよなぁ。 すぽ。
    fwohci0: BUS reset
    fwohci0: node_id=0xc800ffc1, gen=3, CYCLEMASTER mode
    firewire0: 2 nodes, maxhop <= 1, cable IRM = 1 (me)
    firewire0: bus manager 1 (me)
    # ls -l /dev/da8
    crw-r----- 1 root operator 14, 174 4 15 17:30 /dev/da8
    なぜ抜いても残っているか。

    Windows マシンに iTunes 入れて「復元」して FAT32 フォーマットへ。
    そしてメインマシンへ挿す。

    fwohci0: BUS reset
    fwohci0: node_id=0xc800ffc2, gen=4, CYCLEMASTER mode
    firewire0: 3 nodes, maxhop <= 2, cable IRM = 2 (me)
    firewire0: bus manager 2 (me)
    # fdisk /dev/da8
    ******* Working on device /dev/da8 *******
    parameters extracted from in-core disklabel are:
    cylinders=497 heads=255 sectors/track=63 (16065 blks/cyl)

    parameters to be used for BIOS calculations are:
    cylinders=497 heads=255 sectors/track=63 (16065 blks/cyl)

    Media sector size is 512
    Warning: BIOS sector numbering starts with sector 1
    Information from DOS bootblock is:
    The data for partition 1 is:
    sysid 0 (0000),(unused)
    start 63, size 80262 (39 Meg), flag 80 (active)
    beg: cyl 0/ head 1/ sector 1;
    end: cyl 4/ head 254/ sector 63
    The data for partition 2 is:
    sysid 11 (0x0b),(DOS or Windows 95 with 32 bit FAT)
    start 80325, size 7903980 (3859 Meg), flag 80 (active)
    beg: cyl 5/ head 0/ sector 1;
    end: cyl 496/ head 254/ sector 63
    The data for partition 3 is:
    <UNUSED>
    The data for partition 4 is:
    <UNUSED>
    # mount -t msdos /dev/da8s2 /mnt
    おけー。

    で。
    当初の目論見は、 FreeBSD で mount して適当にディレクトリ分けして突っ込めばよかろう、と iRiver 的感覚だったわけですが、まず iTunes で適当に mp3 ファイルを突っ込んでみると、
    iPod ディスク内の /iPod_Control/Music に F01 〜 F49 というディレクトリが掘られ、そこにバラバラと(規則性はあるんだろうが) mp3 ファイルが突っ込まれるようで。そのファイル名も <半角英大4文字>.mp3 となるようで。手作業じゃ無理だ。
    audio/gtkpod を使ってみるも F** 形式には対応しているようだが、 mp3 ファイルで書き込むべきがなぜかディレクトリとして書き込まれたり。
    audio/gnupod は見なかったということで。

    もぅ面倒くさいので iTunes 使ってます!
    ID3 タグがしっかり書き込んであればかなり便利なツールですな。わたしのライブラリは ID3 タグを全く使用していなかったので地獄を見ていますが。お気に入りからちまちまとタグ書きつつ iPod 投入してますわ。


    まずライブラリ登録するのが ふたなり音楽CD からというのはいかがなものか。

    Posted by mass at 11:39 | Comments (0) | TrackBack

    2004年12月16日

    今日の雑記。やっぱりそぉゆぅのが気になるおとしごろ。

    mixi の bbs かなにかで晒されているような気がするが、なにぶんそんな交友関係はないのでなにを理由に晒されているのかわからない... しかもアクセスは数件なんだが... 気になる。
    どうせだめ人間だと言ってるんだろう、くそ! くそ!

    SCA-HDD 5台を使った gvinum 遊び、想像以上の遅さに感激。

    # mount /dev/gvinum/raid5set /mnt
    # cd /mnt/
    # dd if=/dev/zero of=./zero3.bin bs=512 count=8M
    8388608+0 records in
    8388608+0 records out
    4294967296 bytes transferred in 2439.914186 secs (1760294 bytes/sec)
    # dd if=./zero3.bin of=/dev/null bs=512 count=8M
    8388608+0 records in
    8388608+0 records out
    4294967296 bytes transferred in 575.131438 secs (7467801 bytes/sec)
    4GB 書き込みに 40分? 読み込みは 10分。
    ってゆーか、なんで da1,2,3,5 が
    da1: 80.000MB/s transfers (40.000MHz, offset 15, 16bit), Tagged Queueing Enabled
    っていっているのに da4 だけ
    da4: 3.300MB/s transfers, Tagged Queueing Enabled
    というのか気にくわないったら気にくわないわ〜〜〜!!!(メテオさん風(なんとなく
    ...これが実力とは思いたくない...
    電源落として挿し直しとかしてみるか...
    ses0 at mpt1 bus 0 target 6 lun 0
    ses0: Fixed Processor SCSI-2 device
    ses0: 3.300MB/s transfers
    ses0: SAF-TE Compliant Device
    ses(4) の意味もよくわかっていませんが。

    Posted by mass at 00:54 | Comments (0) | TrackBack

    2004年12月05日

    今日の雑記。寒いときは寄り添いあって...

    やはり 10000rpm な HDD を こんな繋げ方 しちゃいけません。

    GEOM_VINUM: subdisk raid5set.p0.s0 is stale
    GEOM_VINUM: subdisk raid5set.p0.s1 is stale
    GEOM_VINUM: subdisk raid5set.p0.s2 is stale
    とかいわれて subdisk が全ておだまりになられたようです。 HDD を触ってみると、物凄い熱さ!!!
    くぅっ。ちゃんとした FAN 付きのユニットにいれないとだめかぁ... どうせテストで何度も抜差しするし、リムーバブルタイプで... SUPERMICRO のここらへん (USER'S SIDE) とか... ってやっぱり買うしかないでしょうか。 mass です。

    ところでシングルユーザーモードで /rescue/vi を使おうとしたら

    vi: No terminal database found
    などと言われたわけで。 mount /usr しないと使えませんでした。今時はみんな / only でパーティションを切っているのでしょうか。
    時代に取り残されている気がします。 mass です。

    ふしぎ星の☆ふたご姫 [BOGARD La+ 経由]
    これのもとネタがなんなのかよくわかりませんが。 PANDA-Z とかと似たようなバンダイのキャラクター戦略?
    ロリでプニにまったりと癒されてしまいました。 mass です。

    iPod mini プレゼントキャンペーン (amazon.co.jp)
    ブックストアで一度に \5k 以上買い物すると、抽選で 100名に当たるとのこと。
    やっぱり余ってるんか(笑)

    「よろしかったですか」の歴史と心理的背景を探ってみる (絵文録ことのは)
    これ、言われるとなんか微妙に腹立つんですよね。今まさにやりとりしてる最中やろがっ! って感じて。
    で、読んでてふと思い出した。
    近所のスーパーに変なおばちゃん店員がいる。
    「いらっしゃいませー」はもちろんいいのだが、「ありがとうございませー(語尾上がる)」などとおっしゃる。一時期直ったのだが(店長に言われたのかもしれない)、最近また再発していた。どちらの方なのだろう。

    「わたおに」好きに人気がでそうなロリ〜なドール「ちっちゃなもこちゃん」 (ぬるヲタが斬る)
    あ、あ、あぁぁぁぁぁ...

    『暗いところで待ち合わせ』映画化か? 00:43 (はてなダイアリー - 政宗九の日常系日記)[ぬるヲタが斬る 経由]
    乙一作品屈指で好きな作品(超個人的)ですよ! 下手な配役しやがったらぬっコロスですよ!(翠星石風)

    Posted by mass at 23:01 | Comments (0) | TrackBack

    FreeBSD gvinum でソフトウェア RAID-5 の構築してみちゃいました。

    みたいな。

    要件:
    ただソフトウェア RAID がやってみたい。それだけ。 root までやるつもりはなく、データ領域だけ redundant であればよい。
    どうせやるなら RAID-5 がかっくいい。それっぽく動けばよいのだ。
    そして相変わらずバックアップなどしないのであった。
      ※これのどこらへんが要件なのか。

    ハードウェア的には
    資源を有効利用するの〜 ソフトウェア RAID 構築の下準備
    きょーも RAID の道はまったりと。デバイス認識まで。
    にてすでに待ち状態。え〜加減はじめますかぁ。

    で、とても長くなったので追記行き。

    まずは fdisk でパーティションを切るです。といっても全ディスクは FreeBSD スライスとしていただいちゃいます。

    # fdisk -BI da2
    ******* Working on device /dev/da2 *******
    # fdisk -BI da3
    ******* Working on device /dev/da3 *******
    # fdisk -BI da4
    ******* Working on device /dev/da4 *******
    
    全ての HDD にデフォルトな BSD ラベルを書いて、
    # bsdlabel -w da2s1
    # bsdlabel -w da3s1
    # bsdlabel -w da4s1
    
    BSD ラベルを編集します。
    # bsdlabel -e da2s1
    
    エディタが起動しまふ。
    a パーティションの fstype を unused から vinum に変更しませう。
    # /dev/da2s1:
    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      a: 17767811       16    unused        0     0
      c: 17767827        0    unused        0     0         # "raw" part, don't edit
    
        ↑これを、こう↓
    # /dev/da2s1:
    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      a: 17767811       16    vinum         0     0
      c: 17767827        0    unused        0     0         # "raw" part, don't edit
    
      ※ fstype は gvinum って書くと "Warning, unknown file system type gvinum" って怒られます。
        コマンド名は vinum から変わったくせに。なんや、中途半端やなぁ。

    でもって、この BSD ラベルをファイル化してほかの HDD にも同様に BSD ラベルを反映させます。
    # bsdlabel da2s1 > bsdlabel.da2s1
    # bsdlabel -R da3s1 bsdlabel.da2s1
    # bsdlabel -R da4s1 bsdlabel.da2s1
    
    そしておもむろに
    # kldload geom_vinum
    
    kldload します。これ以降の gvinum コマンドを使う作業はカーネルモジュール geom_vinum.ko がロードされていなければなりません。たぶん。
    念のため kldstat できちんとロードされていることは確認しておきましょう。エラーが出てなけりゃ大丈夫だけども。

    で、で、さっそく gvinum に入ります。 gvinum を起動したら、 gvinum のプロンプトで create してください。
    # gvinum
    gvinum -> create
    
    エディタが起動します。
    アレイセットまで一気に記述しても良いんやけど、ここはまず BSD ラベルの fstype にvinum 設定したディスクが認識されるか確認ですよ。
    drive d0 device /dev/da2s1a
    drive d1 device /dev/da3s1a
    drive d2 device /dev/da4s1a
    
    エディタでドライブ指定を記述して保存すると、その直後に list が実行されます。
    3 drives:
    D d2                    State: up       /dev/da4s1a     A: 8675/8675 MB (100%)
    D d1                    State: up       /dev/da3s1a     A: 8675/8675 MB (100%)
    D d0                    State: up       /dev/da2s1a     A: 8675/8675 MB (100%)
    
    0 volumes:
    
    0 plexes:
    
    0 subdisks:
    
    なぜかドライブ名が逆順に並んでいるわけだが。
    まぁそれはいいとして、ドライブも認識できたのでいざ RAID-5 アレイの構築に参りませう。
    もっかい create たたいてね。
    gvinum -> create
    
    またエディタが起動するねん。(←誰?)
    先に記述した drive 〜〜 はコメントされて(もう有効だから)るんで、その下に追記しまふ。
    # drive d2 device /dev/da4s1a
    # drive d1 device /dev/da3s1a
    # drive d0 device /dev/da2s1a
    volume raid5set
    plex org raid5 512k
    sd length 0 drive d0
    sd length 0 drive d1
    sd length 0 drive d2
    
    すると、
    3 drives:
    D d2                    State: up       /dev/da4s1a     A: 0/8675 MB (0%)
    D d1                    State: up       /dev/da3s1a     A: 0/8675 MB (0%)
    D d0                    State: up       /dev/da2s1a     A: 0/8675 MB (0%)
    
    1 volume:
    V raid5set              State: down     Plexes:       1 Size:         16 GB
    
    1 plex:
    P raid5set.p0        R5 State: down     Subdisks:     3 Size:         16 GB
    
    3 subdisks:
    S raid5set.p0.s2        State: stale    D: d2           Size:       8675 MB
    S raid5set.p0.s1        State: stale    D: d1           Size:       8675 MB
    S raid5set.p0.s0        State: stale    D: d0           Size:       8675 MB
    
    あらやだ奥さん! それっぽくできてるじゃあ〜りませんか!
    相変わらず subdisks のあたりも名前が逆順だがな。
    まぁご覧の通り State: が volumu/plex では down だの、 subdisk では stale だの、 こりゃ初期状態じゃ気持悪いったらありゃしないので、アレイの initialize させますよ〜。
    gvinum -> start raid5set
    3 drives:
    D d2                    State: up       /dev/da4s1a     A: 0/8675 MB (0%)
    D d1                    State: up       /dev/da3s1a     A: 0/8675 MB (0%)
    D d0                    State: up       /dev/da2s1a     A: 0/8675 MB (0%)
    
    1 volume:
    V raid5set              State: down     Plexes:       1 Size:         16 GB
    
    1 plex:
    P raid5set.p0        R5 State: down     Subdisks:     3 Size:         16 GB
    
    3 subdisks:
    S raid5set.p0.s2        State: I 0%     D: d2           Size:       8675 MB
    S raid5set.p0.s1        State: I 0%     D: d1           Size:       8675 MB
    S raid5set.p0.s0        State: I 0%     D: d0           Size:       8675 MB
    
    さぁ、 subdisks: の State: が "I 〜〜%" となって initialize が始まりましたっ!
    進捗状況は list とたたいてもわかりますけど、 ls ってたたくと subdisks: だけが表示されるので無駄がなくて助かりますよ〜
    gvinum -> ls
    3 subdisks:
    S raid5set.p0.s2        State: I 45%    D: d2           Size:       8675 MB
    S raid5set.p0.s1        State: I 45%    D: d1           Size:       8675 MB
    S raid5set.p0.s0        State: I 45%    D: d0           Size:       8675 MB
    gvinum -> ls
    3 subdisks:
    S raid5set.p0.s2        State: I 97%    D: d2           Size:       8675 MB
    S raid5set.p0.s1        State: I 97%    D: d1           Size:       8675 MB
    S raid5set.p0.s0        State: I 96%    D: d0           Size:       8675 MB
    
    あと少しっ! って s0 と s1 でパーセンテージが違う。こんなタイミングもあるのね...

    ってなわけで...
    gvinum -> list
    3 drives:
    D d2                    State: up       /dev/da4s1a     A: 0/8675 MB (0%)
    D d1                    State: up       /dev/da3s1a     A: 0/8675 MB (0%)
    D d0                    State: up       /dev/da2s1a     A: 0/8675 MB (0%)
    
    1 volume:
    V raid5set              State: up       Plexes:       1 Size:         16 GB
    
    1 plex:
    P raid5set.p0        R5 State: up       Subdisks:     3 Size:         16 GB
    
    3 subdisks:
    S raid5set.p0.s2        State: up       D: d2           Size:       8675 MB
    S raid5set.p0.s1        State: up       D: d1           Size:       8675 MB
    S raid5set.p0.s0        State: up       D: d0           Size:       8675 MB
    
    めでたく、全ての State: が up となりました。
    それではいよいよ mount といきましょう。その前に gvinum を抜けて、 newfs をやりましょうったらやりましょう。
    gvinum -> exit
    # newfs /dev/gvinum/raid5set
    /dev/gvinum/raid5set: 17351.0MB (35534848 sectors) block size 16384, fragment size 2048
            using 95 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
    super-block backups (for fsck -b #) at:
     160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976,
     3387328, 3763680, 4140032, 4516384, 4892736, 5269088, 5645440, 6021792,
     6398144, 6774496, 7150848, 7527200, 7903552, 8279904, 8656256, 9032608,
     9408960, 9785312, 10161664, 10538016, 10914368, 11290720, 11667072, 12043424,
     12419776, 12796128, 13172480, 13548832, 13925184, 14301536, 14677888,
     15054240, 15430592, 15806944, 16183296, 16559648, 16936000, 17312352,
     17688704, 18065056, 18441408, 18817760, 19194112, 19570464, 19946816,
     20323168, 20699520, 21075872, 21452224, 21828576, 22204928, 22581280,
     22957632, 23333984, 23710336, 24086688, 24463040, 24839392, 25215744,
     25592096, 25968448, 26344800, 26721152, 27097504, 27473856, 27850208,
     28226560, 28602912, 28979264, 29355616, 29731968, 30108320, 30484672,
     30861024, 31237376, 31613728, 31990080, 32366432, 32742784, 33119136,
     33495488, 33871840, 34248192, 34624544, 35000896, 35377248
    
    newfs する際、以前は -v オプションを付ける必要があったみたいですが、いまは必要ありません。 src/sbin/newfs/newfs.c - view - 1.60 でさっくり remove されてます。

    では mount してみましょう。
    # mount /dev/gvinum/raid5set /mnt
    # df /mnt
    Filesystem                  1K-blocks     Used    Avail Capacity  Mounted on
    /dev/gvinum/raid5set         17204942        4 15828544     0%    /mnt
    
    あぁっ! RAID-5 まうんとしてるぅぅっ! まうんとしちゃってましゅぅぅぅ!!!
    はぁはぁ...
    で、まぁ、読み書きテストとかしてみて特に問題ないようだったら、 /etc/fstab とか /boot/loader.conf とか更新しちゃいましょう。
    # vim /etc/fstab
    
    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/gvinum/raid5set    /raid           ufs     rw              1       1
      ↑を追加。
    
    # vim /boot/loader.conf
    geom_vinum_load="YES"  ← を追加。
    
    これで再起動してみて、きちんとマウントされたら成功ですよ〜。

    というわけで、ソフトウェア RAID-5 の構築までやってみました。ここまで記事にするので疲れたさ。
    今後としては、
    ・ケーブル抜いたりしてアレイをおかしくしてみる。
      → さらに HDD を交換してリビルドしてみる。
    ・アレイがおかしゅうなったら messages に出るが、メールも飛ぶとよい。
    ・リムーバブルユニットのついた PC ケースが欲しいなぁ。
    などを記事にしようかと妄想しています。はぁはぁ。

    ...で。ソフトウェア RAID-5 を使ってみての感想というか、あれですが...

    ・噂通り書き込みが遅い...
    実質、ストライピングの 25% は伊達じゃない(vinum(8) より)。
    この記事を vim で書いている裏で /usr を RAID-5 領域に書き込ませてますが、 7GB のコピーに 1h かかりました。パリティの計算が頻発するからかリアルタイム系の作業がもたつく感じがします。まぁ速度を求めるもんじゃないからねぇ。速くしたけりゃハードウェア RAID にしろってことで。

    ・変なことはするもんじゃない。
    RAID-5 の初期ビルド中に無理やり gvinum の rm コマンドを発行して subdisk → plex → volume の順で消去、 drive はどうやっても消せないのでそのまま exit して放置してしばらくすると固まった。タイミングからすると、 rm してもビルドは続行していて、ビルド完了直後に固まったようだ。 Xorg 上で作業していたのでマウスもキーボードも利かず。外から ping は通るけど ssh は応答もなく...

    ・gvinum の help にあって使えないコマンドあり。
    resetconfig なんて unknown とか言われましてよ。どういうことかしら。
    それ以前に man に gvinum がありませんことよ。


    参考リンク:
    vinum編 (FreeBSD覚え書き)
      っていうかそのままパクらせていただきました。ほんと、すいますいません。

    Posted by mass at 04:18 | Comments (0) | TrackBack

    2004年11月25日

    きょーも RAID の道はまったりと。デバイス認識まで。

    わたしのメインマシンでは U320-SCSI(mpt) がメインで、それに U160-SCSI(sym) カードを増設して HDD をぶら下げて起動したら、 sym が先に認識されちゃって da? の名前順が変わってもうた、という話は 資源を有効利用するの〜 ソフトウェア RAID 構築の下準備 でも書いたが、その sym を違う PCI-X バスに挿し直しても認識順は変わらなかった。
    面倒くさくなったので、 kernel から "device sym" をはずして、以下の /etc/rc.early を作った。

    #!/bin/sh

    HOME=/
    PATH=/sbin:/bin
    export HOME PATH

    kldload sym
    camcontrol rescan all
    #camcontrol rescan `camcontrol devlist -v | grep sym0 | sed 's/scbus\(.\).*$/\1/'`
    sym モジュールロードしてバスをスキャンさせてまえ、てな感じ。一番下のコメントしてある camcontrol は rc.early の実行段階で /usr が mount されていないことを知らなくてはまったもの。
    dmesg は以下の通り。
    sym0: <1010-33> port 0x9000-0x90ff mem 0xfb040000-0xfb041fff,0xfb045000-0xfb0453ff irq 28 at device 2.0 on pci4
    sym0: Symbios NVRAM, ID 7, Fast-80, LVD, parity checking
    sym0: open drain IRQ line driver, using on-chip SRAM
    sym0: using LOAD/STORE-based firmware.
    sym0: handling phase mismatch from SCRIPTS.
    sym0: [GIANT-LOCKED]
    sym1: <1010-33> port 0x9400-0x94ff mem 0xfb042000-0xfb043fff,0xfb044000-0xfb0443ff irq 29 at device 2.1 on pci4
    sym1: Symbios NVRAM, ID 7, Fast-80, LVD, parity checking
    sym1: open drain IRQ line driver, using on-chip SRAM
    sym1: using LOAD/STORE-based firmware.
    sym1: handling phase mismatch from SCRIPTS.
    sym1: [GIANT-LOCKED]
    (noperiph:sym0:0:-1:-1): SCSI BUS reset detected.
    da2 at sym0 bus 0 target 0 lun 0
    da2: <COMPAQ BD00911934 3B02> Fixed Direct Access SCSI-2 device
    da2: 80.000MB/s transfers (40.000MHz, offset 15, 16bit), Tagged Queueing Enabled
    da2: 8678MB (17773524 512 byte sectors: 255H 63S/T 1106C)
    da3 at sym0 bus 0 target 1 lun 0
    da3: <COMPAQ BD00911934 3B02> Fixed Direct Access SCSI-2 device
    da3: 80.000MB/s transfers (40.000MHz, offset 15, 16bit), Tagged Queueing Enabled
    da3: 8678MB (17773524 512 byte sectors: 255H 63S/T 1106C)
    da4 at sym0 bus 0 target 2 lun 0
    da4: <COMPAQ BD00911934 3B02> Fixed Direct Access SCSI-2 device
    da4: 80.000MB/s transfers (40.000MHz, offset 15, 16bit), Tagged Queueing Enabled
    da4: 8678MB (17773524 512 byte sectors: 255H 63S/T 1106C)
    く〜。いちいち rescan all もあれだけど、 bus number を固定で書くのもあれだなぁ。 firewire もあるから scbus でいうと、 mpt0, mpt1, sbp0, sym0, sym1 だから camcontrol rescan 3 になるんだよねぇ... 後々 firewire はずすかもしれないから bus number は動的に取りたいなぁ...
    まぁ再起動なんてそんなにしないし、いっか!(おい
    ところで da? のデバイス番号を固定する方法がどっかであったようななかったような気がするのはやっぱり気のせい?

    あいっかわらずソフトウェア RAID への道はまったりゐきゐき。

    Posted by mass at 00:31 | Comments (0) | TrackBack

    2004年11月15日

    資源を有効利用するの〜 ソフトウェア RAID 構築の下準備

    ...ただ HDD 増設しただけだがな。

    もぅえーかげんに余っている HDD を何とかしようと思い立ったのがそもそもの始まり。
    や、逆か。 vinum があることを改めて思い出して、そういや HDD が余ってるや、ちょうどええ使っちまえ。どうせなら RAID-5 がかっちょええ。
    この程度の考え。

    余っている HDD は SCA タイプの U2SCSI 9GB 。同型が 5台もあるので、 2台はスペアで 3台で RAID-5 を組むつもり。
    SCSI インターフェイスは メインマシン にあるが、今は U320 の 18GB が鎮座在しておられる。しばらくはテストで抜き挿しが多くなるからメインのインターフェイスにかぶせたくはない。よし、かなり前に ファナティック で \10k 位で買った U160 なカードにぶら下げよう。
    SCA - UW68 の変換コネクタは持ってるから、あとは電源分岐ケーブルと増設ステイやね。秋葉へ Go!!

    2004111501.jpg
    で、買ったもんは左下の 2点だけ。店に顔出ししただけだなぁ。
    上〜右 3点が死蔵品だったところがもったいなさすぎ。

    2004111502.jpg
    LSI LOGIC の LSI53C1010-33 な U160 かぁど。なぜ買ったのか思い出せない。
    FreeBSD 6.0-CURRENT では、

    sym0: <1010-33> port 0xa000-0xa0ff mem 0xf3010000-0xf3011fff,0xf3015000-0xf30153ff irq 52 at device 2.0 on pci3
    sym0: Symbios NVRAM, ID 7, Fast-80, LVD, parity checking
    sym0: open drain IRQ line driver, using on-chip SRAM
    sym0: using LOAD/STORE-based firmware.
    sym0: handling phase mismatch from SCRIPTS.
    sym0: [GIANT-LOCKED]
    sym1: <1010-33> port 0xa400-0xa4ff mem 0xf3012000-0xf3013fff,0xf3014000-0xf30143ff irq 53 at device 2.1 on pci3
    sym1: Symbios NVRAM, ID 7, Fast-80, SE, parity checking
    sym1: open drain IRQ line driver, using on-chip SRAM
    sym1: using LOAD/STORE-based firmware.
    sym1: handling phase mismatch from SCRIPTS.
    sym1: [GIANT-LOCKED]
    う、うむ。
    いろいろあるようで大変であるな(汗
    あとでゆっくり調べるでござるよ。

    2004111503.jpg
    ステイでまとめて、 SCA 変換コネクタでさっくさく。筐体の空いたスペースに置いて、いざ起動。
    ってしたら、メインの mpt より sym が先に認識して da? の振り分けが変わって mount でこけましたとさ。
    うーん、 sym を挿す位置変えれば済みそうだけど、 da? が見っけた順に振られるのってなんとかならんかったっけ。デバイス名は da? だけ

    da0 at mpt0 bus 0 target 0 lun 0
    の target の番号(つまるとこ SCSI-ID)振って欲しいなぁ。その方がおじさんにはわかりやすいよ。で、バスとかインターフェイスが増える度に別桁で a, b, c... 振るとか。
    mpt0 bus 0 target 0 lun 0  → daa0
    mpt0 bus 0 target 14 lun 0 → daae
    mpt1 bus 0 target 3 lun 0  → dab3
    sym0 bus 0 target 10 lun 0 → daca
    やべっ。わかりづれぇ。
    あと、 MO ドライブは od? がいいよぅ... da? ばっかりじゃわたしみたいにとっかえひっかえする人はしょっちゅうはまるですよ。まぁ慣れたからいいけど(笑)
    ...と、自己中な妄想はここらにして。

    ちぅわけで、ソフトウェア RAID-5 への道は「まったりモード」です!


    ...す、すんません、集中すれば RAID 構築までいけたはずなんですけど、ゆずゆに萌えちゃって手が出せませんでした(意識不明

    Posted by mass at 00:44 | Comments (0) | TrackBack

    2004年11月07日

    FreeBSD 6.0-CURRENT 珍騒記。 ld-elf.so.1 がどーしたこーした。

    その時、 mass はぱにくった。
    どつぼを力業でのりきった記録。自分用のメモ。


    メインマシンの FreeBSD を何気なくアップデートした。 2004/11/7 0:00 頃 cvsup ものである。 2004/9/4 以来やね。今回は /usr/src/UPDATING を読み忘れた。
    build 後、

    # make installkernel KERNCONF=hogehoge
    して reboot 、 boot -s で panic しないので一安心。
    順調やねぇ、とシングルユーザーモードの /bin/sh で入って mount -a した。 /usr/src で make installworld した。
    奇っ怪な Error で止まった。
    ls した。
    # ls
    /libexec/ld-elf.so.1: /lib/libutil.so.4: Undefined symbol "_DefaultRuneLocale"
    (たしかこんな感じ)
    pwd した。
    # pwd
    /libexec/ld-elf.so.1: /lib/libutil.so.4: Undefined symbol "_DefaultRuneLocale"
    (違ったかも。ものによっては ld-elf.so.1 が直接ぶーたれるものもあった。)

    うるさいだまれしね。

    うぅ、やべぇ。ここまでやばいのは経験がない。(弱)
    で、 Live CD で起動を試みるものの、うちの環境だと 5.3R も 5.2.1R も /boot/loader 以前に、 boot0 の選択画面 すら出ずにレジスタ値のようなものが画面いっぱいに怒涛のごとく流れて手も足も出ない。
      ※ acd0 に Live CD 、 M/B オンボードの SCSI に da0 / cd0 の構成。
        なぜか cd0 が起動デバイスとして認識されず。
    4.10R の disc2 なら起動したが、 5.3R の Live CD に入れ替えての Fixit はまともに動かず...

    そんな時、 HDD 上に /rescue が存在したことを思い出す。素敵!!!
    いろいろやってみると、どうやら /var を mount した時点からおかしいようだ。 /var 以下を退避してしらみ潰ししますか。

    # mount /var
      ↑これ以降、 dynamic link な通常コマンド死亡
    # /rescue/cp -Rp /var/* /usr/tmp/
    # /rescue/umount /var
    /usr/tmp に退避したものを ディレクトリ第一層単位で
    # /rescue/cp -Rp /usr/tmp/hogehoge /var
    とコピー。都度、 ls とか叩いて確認。
    すると、 /usr/tmp/run をコピーした直後の ls で問題発生。

    で、結局。

    # /rescue/rm /var/run/ld-elf.so.hints
    だけでよかったみたい。消しても作り直してくれるし。うゆー。

    /usr/src/UPDATING の 20040728 あたりの問題なのかなぁ。でもそれは前回アップデートした時に踏んでるはずなんだけど...
    恐いので念のため /usr/src/gnu/usr.bin で make install して、 kernel と userland 作り直して。で、めでたしめでたし。

    そっかぁ、 /rescue の下ってクランチバイナリなんだっけ。かこいい。
    でもアップデートを繰り返してると古いバイナリが i-node 違い size 違いで残っているのはちょっとかこわるい。
    アップデートの時に不要な標準バイナリを消す機構ってないのかな? 対話式とかで。


    参考リンク:
    Program Library HOWTO - 3.2. ライブラリはどのように使われるか げ、 JF だ!
    そっすかぁ、 ELF キャッシュってやつっすかぁ。よくわらかんっす。
    ld-elf.so.1(1) と ldconfig(8) を読んで勉強しませう。
    おれ、よくこんなんで CURRENT なんて使ってるなぁ。惰性なんだけどね。

    Posted by mass at 22:15 | Comments (0) | TrackBack

    2004年08月20日

    jail 内の Ports を親環境から portaudit する

    ports/security/portaudit は make install すると /usr/local/etc/periodic/security/410.portaudit をインストールし、毎日 Ports Collection のセキュリティ監査ファイルを自動で最新に更新し、インストール済の全ての Ports/Packages のセキュリティ脆弱性を検査してくれるとてもありがたいツールです。
    がしかし、私の環境は jail 内からは一切外にコネクションを張りに行けないようにフィルタリングしており、 jail 内の監査ファイルが最新に更新されず、 Ports/Packeages の検査も意味なしになってしまいます。(監査ファイルの取得は fetch(3) を使っているため FTP or HTTP 通信です)
    そのため、親環境から jail の Ports/Packages の検査をするようにしました。というメモ。

    当初 410.portaudit を直接いじろうかと考えましたが、 portupgrade のたびに上書きされるのは勘弁していただきたいので、 410.portaudit をコピーして 415.portaudit_jail として追加しました。同じ /usr/local/etc/periodic/security/ に置いておけば periodic daily で実行されます。

    ・ /usr/local/etc/periodic/security/415.portaudit_jail

    #!/bin/sh -f
    # rc.conf の jail 関連設定を読み込む必要あり。
    if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
        source_rc_confs
    fi
    # なければ実行不要。
    if [ -z ${jail_list} ]; then
        exit 0
    fi
    
    if [ -r /etc/defaults/periodic.conf ]; then
        . /etc/defaults/periodic.conf
        source_periodic_confs
    fi
    
    rc=0
    case "${daily_status_security_portaudit_enable:-YES}" in
        [Nn][Oo])
            ;;
        *)
            /usr/local/sbin/portaudit -X "${daily_status_security_portaudit_expiry:-2}" || rc=$?
            if [ $rc -lt 2 ]; then
                echo
                echo "Checking for packages with security vulnerabilities in jail:"
                echo
            # jail の数だけ portaudit を繰り返し。
                for i in ${jail_list}
                do
                    echo "-- ${i} --"
                    eval j=\$jail_${i}_rootdir
                    ls ${j}/var/db/pkg | sed 's|/$||' \
                        | xargs /usr/local/sbin/portaudit \
                        || rc=$?
                done
            fi
            ;;
    esac
    
    exit "$rc"
    

    これで AM3:01 、親環境の periodic daily - security run output メールに結果が記述されます。多い日も安心。

    Posted by mass at 03:15 | Comments (0) | TrackBack

    2004年08月19日

    Version あがってて二度びっくり。

    ports/x11/nvidia-driver が Version 1.0-6113 になりました。(お、 Linux より番号高いね! → NVIDIA Linux Drivers Portal)
    この Version からなぜかカーネルに "device agp" として build することはご法度らしく、 /usr/X11R6/share/doc/NVIDIA_GLX-1.0/README にもきちんとはずして rebuild せいよ、と書いてあります。(もしくは xorg.conf に Option "NvAGP" でもいいのかな?)
    で、 rebuild せずに portupgrade nvidia-driver した私は新しい module がロードされた時点で即死(っていうか reboot )しました。 Ports でインストール完了した時点で kldload してたのね... ってか X 上でビデオドライバーモジュールのアップデートするな。

    で、 device agp をはずして cvsup して build したら...

    > uname -sr
    FreeBSD 6.0-CURRENT
    なんですと!?
    あ、やっぱり あがっとる... 呆然。
    5.X 系も RELENG_5 タグ打たれたようだし(FreeBSD おぼえがき)、ルータ機も stable に合わせなきゃなぁ...

    Posted by mass at 21:16 | Comments (0) | TrackBack

    2004年08月11日

    今日の雑記。

    仕事もせずに(おい)、 Cygwin をいじっていた一日。
    CygTermPuTTy jp をコンソールにしたはいいものの、 Vim-6.3.015 でステータスラインのすぐ上にカーソルをおいて "o" をするとステータスラインの下に行挿入してしまう。なんだこれは。おもしろすぎる。 ^L すると直るけど。
    コマンドプロンプトで使ってた時は問題なかった(はず)なんだけど... Tera Term Pro にしてみようか...

    帰宅後のグラVは辛い。長い。集中力が持続できん。
    Type-2 で行くべきか Edit-リップル で行くべきか... リップルだと 1-6 がすごく楽、でもうねるレーザーも捨てがたく。
    ていうか下手すぎ。

    Posted by mass at 00:32 | Comments (0) | TrackBack

    2004年08月06日

    Sun Ultra5 を買う。 Sun 6台目かよ...

    2004080601.jpg
    たっはー! 買っちまいました! Sun の Ultra 5 (旧モデル製品情報) をですよ!!
    前々から改造用に欲しいと思っていたのですが、当時 \30k 前後だったので諦めていました。

    今日、別件で Cisco のルータとか探しにジャンク屋巡りをしようと秋葉原に。まず始め に UNIX本舗 へ行ったらこいつが特価で \10k 。もうそんなに値崩れしていたのかとショックで気を失いかけ、ふと気が付いたら「 \8k です。」と言われました。はっ!? レジ!?
      ※ ヤフオク でも値崩れしてますな。

    で、買ったおまけに英語キーボード ( Type5c ) とマウスもあるのですが、すでに持っていたりする。う〜ん、持ってるのは新品だからそのままとっておくか...

    もとは改造用として欲しかった筐体ですが、なんとなく素の Sparc で Solaris9 を動かしたい衝動にかられちぅ。
    そうそう、わたしってば素の Sparc マシンを動かしたことがないんですよ。 Sun の筐体を 6台も持っていながら。全部改造用で不稼働品でしたから。
    ようし、パパ Sparc マシンで Solaris 勉強して Snort も入れて生ログでハァハァしち ゃうぞ! ( この頃 の for Intel は忘れてください(汗))

    Posted by mass at 23:18 | Comments (0) | TrackBack

    2004年07月28日

    今日の雑記。

    BOGARD La+ 8月中頃まで一時休業とのこと。お待ちしております。

    プレミアムブック「Answer」感想」(マリア様の悪戯)
    うはぁ、こいつはいけねぇ。欲しくなってきちまいやがった。

    FreeBSD VuXML
    FreeBSD に関する OS / Ports の Security issues リストだそうな。あぁ素敵。めもめも。 Security Officer 自らがメンテですか。アンテナかりかり。
    [FreeBSD-users-jp 80322] portaudit (was: Re: Windows 上のFTP server は insecure か?)」(FreeBSD-users-jp) より。

    maidear 、 8/10 で閉店。[Hjk/変人窟 経由]
    いろいろあったんだろうなぁ。と愚考するなり。
    みんな〜、はやく〜!!

    読子・リードマン with Pinky:st」(Book of The Dream World)
    カーッ!!! これは...
    イイ!!!

    Posted by mass at 23:54 | Comments (0) | TrackBack

    2004年07月26日

    Kinput2 + Wnn7 でカスタマイズもするのれす。

    Wnn7 (OMRON) の xwnmo がうちの環境で調子が悪いというのは以前書いた気がしますが、より酷い状況になったのでとりあえず kinput2 で緊急回避。楽々入力が好きなんだけどなぁ...
    辞書サーバは製品版の jserver をそのまま使います。
    ports/japanese/kinput2-wnn7 を入れておきませう。

    またまた長くなったので追記行き。
    やってることは .Xdefaults , .xinitrc の編集と kinput2 の ON/OFF キー変更、句読点での変換有効化、ってところです。

    で、以下のファイルを編集しまふ。 xwnmo の指定があったらコメントにしませう。

    ・$HOME/.Xdefaults に追加

    *inputMethod:           kinput2
    Kinput2*ConversionStartKeys: \
            Ctrlbackslash
    KTerm*VT100.kanjiMode:  euc
    KTerm*VT100.openIm:     true
    
    Shift+Space で日本語入力 ON されるのは邪魔なので Ctrl+\ に。でもこのままでは入力 OFF は Shift+Space でもできてしまいまふ。むぅむぅ。対策は後述なのれす。
    kterm の openIm は入れておかないと日本語入力できません。

    ・$HOME/.xinitrc に追加

    export XMODIFIERS="@im=kinput2"
    kinput2 -wnn -wnnenvrc $HOME/.Wnn7/wnnenvrc -ccdef ccdef.kinput2.egg &
    
    ccdef は egg で。一番 xwnmo のデフォルトに近いかられす。

    ・/usr/X11R6/lib/X11/ccdef/ccdef.kinput2.egg の変更

    > diff ccdef.kinput2.egg.orig ccdef.kinput2.egg
    18d17
    <       "n"     ' '             "ん"    convert-next-or-move-top-or-sendback
    60d58
    <       "n"     shift-space     "ん"    end-conversion goto Hiragana
    107d104
    <       "n"     ' '             "ン"    convert-next-or-move-top-or-sendback
    149d145
    <       "n"     shift-space     "ン"    end-conversion goto Hiragana
    235d230
    <       ""      ' '             ""      convert-next-or-move-top-or-sendback
    283d277
    <       ""      shift-space     ""      end-conversion goto Hiragana
    
    1. Space で変換しないようにする。
    2. Shift+Space で日本語入力 OFF しないようにする。
    としたのれす。
    ^W で変換したときフォーカスが先頭文節に移るように convert から convert-next-or-move-top-or-sendback にしたのれすが、もう一度 ^W したときに変換候補ウインドウが出なくなってとても切なくなったのれす。
    参考:kinput2 manual 入力文字変換の設定

    ・/usr/X11R6/lib/X11/ccdef/ ローマ字かな変換ルールファイルの変更

    > diff rule.hiragana.egg.orig rule.hiragana.egg
    238c238
    < #     "n"     'n'     "ん"
    ---
    >       "n"     'n'     "ん"
    240d239
    <       "n"     'n'     "んn"
    255,256c254,255
    <       "n"     '.'     "ん。"
    <       "n"     ','     "ん、"
    ---
    >       "n"     '.'     "ん。"  convert-next-or-move-top-or-sendback
    >       "n"     ','     "ん、"  convert-next-or-move-top-or-sendback
    > diff rule.katakana.egg.orig rule.katakana.egg
    238c238
    < #     "n"     'n'     "ン"
    ---
    >       "n"     'n'     "ン"
    240d239
    <       "n"     'n'     "ンn"
    255,256c254,255
    <       "n"     '.'     "ン。"
    <       "n"     ','     "ン、"
    ---
    >       "n"     '.'     "ン。"  convert-next-or-move-top-or-sendback
    >       "n"     ','     "ン、"  convert-next-or-move-top-or-sendback
    
      ネタ元:Wnn7 + kinput2 でちょこっとキーカスタマイズしてみた(Mistral Networks)
    "nn" と入力したときに "んn" となってしまうので、 "ん" となるように変更れす。 n を連打する癖がついてしまったのでこうしておかないとつらいのれす。助かりまつた。
    あと "n," 、 "n." と入力したときにも変換開始するようにもしたりしまつた。次の rul e.kigou.egg でやる句読点での変換対応だけでは最後に "ん、" 、 "ん。" が来たときに 変換してくれないのれす。
    「やる気がありません。」とか。

    ・/usr/X11R6/lib/X11/ccdef/rule.kigou.egg の変更

    > diff rule.kigou.egg.orig rule.kigou.egg
    223,224c223,224
    <       ""      ','     "、"
    <       ""      '.'     "。"
    ---
    >       ""      ','     "、"    convert-next-or-move-top-or-sendback
    >       ""      '.'     "。"    convert-next-or-move-top-or-sendback
    
    句読点で変換するための変更れす。これもなぜか癖になってしまいまちた。

    ようやく並な日本語入力環境になりまつた。あとはなぜか mlterm 上で日本語入力できないのが納得行ってませんが、折りを見て調査していこうかと思いまつ。しないかもしれまつぇん。

    Posted by mass at 01:31 | Comments (0) | TrackBack

    2004年07月25日

    vim-6.3 のマルチバイト動作不具合がなおってうれしいのだ〜

    ports/editor/vim (6.3系ですね)でマルチバイトの一部記号が入力できなくて鼻血出そうなのでがむばってみたのこと。
    ※ "「" など入力直後は表示されず、その後 Enter すると化けたようなのが出る。

    あくまで作業メモなのであしからず。

    で、意味もなく長くて追記行き。

    事前に ports/editor/vim で make build とかして関連 port を勝手に入れさせることをお勧めします(笑)
    また、前半部は勘違いによる特にやらなくても良かった KaoriYa パッチの当て方、後半部はマルチバイト取扱いに関する不具合の解消となっています。

    vim online から vim-6.3.tar.bz2 , vim-6.3-lang.tar.gz を download して展開、そこにパッチファイルを全部放り込み。
    そしてパッチを一気に適用。あ、シェルは tcsh で。

    > tar jxf vim-6.3.tar.bz2
    > tar zxf vim-6.3-lang.tar.gz
    > cd vim63
    > wget "ftp://ftp.vim.org/pub/vim/patches/6.3/6.*"
    > foreach i ( 6.* )
    foreach? patch -p <$i
    foreach? end
    > cd ..
    
    KaoriYa.net さんから Vim 6.3 用の差分パッケージを download してパッチ適用まで。
    > tar jxf vim-6.3.012-difj.tar.bz2
    > cp -Rp vim-6.3.012-difj/* vim63/
    > cd vim63
    > patch -p <diffs/kaoriya.diff --> -f してもいいかも恐いかも。
    
    本家の方がパッチレベル 014 だけど問題なかった模様。パッチ対象の元ファイルがないとぽろぽろとメッセージが出ますが、 MacOS 用とか Windows 用とかそれ系のソースを入れてないだけなので問題なし。
    で、びるどびるど。 configure も KaoriYa 謹製のを使用〜。
    > chmod +x kaoriya.configure
    > ./kaoriya.configure
    > make
    > make install
    
    おし。では早速テストしてみようじゃぁないか。
    > rehash
    > vim
    
    挿入モードに入って... をぉメッセージが日本語だ。どぅれ、 "「" を入れて、と。

    ...ほえ?

    えぇっと、もっかい、 "「" を入れて、と...

    ...ほえ?

    ...

    ...おぉう。諸君。我々は(ってお前だけ)壮大な勘違いをしていたようだ。
    KaoriYa パッチは

    日本語を扱う上で便利な設定やスクリプトが追加されています。
    
    だって書いてあるじゃん。マルチバイトで動作不具合の解消なんて一っ言も書いてないじゃん。
    おまぬけさんね。てへっ♥

    FreeBSD ports-jp のメールログから [ports-jp 14670] mblen() used in vim を発見、

    > diff -crN mbyte.c.bak mbyte.c
    *** mbyte.c.bak Sun Jul 25 00:51:03 2004
    --- mbyte.c     Sun Jul 25 01:22:19 2004
    ***************
    *** 657,663 ****
                         * where mblen() returns 0 for invalid character.
                         * Therefore, following condition includes 0.
                         */
    !                   if (mblen(buf, (size_t)1) <= 0)
                            n = 2;
                        else
                            n = 1;
    --- 657,663 ----
                         * where mblen() returns 0 for invalid character.
                         * Therefore, following condition includes 0.
                         */
    !                   if (i >= 0x80)
                            n = 2;
                        else
                            n = 1;
    
    のパッチを当てて問題なく動いたのこと。ありがたや... そして快適。
    KaoriYa パッチも細かな不具合を解消しているみたいなので、よしとします。えぇ。

    ports のビルド時に自動でローカルのパッチファイルを当てる設定があったような気がす るんだけどなぁ... どっかで見た気がするんだよなぁ...

    Posted by mass at 03:18 | Comments (0) | TrackBack

    2004年07月20日

    今日の雑記。夏、お盛ん。

    はふ〜。
    東京都心、史上最高の39.5度 千葉・市原40.2度」(asahi.com)
    ビル停電で季節を感じた。う〜ん、風流。

    と人ごとのように思っていたら、 (株)シーマン 無料サーバー監視サービス から警告メール。
    む。 sshd は開けてないからわからん。

    で、ご帰宅即調査。
    公開サーバの httpd がじゃんじゃかお亡くなり。今日の 10:40 頃から見えなかったようです。申し訳ないです。
    ハードウェア的には問題なく、 sshd も動いてる、ログには何も出ておらず... /bin/ps で見ると SsJ のみ残ってた。これでは今までの自作強制再起動スクリプトでは利かないわ...
    ってなわけでちょいと手直しして、

    #!/bin/sh
    JID=`jls | grep "www" | awk '{ print $1 }'`
    COUNT_ZOM=`ps -axwww | grep ZWJ | grep httpd | wc -l | awk '{ print $1 }'`
    COUNT_PRC=`ps -axwww | grep SJ | grep httpd | wc -l | awk '{ print $1 }'`
    THRESHOLD_ZOM=2
    THRESHOLD_PRC=1

    if [ $COUNT_ZOM -ge $THRESHOLD_ZOM -o $COUNT_PRC -le $THRESHOLD_PRC ]; then
            jexec $JID /usr/local/etc/rc.d/apache2.sh restart 2>&1 /dev/null
    fi
    で cron 仕込み。ゾンビが 2匹以上、もしくはセッションリーダー以外が 1 以下なら強制 restart ってことでひとつ。 /bin/ps の仕様、よくわかってません。テストしてません。っていうかこんなスクリプトが必要な状態ってことがおかしい。あぁおかしい。

    お。復旧通知メールが来た。
    sshd 開けるかぁ...

    今日の公開サーバの温度推移。
    2004072001.png
    日中 60度越えてるっ! 死ぬっ! 死ぬっ!

    Posted by mass at 21:42 | Comments (0) | TrackBack

    2004年07月01日

    「だめ」が復活しただけ。

    python が exited on signal 6 してた件(この日)は /etc/libmap.conf に、

    libc_r.so.5                     libpthread.so.1
    libc_r.so                       libpthread.so
    
    と書けば良いだけであり、 /usr/src/UPDATING にしっかり書いてあり、シテオク。
    というわけでつつがなく ninix-aya が起動。まゆら&黒うにゅうであり 涼璃とまぐに であったりする。

    久しぶりに動いたのでとても嬉しかったりするのはやはりだめすぎであると思われ、ぐんにょり。

    Posted by mass at 01:21 | Comments (0) | TrackBack

    2004年06月18日

    ghostscript-gnu(7.07) で日本語が印刷できなくなったら...

    突然タイトルな状態になってびっくりしたのでメモ。

    > gs hogehoge.ps
    Can't find (or can't open) font file /usr/local/share/ghostscript/Resource/Font/Ryumin-Light-EUC-H.
    とか何度も何度もこれでもかと言われてしまった場合、 /usr/local/share/ghostscript/7.07/lib/CIDFnmap を確認。
    (CIDFnmap.jp) .runlibfile
    という行がなければ入れなさい。 > わたし
    Font を探すときゃぁ CIDFnmap → CIDFnmap.jp とたどるんだぁということをすっかり忘れていた。数年前もこれで苦しんでいた気がする。成長していないという証拠。そう、わたしは初心を忘れないのだ。(誤用)
    この前も ghostscript 経由で印刷したんだけどなぁ... ってソースファイルだから気付かなかったのか。何はともあれモトヤフォントで綺麗に印刷できてホッと一息。

    というわけで、 ghostscript を portupgrade したときは CIDFnmap & CIDFnmap.jp の中身を確認しやう > わたし
    pkgtools.conf をまじめに勉強する頃かもしれづ。

    Posted by mass at 01:32 | Comments (0) | TrackBack

    2004年06月10日

    最近の vim のマルチバイト処理、変だよね...?

    Vim 6.3 リリース」(/.jp)
    6.2.531 の頃からマルチバイトの扱いがおかしくなってる気味。 6.3 も試したら同様。 "、" とか "「" とか入力すると変なことになる。マルチバイト文字上をカーソル移動させると漢字・カタカナは一文字移動するのに 2回入力、ひらがなは 1回で OK 。(一部きちんと判別してる漢字もあるようで...)
      ※私はマルチバイト処理に関して根本的に分かってません。
    最近は jvim3 で逃げてます。ってか vim の最新機能なんて全然使ってないから大差ないといえばない。
    同記事のコメントで Ctrl + [ 入力は Esc と同機能ということを知り、さらに手を伸ばさなくて楽になったのでちょっと嬉しい。

    Posted by mass at 01:44 | Comments (0) | TrackBack

    2004年06月09日

    ports/www/apache2 RCng 入ったので気をつけたのこと。

    ports/www/apache2 が 2.0.49_2 になった際に こうなった ので /etc/rc.conf に

    apache2_enable="YES"
    apache2ssl_enable="YES"
    を追加したのこと。
    ports/UPDATING をちゃんと読んでたので混乱なし。ちょっとだけ成長した(笑)

    Posted by mass at 21:07 | Comments (0) | TrackBack

    2004年05月31日

    「シーラカンス本第4版」が出るそうな。

    [pgsql-jp: 33045] シーラカンス本第4版(pgsql-jp ML) にて告知。
    「改訂第4版・PostgreSQL 完全攻略ガイド」サポートページ
    シーラカンスフィギュアが予約特典だそうな。もう迷わず予約してしまいました。いつ読むのかは知らんが。

    Posted by mass at 21:01 | Comments (0) | TrackBack

    とんだーとんだー

    Sylpheed を portupgrade (0.9.10 → 0.9.11)したら大型 ML の未読情報がとんだ。なんだか清々しい気分になった。

    Posted by mass at 20:53 | Comments (0) | TrackBack

    2004年04月09日

    ぐあぁ

    vim で xwnmo からの入力がおかしいなんでだむかぁもういい寝る

    Posted by mass at 01:38 | Comments (0) | TrackBack

    2004年04月04日

    CASIO のラベルプリンター。

    CASIO のラベルプリンター KL-E20 が FreeBSD から使えんもんかと探していたら、 eggprint を見つける。んが、 KL-E11 には対応するがうちので動くか分からない。 CASIO のコマンド仕様書を読んでみると、印字用のイメージメモリの有り無し(イメージデータの格納形式が違う)、プリンタヘッドの印字幅が違う、とかちょこちょこ違う。いじるしかないかなぁ。 C言語知らないんだよなぁ(え?
    あ。 VFlib 使ってるのか。 ttf 直接読めないかなぁ。
    とソースをつらつらと眺めていた日。雨だしね。

    Posted by mass at 23:45 | Comments (0) | TrackBack

    2004年04月03日

    あれ?

    FreeBSD 5.X-CURRENT の /etc/master.passwd で bin とか www のシェル指定が /sbin/nologin から /usr/sbin/nologin になったのはどぅいぅことなんだろぅと思いつつもう寝る。

    Posted by mass at 00:32 | Comments (0) | TrackBack

    2004年03月17日

    miniSD のカードリーダ。

    A5502K で撮ったでかい画像がメールできないのかよ!
    ってことで バッファローMCR-MINISD を買った。これは小さい。
    もちろん FreeBSD(CURRENT 2004/3/4) で使うわけです。メディアを挿した状態で挿して dmesg 。

    umass0: Alcor Micro Mass Storage Device, rev 1.10/1.00, addr 3
    umass0: Get Max Lun not supported (STALLED)
    da4 at umass-sim0 bus 0 target 0 lun 0
    da4:  Removable Direct Access SCSI-0 device-
    da4: 1.000MB/s transfers
    da4: 14MB (29120 512 byte sectors: 64H 32S/T 14C)
    
    usbdevs -v 。
    Controller /dev/usb0:
    addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
     port 1 powered
     port 2 addr 2: full speed, self powered, config 1, USB2.0 Hub Controller(0x0058), NEC Corporation(0x0409), rev 1.00
      port 1 addr 3: full speed, power 50 mA, config 1, Mass Storage Device(0x9330), Alcor Micro(0x058f), rev 1.00
    

    全く問題なし。

    Posted by mass at 00:18 | Comments (0) | TrackBack

    2004年03月13日

    FreeBSD CURRENT で Perl5.8 になったこと。

    /usr/ports/UPDATING 内の 20040204: にて、

    portupgrade -o lang/perl5.8 -f perl-5.6.1_15
    portupgrade -f p5-\*
    
    とあるが、これだと japanese/p5-Jcode や japanese/p5-nkf が portupgrade のグラブに引っ掛からないので、
    portupgrade -f \*p5-\*
    
    の方がいいと思った次第。

    MovableType が動かなくて焦った(笑)

    Posted by mass at 14:49 | Comments (0) | TrackBack

    2004年03月04日

    mergemaster のオプションを少しだけお勉強した。

    -t hogehoge
      仮のルート環境ディレクトリを hogehoge に指定。
    -D hogehoge
      出力先ディレクトリを hogehoge に指定。
      hogehoge/etc とか書きたいところだけどそれはちがう。

    ってわけで親環境 Single User Mode で installworld 後に 親/jail環境 mergemaster をまとめてできるようになってパパ納得。わざわざ mergemaster のためだけに jail 立ち上げてたのがばかみたい。
    ってわけで(にかいめ) ここらへん 更新。

    Posted by mass at 22:22 | Comments (0) | TrackBack

    FreeBSD-SA-04:04.tcp にちぅい。

    FreeBSD-SA-04:04.tcp
    「III. Impact」を Exciteテキスト翻訳 に通したら比較的分かりやすい翻訳をしてくれて感動したのでコピペ。

    遠隔の攻撃者は、TCP(HTTP、SMTPおよびFTPを含む多くのそのようなサービスがあります)に基づいた
    サービスを提供する機械に対する低い帯域幅のサービスの否認の攻撃を行なってもよい。多くのシー
    ケンス外TCPセグメントを送ることによって、攻撃者はシステム衝突に恐らく結びついて、目標機械
    に利用可能なメモリ・バッファー("mbufs")をすべて消費させることができます。
    というわけであぷだてしちぅ。

    Posted by mass at 00:25 | Comments (0) | TrackBack

    2004年02月19日

    apache2 ログを analog に振る舞う。

    まとめてメモ。追記行き。
    全然調整してないけどそこはそれ。

    /usr/ports/www/analog で make install clean 。
    /usr/local/etc/analog.cfg のレポート機能をがしがし ON 。
    標準の analog.cfg に以下を追加。

    HOSTNAME "てきとーなホスト名"                 # 統計のタイトル・ヘッダーで使用
    HOSTURL "解析対象のURL"                       # "HOSTNAME" の <a> タグで使用
    LANGUAGE JAPANESE-EUC
    HOSTEXCLUDE 集計対象外のホスト名かIPアドレス
    FILEEXCLUDE *.jpg,*.gif,*.png,*.css,*.cgi     # 集計対象外のファイル拡張子
    ARGSEXCLUDE /*/*.cgi                          # 対象の引数を無視
    CHARTDIR /admin/                              # 円グラフ置き場の URL
    LOCALCHARTDIR /usr/local/www/admin/           # 円グラフ置き場のファイルシステムパス
    
    DNS WRITE                                     # DNS 検索とキャッシュ更新の指定
    DNSFILE /usr/local/etc/dnscache.txt           # DNS キャッシュファイル
    DNSLOCKFILE /tmp/analog_dnslock               # キャッシュのロックファイル
    DNSGOODHOURS 720                              # 検索結果の保持(信用?)期間
    
    # 〜〜これ以下は参考リンク「analog 5.32 on FreeBSD 5.2」そのまま。〜〜
    GENERAL         ON      # General Summary               全体の概要
    YEARLY          ON      # Yearly Report                 年別レポート
    QUARTERLY       ON      # Quarterly Report              4半期別レポート
    MONTHLY         ON      # Monthly Report                月別レポート
    WEEKLY          ON      # Weekly Report                 週別レポート
    DAILYREP        ON      # Daily Report                  日別レポート
    DAILYSUM        ON      # Daily Summary                 曜日別集計
    HOURLYREP       ON      # Hourly Report                 時間別レポート
    HOURLYSUM       ON      # Hourly Summary                時間別集計
    WEEKHOUR        OFF     # Hour of the Week Summary      時
    QUARTERREP      OFF     # Quarter-Hour Report           15分間隔レポート
    QUARTERSUM      OFF     # Quarter-Hour Summary          15分間隔集計
    FIVEREP         OFF     # Five-Minute Report            5分間隔レポート
    FIVESUM         OFF     # Five-Minute Summary           5分間隔集計
    DOMAIN          ON      # Domain Report                 ドメインレポート
    ORGANISATION    ON      # Organisation Report           組織別レポート
    HOST            ON      # Host Report                   ホストレポート
    FAILHOST        ON      # Host Failure Report           ホスト不成功レポート
    FAILHOSTFLOOR   0r      # ホスト不成功レポートを省略せずに…
    FAILREF         ON      # Failed Referrer Report        リンク元URL不成功レポー>
    ト
    REFERRER        ON      # Referrer Report               リンク元URLレポート
    REFFLOOR        0r      # リンク元URLレポートを省略せずに…
    REFREPEXCLUDE   http://www.mass.dnsalias.com/*
    REFSITE         ON      # Referring Site Report         リンク元サイトレポート
    REFSITEFLOOR    0r
    SEARCHQUERY     ON      # Search Query Report           検索語句レポート
    SEARCHQUERYFLOOR        1r
    SEARCHQUERYCHART        OFF
    SEARCHWORD      ON      # Search Word Report            検索単語レポート
    SEARCHWORDFLOOR 0r
    SEARCHWORDCHART OFF
    BROWSERREP      ON      # Browser Report                ブラウザレポート
    BROWSERSUM      ON      # Browser Summary               ブラウザの概要
    BROWSUMFLOOR    0p      # ブラウザの概要を…
    OSREP           ON      # Operating System Report       OSレポート
    STATUS          ON      # Status Code Report            状態コードレポート
    SIZE            ON      # File Size Report              ファイルサイズレポート
    FILETYPE        ON      # File Type Report              ファイル種類別レポート
    TYPEFLOOR       0b      # ファイル種類別レポートを…
    DIRECTORY       ON      # Directory Report              ディレクトリレポート
    DIRFLOOR        0b      # ディレクトリレポートを…
    FAILURE         ON      # Failure Report                リクエスト不成功レポート
    REQUEST         ON      # Request Report                リクエストレポート
    REQFLOOR        0r      # リクエストレポートを…
    
    サーチエンジンから来た場合の検索語の文字化けを解消するために postanalog を入れる。その前に同ツールが perl で use NKF; なので、 /usr/ports/japanese/p5-nkf を make install clean 。
    こちら (postanalog) からダウンロードしてリネームして実行フラグ立ててポイ。
    試しに、
       
    /usr/local/bin/analog | /usr/local/bin/postanalog -i > /usr/local/www/admin/analog.html
    
    で analog.html をきちんとブラウザで表示できれば OK 。
    /etc/crontab に、
       
    10      0       *       *       *       実行ユーザー名   /usr/local/bin/analog | 
    /usr/local/bin/postanalog -i > /usr/local/www/admin/analog.html 2>/dev/null     
    
    を追加して(実行時間は適当に、一行で書く)、 cron に SIGHUP 送るのだ。

    参考リンク:
    analog 5.32 on FreeBSD 5.2」(Welcome to TAKE-LABO)
    postanalog:ログ解析analog用ポストプロセッサ(日本語検索語解析)」(テクニカルファシリテータ i16(愛一郎) .jp)

    Posted by mass at 02:41 | Comments (0) | TrackBack

    2004年02月16日

    今日読んでいた本。「FreeBSD Expert 2004」

    今日は手伝いをしつつ読書。
    FreeBSD Expert 2004
    FreeBSD Expert 2004 技術評論社編集部

    初心者から中級者まで何かが多い日も安心。
    わーい、ぼくも Nessus 入れてみよー!
    で不正アクセスで捕まっちゃうのー! もがもが。

    Posted by mass at 23:57 | Comments (0) | TrackBack

    2004年02月13日

    BIOS から見えない HDD の復旧!?

    ディスクが BIOS から認識しなくても諦めるな!」(不定期性写真日記)
    こういう尋常じゃない力業ができるのもいろいろな環境で鍛えているからなんだろうなぁ。素直に尊敬です。
    やっぱりバックアップはとっておけ、ということで。 > 自分

    Posted by mass at 02:18 | Comments (0) | TrackBack

    今日の作業記録。「MovableType の管理画面を SSL にする」

    突然とち狂ってモバイルで Blog 更新だだだという気分になってしまった場合にパスワードが平文で流れるのは気分が悪いので管理画面を SSL にするのこと。でも SSL とかさっぱりなのでやっぱりパクっていいとこどりするいやなやつ > mass

    あまりに長くなったので「追記」行き。

    前提:
    FreeBSD 5.X-CURRENT で Ports から apache2 をインストールしていること。
    DocumentRoot とか cgi-bin とかの位置はデフォルトのまま。

    1. 秘密鍵とサーバ証明書の作成

      サーバ証明書は本来でしたら正規の認証局に依頼して発行してもらい、「なりすまし」と「盗聴」を防止するものなのですが、ここでは通信経路を暗号化して「盗聴」を防ぎたいだけなので自己認証で発行します。もうちょっと突っ込みたい方は「初めてのSSLサーバ証明書 ガイド サーバIDとは」(日本ベリサイン) をどうぞ。
      apache2 の各種設定ファイルと同じところにいろいろ置きます。秘密鍵とサーバ証明書を置くディレクトリを作りましょう。
      # cd /usr/local/etc/apache2/
      # mkdir ssl.key ssl.crt
      

      ○秘密鍵の作成

      "-rand" には鍵生成のための乱数ファイルを指定します。これは内容がめためたであればあるほど良いようです。 /var/log/messages を使う方が多いようですが、うちは apache2 のアクセスログがいちばん活きが良いのでそちらを使いました。その他のパラメータは VeriSign の手順通りにしましょう。
      # openssl genrsa -des3 -rand /var/log/httpd-access.log -out ssl.key/server.key 1024
      15249751 semi-random bytes loaded
      Generating RSA private key, 1024 bit long modulus
      ...............................................++++++
      ..........++++++
      unable to write 'random state'
      e is 65537 (0x10001)
      Enter pass phrase for ssl.key/server.key:<てきとーなpassphrase>
      Verifying - Enter pass phrase for ssl.key/server.key:<もっかいpassphrase>
      
      途中で妙なメッセージが出てるけど私は気にしません。

      ○ CSR の作成

      証明書発行要求書、と言うらしい。これを認証局に送るとサーバ証明書を送り返してくれるらしい。らしいばっか。
      "-key" とか "-rand" とか "-out" とか紛らわしいので気をつけましょう。
      いろいろと入力を要求されますが、すべてローマ字で回答してください。
      自己認証なので内容は適当でも良いですが、もし本当の認証局に提出するならそれなりにしっかりと回答しましょう。
      # openssl req -new -key ssl.key/server.key -out server.csr
      Enter dpass phrase for ssl.key/server.key:<秘密鍵のpassphrase>
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) [AU]:JP ← 日本在住の方ならこれで。
      State or Province Name (full name) [Some-State]:[てきとーな都道府県名]
      Locality Name (eg, city) []:[てきとーな市区町村名]
      Organization Name (eg, company) [Internet Widgits Pty Ltd]:[てきとーな組織名] ← サイト名とかで良いかも。
      Organizational Unit Name (eg, section) []:[てきとーな部署名] ← ネタにつまったら空欄でも可
      Common Name (eg, YOUR name) []:[WWWサーバのFQDN]
      Email Address []:[管理者のメールアドレス]
      
      Please enter the following 'extra' attributes
      to be sent with your certificate request
      A challenge password []: ← 入力不要
      An optional company name []: ← 入力不要
      
      せっかくの自己認証なのでばか正直に答えちゃいけません! ここがあなたのセンスの見せどころなのです!!(なぜだ)

      ○サーバ証明書の作成

      CSR をもとにサーバ証明書を作ります。本来この作業は認証局が行うものですが、自己認証なので自分で行います。
      # openssl x509 -req -in server.csr -signkey ssl.key/server.key -out ssl.crt/server.crt -days <証明書有効日数>
      Signature ok
      subject=/C=JP/ST=[てきとーな都道府県名]/L=[てきとーな市区町村名]/O=[てきとーな組織名]/OU=[てきとーな部署名]
      /CN=[WWWサーバのFQDN]/emailAddress=[管理者のメールアドレス]
      Getting Private key
      Enter pass phrase for ssl.key/server.key:<秘密鍵のpassphrase>
      unable to write 'random state'
      
      また妙なメッセージが出ていますが、また気にしません。
      オプション -days は指定しなければ 30日です。この場合、証明書作成から 30日を経過後にアクセスするとブラウザから証明書が期限切れで云々のメッセージが表示されます。
      それが嫌なら日数を多めにとるとよいでしょう。どうせ自己認証なので期限が切れようが切れまいが信頼性のないことに変わりありませんから。
      以上の作業で必要なものは揃いました。
      CSR/usr/local/etc/apache2/server.csr
      サーバ証明書/usr/local/etc/apache2/ssl.crt/server.crt
      秘密鍵/usr/local/etc/apache2/ssl.key/server.key

    2. apache2 の SSL 設定

      apache2 の ssl.conf を変更します。
      # vim ssl.conf
      ServerName <WWWサーバのFQDN>:443
      ServerAdmin <管理者のメールアドレス>
      
      SSLCertificateFile /usr/local/etc/apache2/ssl.crt/server.crt
      SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/server.key
        → apache2 のデフォルト設定。
          鍵、証明書ともこれにあわせると手間が減ります。
      

    3. apache2 の動作確認

      起動してみましょう。通常の起動パラメータは "start" ですが、 SSL をロードする場合は "startssl" となります。起動する際に秘密鍵のパスフレーズ入力を要求されます。
      # /usr/local/sbin/apachectl startssl
      Apache/2.0.48 mod_ssl/2.0.48 (Pass Phrase Dialog)
      Some of your private key files are encrypted for security reasons.
      In order to read them you have to provide us with the pass phrases.
      
      Server www.mass.dnsalias.com:443 (RSA)
      Enter pass phrase:<秘密鍵のpassphrase>
      Ok: Pass Phrase Dialog successful.
      
      エラー無く起動したなら、ブラウザで https://<WWWサーバのFQDN>/cgi-bin/mt/mt.cgi にアクセスしてみましょう。
      「Website Certified by an Unknown Authority」やら「セキュリティの警告」やらが出るかと思います。今回作ったサーバ証明書は正規の認証局によって発行されたものではないため、ブラウザが保持しているルート証明書で照合できないためです。(あってるかなぁ?)

    4. MovableType の設定

      MovableType の mt.cfg に以下の記述を追加します。
      AdminCGIPath https://www.mass.dnsalias.com/cgi-bin/mt/
      
      これを追加しないと、ログアウトした後のログイン画面が非 SSL 画面になってしまいます。それ以外にも不都合があるかも...

    5. パスフレーズ入力なしで apache2 with SSL を起動する

      サーバ再起動の度にパスフレーズ入力もあれなんで、入力なしで起動できるようにします。
      # cd /usr/local/etc/apache2/ssl.key/
      # mv server.key server.key.bak 
      # openssl rsa -in server.key.bak -out server.key
      Enter pass phrase for server.key.bak:<秘密鍵のpassphrase>
      writing RSA key
      
      こうすると次回以降、パスフレーズなしで起動できます。本当は望ましくないのかも知れませんが...

    6. その他

      apache2 を Ports からインストールした場合、 /usr/local/etc/rc.d/apache2.sh というシェルスクリプトが置かれます。このスクリプトはサーバ証明書の有り無しによって apachectl に渡すパラメータを加工しているので、わざわざスクリプトをいじる必要がありません。 portupgrade の時も安心です。


      参考リンク(本当に助かりました):
      Apache2+mod_sslによるセキュアなWebサーバ」(日替わり実験室)
      Movable Typeの設置」(What a Wonderful World)

    オチ:
    全てのページが SSL 対応になってしまったわけだが...



    ---- 2004/9/17 追記。

    月日の経つのは早いもので、半年などあっと言う間です。この記事を書いた当時はゲームやアニメ三昧でのんべんだらりと日々をすごし、周りからは「いい加減働いてください。」「だめ人間ですね。」「何のために生きているのですか。」「いまならひっそりと死ねますよ。」などと言われながら働き口を探していたような気がなんとなくします。(後半 は恐らく被害妄想)
    そのときに作ったサーバ証明書も作成時に指定した 180日という期限がやってきました。このままでも個人的に実害はないのですが、「いちいち出るウインドウがうざってぇんだこんちきしょうめぇ」ということで日付だけ更新しました。

    # cd /usr/local/etc/apache2
    # openssl x509 -req -in server.csr -signkey ssl.key/server.key -out ssl.crt/server.crt -days 180
    # /usr/local/etc/rc.d/apache2.sh restart
    
    また 180日に設定したので、また 180日後に更新する必要があります。(や、しなくてもいいんですが。)
    まぁ、作業を忘れないように、ということで。あんまり意味ないけど。

    ---- 2005/3/16 追記。

    また更新すた!!

    Posted by mass at 01:32 | Comments (0) | TrackBack

    2004年02月10日

    devfs in jail のお話。もぅおしまい。

    もう一週間も前のお話になりますが、以下の修正が /etc/defaults/rc.conf に入りました。
    Revision 1.197
    #jail_example_devfs_ruleset="123"		# devfs ruleset to apply to jail
      これが...
    #jail_example_devfs_ruleset="ruleset_name"	# devfs ruleset to apply to jail
      これに。
    
    気づいた理由は昨日 mergemaster したから。
    ...その修正はもっと早くやるべきではなかったかしら?

    というわけで、これから始める方は迷うことなくルールセット名を書いてください。
    ちなみにおばかさんの苦闘の記録は こちら
    Posted by mass at 01:56 | Comments (0) | TrackBack

    今日の作業記録。「Solaris9 で DHCPclient」

    NIC をうまく認識しないので WinXP と交換する。 82544GC から 82540EM へ格下げ(?)である。どちらも Intel 入ってる Gigabit 、である。
    改めて Intel 謹製の driver package を上書きする。
    # pkgadd intcgigae.pkg
    # touch /reconfigure
    # shutdown -y -g0 -i6
    
    で、どうも ifconfig -a で出てこない。 ifconfig e1000g0 plumb なんぞ no such interface と言われる。man をよみよみしていたら、こんにゃろう内蔵NICの関係か、 instance number がずれてやがる。
    # ifconfig e1000g1 plumb
    
    きた!
    # touch /etc/dhcp.e1000g1
    # echo [hostname] > /etc/hostname.e1000g1
    
    でリブート。で、 IPアドレスはもらえたものの、 Hostname : unknown ってなんだよ。googleDHCPサーバとクライアントの管理 (Running System V) というページに導かれる。そうか、 DHCP サーバの実装の問題か。確かに /etc/init.d/ で "unknown" で grep すると変なのが出てくる。で、
    # diff /etc/inetsvc.orig /etc/inetsvc
    158c158
    <       hostname=`/sbin/dhcpinfo Hostname`
    ---
    >       hostname=`/bin/cat /etc/nodename`
    
    # diff /etc/network.orig /etc/network
    810c810
    <       "dhcp") hostname=`/sbin/dhcpinfo Hostname` ;;
    ---
    >       "dhcp") hostname="`shcat /etc/nodename 2>/dev/null`" ;;
    
    のように強引に Go 。 /etc/network 内では /bin/cat だと not found とな。これで無事、 DHCP による IPアドレスの取得とホスト名の設定が完了。
    で。私はいつになったらこのマシンに Snort を入れられますか?
    (ノД`)モウヤダ...
    Posted by mass at 01:01 | Comments (0) | TrackBack

    2004年02月05日

    うざー。っていぅかばかー。

    うむ。何やら挙動がおかしいと思ったら filesystem full だった。
    mozilla が起動しない。と思ったら 1.6 が正式リリース のようなのでとりあえず build ちぅ。
    しょうがないから w3m で blog を更新しよう。と思ったら記事投稿はできるが rebuild されない。 mozilla の build を待つか。
    と w3m を使っていたら、タブ機能があることに気付く。キーボードオンリーの操作系と相まってなかなか使い易い。これはくせになりそう。
    と mozilla の build が終わった。問題なく起動するようだ。
    w3m よ。お前は良い奴だった。

    Posted by mass at 19:51 | Comments (0) | TrackBack

    2004年02月01日

    devfs in jail の問題、解決。

    メールいただいた いつきさん 、ありがとうございました。心の奥底から激しく感謝しております。もう激しく感謝しすぎて目の前のわたおにのフィギュアに(以下自粛)

    というわけで、 devfs in jail。 を更新しました。

    Posted by mass at 15:10 | Comments (0) | TrackBack

    2004年01月30日

    前までお世話になってました。(KDE)

    KDEから日本語ロケールが消える可能性あり」(/.jp)
    しばらく前まで KDE (日本KDEユーザ会) を使ってましたが、とにかく重い。起動に時間がかかる。
    で、ふとした拍子に XFce (XFce Wiki) を使ってみたら、動作が軽いし自分的に必要な機能は揃っているし。で、さくっと乗り換えちゃいました。起動時間も10分の1。

    最近 Kuser ML の流量がほとんど無くなってたので、やばそうだなぁ... とは感じていましたが...

    Posted by mass at 00:50 | Comments (0) | TrackBack

    2004年01月27日

    わたしは PostgreSQL 信者です。

    MySQLコマーシャルライセンス早分かり」(株式会社 ソフトエイジェンシー) [[pgsql-jp: 32107] Re: PostgreSQL の優位性 againstMySQL (日本 PostgreSQL ユーザ会)]
    ほぅほぅ。 MySQL でコマーシャルライセンスを回避したければ、
    ・開発ソースコードを再配布する。
    ・その改変と再配布を無制限許可する。
    なのね。だったら BSD ライセンスの PostgreSQL の方が費用面で有利だなぁ。

    関連リンク(IT用語辞典 e-Words):
    BSDライセンス」「GPL

    Posted by mass at 00:29 | Comments (0) | TrackBack

    2004年01月26日

    ダメ人間を自覚するときー。(sed & awk本)

    技術資料を本棚から取ろうとしたときに、マリみての文庫本が並んでて取れなかったときー。
    ちなみに取ろうとしたのはこれ。
    sed & awk プログラミング
    sed & awk プログラミング

    UNIX でスクリプト組むなら必携。絶対。
    マリみてとどっちを取るかって言われたらもちろんマうわなにをするやめConnection to www.mass.dnsalias.com closed.

    Posted by mass at 21:45 | Comments (0) | TrackBack

    2004年01月25日

    あぁ、もぅうざったい!!

    SCO曰く「北朝鮮はLinuxでスパコンを手に入れる」」(/.jp)
    だれかこのばか企業にとっとと引導を渡してください。すでに社会の害悪です。

    Posted by mass at 00:33 | Comments (0) | TrackBack

    2004年01月22日

    ゾンビの殺し方。

    当サイト、自前でサーバを立てておりますが、よく止まります。
    ハードウェアの調子が悪いわけでなく(作りは怪しいが)、停電が起きてる訳でもなく(UPS入れてます)、 apache のプロセスが zombie になってしまうのですな。今日も自宅に帰ってきたら zombie さんが湧き出ていたわけであります。週一くらいのペースかな?
    いつもだったら手で apache を再起動していたのですが、なぜか今日はむかっ腹が立ったので急拵えのスクリプトを cron に仕込んで回避するようにしてみました。
    Fail time は最長で 304秒程度になるはずです。
    いつも申し訳ありません。
    常日頃申し訳ありません。
    根本的な解決でなくて申し訳ありません。

    Posted by mass at 22:32 | Comments (0) | TrackBack

    2004年01月20日

    なんとなく ML でなくここで回答してみる。(sysctl hw.model)

    「[FreeBSD-users-jp 78029] sysctl hw.model を教えていただけませんか ?」(FreeBSD-users-jp)
    まだアーカイブ化されてなかった...

    ぼくのメインマシンは〜
    5.2-CURRENT 2003/12/29 CVSup:
    > sysctl hw.model
    hw.model: Intel(R) Xeon(TM) CPU 2.40GHz
    > dmesg | grep CPU:
    CPU: Intel(R) Xeon(TM) CPU 2.40GHz (2400.09-MHz 686-class CPU)

    P-4 Xeon 二つだよぅ...

    Posted by mass at 22:07 | Comments (0) | TrackBack

    2004年01月07日

    や、無理なものは無理だから。

    FreeBSD 5.x を -O9 で make buildworld する人間、初めて見た。
    こちとら -O2 で散々エラーになったから -O にしたっつぅのに。

    Posted by mass at 23:58 | Comments (0) | TrackBack

    そらりん、しょんぼりする。

    Solaris9 作業記録〜。
    Intel® PRO/1000 T デスクトップ・アダプタが認識できなくて困りました。

    Solaris 用の Driver をダウンロードして、
    # pkgadd intcgigae.pkg
    で、質問にはいはいはいはい、
    # devlinks
    # touch /reconfigure
    # shutdown -y -g0 -i6
    ってやっても dmesg に e1000g なんて出てこないのよ。
    > prtconf -Dv
    には "pci8086,1112 (driver name: e1000g)" なんて出てくるんだけど。
    精進が足りんのぅ。

    grep 使おうとして -r オプションがないことを知ってびっくりする。 ps 使おうとして -x オプションがないことを知ってびっくりする。(なら GNU 版を入れろ > おれ。)
    FreeBSD にべったりすぎて他の OS で通用しないことを痛感する。
    (つД`)うわぁぁん...

    参考にさせていただきました。:
    Solarisのインストール (次世代情報都市"みらい")
    memo (MARUYAMA Hiroshi personal page(Japanese page))

    Posted by mass at 01:53 | Comments (0) | TrackBack

    2004年01月05日

    もぅ Font っすよ。

    フォントの老舗、「株式会社 モトヤ」から新フリーフォント公開のお知らせが来た。モトヤアポロ1 だそうな... をぉ、明朝体風のフリーフォント来たーーー!! (← その程度の認識。)
    ゴシック体の モトヤシーダ と併せて使えば、個人で使う分には不自由はないかと。

    東風フォントの公開・開発終了。品質の良いフリーフォントは出てこないものかと首を長くして待っていました。(← 自分で開発に参加しようという意思はない。)
    ※や、みかちゃんフォントという手もありますが。

    モトヤさんのフリーフォント、再配布は一切不可というのがさみしいところ。ディストリビューションに同梱もできませぬ。まぁ、開発に莫大な労力が必要だからねぇ... しょうがないよねぇ... ねぇ...
    だめ? > モトヤさん

    フリー(かもしれない含む)フォント関連のリンク:
    株式会社 モトヤ
    みかちゃんフォント開発者のサイト
    あくあフォント開発者のサイト & あくあフォント推進委員会
    東風フォント開発者のサイト & 東風フォント代用品開発サイト

    みかちゃん と あくあ はかなり緩やかなライセンスやね。

    Posted by mass at 20:12 | Comments (0) | TrackBack

    2004年01月01日

    Wnn7 のアップデート来たーー!

    というわけで早速。症状変わらず。はふはふ。
    相変わらず xwnmo → XIMフォーカスの当るアプリ の順で起動し、そのアプリを終了すると xwnmo が "exited on signal 10 (core dumped)" でお亡くなりになる。
    ちくせぅ、こうなればオムロンに殴り込みしかござらぬ!!

    ...やっぱり SMP が関係しているのだろうか。
    アップデートに期待していただけに、ちと辛いわ...
    また報告しよう...

    ちなみに商品ページはこちら → Wnn7 Personal (オムロンソフトウェア(株))

    Posted by mass at 01:52 | Comments (0) | TrackBack

    2003年12月29日

    メインマシンが不調なんで Windows マシンより更新。

    IE 起動して〜。 blog 管理ページでエントリーの新規追加〜。
    漢字変換しようとして〜。 [Ctrl] + [W] したら〜。
    ウィンドウ閉じてんじゃねぇっ > IE 。
    や、 xwnmo (Wnn7) の変換キーが [Ctrl] + [W] なんすよ。
    もうそれに体が慣れちゃっててね。
    MS-IME向け に xwnmo のキーマップってパッと割り当てできないのかな?
    暇なときにでも探してみよう。

    で、エントリー追加して「保存」するとなぜ IE 様は
    「ページを表示できません」
    などとおっしゃられますか?
    しかもしっかり保存されてるし。再構築はされてないし。

    Posted by mass at 02:30 | Comments (0) | TrackBack

    メインマシンのFreeBSDいきなり不調。

    5.2-CURRENT(2003/12/03頃? CVSup)で。
    コンパクトフラッシュ → USB アダプタを挿したら数秒フリーズしてリブート。
    ログには何も残らず。いぇぃ!
    リブート後、もう一回挿しても問題なし。ふつーに読める。
    と思って blog 更新すんべかぁ、と xwnmo, sylpheed, mozilla あたりを適当に動かしていたら、 X が落ちた。
    何か消えたか?
    portupgrade -fa してみちぅ。

    Posted by mass at 02:29 | Comments (0) | TrackBack