バイナリにソースを同梱するトカ(;´Д`)
コンパイル元のソースファイルどれだっけ?というか、コレ誰が何時作ったんだよとか多数の企業さんが客先に出入りしてるような環境だとわからなくなったりして、そもそもソースどこ行ったのよ?と非常に困ることがありました。
で、サンプル:
objcopy --add-section=.cob_src=AICS0510.cob AICS0510.so AICS0510_new.so
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: 25Section 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)
作業中の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"
VineLinuxのscreenコマンド。どうして256色でないんだろうって(;´Д`)調べてみました
src.rpm取ってきてspecファイルを眺めてみたところ、--enable-colors256 となるべきところが--enable-color256 になってるポイ。作り直して完了。ちゃんと256色出るようになりましたヽ(´ー`)ノ
その他いくつかのパッチも充てて使ってますけど。いろいろかなり改善した感じですヽ(´ー`)ノ
この件、パッケージメンテナの人に連絡しましたので、しばらくしたら対応したパッケージがリリースされると思いますヽ(´ー`)ノ
メンテナの人対応超早かったです。すばらしい。
いちいち変数のアドレスを積むのはいいとして、型だとか長さだとか解析するのが面倒だなあと思いつつ(;´Д`)昨日のプログラムを眺めていたら…
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);
}
/* 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;
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.
そこで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)に手を入れてもいいんですが、中はかなり複雑な作りになってますから手を出さないに越したことはないと思うわけです(;´Д`)はい。
ちょっと気になる動作を発見して/etc/issueがCentOS4.5を名乗る3台のサーバでgtarのmd5sumをとってみたら(;´Д`)
02d34f14535905e0e54a9e674939d246 /bin/gtar
8a939808d6550e1149eb74d3442a3192 /bin/gtar
2b6fba97dfe187e553dc59109e3d3c50 /bin/gtar
[]#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
プレスリリースでてたのね(´ー`)
徳島県が長崎県の電子県庁システムを採用
徳島県庁が長崎県の「電子県庁システム」を導入します。
徳島県が長崎県の電子県庁システムを採用
引用:
徳島県では、初期構築段階の委託や、初期運用時のソフト保守については長崎県電子県庁システムの開発・運用に携わった長崎県内の地場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名含む))
年度末に向けて張り切っていきたいところですヽ(´ー`)ノ
ということでLinuxでipvsadm使ってDSRしたりとか(´ー`)完了
リファレンスというか世の負荷分散っぷりを再確認するために色々調達してました
Extreme Summit1i
Foundry ServerIron
色々試しましたけど(本当?)とりあえずLinuxサーバ群しかぶら下げないならLVSで良いかなという感触。
速度的には申し分ありませんでしたが、ARPをゴニョゴニョしてやらないといけないので多少わずらわしいかなという程度。DSR時にロードバランサとしてセットアップした箱の方にarp -sで実サーバを登録しておいたほうが良い感じでした。
[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落ちも無く・・・(怪しいけど)
Yukon2ドライバというかsky2(;´Д`)腐れ 再び
sky2はSK-9E22のLinux用ドライバなんですが、非常に不安定でバンバン落ちる(;´Д`)
とても使えるクオリティじゃないですね。
CentOS4.4用なんてとてもとても(;´Д`)FC6用でもサッパリ(;´Д`)
ということで、以下からDLして戦うことにsk98lin再びヽ(´ー`)ノイクヨ
http://www.marvell.com/drivers/driverDisplay.do?dId=153&pId=36
[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働きすぎだよ(;´Д`)
さる事情で社内用サーバ7台(;´Д`)椅子の後ろに仮設置
後ろから前からどうぞ
動作音が超うるさいというか、後ろからの排気が猛烈なので、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時間して帰宅。
%_smp_mflags -j26 #%_without_gtk2 yes追加して戦闘中~♪
[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用のテープより安い)ですが。早速発注(´ー`)
バックアップを仮運用ヽ(´ー`)ノDLT1
色々弄ってみた感想では DLT1なautoloaderは(ヤフオクで市販のDLT1テープメディアと額が同じ程度だったのに)かなり信頼できるポイ感じなのでバックアップ系を真面目に運用する計画に(´ー`)
丁度 provantage方面に発注してたDLT1用のテープメディアも届いたことだし。
#もちろんこんな感じで床に置いたまま運用するわけじゃないんですがが
で、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上に置かないことです(;´Д`)資産持たなきゃ無くすこともないってやつで。持たないことでリスク減少ってやつですね。
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
とか
1600ユーザって大規模?数秒間に同時400アクセスは?(´ー`)でも10000端末は大規模よね多分
で、比較的規模の大きなシステムでLDAPを認証DBのベースに使うことは多いと思うけれど、今回何度も遭遇したことは「参加してるgroup名の検索に時間がかかると、全体のパフォーマンスは猛烈に落ちる」という問題。関連するサーバ、daemonの使い方を変えるか、使わないかしかおそらく回避手段は無いと思われる。
色々調査すると様々なキーワードが沸いてきて、先人も同じ苦労をしたんだろうなあというのが分かる(例:RFC2307BIS)。幸運にして地雷を踏まずに、おそらく一生その問題に触れることがない人もいるに違いない(sgi_fam)。
でも、システム屋は苦労するし幸運にも地雷を踏むし須らく全ての問題に触れてしまう(´ー`)その差の分がノウハウと呼ばれてるんじゃないかねえ。ノウハウはnet経由で広まってコモディティ化しちゃうかもしれないけど、もっともっと凄い速度で色々な苦労ができればいいんじゃないだろうかね。ドキュメントなんて無いし、過去のMLにも事例は無かったりする。結局は自分でコード読んで、原因箇所を推測してstraceとかでprocessをアタッチしてsyscall追って、tcpdumpしてtail -f /var/log/hoge.logして…
[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.780sRAID5:
[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になるのですコレ
[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.980s3玉RAID5から 4玉RAID0へローカルで読み書き10GB(10*1024^3)
[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玉つないだ場合も計測したいところ…
#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の場合)。
-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%くらいですかね
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圧倒的じゃないか(;´Д`)
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対応じゃないクライアントの場合にどうするか?ってのが悩みの種です…。
]$ netstat -nr|wc 15 116 1106結構複雑になってまいりました。
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枚くらいありますし
1U2本ヽ(´ー`)ノセットアップ中
P4箱2本とSW-0222GとCatalyst1900
超うるせEEEEEEEEEEEEEEEEEEEEEEEEEE(;´Д`)
SW-0222Gはミラーポート機能があるし、設定もWebブラウザから簡単に出来ることになってはいるのでラクチン。Catalyst1900は今回はただのHUBとしてしか使ってないんだけど、後ほど SW-0222GとあわせてVLAN組んでみるかとか云々。そのへんの制御を動的にとかLDAP使ってとかやりたいところだけど中々面倒そう。SW-0222Gだとそう自由度は無いので年末までに届く予定のあれやこれやで補完~ヽ(´ー`)ノCISCO
[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
[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とか何とか.
防備録 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
を実行した。
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スクリプト実行でループ
ちょっと調べ物ついでに見つけた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
冷え冷えヽ(´ー`)ノ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)入れてファイルサーバ用途。
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の箱で代用…無意味
[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
[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って(;´Д`)
データベースをアカウントごとに修復する方法として
cyrus ユーザにて
/usr/lib/cyrus-imapd/reconstruct -r -f /var/spool/imap/[user]
なのが使えるらしいのでメモ。いままで やってた作業の無駄ップリは異常(;´Д`)
で、freeコマンドの出力の used部分を素で使うのじゃなくて used-cached-bufferedを使うようにしてみたりヽ(´ー`)ノMRTG
MRTG~
なんとなく実際の状態にあってるようなメモリ使用量のグラフになったので良し(´ー`)
以前は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本あったわけですが…
もう少し良い箱を揃えるべきでしょうね…はい(;´Д`)
メールサーバ代わりにしてる箱がすんごい重いなあ…
てことで mrtg仕掛けてモニタヽ(´ー`)ノ
memory usage
ただ、memoryで遊んでる分は cacheだのbufferだのに使われてしまうので、だいたいいつも100%なんですよね。ツマランね(;´Д`)
ということで、buffer、cache分を考慮したデータ取りに変更…楽しみは数日後か
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台でメモリどっさり積める箱を導入…です。
Xenな会社が出来たみたいですなヽ(´ー`)ノXen
ちなみに、 Moshe Bar(The Official Moshe bar Website)が設立者のようですね。openMosixの人。
ということで、仮想マシンのXenと クラスタリングの OpenMosixのコラボ期待ヽ(´ー`)ノ
壁兼ルータ兼トンネル入り口兼VPN箱達をVine2.6r4から3.0さらにVine3.1へ更新ヽ(´ー`)ノ
で、ある程度動作してるな~と安心してたら cyrusのdeliverがsignal11で落ちてたり、mysqlの自動起動が外れてたりと散々な目に(;´Д`)
Vine3.1のcyrusのrpmパッケージ群で環境組みなおし、saslauthdも rpmで構成しなおし(いままでは独自にコンパイルインストール)して例によってメールをゴッソリ流しこんで移行。今回も5時間ほどかかりました。
その他振り分けスクリプトとかも上手く動作してない分があったので、年末年始のメールの拾いなおし中…返事待たせたままの先が多数(;´Д`)。
ついでなので、 xoopsを 2.0.9.2まで一気に更新したりとか…。まあセキュリティ関連の一環な訳ですが…
# あと、年末から某ソフトを仕込んで動作調整中…結構手がかかる…
このあたり、総合的に何か投入しないとそろそろマズイ予感…
[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嘘みたいな数字(;´Д`)ワラタ
[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とか吐きまくり。ドライバにバグある?
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チョットは速くなったけど、相変わらず遅い。捨てるか。この板(;´Д`)
SiI3112搭載のSATA板2枚とHDD 3台買ってきてゴミ箱作りヽ(´ー`)ノ
120GBx3でRAID5しようという作戦。手近な板(何故かルータ用に使ってる下駄箱PC)にSATA板挿したら、起動時にgrubがドライブ順誤認識して終了(;´Д`)
GRUB GRUB GRUB GRUB GRUB … stage1のコードの中でグルグルグルグル。
つまり stage2を見つけられませんか。マザーボードのBIOSからOSに渡っているドライブの順番自体がおかしいらしい。とりあえず、泥縄式にSiI3112板のBIOSを殺す方法を考えてみる(ぉぃ)。それらしきJumperのパターンがあったので、適当にPIN立てて適当に落として適当に挿して適当に起動…失敗。違ったようだ(;´Д`)
改造前改造後
仕方ないので、BIOSを読ませないというソリューションで戦ってみる。BIOSを亡き者にしたいが、取っ払うのは面倒なので、Vssだけ切ってみたり。
U2のトコのソバパターン剥げてるあたりを切断
(゚Д゚;)死んだ!
ということで、起動してみるも確かに 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
ということで平和になりました。しかし部屋が散らかったので片付けないとね
キティなKBDM7VKQとM7VIG Pro
オマケ:
下駄箱PC遠景
おぼえがき:
# /usr/local/sbin/grub-install --no-floppy /dev/hda したときに
うちの floppy diskの無い箱でものすごく嵌ったのだが…
/boot/grub/device/map に fd0に付いての記述行があったためと判明。サックリ削除して
再度 grug-install実行して解決。
Xen入れたかったので grubに移行する必要があったので~
[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 しておけばいいんですけど…よく忘れます(;´Д`)
おぼえがきヽ(´ー`)ノ
基本的に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になって腐れ遅いとか色々ありますが、少しずつドライバも
拡充されていくことでしょう。はい
メールの移行に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
途中の作業とか詳しいことはいつか書くのです。ハイ。嵌りやすいトコとか(;´Д`)
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へ移行。しかしこの話はもう少し続くのである。
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
某所に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のインストール時にエラーバンバン
インストール時のエラー…無視しても次々に出る。
$ORACLE_HOME/bin/genclntsh の
LD_SELF_CONTAINED="-z defs" を
↓
LD_SELF_CONTAINED="" に変更
さらに
$ $ORACLE_HOME/bin/genclntsh を実行
して、retryして逃げヽ(´ー`)ノOK
※ 内容もちろん無保証
LPIC受験してきたり。今回は101(RPM)と102で Level1狙いヽ(´ー`)ノ
結果
問題文に一部誤訳があったり、重要なファイル名が英語(Englishでの問題文原文も参照可能)
と日本語の問題文で異なっていたりと注意するべき点はありました。一部 LinuxカルトQ的
問題もありましたが何とか 610/890、610/890でクリアヽ(´ー`)ノ
rpmコマンドのオプションがネチっこく…(;´Д`)
移転先と移転元のどちらもYahoo!BB配下にネットワーク構築してあるので、すでに
OpenVPNを使用してトンネルは作成済み。ただし両方とも 192.168.25.0/24
とりあえず、なるべくサーバ機器の設定を変えたくないので、移転元と移転先のネット
ワークをブリッジでつないで仮想的に同じネットワークとして見せる設定してみたり。
brctlでちょいちょいっ と設定して、設定完了~
eth1と tap0を brctlで br0として使用。で eth1に割振ってあったIPアドレスを br0
に振りなおしたり。
INTERNAL_INTERFACE=eth1
BRIDGE_INTERFACE=br0start() {
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 upiptables -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 ACCEPTtouch /var/lock/subsys/bridge
}
今までなるべく買うのを避けてきたのですが、PowerMac G3/233 DT購入…ヽ(´ー`)ノ
用途はLinux/ppc周辺の userland部分開発用です~ KBD,Mouse付 Mem160MB実装で
17800円。中開けてみましたがホコリもヤニも無く大変に備品ヽ(´ー`)ノでした。
まかーヽ(´ー`)ノ万歳
中古って空気清浄機代わりに使われてたようなホコリまみれ…のが多いのですが、臭いも
なく超備品~
P2Pwall's "FTwall" - 1.08 and 2.02 Kazaa, WinMX (etc) Blocking with Linux(from nanog)ってコトで…でも試すヒマなし。
openpkg.orgからディストリビューションぶん取ってきて Solaris8上に投入。
しかしあらゆる/cwディレクトリの下に構築される世界は男らしさを感じます。
# /cw/etc/rc とか在りますしね。 /cw/bin/rpm 使って /cw/usr/lib/gcc-libとか
もう少し落ち着いたらゲリラ活動開始予定。とりあえず*.shファイルぶん取ってきて実行すれば/cwディレクトリが!
(arch/OSに関わり無くすべてあらゆる/cw下に構築される上に、セキュリティホール対応が異常に速いのはビックリ)
飽きずにLDAP遊びsamba編
samba.schema探すのに手間取りましたが@ITの記事など見ながらサクサク設定。
LDAPの権限設定って細かく出来ないのね~などぼやきつつsamba-ldap設定完了。
とりあえず smbpasswd -w hoge して LDAP接続時のPWだけは設定しておくのが吉っぽいですね。認証の速度としては余り変わらず。自宅内LDAP化計画は進む進む。
シリアルコンソールが必要な機器が増えてきたのでシリアル増設
玄人志向~
でも取り付けてから気付きましたが、これLinuxのドライバって表には無いんですね。NetBSDのコードとか眺めながらいじったら 何とかなりそうですが、体力なしなので放置。
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