Recent Entries
Archives
Search


Links
Powered by
Movable Type 2.64

2009年10月16日

バイナリにソースを同梱とか

バイナリにソースを同梱するトカ(;´Д`)

コンパイル元のソースファイルどれだっけ?というか、コレ誰が何時作ったんだよとか多数の企業さんが客先に出入りしてるような環境だとわからなくなったりして、そもそもソースどこ行ったのよ?と非常に困ることがありました。

で、サンプル:


objcopy --add-section=.cob_src=AICS0510.cob AICS0510.so AICS0510_new.so

ヽ(´ー`)ノ
.cob_srcというセクションにAICS0510.cobってファイルを流し込んでます(ぉぃ

readelf -aの結果を外挿する前、後で比べると:


--- AICS0510.so.txt 2009-10-15 17:48:48.000000000 +0900
+++ AICS0510_new.so.txt 2009-10-15 17:52:39.000000000 +0900
@@ -10,14 +10,14 @@
Version: 0x1
Entry point address: 0xfa0
Start of program headers: 52 (bytes into file)
- Start of section headers: 121060 (bytes into file)
+ Start of section headers: 214888 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 4
Size of section headers: 40 (bytes)
- Number of section headers: 27
- Section header string table index: 24
+ Number of section headers: 28
+ Section header string table index: 25

Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
@@ -45,9 +45,10 @@
[21] .data PROGBITS 0001d19c 01d19c 000590 00 WA 0 0 4
[22] .bss NOBITS 0001d740 01d72c 021394 00 WA 0 0 32
[23] .comment PROGBITS 00000000 01d72c 0000e6 00 0 0 1
- [24] .shstrtab STRTAB 00000000 01d812 0000d2 00 0 0 1
- [25] .symtab SYMTAB 00000000 01dd1c 000e60 10 26 193 4
- [26] .strtab STRTAB 00000000 01eb7c 000970 00 0 0 1
+ [24] .cob_src PROGBITS 00000000 01d812 016e78 00 0 0 1
+ [25] .shstrtab STRTAB 00000000 03468a 0000db 00 0 0 1
+ [26] .symtab SYMTAB 00000000 034bc8 000e70 10 27 194 4
+ [27] .strtab STRTAB 00000000 035a38 000970 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)


ちゃんと出来てますね(´ー`)typeとか弄った方が良いんですが、そういうのは追々やってまいります。

2009年09月09日

mdbtoolsのiconv処理

作業中のPCにMS-Access入れるのが面倒だし正規ライセンスのCDがどこかに行ってしまったので(;´Д`)MDB Toolsを試してみることに・・・

 したわけですが、普通に配布されている mdbtools-0.6pre1.tar.gz ではもう全然漢字とか通りませんでしたので、cvs版を取ってまいりました。やりかたは https://sourceforge.net/projects/mdbtools/developに書いているとおりです。ちなみにcvs login時のパスワードは無しなので、Enterだけ押しておきます。modulenameはmdbtoolsです。実行後にmdbtoolsというディレクトリが出来ていますので、cdで降りて、./autogen.shを実行後にmakeですねヽ(´ー`)ノ。

 しかし、やっぱり漢字が通らないのでしばらくコードを眺めておりましたら、MDBICONVとかMDB_JET3_CHARSETとか環境変数を使ってくれることがわかりましたので、


export MDBICONV=WINDOWS-31J

など設定して実行…やっぱり効きませんね(;´Д`)

printfなど入れたりしながら動きを追ってみましたところ、HAVE_ICONVがdefineされている時に通るべきコードを通っていないことが判明(;´Д`)簡単なパッチ作って対応。とりあえずJET3というかMS-Access2000でフィールド名とかテーブル名に漢字使ってても大丈夫にはなりました。


diff -u -r mdbtools/src/libmdb/file.c mdbtools.fix/src/libmdb/file.c
--- mdbtools/src/libmdb/file.c 2005-06-28 13:53:40.000000000 +0900
+++ mdbtools.fix/src/libmdb/file.c 2009-09-09 04:02:47.000000000 +0900
@@ -17,6 +17,7 @@
* Boston, MA 02111-1307, USA.
*/

+#include "config.h"
#include "mdbtools.h"

#ifdef DMALLOC
diff -u -r mdbtools/src/libmdb/iconv.c mdbtools.fix/src/libmdb/iconv.c
--- mdbtools/src/libmdb/iconv.c 2005-09-08 08:27:43.000000000 +0900
+++ mdbtools.fix/src/libmdb/iconv.c 2009-09-09 04:00:36.000000000 +0900
@@ -17,6 +17,7 @@
* Boston, MA 02111-1307, USA.
*/

+#include "config.h"
#include "mdbtools.h"
#include "errno.h"

2008年09月30日

VineLinuxのscreenコマンド

VineLinuxのscreenコマンド。どうして256色でないんだろうって(;´Д`)調べてみました

src.rpm取ってきてspecファイルを眺めてみたところ、--enable-colors256 となるべきところが--enable-color256 になってるポイ。作り直して完了。ちゃんと256色出るようになりましたヽ(´ー`)ノ

その他いくつかのパッチも充てて使ってますけど。いろいろかなり改善した感じですヽ(´ー`)ノ

この件、パッケージメンテナの人に連絡しましたので、しばらくしたら対応したパッケージがリリースされると思いますヽ(´ー`)ノ
メンテナの人対応超早かったです。すばらしい。

2008年05月30日

OpenCOBOLと変数の(3)

いちいち変数のアドレスを積むのはいいとして、型だとか長さだとか解析するのが面倒だなあと思いつつ(;´Д`)昨日のプログラムを眺めていたら…


GETVALUE(char *value, const char *varname) {
cob_module *module = cob_current_module;
cob_field *f = module->cob_procedure_parameters[0];
printf("%08x %08x\n", value, f->data);
}

なんてコードが書けることに気づいてニヤニヤしてしまいましたヽ(´ー`)ノ。内部で他のfuncを呼び出す際に moduleっていう構造体(実体はcob_current_module)に引数である変数の「内部アドレスを」別途積んでたんですねー(昨日の日記参照)。
ということでOpenCOBOL自身がパースした後の情報をガッツリ頂けそうです。これは革命的ヽ(´ー`)ノ
ちなみにこんな情報がとれそうです:

/* field attributes */

typedef struct {
unsigned char type;
unsigned char digits;
signed char scale;
unsigned char flags;
const char *pic;
} cob_field_attr;

/* field structure */

typedef struct {
size_t size;
unsigned char *data;
cob_field_attr *attr;
} cob_field;


2008年04月11日

OpenCOBOLと変数の初期化

OpenCOBOLというとORCA関連の人には有名ですが、一般的には情報は少ないですね(;´Д`)
そもそもどの程度互換性があるかとかこれから踏み込んでみようとする人たちにとっての情報は少ないんじゃないかと思います。いまでもSCREENセクションは?とかFAQにも関わらずあちこちで見かけます(;´Д`)。
# SCREENセクションはまだOpenCOBOLでは実装されていません試してないけどOpenCOBOL 1.0以降にはコードあるから幾らか動作するかも(未確認:20080619)

で、汎用機で使われているところのJCL、メーカーのCOBOLの組み合わせを無謀?にもOpenCOBOLと何か へ持っていく際にどんな地雷があるのか?これもまあ情報は全然ないと思います。ないので踏んで回るしかないのですが、いつものごとく地雷の上を飛び石状態の今日この頃(;´Д`)踏みまくってます。


INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN1-F ASSIGN AICC0160
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS LN010-FSTAT1
LN010-FSTAT2.

まあこんなコードがあって、JCLで外部からAICC0160へ値をASSIGNしてたとします。外部からASSIGN済みですから、このコードを含むCOBOLプログラム中ではAICC0160については何の初期化(後述)もしてないわけです。これをOpenCOBOLでそのままコンパイルして実行すると、長さ0のファイルをIN1-FとしてOpenしてエラーとなります。

そこでAICC0160へなんとかファイル名を引き渡したいのですが、なるべく元のCOBOLのコードは書き換えたくない・・・じゃあどうしよう?(;´Д`)?が今回のお題です。

OpenCOBOLは内部的には、一旦COBOLからC言語へ変換し、gccを使ってobjectを生成します。幸いこのC言語の状態も取り出すことができますので、部分的に切り出してみます。C言語のファイルは2本生成され:


/* PROGRAM-ID : AICM2666 */

static unsigned char b_1[4] __attribute__((aligned)); /* RETURN-CODE */
static unsigned char b_2[4] __attribute__((aligned)); /* SORT-RETURN */
static unsigned char b_3[4] __attribute__((aligned)); /* NUMBER-OF-CALL-PARAMETERS */
static unsigned char b_1466[1002] __attribute__((aligned)); /* AICC0160 */

(略)

static cob_field f_1466 = {1024, b_1466, &a_2}; /* AICC0160 */

(略)

上記のようなコードを含むヘッダファイルと本体のプログラムが生成されます。しかしながら、上記はヘッダファイル(*.h)ではありますが実は以下のようなコードから使用されているため、上記の定義はstaticなローカル変数として取り扱われてしまいます。


(略)
/* functions */

int
AICM2666 ()
{
return AICM2666_ (0);
}

/* end functions */

static int
AICM2666_ (const int entry)
{

#include "AICM2666.c.h" /* local variables */


(略)

ヤバい(;´Д`)関数の「中」でincludeしてるよ。
ローカル変数ですから、他のモジュールから変数領域を参照できないわけです。あわよくば変数領域を(横から)書き換えて対応しようと(いつのまにか)思っていたのにこれではかなり大変です。しかしながら、gccはstaticなローカル変数については律儀にもsymbolは定義してくれています。ただし、他の関数内のローカル変数名と衝突しないように、ポストフィックスを付けています( http://www.google.co.jp/search?hl=ja&q=gcc+variable+symbol+ASM_FORMAT_PRIVATE_NAME&btnG=Google+%E6%A4%9C%E7%B4%A2&lr= : gccの gcc/config/i386/i386.hで定義してある ASM_FORMAT_PRIVATE_NAME マクロにて生成。 f_1466 が f_1466.6233 のような名前になる)。そして、「今のところ」元の変数名がわかる程度の命名ルールでsymbolを作っているため、nmコマンド等で中身をのぞき見て元のsymbolを推測することができます。またこれらのsymbolはdlopen/dlsym等使用してアドレスを吸い上げることもできるのですローカル変数ではできないので別のルートから登坂中(;´Д`)。

とりあえず、Cで吐かせてそのコードを弄る(ヘッダ中で呼び出し1回目(変数アドレスの登録)、2回目(通常実行)するコードを追加)予定。

上記AICM2666を呼び出す

変数アドレスの登録

staticなローカル変数の領域を弄りまくる関数を呼ぶ

上記AICM2666を呼び出す

ヽ(´ー`)ノ

ヽ(´ー`)ノということで、ここから先は実装になるのですがとりあえず時間がないのでここまで。リクエストなどありましたら続き書きます。


しかし(;´Д`)・・・


cob_move (&cob_zero, &f_2641);
memset (b_2642, 48, 36);
memset (b_2649, 48, 3);
memset (b_2653, 32, 1024);
memset (b_2654, 32, 1024);
memset (b_2655, 32, 1024);
memset (b_2656, 32, 1024);
memset (b_2657, 32, 1024);
memset (b_2658, 32, 1024);
memset (b_2659, 32, 1024);

if (!h_IN1_F)

とか内部で独自に初期化しまくってますね。これだと外から変数の値書き換えても(;´Д`)元に戻ってしまいます。幸い、


/* initialize frame stack */
frame_index = 0;
frame_stack[0].perform_through = -1;

/* initialize number of call params */
(*(int *) (b_3)) = cob_call_params;
cob_save_call_params = cob_call_params;

goto l_2;

/* PROCEDURE DIVISION */

とか PROCEDURE DIVISIONの入口がわかるコメントはありますから、この直前あたりに変数の値差し替えるカラクリを忍び込ませればまだ手はあるかもしれません(;´Д`)オオゴトですが。

# ちなみにOpenCOBOLの処理系(cobc)に手を入れてもいいんですが、中はかなり複雑な作りになってますから手を出さないに越したことはないと思うわけです(;´Д`)はい。

2007年09月20日

CentOS4.5のgtarというか色々

ちょっと気になる動作を発見して/etc/issueがCentOS4.5を名乗る3台のサーバでgtarのmd5sumをとってみたら(;´Д`)


02d34f14535905e0e54a9e674939d246 /bin/gtar
8a939808d6550e1149eb74d3442a3192 /bin/gtar
2b6fba97dfe187e553dc59109e3d3c50 /bin/gtar


3台とも全部違うんですが…どれが正しいのかな?ちなみに3台とも(日付は違いますが、ファイルサイズは同じで)

[]#ls -l /bin/tar
-rwxr-xr-x 1 root root 161188 8·î 25 21:39 /bin/tar
[]#rpm -q tar
tar-1.14-12.5.1.RHEL4


を名乗ってましたが…(;´Д`)そんなもんですか?

2007年09月15日

徳島県が長崎県の電子県庁システムを採用

プレスリリースでてたのね(´ー`)
徳島県が長崎県の電子県庁システムを採用
徳島県庁が長崎県の「電子県庁システム」を導入します。
徳島県が長崎県の電子県庁システムを採用
引用:
徳島県では、初期構築段階の委託や、初期運用時のソフト保守については長崎県電子県庁システムの開発・運用に携わった長崎県内の地場IT企業を主に選定する方向

ウチで絡んだ部分は負荷分散(LVS+DSR)、DRBD+heartbeat、UPS装置(apcupsd)、4TBを超えるRAID6機(RAIDコントローラ用のkernelモジュール作成、initrd作成など)、DRBD+MySQL、net-snmp、CentOS5インストール関連 他ということで、中で動作してるアプリケーション以外の部分ほとんどですね。導入手順書、設定手順書の構成です。
LVS+DSR構成に関しては、基本に忠実にlo:0にエイリアス付けてやる方向で実装してますね。ネット上日本語の資料探すとklabさんのトコ由来の資料ばっかりなのでアレですが。
 ある程度メモ書き程度の内容でという話も有ったのですが、どっからどう考えてもハマる箇所が山のようにありましたし、結局構築内容をおさらいしながら書く必要がありましたから資料の分量的には2cmくらいになってしまったというか、これ見ながらだったら誰でもイケるんじゃないか位の詳しさで書いてました。というか雑誌の記事レベルには詳しい資料になりました。
 ちなみにIT放談 2-4 長崎県総務部理事 情報政策担当 島村秀世氏の「地場のホワイトボックス・メーカーが出してきたのはハードウェアが75万円、設計・検証費が84万円」の設計・検証費のほうもですが。これのコストダウンの秘密は、キャッシュ、プロキシ専用機を使わずに1台20万いくかいかないか位の1UのCore2Duo機5台で構成できたことですかね。負荷分散装置も使わずproxy.pac工夫してクリア。ただ、こちらも社内に実機数台置いて検証できたことが大きいです。後は地道に資料書けるメンバーがウチは数人居るというのも(7名中執筆経験者3名、雑誌連載2名、講師経験者3名(予定2名含む))
 年度末に向けて張り切っていきたいところですヽ(´ー`)ノ

 

2007年07月15日

LVSだDSRだ負荷分散だ

ということでLinuxでipvsadm使ってDSRしたりとか(´ー`)完了

リファレンスというか世の負荷分散っぷりを再確認するために色々調達してました
20070704149.jpgExtreme Summit1i
20070711012.jpgFoundry ServerIron
色々試しましたけど(本当?)とりあえずLinuxサーバ群しかぶら下げないならLVSで良いかなという感触。
速度的には申し分ありませんでしたが、ARPをゴニョゴニョしてやらないといけないので多少わずらわしいかなという程度。DSR時にロードバランサとしてセットアップした箱の方にarp -sで実サーバを登録しておいたほうが良い感じでした。


2007年04月08日

その後のsky2

その後の sky2というか SK-9E22(´ー`)

結局、日和って FC6の最新kernelのsky2に期待をかけてみました。
[admin@FS1 ~]$ uname -a
Linux FS1 2.6.20-1.2925.fc6 #1 SMP Sat Mar 10 19:15:16 EST 2007 i686 athlon i386 GNU/Linux
の環境で使ってますが、とりあえず OKのようです。kernel落ちも無く・・・(怪しいけど)
iperfで測ったところでは 940Mbps程度は出てるみたいだし

2007年03月19日

sky2腐れなのでsk98lin

Yukon2ドライバというかsky2(;´Д`)腐れ 再び

sky2はSK-9E22のLinux用ドライバなんですが、非常に不安定でバンバン落ちる(;´Д`)
とても使えるクオリティじゃないですね。
CentOS4.4用なんてとてもとても(;´Д`)FC6用でもサッパリ(;´Д`)

ということで、以下からDLして戦うことにsk98lin再びヽ(´ー`)ノイクヨ
http://www.marvell.com/drivers/driverDisplay.do?dId=153&pId=36

2007年02月16日

働くサーバ

サーバ働いてます(´ー`)
[root@pref165 ~]# w
 00:34:56 up 9 days, 14:53,  2 users,  load average: 922.41, 770.72, 333.97
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
admin    pts/0    192.168.25.250   Tue11    2days  0.06s  0.03s sshd: admin [pr
admin    pts/1    ns.lancard.com   00:29    1.00s 15.62s  0.03s sshd: admin [pr
働きすぎだよ(;´Д`)

2007年01月29日

20Uにとりあえず7台

さる事情で社内用サーバ7台(;´Д`)椅子の後ろに仮設置
VFSH0441a.JPG後ろからVFSH0442a.JPG前からVFSH0444a.JPGどうぞ
動作音が超うるさいというか、後ろからの排気が猛烈なので、SONY ワイヤレスステレオヘッドセット ブラック DR-BT20NX B を耳栓代わりに延々使ってるわけですが(;´Д`)無線であるというだけでかなり良い感じです。
最終的にはあとn台くらい入る予定。これらのために部屋の電源も30Aから50Aへ変更しましたが、電灯系(壁スイッチでON/OFFする系)とコンセント系の2系統それぞれ30A最大なのは相変わらず変わってないので、どうしてもコンセント系に使用が集中するのでどうしようかと検討中(;´Д`)
電灯系の中に唯一換気扇用のコンセントがあって、ここから15Aくらいなら引き出せそうですが、うっかり換気扇用の壁スイッチを落とすとサーバ全滅の可能性もあるエキセントリックなサーバ部屋ではあります。
とりあえず6台で8Aくらい流れている感じ。スペック的には:

Xeon 2.8GHz DUAL, 2GB mem
Xeon 2.2GHz DUAL, 3GB mem
Xeon 2.2GHz DUAL, 3GB mem
Xeon 2.2GHz DUAL, 1GB mem
Xeon 2.2GHz 1GB mem
Xeon 2.4GHz 2GB mem

なんですが、全体が同時にかなりの高負荷になるタスクも投入予定ですので、そのときにどの程度の電力が消費されるかも調査しないといけないですね(;´Д`)。とりあえず電力量計周辺をクランプメータで監視しながら調整するわけです。あとは夏場は廃熱がどの程度になるか・・・外に出てるサーバが全部帰ってきたらエアコンが負けるのは確実なのでこれはこれで何か考えないといけなさそうです(;´Д`)

 CentOS4.4を6台全部に入れつつ、社内のファイルサーバとNFSで接続できることを確認しつつ終了。ラック組み立てからここまで7時間。

 社内のNFSサーバ(40GB+200GBx4 RAID5)の/である/dev/hda3 を間違って swaponしてしまったために撃沈(;´Д`)再インストールになったりしてさらに30分。H8/3069FなuClinuxをgcc4でアレしてた資産が蒸発しました(;´Д`)サーバつけたまま床寝2時間して帰宅。

2006年09月15日

コンパイルファーム

某用途でコンパイルファーム作りヽ(´ー`)ノrpmゴリゴリ作ります

distccと ccacheでライトにガッツリと高速化。マシンも9台で Dual CPU、DualCore …
ということで make -j26 位ならサクサク動作するようになりました(´ー`)えへへ
~/.rpmmacros ファイルに
%_smp_mflags -j26
#%_without_gtk2  yes
追加して戦闘中~♪

2006年06月10日

ULTRIUM-TD1

Tape Device増えた(´ー`)ノULTRIUM-TD1
[root@DURON-PC root]# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 03 Lun: 00
  Vendor: ADIC     Model: FastStor DLT     Rev: D118
  Type:   Medium Changer                   ANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 04 Lun: 00
  Vendor: BNCHMARK Model: DLT1             Rev: 391B
  Type:   Sequential-Access                ANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 05 Lun: 00
  Vendor: IBM      Model: ULTRIUM-TD1      Rev: 36U3
  Type:   Sequential-Access                ANSI SCSI revision: 03
[root@DURON-PC root]# mt -f /dev/nst1 status
SCSI 2 tape drive:
File number=-1, block number=-1, partition=0.
Tape block size 0 bytes. Density code 0x0 (default).
Soft error count since last status=0
General status bits on (10000):
 IM_REP_EN
といってもメディアがないので動作検証できず(;´Д`)海外通販で1本$22くらい(DLT1用のテープより安い)ですが。早速発注(´ー`)

2006年06月06日

バックアップを仮運用

バックアップを仮運用ヽ(´ー`)ノDLT1

色々弄ってみた感想では DLT1なautoloaderは(ヤフオクで市販のDLT1テープメディアと額が同じ程度だったのに)かなり信頼できるポイ感じなのでバックアップ系を真面目に運用する計画に(´ー`)
丁度 provantage方面に発注してたDLT1用のテープメディアも届いたことだし。
DSCF0340.JPG
#もちろんこんな感じで床に置いたまま運用するわけじゃないんですがが

で、amanda使っていろいろもがきつつ設定方法を調査。ある程度設定うまくいき始めたのでフルバックアップ+インクリメンタルで作業検討。1日分の差分がどのくらい発生するか把握しておかないと計画立てられませんからね(´ー`)
で、1日で1.5GBも差分が(;´Д`)。どういうことかと amrestoreしつつ調べてみると cyrusのcacheとindexファイルがでかいみたい。とくにML向けが300種類くらいくるので半端じゃないです。

とりあえず dump対象から除外するために
find . -name cyrus.cache -o -name cyrus.index|xargs chattr +d
実施。
その他 squidのcacheも要らんので
chattr -R +d /var/spool/squid

しかし、今回特に学習したのは バックアップが面倒なのでなるべく余計なファイルをDISK上に置かないことです(;´Д`)資産持たなきゃ無くすこともないってやつで。持たないことでリスク減少ってやつですね。

2006年06月01日

防備録:libxml2のrpm作り

libxml2のrpmつくり(´ー`)防備録

rpmbuild -ba libxml2-2.6.24/libxml2.spec
(略)
error:  Bad owner/group: libxml2-2.6.24/libxml2.spec 

には

chown root:root libxml2-2.6.24/libxml2.spec

とか

2006年05月07日

大規模システムとLDAPと

1600ユーザって大規模?数秒間に同時400アクセスは?(´ー`)でも10000端末は大規模よね多分

で、比較的規模の大きなシステムでLDAPを認証DBのベースに使うことは多いと思うけれど、今回何度も遭遇したことは「参加してるgroup名の検索に時間がかかると、全体のパフォーマンスは猛烈に落ちる」という問題。関連するサーバ、daemonの使い方を変えるか、使わないかしかおそらく回避手段は無いと思われる。
色々調査すると様々なキーワードが沸いてきて、先人も同じ苦労をしたんだろうなあというのが分かる(例:RFC2307BIS)。幸運にして地雷を踏まずに、おそらく一生その問題に触れることがない人もいるに違いない(sgi_fam)。
でも、システム屋は苦労するし幸運にも地雷を踏むし須らく全ての問題に触れてしまう(´ー`)その差の分がノウハウと呼ばれてるんじゃないかねえ。ノウハウはnet経由で広まってコモディティ化しちゃうかもしれないけど、もっともっと凄い速度で色々な苦労ができればいいんじゃないだろうかね。ドキュメントなんて無いし、過去のMLにも事例は無かったりする。結局は自分でコード読んで、原因箇所を推測してstraceとかでprocessをアタッチしてsyscall追って、tcpdumpしてtail -f /var/log/hoge.logして…

2006年04月24日

nForce4のonBoardで 4本で RAID

nForce4のonBoardで 4本で RAID0ヽ(´ー`)ノRAID5
RAID0:
[root@FS1 ~]# time dd if=/dev/zero of=/mnt/md2/4gb.bin bs=1M count=4096
4096+0 records in
4096+0 records out

real    0m21.968s
user    0m0.024s
sys     0m15.229s
[root@FS1 ~]# time dd if=/mnt/md2/4gb.bin of=/dev/null bs=1M
4096+0 records in
4096+0 records out

real    0m16.979s
user    0m0.008s
sys     0m7.780s
RAID5:
[root@FS1 ~]# time dd if=/dev/zero of=/mnt/md3/4gb.bin bs=1M count=4096
4096+0 records in
4096+0 records out

real    0m58.990s
user    0m0.012s
sys     0m17.001s
[root@FS1 ~]# time dd if=/mnt/md3/4gb.bin of=/dev/null bs=1M
4096+0 records in
4096+0 records out

real    0m23.977s
user    0m0.016s
sys     0m10.069s
ベンチ性能を高めまくっておりますよ(´ー`)しかし弊社FileServerになるのですコレ

2006年03月25日

RAIDで読んだり書いたり

RAIDで読んだり書いたりヽ(´ー`)ノyear
[root@FS1 ~]# time dd if=/mnt/md2/nbd/ak1.nbd of=/mnt/md4/nfs/ak1.nbd bs=1M
10240+0 records in
10240+0 records out

real    3m14.281s
user    0m0.036s
sys     1m1.980s
3玉RAID5から 4玉RAID0へローカルで読み書き10GB(10*1024^3)
55.2MB/secですか貧乏RAIDにしては(;´Д`)かなり速いんじゃないかねえ
ちなみに書込み先のRAID0へ /dev/zeroからなら
[root@FS1 ~]# time dd if=/dev/zero of=/mnt/md4/nfs/aikenn3.nbd bs=1M count=10240
10240+0 records in
10240+0 records out

real    0m59.078s
user    0m0.044s
sys     0m41.355s
[root@FS1 ~]# time dd if=/dev/zero of=/mnt/md5/nfs/ak3.nbd bs=1M count=10240
10240+0 records in
10240+0 records out

real    3m3.873s
user    0m0.044s
sys     0m39.758s
と約 181MB/secくらい書き込みでも出てますが、同じ4玉を使ったRAID5だと その約1/3です。sata_silじゃなくて chipsetが内蔵している sata_nvに4玉つないだ場合も計測したいところ…
それは次回のメンテナンス時にヽ(´ー`)ノ
ココから先の速度は大人の領域とおもうので、promiseかarecaあたりのPCIe板も輸入予定ではあります。

2006年03月03日

続・gcc4で小さくなった訳(´ー`)

ちょっと調査をgoogleさんに任せていろいろ(´ー`)大体理解
http://lkml.org/lkml/2006/1/6/328 など見つつはあなるほど…(´ー`)2.4.xだと linux/compiler.hのようですね。
#if __GNUC__ == 3
#if __GNUC_MINOR__ >= 1
# define inline         __inline__ __attribute__((always_inline))
# define __inline__     __inline__ __attribute__((always_inline))
# define __inline       __inline__ __attribute__((always_inline))
#endif
#elif __GNUC__ == 4
# define inline         __inline__ __attribute__((always_inline))
# define __inline__     __inline__ __attribute__((always_inline))
# define __inline       __inline__ __attribute__((always_inline))
#endif
と書き換えて対応。元は __GNUC__ == 3 だけの記述だったので抜け落ちたようです。もちろんinlineじゃなくて大丈夫~ だとベターなんですが(-Osの場合)。
でこの書換えで gcc4でのバイナリサイズはどうなったかというと
-rwxr-xr-x  1 root root 1133688 Mar  2 20:59 linux
-rwxr-xr-x  1 root root  713656 Mar  2 20:59 linux.bin
あんまり小さくなってないねえ(;´Д`)約9KB減、約1.3%くらいですかね
まあそれでも、大変ありがたいことです。小さいことはヽ(´ー`)ノいいことなのです

2006年03月02日

gcc-3.4.5と gcc-4.0.2

gcc-3.4.5と gcc-4.0.2で出来た kernelサイズ比べてみたり(´ー`)
gcc-4.0.2
[root@FS1 linux-2.4.32]# ls -l linux linux.bin
-rwxr-xr-x  1 root root 1070537 Mar  1 22:08 linux
-rwxr-xr-x  1 root root  663768 Mar  1 22:08 linux.bin

gcc-3.4.5
[root@FS1 linux-2.4.32]# ls -l linux linux.bin
-rwxr-xr-x  1 root root 1134600 Mar  2 03:57 linux
-rwxr-xr-x  1 root root  722568 Mar  2 03:57 linux.bin
圧倒的じゃないか(;´Д`)
あとは、gcc-4.0.2で作った h8300-linux-elfなバイナリが本当に動作するかどうか…ですね(´ー`)これで動作するところまで持っていければ、作業したかいがあるという物です。また野望に近づいたかもわからんねヽ(´ー`)ノ

2006年01月16日

BRC-W108G-PK で RADIUS

BRC-W108G-PKで RADIUS弄りヽ(´ー`)ノ無線LAN

無線LAN環境のテストという理由をつけてBRC-W108G購入(´ー`)108Mbps。
マニュアルに記述が少なかったので多少不安はありましたが PPTPクライアント設定や 802.1x+RADIUS設定も とりあえずイケてるようなので安心(´ー`)以下 tcpdumpして確認:
        Access Request (1), id: 0x03, Authenticator: 1cab794f89b9f7076c5c0a89735a678f
          Username Attribute (1), length: 15, Value: MS-1013\admin
            0x0000:  4d53 2d31 3031 335c 6164 6d69 6e
          Calling Station Attribute (31), length: 19, Value: 00-13-d3-68-a1-fc
            0x0000:  3030 2d31 332d 6433 2d36 382d 6131 2d66
            0x0010:  63
          EAP Message Attribute (79), length: 20, Value: ..
            0x0000:  0201 0012 014d 532d 3130 3133 5c61 646d
            0x0010:  696e
          Framed MTU Attribute (12), length: 6, Value: 1287
            0x0000:  0000 0507
          NAS IP Address Attribute (4), length: 6, Value: 192.168.1.1
            0x0000:  c0a8 0101
          NAS Port Attribute (5), length: 6, Value: 0
            0x0000:  0000 0000
          NAS Port Type Attribute (61), length: 6, Value: Wireless - IEEE 802.11
            0x0000:  0000 0013
          Message Authentication Attribute (80), length: 18, Value: w...2k..|.2...O
            0x0000:  77e0 99a8 326b 1698 7cc1 3280 0b90 8a4f
        0x0000:  4500 0090 5c9c 4000 4011 29ea c0a8 1908  E...\.@.@.).....
        0x0010:  c0a8 197e 0407 0714 007c aec9 0103 0074  ...~.....|.....t
        0x0020:  1cab 794f 89b9 f707 6c5c 0a89 735a 678f  ..yO....l\..sZg.
        0x0030:  010f 4d53 2d31 3031 335c 6164 6d69 6e1f  ..MS-1013\admin.
        0x0040:  1330 302d 3133 2d64 332d 3638 2d61 312d  .00-13-d3-68-a1-
        0x0050:  6663 4f14 0201 0012 014d 532d 3130 3133  fcO......MS-1013
        0x0060:  5c61 646d 696e 0c06 0000 0507 0406 c0a8  \admin..........
        0x0070:  0101 0506 0000 0000 3d06 0000 0013 5012  ........=.....P.
        0x0080:  77e0 99a8 326b 1698 7cc1 3280 0b90 8a4f  w...2k..|.2....O
とりえあず吐いてはくれてるようですね。ただ 802.1x対応じゃないクライアントの場合にどうするか?ってのが悩みの種です…。
とりあえず アドレスは何か呉れてやって、ルータをPPTPで接続した先で一括してiptablesあたりで filterしてしまうか?って方法も在るには在りますが イマイチ美しくないかな~とか。

ついでに routing必要な箱がバリバリ増えてきたので GNU Zebra入れて回ったり、Windows箱に RIPリスナ入れたり。 bridge組んでる2箱で 変なroute流してしまって一瞬大変慌てたりしましたが良好ヽ(´ー`)ノ
]$  netstat -nr|wc
     15     116    1106
結構複雑になってまいりました。
PPTPサーバとして:
http://public.planetmirror.com/pub/mppe/pptpd-1.1.3-1.src.rpm 入れたり。 modulesで ip_greと ppp 入れるの忘れて悩んだりとかなんとか(´ー`)以上覚え書き。

2005年12月12日

GbE蟹 r8169.c 哀れ

GbE蟹とLinux(;´Д`)哀れ
ウチにはGbE蟹を3枚積んだWindows蟹箱があるんですが、ある依頼でLinux用 r8169なモジュール作り発生。
ところが、Linux-2.4.32においても未だ標準配布分のソースでは r8169.cは version 1.2なんですよね。2.6系だと 2.2LKまで来てますが(realtek配布分は 2.3だった 2005/12/11現在)。2.2LKなソースはもちろん 2.4系ではコンパイルとおりません。努力しても通りません(;´Д`)

で、1.2だとスンゴクはまるわけです。PHYがー とか MAC addr拾え(たり、拾えなかったり: FF:FF:FF:FF:FF:FF とか 00:FF:FF:FF:FF:FF になったりする…)とか(;´Д`)刺さったりとか、一見認識してるんだけど 1分くらいでもうアウトとか…いろいろ天変地異的。

で、1.6を見つけるまで色々手を尽くしてたんですが、結局googleさんにお伺いして 2.4系用version 1.6なソース発掘

wget "http://download.opendrivers.com/drv/network/realtek/linux2.4.x-8169s(160)0915.zip"

とりあえず上記の奴に含まれるr8169.c を drivers/net/r8169.c に上書きして modules作り直して解決ヽ(´ー`)ノしかし今時 kernel自前でコンパイルとか流行りませんよね。その労力をLAN板代に振り向けたら?とかいわれましたが、今回は事情があるのです。
# ウチは未使用及び未投入のGbE板が20枚くらい、FastEther板が90枚くらいありますし

2005年11月14日

1U箱超うるさいですよ

1U2本ヽ(´ー`)ノセットアップ中
VFSH0076.JPGP4箱2本とSW-0222GとCatalyst1900
超うるせEEEEEEEEEEEEEEEEEEEEEEEEEE(;´Д`)

SW-0222Gはミラーポート機能があるし、設定もWebブラウザから簡単に出来ることになってはいるのでラクチン。Catalyst1900は今回はただのHUBとしてしか使ってないんだけど、後ほど SW-0222GとあわせてVLAN組んでみるかとか云々。そのへんの制御を動的にとかLDAP使ってとかやりたいところだけど中々面倒そう。SW-0222Gだとそう自由度は無いので年末までに届く予定のあれやこれやで補完~ヽ(´ー`)ノCISCO

2005年09月23日

xen-unstable x86_64

ikuzeヽ(´ー`)ノxen-unstable x86_64
x86_64なコンパイル環境が無かったので Fedora Core4をインストール(´ー`)。SuSEでもいいんですがまあ、慣れてるのが楽よねきっと(チキン)
ということで、行き当たりばったりなメモ
xen-unstable-install x86_64 でちょっとお試し等
[root@FC464 xen-unstable-install]# ./install.sh
Installing Xen from './install' to '/'...
All done.
Checking to see whether prerequisite tools are installed...
Xen CHECK-INSTALL  Fri Sep 23 22:25:05 JST 2005
Checking check_brctl:
  *** Check for the bridge control utils (brctl) FAILED
Checking check_iproute: OK
Checking check_python: OK
Checking check_zlib_lib: OK
All done.
ああ、brctlが無いのね(;´Д`)
[root@FC464 xen-unstable-install]# yum install bridge-utils
とりあえず環境はあるぽいので xen-unstable-src.tgz 取って来て戦いますかね(´ー`)
# 結局ソースから入れないと気がすまないタイプなので
# cd /usr/local/src
# tar zxf xen-unstable-src.tgz
# cd xen-unstable
# make dist
しばし待つ…
make[2]: Entering directory `/usr/local/src/xen-unstable/tools/check'
./chk build
Xen CHECK-BUILD  Fri Sep 23 22:50:07 JST 2005
Checking check_python: OK
Checking check_zlib_devel:
  *** Check for zlib headers FAILED
Checking check_zlib_lib: OK
make[2]: *** [build] Error 1
make[2]: Leaving directory `/usr/local/src/xen-unstable/tools/check'
make[1]: *** [check] Error 2
make[1]: Leaving directory `/usr/local/src/xen-unstable/tools'
make: *** [tools] Error 2
えー(;´Д`)、ということで
[root@FC464 xen-unstable]# yum install zlib-devel
(略)
[root@FC464 xen-unstable]# make dist
再び待つ…(´ー`)
xentop.c:21:20: error: curses.h: No such file or directory
えー またかよ (;´Д`)
[root@FC464 xen-unstable]# yum install ncurses-devel
(略)
[root@FC464 xen-unstable]# make dist
再び待つ…(´ー`)
(略)
error: command 'gcc' failed with exit status 1
またかよ(;´Д`)… 遡ってエラー原因を眺めてみると
xen/lowlevel/xc/xc.c:7:20: error: Python.h: No such file or directory
xen/lowlevel/xc/xc.c:29: error: syntax error before ‘*’ token
cc1: warnings being treated as errors
ああ はいはい(;´Д`)
[root@FC464 xen-unstable]# yum install python-devel
(略)
[root@FC464 xen-unstable]# make dist
(略)
*************************************************
*************************************************
* WARNING: Package 'latex' is required
*          to build Xen documentation
*************************************************
*************************************************
install -d -m0755 /usr/local/src/xen-unstable/dist/check
install -m0644 ./COPYING /usr/local/src/xen-unstable/dist
install -m0644 ./README /usr/local/src/xen-unstable/dist
install -m0755 ./install.sh /usr/local/src/xen-unstable/dist
install -m0755 tools/check/chk tools/check/check_* /usr/local/src/xen-unstable/dist/check
でーけーたーヽ(´ー`)ノhehehe
# latexとか入れんでもまあ、不自由は無いので WARNINGは無視してみたり
[root@FC464 xen-unstable]# make world
[root@FC464 xen-unstable]# make install
とかも問題なさげ(´ー`) grub.confは
title Fedora Core (Xen)
        root (hd0,0)
        kernel /xen.gz dom0_mem=128000
        module /vmlinuz-2.6.12-xen0 ro root=/dev/hda3
        module /initrd-2.6.12-xen0.img
とか何とか.

2005年09月08日

防備録 HP社製 UPS T700を debianに導入

防備録 HP社製 UPS T700を debianに導入ヽ(´ー`)ノT700

インストール方法:
添付CD-ROM内の PowerManager用rpmを alienコマンドにて deb化後
dpkg -i コマンドにて導入
導入後、
cd /usr/local/DevMan
export LD_LIBRARY_PATH=/usr/local/DevMan
./DMSetup
にてセットアップ起動

インストール先:
/usr/local/DevMan

起動スクリプト:
/etc/rc1.d/S91DevMan
/etc/rc5.d/S91DevMan
それぞれ
/etc/rc.d/rc3.d/S91DevMan
/etc/rc.d/rc5.d/S91DevMan
にあるものを mv した。

※ 上記スクリプトの動作条件として /etc/init.d/functions
ファイルの存在が必要だったため touch /etc/init.d/functions
を実行した。

2005年09月07日

PHPのCGI版の動作

PHPのCGI版の動作について:

例:
#!/usr/local/bin/php-cgi
<?php

?>

等あった場合に、どのようにしてphp-cgi版バイナリにスクリプトの位置が渡されているかというと、(apacheからもらう)CGI環境変数である SCRIPT_FILENAME を使っているわけです。この場合SCRIPT_FILENAMEは 上記の scriptそのものをさしています。つまり、apache側からみると CGIとして記述された shell scriptの位置なのですが、 php-cgi版から見ると phpの コードの位置となります。

ここで、このコードの中で system関数を使用して 外部の何かを呼び出した場合、 SCRIPT_FILENAME という環境変数はそのまま引き継がれます。したがって、このスクリプト内で system関数を使用して php-cgiを起動するような処理を書いてしまうと… php-cgiは SCRIPT_FILENAMEを見てしまうために、再びこのスクリプト自身が実行されることになります。

この動作については phpの処理系のコードで sapi/cgi/cgi_main.c 以下の init_request_info関数の処理を追う必要があります。 SCRIPT_FILENAMEがない場合は 引数として指定したスクリプトを実行させることも出来ますが、利便性から考えると これは逆の実装の方が良いんじゃないかとか思うわけです。 つまり、引数が指定されていたら 引数のスクリプトを優先して処理等。

しかし:
/* script_path_translated being set is a good indication that we are running in a cgi environment, since it is always null otherwise. otherwise, the filename of the script will be retreived later via argc/argv */

とか書いてますけどね。sapi/cgi/cgi_main.c#693

参考:
[PHP-users 26782] 外部PHPスクリプト実行でループ

Cg for Linux

ちょっと調べ物ついでに見つけたURLをメモヽ(´ー`)ノCg
Cg examples for Linux

/.J あたりでも最近は話題になってますが、GPUとかPPUとか CPU以外の演算ユニット扱うネタは一度はやってみたかったり。GRAPEとか大好きなのです計算モノは実は。DSPとかDES crack用のFPGAとかも好き好き(*´Д`)
かなり以前(学生の頃だから、だいたい10年近く前?)に FreeBSD用に無理やりMOPAC実装してバイナリ配ったら FreeBSDのportsの一部に名前が残ったままになってたり…。計算化学とか好きなんですよね。今は大分離れてしまいましたが、マルチとか並列とかクラスタとか計算機が束になって一生懸命ブン回ってるのが嬉しかったり。ピカピカ光ったりしたら最高でしょうね。
参考:
FreeBSD software : mopac, biology:

CM5はかっこいい(´ー`)かっこよすぎます
google://CM5/thinking

2005年09月04日

Athlon64にFedoraCore4

冷え冷えヽ(´ー`)ノAthlon64

[root@FS1 ~]# cat /proc/acpi/thermal_zone/THRM/*
cooling mode: active

state: ok
temperature: 38 C
critical (S5): 100 C
passive: 95 C: tc1=4 tc2=3 tsp=60 devices=0xf7ffe5a0
active[0]: 95 C: devices=0xf7ea6d80

しかし実際には
https://www.redhat.com/archives/fedora-test-list/2005-April/msg01461.html
にあるように、lm_sonsorsで測ると もっと低かったりすることもあるらしい。(;´Д`)畏れ

エアコンの温度を下げたり、扇風機でMBまるごと吹いたりしたら、40℃->37℃ だったので、何らかの温度を測っているのは間違い無さそうなんですが。

空調が多少悪いところ(ゲタ箱)の中に置いてるのでマトモに冷やしたらもう少しは冷えると思われる。
それでも室温+10℃あるかないかくらい。しかし、一部では nForce4 chipsetのほうが熱吐き過ぎて大変という話もありますが…
Fedora Core 4 (i386)入れてファイルサーバ用途。

2005年07月23日

冗談箱の仮組み

冗談で接続してみただけ(;´Д`)
DSCF0165.JPG

NF4ST-A9
AMD Athlon64 3000+
AOpen Aeolus FX5200
mem 2GB

SysKonnect SK-9E21D x3
Intel PRO1000/MT x3

GbE 6本挿してますが、1本は x16なPCI-Eに挿してるので勿体無いです。DUAL NICあたり
で戦いたいところ。実際ちゃんと組み上げてどの程度のパフォーマンスが出るのかは謎ですが、
PCIに挿してる GbE3本はほとんどただの飾りです。
# 実は Socket939 Athlon64の箱が見つからなかったので 近くに転がってた
# Socket 754な Athlon64の箱で代用…無意味

2005年06月13日

NF4ST-A9でFC3でraid5

いやぁ速い速いヽ(´ー`)ノRAID5
[root@FC3 ~]# hdparm -ftT /dev/md1
/dev/md1:
 Timing cached reads:   2492 MB in  2.00 seconds = 1245.57 MB/sec
 Timing buffered disk reads:  320 MB in  3.00 seconds = 106.51 MB/sec
これ
[root@FC3 ~]# hdparm -ftT /dev/sda

/dev/sda:
 Timing cached reads:   2508 MB in  2.00 seconds = 1251.69 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device
 Timing buffered disk reads:  170 MB in  3.03 seconds =  56.15 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device
なドライブ3発で RAID5組んでるんですが、NF4ST-A9板にAthlon64 3000+でFC3の組み合わせで速い速いと喜んでますヽ(´ー`)ノyeah
まあ、書き込みは50MB/sec程度(約4GB書いて 90秒くらい)だったのですが、それでもなかなか良し。ちなみに同じ箱に nbd-server建てて、GbE経由でほかの箱から弄ったら 読み33MB/sec、書き 29~18MB/sec でした。どうも GbEがネックになっている様子(;´Д`) Intel PRO 1000MTですが

しかし、来週あたり PCI-Express対応の GbEが来るのでソレでどうかというタノシミ。

ひとまず、社内ファイルサーバとしてはこの板で行きそうな雰囲気ではあります。
ちなみに RAID0だともっと速いヽ(´ー`)ノ
[root@FC3 ~]# mdadm --create /dev/md2 --level=0 --raid-devices=3 /dev/sd[abc]3
mdadm: array /dev/md2 started.
[root@FC3 ~]# hdparm -ftT /dev/md2

/dev/md2:
 Timing cached reads:   2512 MB in  2.00 seconds = 1255.56 MB/sec
 Timing buffered disk reads:  454 MB in  3.01 seconds = 150.85 MB/sec
なによ 150MB/secって(;´Д`)
14:11 | Comments (0)

2005年05月19日

cyrus db復旧

データベースをアカウントごとに修復する方法として

cyrus ユーザにて
/usr/lib/cyrus-imapd/reconstruct -r -f /var/spool/imap/[user]

なのが使えるらしいのでメモ。いままで やってた作業の無駄ップリは異常(;´Д`)

20:37 | Comments (0)

2005年04月14日

メモリの使い道(2)つかMRTG

で、freeコマンドの出力の used部分を素で使うのじゃなくて used-cached-bufferedを使うようにしてみたりヽ(´ー`)ノMRTG
20050414mrtg_all.pngMRTG~

なんとなく実際の状態にあってるようなメモリ使用量のグラフになったので良し(´ー`)
以前は256MBしかなくって、このグラフでは50%くらいまで使い切るとHDDがゴリゴリゴリと回ってたんですが、512MBに増やしてから平穏です。chipsetが810なので512MBまで…っていうのも在りますが。
あと、4時ごろにcyrusのimapディレクトリ全域をrsyncでバクアプしてますので重いです(なおかつメモリも使います)。
23時ごろの負荷は tbスパムを100発ほど数秒間の間に喰らったようで、急激にloadが上がってます(;´Д`)

違う建物の間で openvpnでトンネル掘ってたり(tap0)、固定IPアドレス取得の為に某低額プロバイダへPPTPで張ってたり(ppp0)、違う建物との間でブリッジ(br0)してたりするので IFが4本見えてます。以前は固定IPアドレスをもう1本と6to4が在ったのでさらに2本あったわけですが…

もう少し良い箱を揃えるべきでしょうね…はい(;´Д`)

12:35 | Comments (0)

2005年04月09日

メモリの使い道

メールサーバ代わりにしてる箱がすんごい重いなあ…
てことで mrtg仕掛けてモニタヽ(´ー`)ノ
20050409loadaverage.pngmemory usage

ただ、memoryで遊んでる分は cacheだのbufferだのに使われてしまうので、だいたいいつも100%なんですよね。ツマランね(;´Д`)

ということで、buffer、cache分を考慮したデータ取りに変更…楽しみは数日後か

22:48 | Comments (0)

2005年02月08日

Linux/xen+network block device

xen置いてる箱のDISK周辺が(PIIXでは無いため)遅いので、network block deviceの導入を試したり。ヽ(´ー`)ノnbd

まずサーバ側にdisk領域用のファイル作り。とりあえず10GB程度
dd if=/dev/zero of=/mnt/md3/nbd/diskimage.nbd bs=1M count=10240

Project: Network Block Deviceから nbd-2.7.3 をDLして ./configure、make、make install
で、サーバ側で
[root@DURON-PC]# nbd-server 22001 /mnt/md3/nbd/diskimage.nbd

Xen箱の Xen0上で
[root@FC1]# nbd-client 192.168.25.109 22001 /dev/nb0

/etc/xen/ 下の 設定ファイル中で
disk = [ 'phy:nb0,xda1,w' ]
root = "/dev/xda1 ro"
等記述して、準備。
mke2fs -j /dev/nb0 等したあと、mountして rootイメージを展開してから後は適当にマウントして終了。/etc/fstab を弄ってやるのを忘れずに。/dev/xda1を /に設定等。

FTPで10GB送っても平均 30MB/sec超でるネットワーク/DISK環境を組んでるせいか、Xenがかなり実用的に使えております。あとは1台でメモリどっさり積める箱を導入…です。

17:14 | Comments (0)

2005年01月12日

XenSource founded

XenSource

Xenな会社が出来たみたいですなヽ(´ー`)ノXen
ちなみに、 Moshe Bar(The Official Moshe bar Website)が設立者のようですね。openMosixの人。
ということで、仮想マシンのXenと クラスタリングの OpenMosixのコラボ期待ヽ(´ー`)ノ

2005年01月05日

Vine2.6~3.0~3.1

壁兼ルータ兼トンネル入り口兼VPN箱達をVine2.6r4から3.0さらにVine3.1へ更新ヽ(´ー`)ノ
で、ある程度動作してるな~と安心してたら cyrusのdeliverがsignal11で落ちてたり、mysqlの自動起動が外れてたりと散々な目に(;´Д`)
Vine3.1のcyrusのrpmパッケージ群で環境組みなおし、saslauthdも rpmで構成しなおし(いままでは独自にコンパイルインストール)して例によってメールをゴッソリ流しこんで移行。今回も5時間ほどかかりました。
その他振り分けスクリプトとかも上手く動作してない分があったので、年末年始のメールの拾いなおし中…返事待たせたままの先が多数(;´Д`)。

ついでなので、 xoopsを 2.0.9.2まで一気に更新したりとか…。まあセキュリティ関連の一環な訳ですが…
# あと、年末から某ソフトを仕込んで動作調整中…結構手がかかる…
このあたり、総合的に何か投入しないとそろそろマズイ予感…

2004年12月04日

拡張IDE板、シツコク

その後 ide-siimage-seagate.patchを見つけたので適用ヽ(´ー`)ノ
[root@DURON-PC root]# hdparm -d1c1u1m16 -X70 -ftT /dev/hde

/dev/hde:
 setting 32-bit IO_support flag to 1
 setting multcount to 16
 setting unmaskirq to 1 (on)
 setting using_dma to 1 (on)
 setting xfermode to 70 (UltraDMA mode6)
 multcount    = 16 (on)
 IO_support   =  1 (32-bit)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 Timing buffer-cache reads:   128 MB in  0.60 seconds =213.33 MB/sec
 Timing buffered disk reads:  64 MB in  1.13 seconds = 56.64 MB/sec
大勝利ヽ(´ー`)ノ歓喜
[root@DURON-PC root]# hdparm -ftT /dev/md0

/dev/md0:
 Timing buffer-cache reads:   128 MB in  0.57 seconds =224.56 MB/sec
 Timing buffered disk reads:  64 MB in  0.94 seconds = 68.09 MB/sec

まあ、限界ポイかもわからんね。ということで、本体のIDEとで RAID0
[root@DURON-PC root]# hdparm -ftT /dev/md0

/dev/md0:
 Timing buffer-cache reads:   128 MB in  0.60 seconds =213.33 MB/sec
 Timing buffered disk reads:  64 MB in  0.63 seconds =101.59 MB/sec
嘘みたいな数字(;´Д`)ワラタ

拡張IDE板ベンチ

動作テストヽ(´ー`)ノ
[root@DURON-PC root]# hdparm -c1d1 -X69 -ftT /dev/hde

/dev/hde:
 setting 32-bit IO_support flag to 1
 setting using_dma to 1 (on)
 setting xfermode to 69 (UltraDMA mode5)
 IO_support   =  1 (32-bit)
 using_dma    =  1 (on)
 Timing buffer-cache reads:   128 MB in  0.64 seconds =200.00 MB/sec
 Timing buffered disk reads:  64 MB in  2.20 seconds = 29.09 MB/sec
[root@DURON-PC root]# hdparm -c1d1 -ftT /dev/hda

/dev/hda:
 setting 32-bit IO_support flag to 1
 setting using_dma to 1 (on)
 IO_support   =  1 (32-bit)
 using_dma    =  1 (on)
 Timing buffer-cache reads:   128 MB in  0.60 seconds =213.33 MB/sec
 Timing buffered disk reads:  64 MB in  1.16 seconds = 55.17 MB/sec
[root@DURON-PC root]#
あんまり速くないな…というか半分かよ(;´Д`) と思ったら
hde: sata_error = 0x00000000, watchdog = 0, siimage_mmio_ide_dma_test_irq
hde: sata_error = 0x00000000, watchdog = 0, siimage_mmio_ide_dma_test_irq
hde: sata_error = 0x00000000, watchdog = 0, siimage_mmio_ide_dma_test_irq
hde: sata_error = 0x00000000, watchdog = 0, siimage_mmio_ide_dma_test_irq
hde: sata_error = 0x00000000, watchdog = 0, siimage_mmio_ide_dma_test_irq
とか吐きまくり。ドライバにバグある?
該当部分のコード drivers/ide/pci/siimage.c
                        watchdog = (sata_error & 0x00680000) ? 1 : 0;
#if 1
                        printk(KERN_WARNING "%s: sata_error = 0x%08x, "
                                "watchdog = %d, %s\n",
                                drive->name, sata_error, watchdog,
                                __FUNCTION__);
#endif

                } else {

ということで、 sata_error = 0 のときは出力しないように書き換えて逃げ(;´Д`)
[root@DURON-PC root]# hdparm -d1c1 -X69 -ftT /dev/hde

/dev/hde:
 setting 32-bit IO_support flag to 1
 setting using_dma to 1 (on)
 setting xfermode to 69 (UltraDMA mode5)
 IO_support   =  1 (32-bit)
 using_dma    =  1 (on)
 Timing buffer-cache reads:   128 MB in  0.64 seconds =200.00 MB/sec
 Timing buffered disk reads:  64 MB in  1.86 seconds = 34.41 MB/sec
チョットは速くなったけど、相変わらず遅い。捨てるか。この板(;´Д`)

拡張IDE板で、認識順変更

SiI3112搭載のSATA板2枚とHDD 3台買ってきてゴミ箱作りヽ(´ー`)ノ
120GBx3でRAID5しようという作戦。手近な板(何故かルータ用に使ってる下駄箱PC)にSATA板挿したら、起動時にgrubがドライブ順誤認識して終了(;´Д`)
GRUB GRUB GRUB GRUB GRUB … stage1のコードの中でグルグルグルグル。

つまり stage2を見つけられませんか。マザーボードのBIOSからOSに渡っているドライブの順番自体がおかしいらしい。とりあえず、泥縄式にSiI3112板のBIOSを殺す方法を考えてみる(ぉぃ)。それらしきJumperのパターンがあったので、適当にPIN立てて適当に落として適当に挿して適当に起動…失敗。違ったようだ(;´Д`)
AUT_3252.JPG改造前AUT_3255.JPG改造後

仕方ないので、BIOSを読ませないというソリューションで戦ってみる。BIOSを亡き者にしたいが、取っ払うのは面倒なので、Vssだけ切ってみたり。
AUT_3257.JPGU2のトコのソバAUT_3258.JPGパターン剥げてるあたりを切断

(゚Д゚;)死んだ!

ということで、起動してみるも確かに grubはすんなり通って、Linux kernelからだけ認識される理想状態にはなったが、どうもおかしい。割り込みを落としまくる(;´Д`)使い物にならない。というかkernelオチますけど ((´ー`))?
以前 CMD0643を組込系板に載せたときに遭遇した問題と同じか? BIOS内で初期設定されて、Linux kernelのドライバ部分ではそれ以降の処理についてのコードだけ書いてあると予想。CMD0643の時には、PCIのintAに出るようにLinux kernelのドライバ部分で 設定するようにしたんだっけな(いずれにしても、CMD0643の busmaster DMA部分のコードについては Linux kernel 2.4.22近辺ではバグっぽくて、DMA有効にならなかったように思うので、修正要るはず、あと request_irq読んで強制的に IRQ設定したような記憶もある)。
SiI3112についてその部分を調査するより、別のマザーボードで試す方が健全だし自分の時間コスト的にもリーズナブルなので作業変更。ヨメのゲーム用PCを除けばうちで3番目に速い箱にBIOS殺していないSiI3112板挿してみる。アッサリ起動(;´Д`) つまりやっぱり 最初に試したマザーボードが古くてその辺がアレだったのね。
ところが今度は IDE対応 chipの認識順がずれて(PCのPCIでは拡張スロットから先に見るし)SiI3112板側が ide0,ide1となってhda,hdb,hdc,hdd となったため、/ 見つけられずに死(;´Д`)ドコまでも果てしないグルーヴ感が続く。
すぐ考え付くのは、SiI3112のドライバ(siimage)をmodule化して後で導入することだけど、とりあえずkernel作り直して試したところでは、chipとしては認識してくれるけど、ドライブを探しに行かない(さらに、irqも割り当ててないポイ?これは0643と同じ問題か)。全く同じ問題でハマってるひとも発見。[vine-users:065176] siimageドライバのmodule組み込み&SATAディスクの認識 話が途中で脱線して解決になってないみたいね。
しばらく色々試行錯誤して(といっても、コンパイルとかなので、後ろで勝手にやらせてるだけだけど)探してみたら同じくそのものずばりを発見ヽ(´ー`)ノさらに回答つき
Re: siimage driver
つまり、デバイスに対してIO,intのリソース指定してしまえということか。
ide0=0x1f0,0x3f6,14 ide1=0x170,0x376,15
ということで平和になりました。しかし部屋が散らかったので片付けないとね
AUT_3259.JPGキティなKBDAUT_3260.JPGM7VKQとM7VIG Pro
オマケ:
20041204AUT_3261.JPG下駄箱PC遠景

2004年11月23日

Grubのinstall

おぼえがき:
# /usr/local/sbin/grub-install --no-floppy /dev/hda したときに
うちの floppy diskの無い箱でものすごく嵌ったのだが…
/boot/grub/device/map に fd0に付いての記述行があったためと判明。サックリ削除して
再度 grug-install実行して解決。
Xen入れたかったので grubに移行する必要があったので~

2004年11月08日

Linux/Xenの2.0とか(2)

ネトワク編: xen0の方は問題無いのですがヽ(´ー`)ノ xenU(VM)の方は bridgeにて外部に接続されますので brctlが使用可能でないとアカンです。
wget http://unc.dl.sourceforge.net/sourceforge/bridge/bridge-utils-1.0.4.tar.gz とか
[root@FC1 root]# brctl show
bridge name     bridge id               STP enabled     interfaces
xen-br0         8000.0007e93ee11d       no              eth0
[root@FC1 root]# brctl addif xen-br0 vif1.0
[root@FC1 root]# brctl addif xen-br0 vif2.0
[root@FC1 root]# brctl addif xen-br0 vif3.0
[root@FC1 root]# brctl show
bridge name     bridge id               STP enabled     interfaces
xen-br0         8000.0007e93ee11d       no              eth0
                                                        vif1.0
                                                        vif2.0
                                                        vif3.0
[root@FC1 root]#
/etc/xen/script/network start しておけばいいんですけど…よく忘れます(;´Д`)

Linux/Xenの2.0とか

おぼえがきヽ(´ー`)ノ
基本的にInstallation for Xeno-Unstable (2.0 in making)が一番参考になる。

・Xenは multiboot使うので lilo不可。grubで行こう
精進しましょう
・-installより -srcを使うのが無難
がんばっている姿をみて学ぶものですよ
・Twisted-3.0を入れる
なのでpythonとpython-develは必須
・curl-develが必要。事前に入れておくべき
入れていないと make world中に泣きます。ちなみに
[deps: openssl-devel 0.9.7a-35.i386]
[deps: krb5-devel 1.3.4-6.i386]
[deps: e2fsprogs-devel 1.35-7.1.i386]
上記依存してるよ~とか(Fedora Core2)言ってきました
・make worldして放置
linux kernelとかは勝手に取ってくるので外にネトワクで接続できる環境が良い
2.6系のxen0と xenU と両方のkernelを作るのでバカみたいに時間かかります
・2.4系kernelが欲しいときとか
make linux24とか make netbsd20とか(評価中)
・make installして放置
fig2devがどうのとか言ってきますが無視(;´Д`)
・grubの設定とか
一応元に戻せるように元の設定も残しておきましょう
console=vga が効いてないような気がする(unstableだったからか?)
・VM用の環境作ったりいろいろ
この辺はUMLとかと同じ

PIIXじゃないとIDEがPIOになって腐れ遅いとか色々ありますが、少しずつドライバも
拡充されていくことでしょう。はい

2004年09月05日

uw-imapd->cyrus(2)

メールの移行に5時間以上かかったり(;´Д`)
まあ、27万通も流し込めばね。しかし、mbox形式から cyrusへメール移行するための方法探すのにもっと時間がかかったのが実際。皆困ってませんか?コレ

[root@ns root]# date
Sun Sep 5 17:19:30 JST 2004
[root@ns root]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/hda3 14647296 704700 13942596 5% /
/dev/hda1 8032 53 7979 1% /boot
[root@ns root]# cat /home/mine/mail/ML:* | formail -Y -R "From " "X-Unix-From: " -s /usr/cyrus/bin/deliver -m . mine;date
mine+.: Message contains invalid header
mine+.: Message contains invalid header
mine+.: Message contains invalid header
mine+.: Message contains invalid header
mine+.: Message contains invalid header
Sun Sep 5 22:59:46 JST 2004

途中の作業とか詳しいことはいつか書くのです。ハイ。嵌りやすいトコとか(;´Д`)

2004年09月04日

uw-imapd->cyrus

Thunderbirdで新規メールのチェック間隔を1分間に設定した翌日のこと…
メールが届いていないような気が…というか、ある時刻以降のメールが見えない(;´Д`)
とりあえず、/var/log/maillogを確認し、最後に届いたメールの時刻を見ると、いまも正しくメールは届いているようだが…どこに消えたのか?/var/spool/mail/mine(mineはメールアカウント名)を確認してみたところ、メール自体は追加はされているようだ…があるメール以降が取り込めていない感じ。
いろいろ調べたあげく、/var/spool/mail/mineにはメールは追記されていっているが、uw-imapd経由でメールファイルが取り出せない…ということが判明。メールサーバ自体はpostfixで構成し、配送はprocmail、取り出しは uw-imapd…
以前から uw-imapdの超高負荷(メールの移動、削除マークつきメールの削除などやりだすとサーバのloadaveが5くらいまで平気で上昇する)が気になってて、いつかuw-imapdは卒業しないといけないと思っていたところだし…そもそもuwもwuもまったく信用してないし、実際ソース読んだら大変アレな気分になったし…今日は土曜だし…(;´Д`)

ということで、cyrusへ移行。しかしこの話はもう少し続くのである。

2004年08月27日

まぜるな危険

Oracle9iと PHP5で他たっぷりオプションつけてインストール作業。スンナリ行くかと思ったら意外とハマりました。というのは、設定をphp4の時のものになるべく近くしたかったので、apache+php4で使っていた /usr/local/apache下をコピーしつつ、apache+php5を上書きでinstall… つまり、php4の設定とmoduleが消えてなかったんですね~ php5のモジュールが読み込まれるときに、php4のモジュール見つけたら一言欲しいところです。
# php4のmodules関連を消すのをすっかり忘れてたのが悪いのですが(;´Д`)
で、その辺解決して以下でゴリゴリと installヽ(´ー`)ノ

# php-5.0.1
# php4関連のファイルは確実にmodulesから削除し、設定からもmodphp4に
# ついては削除すること。SegmentationFault(11)の原因となる
cd /usr/local/src
tar xzf /home/myname/php-5.0.1.tar.gz
cd php-5.0.1
./configure \
--enable-trans-sid \
--with-apxs2=/usr/local/apache2php5/bin/apxs \
--enable-mbstring \
--enable-mbstr-enc-trans \
--with-mysql=/usr/local/mysql \
--enable-xslt \
--with-xslt-sablot \
--with-xml \
--enable-ftp \
--enable-soap \
--with-ldap \
--with-zlib \
--with-gd \
--with-pgsql=/usr/local/pgsql \
--with-oci8=/opt/oracle/product/9.0.1 \
--with-xml2=/usr/local/lib \
$@
make -j3
make install

2004年08月26日

トンネル掘ってOracle

某所にOracle9iインストールヽ(´ー`)ノ
ただ、某所は壁何枚も向こうにあり、port22(つまりssh)しか通らない(;´Д`)
ので、
ssh user1@hostA -L 5901:127.0.0.1:5901
ssh user2@hostB -L 5901:127.0.0.1:5901
ssh user3@hostC -L 5901:127.0.0.1:5901
ssh user4@hostD -L 5901:127.0.0.1:5901
ssh user5@hostE -L 5901:127.0.0.1:5901
と連続して掘り進んで、最終的にXvncでホゲしましたとさ♪
で、Oracle9iのインストール時にエラーバンバン
20040826Oracle9iInstallErr.png インストール時のエラー…無視しても次々に出る。
$ORACLE_HOME/bin/genclntsh の
LD_SELF_CONTAINED="-z defs" を

LD_SELF_CONTAINED="" に変更
さらに
$ $ORACLE_HOME/bin/genclntsh を実行
して、retryして逃げヽ(´ー`)ノOK
※ 内容もちろん無保証

2004年05月07日

LPI Level1

LPIC受験してきたり。今回は101(RPM)と102で Level1狙いヽ(´ー`)ノ
AUT_3001.JPG結果

問題文に一部誤訳があったり、重要なファイル名が英語(Englishでの問題文原文も参照可能)
と日本語の問題文で異なっていたりと注意するべき点はありました。一部 LinuxカルトQ的
問題もありましたが何とか 610/890、610/890でクリアヽ(´ー`)ノ
rpmコマンドのオプションがネチっこく…(;´Д`)

2004年03月21日

社内ネットワーク構築

作業場所の機材や環境をジワジワ移転中:
Aut_2988b.jpgイミナシ

移転先と移転元のどちらもYahoo!BB配下にネットワーク構築してあるので、すでに
OpenVPNを使用してトンネルは作成済み。ただし両方とも 192.168.25.0/24
とりあえず、なるべくサーバ機器の設定を変えたくないので、移転元と移転先のネット
ワークをブリッジでつないで仮想的に同じネットワークとして見せる設定してみたり。
brctlでちょいちょいっ と設定して、設定完了~
eth1と tap0を brctlで br0として使用。で eth1に割振ってあったIPアドレスを br0
に振りなおしたり。


INTERNAL_INTERFACE=eth1
BRIDGE_INTERFACE=br0

start() {
IPADDR=`ifconfig $INTERNAL_INTERFACE | sed -e 's/^.*inet addr:\([^ ]*\).*$/\1/p' -e d`
/usr/local/sbin/openvpn --config /etc/openvpn.conf &
sleep 5
brctl addbr $BRIDGE_INTERFACE
ifconfig $INTERNAL_INTERFACE 0.0.0.0 up
ifconfig tap0 0.0.0.0 up
brctl addif $BRIDGE_INTERFACE $INTERNAL_INTERFACE
brctl addif $BRIDGE_INTERFACE tap0
ifconfig $BRIDGE_INTERFACE $IPADDR up

iptables -N internalb
iptables -A INPUT -i br0 -j internalb
iptables -A FORWARD -i br0 -j internalb
iptables -A internalb -s 192.168.0.0/16 -j ACCEPT

touch /var/lock/subsys/bridge
}


だせえ…(;´Д`) つか、一人会社でも社内ネットワークだな。一応
一応アドレスの詳細はマスク~

2004年03月07日

マカー化しました

今までなるべく買うのを避けてきたのですが、PowerMac G3/233 DT購入…ヽ(´ー`)ノ
用途はLinux/ppc周辺の userland部分開発用です~ KBD,Mouse付 Mem160MB実装で
17800円。中開けてみましたがホコリもヤニも無く大変に備品ヽ(´ー`)ノでした。
20040307Sh530028.jpgまかーヽ(´ー`)ノ万歳

中古って空気清浄機代わりに使われてたようなホコリまみれ…のが多いのですが、臭いも
なく超備品~

2004年02月10日

P2Pwall's "FTwall" - 1.08 and 2.02 Kazaa, WinMX (etc) Blocking with Linux

P2Pwall's "FTwall" - 1.08 and 2.02 Kazaa, WinMX (etc) Blocking with Linux(from nanog)ってコトで…でも試すヒマなし。

2004年01月03日

OpenPKG

openpkg.orgからディストリビューションぶん取ってきて Solaris8上に投入。
しかしあらゆる/cwディレクトリの下に構築される世界は男らしさを感じます。
# /cw/etc/rc とか在りますしね。 /cw/bin/rpm 使って /cw/usr/lib/gcc-libとか
もう少し落ち着いたらゲリラ活動開始予定。とりあえず*.shファイルぶん取ってきて実行すれば/cwディレクトリが!
(arch/OSに関わり無くすべてあらゆる/cw下に構築される上に、セキュリティホール対応が異常に速いのはビックリ)

2003年11月12日

LDAP遊び(2)

飽きずにLDAP遊びsamba編
samba.schema探すのに手間取りましたが@ITの記事など見ながらサクサク設定。
LDAPの権限設定って細かく出来ないのね~などぼやきつつsamba-ldap設定完了。
とりあえず smbpasswd -w hoge して LDAP接続時のPWだけは設定しておくのが吉っぽいですね。認証の速度としては余り変わらず。自宅内LDAP化計画は進む進む。

2003年09月15日

Avlab 4port シリアル板

シリアルコンソールが必要な機器が増えてきたのでシリアル増設
AUT_2770.JPG玄人志向~
でも取り付けてから気付きましたが、これLinuxのドライバって表には無いんですね。NetBSDのコードとか眺めながらいじったら 何とかなりそうですが、体力なしなので放置。

2003年09月07日

distccでRPM作り

kernelとか cross-gccのような大物のコンパイルが多い我が家では distccを導入してコンパイル速度を稼いでいます。
メイン開発機:AthlonXP 1700+
サブ開発機: Athlon 1800+
ルータ兼Webサーバ兼メールサーバ兼・・・: Celeron 1GHz
(予定):Duron1.2GHz
で、RPMの大量リビルド時にも使えるように distccを調整したので、防備録


# CC='distcc gcc' MAKE='make -j9' rpm -ba binutils.spec