☆Linux カーネルの仕組みを勉強するスレ☆
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001login:Penguin
01/10/02 17:44ID:38KkZsUQカーネル全般について語り合うスレッドです。
0868866
04/02/10 01:48ID:LKCK7qEyEXPORT_SYMBOLでgrepしてみたら、i386_ksyms.cに記述されているのを
見つけました。
strncpyなどは、特別にここで用意されていたに過ぎないのですね。
馬本は、オライリーの「LINUXデバイスドライバ 第2版」のことでいいですか?
ちょっと高いですが買って勉強します。
0869login:Penguin
04/02/11 22:12ID:A4Mg4/pdライブラリ関数の使えないカーネル内でもシステムコールは使えますよ.
_syscall0とかのマクロを使うか,sys_openなど直接呼び出したりはできると思います.
0870login:Penguin
04/02/12 13:38ID:8sD0wTgvsyscallマクロは、システムコールに再入してまうのであまりよろしくありまへん。
カーネルスレッド使えば問題ないけど。
そもそも、モジュールの中でファイル開いてごりごりやるのはどうかと思いますな。
0871login:Penguin
04/02/15 18:11ID:UtEM83ENrootkitのwebページを参照にしているようでしたので,「どうかと思う」ことを敢えてやりたいのかなと.
>>866
カーネル内でファイル入出力をするなら,sys_acct辺りが参考になるんじゃないでしょうか.
0872866
04/02/19 04:01ID:3kajdZP1とりあえずいろいろ試してみましたので経過報告です。
(1) _syscall2マクロを使ってみました。
こんな感じでいのでしょうか。
_syscall2( int , open , const char *,pathname, int ,flags);
コンパイルすると次のようなエラーになるので、
(上記のマクロは24行目にあります。)
$ gcc -c hook_uname.c
hook_uname.c: In function `open':
hook_uname.c:24: `errno' undeclared (first use in this function)
hook_uname.c:24: (Each undeclared identifier is reported only once
hook_uname.c:24: for each function it appears in.)
errno.hをインクルードしてみましたが、
#include <errno.h>
モジュールを組み込むにエラーになってしまいました。
#insmod -f hook_uname.o
hook_uname.o: unresolved symbol errno
(続く)
0873866
04/02/19 04:01ID:3kajdZP1fd = func_sys_open("/tmp/hook_uname.txt",O_APPEND | O_CREAT );
コンパイルは成功しましたが、モジュールを組み込むにエラーにになってしまいました。
#insmod -f hook_uname.o
hook_uname.o: unresolved symbol sys_open
(3) sys_call_tableのアドレスを呼び出してみました
int (*func_sys_open)(const char *pathname, int flags);
func_sys_open = sys_call_table[SYS_open];
fd = func_sys_open("/tmp/hook_uname.txt",O_APPEND | O_CREAT );
コンパイル、insmodとも成功しましたが、実行すると
func_sys_openの呼び出し中に失敗し -9 が返ってきました。
やっぱりカーネル内からの呼び出しはだめですか。
とりあえずファイル操作をやってみているのは、分かりやすい結果が得られた方が
面白いかなというのが主な理由でした。
また linux-users MLの話題で、unlink をフックしてその中で、ファイルのバック
アップをとりたいという話題([linux-users:101834])があり、面白そうなテーマだと
思って手を出してみました。
sys_acct(の実装?)等参考に調べてみます。
0874login:Penguin
04/02/19 22:09ID:1aYGSfnX#define __KERNEL_SYSCALLS__
#include <asm/unistd.h>
int hogehoge(void)
{
int fd;
fd=open("hoge",O_RDONLY,0);
}
at 2.4.x
試してないけど。
0875login:Penguin
04/02/24 04:25ID:OerDcbnD#include <errno.h>
だとライブラリ関数のヘッダファイルをインクルードします.
#include <linux/errno.h>
で/usr/src/linux/include/linux/errno.hをインクルードしてみてください.
>>873
sys_openをモジュールの冒頭でextern宣言してもだめですか?
それと単純にカーネルでファイル操作をしたいのなら,ファイルディスクリプタを返す必要はありません.
acctシステムコールにヒントがあります.
#まずは本を読んで知識を得ることが先決だと思います.
0876login:Penguin
04/02/24 13:30ID:bvymi53Usys_openはEXPORT_SYMBOLされていない罠。
armあたりは見える様になってるな。メンテナの趣味かな。
#素直にドライバにしてread/write経由でやりとりした方が素直だと激しく思う。
0877login:Penguin
04/02/27 12:06ID:POIJFvcG実行が始まるわけですが、ld-linux.soというのは
カーネルのどの部分でロードされるのでしょうか。
straceで観察するとlibc.soをロードするシステムコールは
発行されていますが、ld-linux.soに対してはありません。
これというのはカーネルがロードしていると考えていいわけですよね。
その後、ld-linux.soがlibc.soをロードする。
0878login:Penguin
04/02/27 12:51ID:e6K8vpAQなのでロードしているのは ELF の処理部分ではないかと(fs/binfmt_elf.c とか)。
0879login:Penguin
04/02/27 14:10ID:vM/yZAhIfs/binfmt_elf.c:load_elf_interp
んでld-linux.soが参照している共有ライブラリを読んでくると。
興味があるならLinkers&Loadersかttp://ukai.jp/debuan/2002w/elf.txtを読むと
もっと詳しく書いてある。
0880login:Penguin
04/02/27 21:12ID:vdlMtlwTを吐いてくれるツールとか、ソースを可視化するようなツールがあれば
良いなぁと思い探しています。
今のところ以下のようなツールをみつけました。
global
ttp://www.gnu.org/software/global/
SourceNavigator
ttp://sourcenav.sourceforge.net/
他にも何か良いツールを知っている方がおられましたら
教えてください。
0881login:Penguin
04/02/27 22:01ID:/BhsszhI0882login:Penguin
04/02/27 22:02ID:PSE6rHdEDoxygenは?
http://www.fides.dti.ne.jp/~oka-t/doxygen.html
0883880
04/02/27 22:11ID:vdlMtlwT新たなツールを発見したので紹介します。
Sapid
ttp://www.sapid.org/index-ja.html
かなり期待できそうですが使い方がいまいちわかりません。
使っている人がいたら使用感を教えてください。
0884????A?L?A?N?e?N?A
04/02/27 22:13ID:V05PQgy90885login:Penguin
04/02/27 23:33ID:vM/yZAhIそれように書かれていないので、あんまし面白くない。
0886login:Penguin
04/02/27 23:49ID:xaaJLb2zカーネル実行中にコンテキストスイッチがおこってユーザープロセスが動き出すってことですか?
0887login:Penguin
04/02/28 00:00ID:A3wPssc7http://www.atmarkit.co.jp/flinux/special/kernel25/kernel25b.html
0888886
04/02/28 00:16ID:xSTzzvuP@IT読んでなんだかわかったような気分になれました。
0889login:Penguin
04/02/28 14:09ID:J2FeZbHS0890Linuxカーネルの仕組み
04/02/28 19:39ID:bMmaH5z2彼らがガンガッテいるのでLinuxは動いているのです。
以上。
0891login:Penguin
04/02/28 20:38ID:WjxTg2dVCPUはなんだろ
0892login:Penguin
04/02/28 21:02ID:u/+Sj8Sqhttp://www.linux.or.jp/JF/JFdocs/BogoMips/
PentiumとPentiumMMXでずいぶん違うな。
0893sage
04/03/14 02:28ID:g+4Nnj/K意外と理解できるものなんだね。ちょい感動。
0894login:Penguin
04/03/17 13:15ID:a5f2rjZpfreeの表示にある-/+ buffers/cache: のusedの数値は、
man freeには「使用中のメモリからバッファメモリを引いた値」とあるのですが、
だとすると
/proc/meminfo にある
Active: の欄はどういう意味でしょうか?
私の使用しているLinuxでは、freeでみると、-/+ buffers/cache の usedは、常時100MBを
下回らないほど大きく、自分ではちょっとおかしい気がします。
/proc/meminfoのActiveの数値は20〜30MBで、
現在動かしているプロセスのメモリ使用量(topやpsコマンドで確認)から考えるに
その数値は正しいのではないかと思います。
Linuxのメモリ使用量は、どのように読めば良いのでしょうか。
0895login:Penguin
04/03/17 13:33ID:a+ywf6ub> 現在動かしているプロセスのメモリ使用量(topやpsコマンドで確認)から考えるに
どう計算したの?
0896894
04/03/17 14:23ID:a5f2rjZp>895さん
ps -xl --sort -vsize
で、VSZを目算で足してました。が、これも実際にawk使って
足してみたら、freeの数値ともActiveの数値とも大きく異なっていました。
そもそもpsのSZとVSZの違いからしてわかってないので、そっちを先に調べることにしまつ、、
とりあえず、manからアタックはしてるのですが、
man proc も、 man ps も、 man free も、「そもそもメモリを理解してる人が
読むもの」な気がします。
どなたか「馬鹿野郎、ここ嫁!」っていうヒントがあったら教えてください。
0897login:Penguin
04/03/27 16:24ID:q39k7y+S0898login:Penguin
04/03/30 03:22ID:ic2Sy5Sj0899login:Penguin
04/03/30 17:15ID:PoJ7z2hxcachedはページキャッシュ
0900login:Penguin
04/03/30 18:31ID:VHI8Xdt8Thanks!
0901login:Penguin
04/03/31 23:27ID:1pGTvgen板の下の方でひそひそ話なのですね。
ス・テ・キ
0902login:Penguin
04/04/08 19:09ID:dz3aoHOSfile_permissionで渡ってくるパラメータが struct file * file, int mask の2つのみで、
これだとシステム全部のファイルI/Oが引っかかる為、
実際にフックしたいディレクトリのみにしぼりたく、
フルパスを取ろうとしているのですが どうやってもできません… (涙
神様はいませんでしょうか?
------------------------------------------------
int iCnt = 0;
struct dentry *pEntry = file->f_dentry;
/* 逆順にたどる */
while ( pEntry->d_inode && pEntry->d_count.counter )
{
pParent[iCnt] = (char *)kmalloc( pEntry->d_name.len+1, GFP_KERNEL );
strcpy( pParent[iCnt], pEntry->d_name.name );
iCnt ++;
/* 上へ */
if ( pEntry == pEntry->d_parent )
break;
pEntry = pEntry->d_parent;
}
------------------------------------------------
0903login:Penguin
04/04/10 00:38ID:04yJkWho0904login:Penguin
04/04/10 01:33ID:M+qXKgd2指定してエコーできませんか?
/etc/xinetd.d/echo-udpと/etc/servicesをいじれば
できそうな気はするのですが、だめかな?
0905login:Penguin
04/04/12 10:07ID:KSP28miV_| ̄|○
やはりスクラッチからですか?そうですか。
0906login:Penguin
04/04/12 11:06ID:VzmbJK3b余裕で出来ると思うけどカーネル関係ないよ
0907login:Penguin
04/04/13 09:48ID:nwYJmtfppci_dram_offset 変数はどういう意味でしょうか?
ホストメモリの、PCIメモリ空間におけるオフセット、
という理解であっていますでしょうか?
0908login:Penguin
04/04/13 23:17ID:V/u6W3OU#TASMをずっと使っていたので :-)
メモリ参照ではまってしまった。
(a,b,c)って書くと(a+b*c)だと思わなかったZE。
しかも、SourceとDestが逆!?
コンパイルして気づいたっっっ!!
これ全部直すのキツイっす!(泣
今日は徹夜だ。シクシク
0909ヽ(´ー`)ノ ◆.ogCuANUcE
04/04/14 09:28ID:6A+690eW> しかも、SourceとDestが逆!?
両方とも info 見りゃ分かるんだけどな。
0910908
04/04/15 02:51ID:Z+dQWDMrasm("mov a, offset b");
↑上記の場合でのAT&T形式のアセンブリコードって何ですか?
offsetでエラーが出る
>>909
>両方とも info 見りゃ分かるんだけどな。
info gasですか?
探してみたんですけど見つからない。
0911login:Penguin
04/04/15 09:12ID:ehDW48/Amov $b,a
0912login:Penguin
04/04/25 18:46ID:a4I3Ve2uものだと思ってたんですが、void引数の関数にもちらほらasmlinkageが見られ
ますよね。これってどういう意図でつけてあるのか教えてくらさい。
0913login:Penguin
04/04/25 19:30ID:PUgCYyE/惰性でつけてるとみた。
include/linux/linkage.hを見ると何もしていないことがわかる。
0914login:Penguin
04/04/26 02:04ID:90cdg9sZうげ、そんな適当なんだ。了解でつ。
ありがとう。
0915login:Penguin
04/04/26 10:48ID:V5Uh0zswWhat is asmlinkage ?
ttp://kernelnewbies.org/faq/index.php3#asmlinkage
The asmlinkage tag is one other thing that we should observe about this simple function.
This is a #define for some gcc magic that tells the compiler that the function should not
expect to find any of its arguments in registers (a common optimization),
but only on the CPU's stack. Recall our earlier assertion that system_call consumes its first argument,
the system call number, and allows up to four more arguments that are passed along to the real system call.
system_call achieves this feat simply by leaving its other arguments (which were passed to it in registers) on the stack.
All system calls are marked with the asmlinkage tag, so they all look to the stack for arguments.
Of course, in sys_ni_syscall's case, this doesn't make any difference, because sys_ni_syscall doesn't take any arguments,
but it's an issue for most other system calls. And, because you'll be seeing asmlinkage in front of many other functions,
I thought you should know what it was about.
0916login:Penguin
04/04/26 11:33ID:90cdg9sZそれを読んで質問してるんだけど、なにか英文の解釈違いますか?
0917login:Penguin
04/05/16 18:59ID:FC6L1zfD0918login:Penguin
04/05/17 19:36ID:nMrIOM1Y0919login:Penguin
04/05/18 02:01ID:OpVrZf3yLinuxにもよく似たものってある?
教えてエロリポップな人!
0920login:Penguin
04/05/25 05:20ID:JP2tAIIS>それを読んで質問してるんだけど、なにか英文の解釈違いますか?
怒っちゃイヤ!!
0921login:Penguin
04/06/21 08:22ID:1lgVmpvk0922login:Penguin
04/08/08 16:46ID:8WCY4JUzカーネルセキュリティーな方へ
http://security.ten.thebbs.jp/1089489561/
わたしにゃさっぱりだけどなんか面白そうなんで
紹介しときます。
0923login:Penguin
04/08/28 22:13ID:PWSONyS6Context Switchの大体の動きはわかりましたが一つ疑問があります。
switch_toや__switch_to関数で汎用レジスタ(eax, ebx, ecx等)の退避を行っている箇所が
見当たりません。実際に退避しているレジスタは、eip,esp,fs,gsやfpuレジスタとかです。
Context Switch発生時、いったいどこで汎用レジスタを退避するのでしょうか?
0924login:Penguin
04/08/29 01:01ID:nVxTwlJG関数の呼び出しで破壊されてもいいレジスタはそもそも退避しない。
壊れるとまずいレジスタは関数のエントリでスタックに退避されている。
そういうのはアセンブラのソース吐かせて確認すればいいのではないかと思うが。
0925login:Penguin
04/08/29 02:43ID:u2o1h55W>関数の呼び出しで破壊されてもいいレジスタはそもそも退避しない。
>壊れるとまずいレジスタは関数のエントリでスタックに退避されている。
ってことは、例えばユーザランドのある関数を実行中に
そのプロセスの実行割り当て時間を使いきった場合、
その時点で使用していたレジスタを退避するのでしょうか?
であるなら、switch_toや__switch_toを処理している時点では、
汎用レジスタを退避しなくてもいいということになるんですが。
>そういうのはアセンブラのソース吐かせて確認すればいいのではないかと思うが。
そうなんですけど、いったいどこでそれをしているのかよくわかっていないので。
0926login:Penguin
04/08/29 11:10ID:1PFwUqWGswitch_to()は引数をeax、edxから引っこ抜くわけだから、
そのとき既に、このレジスタに(仮にA、Bとすると)その値が
保存されてないといけないわけ。
退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
ああ、面倒。ここまで書いたら解かると思いますけど。
この辺り開けば、等価なコードが書かれてるでしょう。
0927login:Penguin
04/08/29 16:36ID:cGtjWn1N>switch_to()は引数をeax、edxから引っこ抜くわけだから、
>そのとき既に、このレジスタに(仮にA、Bとすると)その値が
>保存されてないといけないわけ。
引数にeaxとかが設定されているのはわかります。
>退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
>ああ、面倒。ここまで書いたら解かると思いますけど。
いえ、自分が期待していたのはどっかで汎用レジスタを退避しているのでは
と思っていたのです。どっかでpusha,popaでもしているのかなと。
なんかよくわからなくなってきたので、もう一度調べてみます。
レスしてくれた方、ありがとう。
0928login:Penguin
04/08/29 16:42ID:nVxTwlJGユーザーランドで使っているレジスタは例外発生時に退避されます。
entry.SのSAVE_ALLマクロ使ってる所。
0929login:Penguin
04/08/29 19:36ID:cGtjWn1N見てみます。ありがとう。
0930923
04/08/30 02:36ID:s/M5nqAJ暗闇の中に一筋の光が見えてきました。
0931login:Penguin
04/09/06 16:37ID:zvPrxyTSム板より転載。
http://program2ch.jugem.cc/
0932login:Penguin
04/09/28 13:20:48ID:j6tq7+L52.2用のカーネルモジュール(driver)がありまして、2.4で使いたいのですけ
ど、カーネルに変更が加わった為かソースはそのままではmakeが通らないです。
一般的な話でいいのですが、kernel2.2から2.4などバージョンを上げる時
moduleのソースはどの辺りに修正加えてますか?
0933login:Penguin
04/10/12 13:21:06ID:8oNaJMZyオライリーの「LINUXデバイスドライバ」ぐらい持っとけ。
0934login:Penguin
04/12/22 21:16:51ID:pSCYM4cf2.2と2.4の同じデバイスのドライバ見比べてみたらどうでしょうか。
あと、「LINUXデバイスドライバ」って英語版はWeb上で読めましたっけ。
0935login:Penguin
04/12/23 07:06:29ID:S0CjoABJHIGHMEMが必要なわけですが、
HIGHMEMを使うにあたって、ペナルティ等はありますか?
2.6になって改善されたというような記事は見つかったのですが、
具体的な問題については見つかりませんでした。
0936login:Penguin
04/12/30 10:00:07ID:4MuG0KSsモジュールでシステムコールを追加する方法というのはありますが、
(hoge.oをロードしてる間だけhoge()と言うシステムコールが使える)
既存のシステムコールを上書きすることはできるのでしょうか。
(hoge.oをロードしている間だけカスタマイズしたopen()、close()が使えるような)
カーネルがROなROMに焼かれているシステムですので、カーネルに直接
手を入れることができず上記のような発想で対応したいと考えています。
0937login:Penguin
04/12/30 10:00:44ID:4MuG0KSsなお、対象のカーネルは2.4.17です。
0938login:Penguin
04/12/30 10:09:32ID:4MuG0KSsここにそのものズバリがありました。
ご参考に。
http://www.csg.is.titech.ac.jp/~kourai/memo/linux_kernel.html
0939login:Penguin
05/01/29 14:37:42ID:gZ/pqgzp# define __acquire(x)__context__(1)
__context__(1)ってのはどういう意味?
教えてくれた人には俺の妹をもれなくプレゼント!
0940login:Penguin
05/02/01 14:08:57ID:lTL5Ae25コンテキストスイッチ。
って何だったっけ?
ああ、不完全だからおぱーいとマソこだけでいいよ。
0941login:Penguin
05/02/01 15:58:58ID:Azn3cU4Mとりあえずレスに感謝。あんた最高だよ、ただコンテキストスイッチじゃないんだよな。
不正解だから>>940には、俺の使用済みティッシュ(3年分)をもれなくプレゼント!
__context__(1)ってのはどうもgcc拡張っぽい気がするんだ。
0942login:Penguin
05/02/03 11:47:43ID:vTRZ9nM+0943login:Penguin
05/02/03 12:58:08ID:8pVcdBBv理解できずに苦しんでます。どうかご教授ください。
0944login:Penguin
05/02/20 01:52:12ID:HsEiZt6DDEFINE_PER_CPUで定義したCPU毎の変数を取り出すマクロじゃないの?
ttp://lwn.net/Articles/22911/
0945login:Penguin
05/02/20 01:59:27ID:HsEiZt6D0946943
05/02/23 08:44:24ID:L5tOcRY0ありがとうございますm(_ _)m
半分、あきらめかけていました。
0947CPUID
05/02/25 14:48:05ID:T5ngmMgI0948login:Penguin
05/02/25 21:56:30ID:Kyzhm2lt0949login:Penguin
05/02/25 23:10:03ID:L0S86Pvnすプロセスディスクリプタの誤りです。
0950login:Penguin
05/02/25 23:55:11ID:Nj2juC+Sそんなんユーザー空間から見えちゃまずいだろう。
0951login:Penguin
05/02/26 13:57:10ID:NTEY/KLTお前は一人で世界を救おうというのか!
0952login:Penguin
05/02/26 20:38:32ID:c7lqcqLwカーネルを理解したいのだ。
「この本をこの通りに順番に読め!」
というのがあったら、教えてください。
0953login:Penguin
05/02/26 21:54:11ID:PsgioYqx本などない
ソース嫁
0954login:Penguin
05/02/27 14:18:38ID:BnGxFursこれ以上理解できない状態が続くと、妻を道連れに逝くかもしれません。
そうなったらお前らすごい後悔するよな、そうだよな、そうだろ!
心の中で否定しても無駄だ、絶対後悔しちゃうぞ。
後悔したくないよな、そうだよな。
じゃー、さっさと教えてちょ!
include/linux/compiler.h
# define __releases(x)__attribute__((context(1,0)))
# define __acquire(x)__context__(1)
すいません、ちょっと強気に迫ってみましたが、教えてください。
本当に困ってます。頼みます。m(_ _)m
0955login:Penguin
05/02/27 14:21:21ID:BnGxFurs1. UnixUserのLinux2.6解読室
2. 詳解Linuxカーネル
3. Linuxのソース
0956login:Penguin
05/02/27 20:25:37ID:1DzM+Kt1詳細Linuxカーネルは持ってます。
UnixUserのブートの本も。
ただ、それに至る知識がないのです。
Linuxプログラミング(ソフトバンクのやつ)も読んでいるのですが、
「何かが足りない」感じなのです。
0957login:Penguin
05/02/27 20:27:14ID:1DzM+Kt10958login:Penguin
05/02/27 20:53:44ID:+C2cvjvn恐らくハードウェアの知識と根性
>>954
それバージョンいくつ?そんな内容ないし。
それに__attribute__について知りたいならgccのinfoで
C Extensionの項目の
* Function Attributes:: Declaring that functions have no side effects,
or that they can never return.
* Attribute Syntax:: Formal syntax for attributes.
* Variable Attributes::Specifying attributes of variables.
* Type Attributes::Specifying attributes of types.
この辺り見れば?
0959login:Penguin
05/02/27 20:54:49ID:BnGxFursあくまで個人的な意見だが、Linuxカーネルはプロセッサの知識
が無いと苦しい。
「はじめて読む8086」→「はじめて読む486」
を読んで、プロセッサの知識を身につけておいた方が良いと思う。
ただ、「あれやって、これやって、そしてLinuxカーネルを読もう」
とあまり遠回りをするのではなく、プロセッサとC言語の知識が
あったら、すぐにLinuxカーネルを読み始めた方がよいように思う。
0960954
05/02/27 21:00:55ID:BnGxFursとりあえずレス、サンクス!感謝感謝感謝
Linux2.6.10です。
探してみたんだけど見つかりません>gccのinfo (ToT)
context()っていう関数が一体、どの関数のことなのか知りたいです。
0961login:Penguin
05/02/28 11:32:10ID:D7G2yqC2つ[GNU GLOBAL ソースコードタグシステム]
http://tamacom.com/global-j.html
0963960
05/03/01 11:16:17ID:yi/Urpstinclude/linux/compiler.h
の中のマクロってことがヒントかもしれない。
http://lxr.linux.no/source/include/linux/compiler.h#L6
↑の場所なんだが、
#ifdef __CHECKER__
っというのは何だろう?__ASSEMBLY__とかいう定義もあるが、
これはどこで調べれば良いのだろうか。
どうか放置せずに教えてください m(_ _)m
これ以上停滞してると、・・・お、お客さんが怖い・・・
0964login:Penguin
05/03/01 11:56:56ID:dudfwCjE0965login:Penguin
05/03/01 12:04:54ID:eifVJR66>これ以上停滞してると、・・・お、お客さんが怖い・・・
ソースを解析する仕事??
0966login:Penguin
05/03/01 12:14:12ID:PnFz+g+l0968login:Penguin
05/03/01 15:25:54ID:eifVJR66レス数が950を超えています。1000を超えると書き込みができなくなります。