- 1 名前:見習デーモン [01/10/17 18:35.net]
- これからsys/kern/init_main.c読んでみます。
【参考】 ・「The Design and Implementation of the 4.4BSD Operating System」 の第2章 www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/index.html ・*BSDでのアセンブリ www.int80h.org/bsdasm/ なんか検索してみてもあんまりハックサイトひっかからないね。 Linuxより伝統あるはずなのに。
- 50 名前:名無しさん@お腹いっぱい。 mailto:sage [01/12/31 22:07.net]
- 正直、linuxペンギンは気持ち悪い。
- 51 名前:名無しさん@お腹いっぱい。 [02/01/11 07:01.net]
- >>26
SYSINITの所で、つまずいたです。 出来れば簡単に説明して頂けるとうれしいのですが。。
- 52 名前:名無しさん@お腹いっぱい。 [02/01/13 20:52.net]
- ager
- 53 名前:26 [02/01/14 18:50.net]
- 以下の実験は実行ファイル形式としてELFを使用しgccをコンパイラとして
利用している事が前提である。 実験1. まず以下のソースをコンパイルし結果を見よ。 --------a.c extern int __start_b; extern int __stop_b; static int a1 __attribute__((__section__("b"))) = 0; main() { int *a; for(a = &__start_b; a < &__stop_b; a++){ printf("%d\n",*a); } } ------- 実験2 上のソースと次に挙げるソースをリンクし、結果を見よ。 ----b.c int a2 __attribute__((__section__("b")))=1; int a3 __attribute__((__section__("b")))=2; ----- 実験3 /boot/kernel/kernelと、今作った実行ファイルそれぞれに対し objdump --all-headers をかけて結果を見よ。 考察欄
- 54 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/14 18:56.net]
- $ objdump --all-headers /boot/kernel/kernel
/usr/libexec/elf/objdump: /boot/kernel/kernel: No such file or directory $ uname -sr FreeBSD 4.4-RELEASE
- 55 名前:52 mailto:sage [02/01/14 18:59.net]
- みゅ。悪い。4系だと/kernelだね。
- 56 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/14 22:59.net]
- Linux(ELF)でも、(おそらく)同じ結果になった。
__attribute__や__section__の定義を探して /usr/includeなんかをfind+grepしたけど見つからない。どこかなー
- 57 名前:52 [02/01/15 00:31.net]
- >>55
>>26参照。
- 58 名前:26 mailto:sage [02/01/15 00:34.net]
- それから、__attribute__はgccの拡張だよ。info参照。
- 59 名前:歴史に名を残すかもしれない男 [02/01/15 01:59.net]
- 僕は、超研究員大学生でありウィザドですが、
既存のOSはしょーもないので新しく作ります。 そこで質問です。 FreeBSDってカーネルとか弄ったりして、 ソフトとか入れて整形したものを Linuxのディストリビュージオンみたいに配ってもいいですか? または、FreeBSDなどを参考にして、 一から作ったOSウォ、VokuBSDみたいに名乗ってもいいですか。
- 60 名前:50 mailto:sage [02/01/15 02:04.net]
- 26さん、ありがとう!!
objdump --all-headersの出力は、はっきり言って分からなかった んですが、ヒントは掴めたです。 ______________________________ // a.c extern int __start_my; extern int __stop_my; static void test1(void) { printf("test1\n"); } static void test2(void) { printf("test2\n"); } static void (*__p1)(void) __attribute__ ((section ("my"))) = test1; static void (*__p2)(void) __attribute__ ((section ("my"))) = test2; int main(void) { void (**p)(void); for (p = &__start_my; p < &__stop_my; p++) { (**p)(); } return 0; } ______________________________ // b.c static void test3(void) { printf("test3\n"); } static void test4(void) { printf("test4\n"); } static void (*__p3)(void) __attribute__ ((section ("my"))) = test3; static void (*__p4)(void) __attribute__ ((section ("my"))) = test4; が動いて一人感動しております。 最初、関数のコード部分もmyセクションに入れてしまって core吐きまくったです。
- 61 名前:納期に間に合わないかもしれない男 mailto:sage [02/01/15 02:37.net]
- >58
既存のソゥースについたBSD スタァイルのコピーライトオンを改変しなけれヴぁ 問題にないはずです。 頑張ってくださイね。
- 62 名前:見習いデーモン [02/01/15 02:45.net]
- おひさしぶりです。
己の能力不足ですっかりカーネルの深海に溺れて土左衛門になって スレに出入りすることもなかったんですが、 まだ地味に続いてたんですね。 26さんが情報提供してくださったりして、スレの雰囲気は良い方向 に向かってますね。 全然ついていけないんですけど、今MINIXいじって基本を勉強してるんで いつか追いつければなぁと思ってます。 っつーかみなさんどうやってそんなにスキルつけたんですか。
- 63 名前:名無しさん@お腹いっぱい。 [02/01/15 09:06.net]
- >>61
oskitで遊ぶ
- 64 名前:26 [02/01/17 00:04.net]
- >>58
どんな簡単な物でもいいから、とりあえずドライバ書いて見たら? 今まであるドライバからコピペしたり、/usr/share/examples/にある スクリプトを使ったテンプレートを元に書けばそんなに難しくないよ。 頭から追っていくってのは正直言うとかなり効率の悪い方法だと思う。 カーネルがprintf(9)で吐くメッセージをたよりにしたりしながら 調べるのが吉。そうすれば例えばSYSINITの実装はとりあえず理解しなくても 先に進むことが出来るし。
- 65 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/17 00:15.net]
- なんか面白そうだな。
*BSD 入れたくなってきた。
- 66 名前:名無しさん@お腹いっぱい。 [02/01/22 08:54.net]
- Solarisのカーネルハックもここでいいの?
- 67 名前:名無しさん@お腹いっぱい。 [02/01/22 14:24.net]
- Solarisの kernel source見ると、変な copyrightに汚染されませんか?
# 会社の決算期にあたって、bladeが来ない...
- 68 名前:age [02/01/30 23:31.net]
- age
- 69 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/31 00:12.net]
- >>63
日本人がBSDにドライバ書くのは見飽きたにょ VFSとかに挑んでみてくれ
- 70 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/31 00:33.net]
- Uniform Driver Interfaceどうよ?
- 71 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/31 13:57.net]
- えと、えと。そうしてほしいの?おにいちゃん。ってのはともかく。
要はいじりたいコンポネントからせめて行くのが得策なわけで。 頭から見ても良い事はあんまり無いと言うのが本質ですな。 他機種移植だったらそれが一番大事だけど。 (もっとも、例にだしたのがドライバなのは私がその見飽きた事を しているからでして。)次はportalfs元にいじるかな。小さくて簡単そうだし。 kernfsあたりも簡単そうだったけど。FreeBSDからは消えたし。 UDIですかぁ。うーん。努力は認めるけど....
- 72 名前:68 mailto:sage [02/02/02 00:17.net]
- >>70
個々のファイルシステムじゃなくてVFS。 VMいじれとまでは言わないっす。ドライバ書きは多いけど、そっから 昇格するやつがいないと思ったみょ。 わしも、しょうもないドライバを昔書いたけど、それいらいカーネルは いじってないでし。(もはや一介の犬厨です)
- 73 名前:名無しさん [02/02/09 10:55.net]
- ソラリスのカーネルスレッドがマッチするよう
Sparcは設計されているのですか?
- 74 名前:名無しさん@お腹いっぱい。 [02/02/23 09:22.net]
- あげ
- 75 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/23 16:55.net]
- ドライバ書きより VFS いじる方が格が上だとでも?
ただのレイヤ違いじゃん。
- 76 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/26 00:00.net]
- >>74
本当にそう思う? みなさまもそう思う?
- 77 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/26 14:20.net]
- 禿同 >>74
- 78 名前:74 mailto:sage [02/02/28 15:46.net]
- >>75
心からそう思っております。
- 79 名前:名無しさん@お腹いっぱい。 [02/03/08 23:27.net]
- age
- 80 名前:仕様書無しさん [02/03/09 17:23.net]
- これも
- 81 名前:名無しさん@お腹いっぱい。 [02/03/11 00:24.net]
- つづきプリーズ揚げ
- 82 名前:名無しさん [02/03/11 04:30.net]
-
BSDに誰か じゃーなりんぐできるFS実装してくれたまへ。 あと、圧縮できるFSもキボンヌ
- 83 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 04:50.net]
- jfs4bsd.sourceforge.net/
- 84 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 06:19.net]
- >>82
ライセンスどうするんだろ? JFSもGPLだったよね?
- 85 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 07:31.net]
- >>83
コードの再利用をせずにスクラッチで書けば良いんではないかい?
- 86 名前:83 [02/03/11 10:41.net]
- うーんやっぱそうなるよねぇ。先が長そうだ...
とりあえず応援age
- 87 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 21:46.net]
- JFS ってわざわざスクラッチから作るほどイイの?
- 88 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/12 00:04.net]
- とりあえずジャーナリングするファイルシステムがひとつは欲しい
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/12 16:19.net]
- JFS for Linux を移植するよりスクラッチから書いた方が早い
- 90 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/12 18:17.net]
- >>88
その情熱をLFSに注いでクレ
- 91 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 00:28.net]
- LFSとかsoftupdateみたいなディスクへのリクエストの順序で整合性を保つ方式は
そろそろダメというのが世間のコンセンサスな気がする
- 92 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 00:49.net]
- ジャーナリングって
ディスクへのリクエストの順番と 実際書き込まれる順番が デタラメになっても問題ないの?
- 93 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 08:05.net]
- >>91
そんなことはないが、ディスクキャッシュのフラッシュなどの 同期命令の発行がかなり少なくてすむ 少なくともメタデータ一個書くごとにフラッシュする必要は無い
- 94 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 08:39.net]
- 書き込み順序保証ってSCSIやATAのtagged queuingじゃダメなの?
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/14 00:16.net]
- >>93
その手の機能をすべてのメタデータの書き込みに対して使うと遅いよ
- 96 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/14 01:15.net]
- >>90
LFS はセグメント毎にフラッシュすれば十分なんでないの? ダメ?
- 97 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/14 09:44.net]
- >>95
そうですな。すまんかった
- 98 名前:名無しさん@お腹いっぱい。 [02/04/07 06:03.net]
- age てみよう。
- 99 名前:名無しさん@お腹いっぱい。 [02/04/09 19:11.net]
- 勉強のため、FreeBSD 4.5-RELEASE 上で俺ファイルシステムを
作りたいと思っています。とりあえず、procfs のように、カーネルの 覗き穴的な fs がいいかなと。 が、サパーリわかりません。というわけで、fs のスケルトンが欲しい のですが、よいスケルトンはどれでしょうか。 ファイルサイズ的に miscfs/deadfs/ かなぁと思うのですが、deadfs は どういう目的の fs なのかがわかりません。ぜひアドバイスをお願いします。
- 100 名前:98 mailto:sage [02/04/09 19:26.net]
- deadfs は mount 方法もわからないし (そもそも mount できるのか
どうかもわからん) kernfs の方がいいかな…。
- 101 名前:名無しさん@お腹いっぱい。 mailto:sage [02/04/09 19:32.net]
- procfs を換骨奪胎すればいいのでは?
- 102 名前:名無しさん@お腹いっぱい。 [02/04/09 19:57.net]
- やっぱnullfsが基本では。
procfsはpseudofsレイヤができたから応用ききづらいかも。
- 103 名前:100 mailto:sage [02/04/09 20:21.net]
- nullfs は読むのに layerfs と行ったり来たりしなきゃ
いけないので面倒かもと思ったので。(NetBSD) よく見たら >98 はFreeBSDか。 てゆーか msdosfs あたりでも見たほうがむしろ分りやすいかもとか 思ったり。
- 104 名前:98 mailto:sage [02/04/09 20:37.net]
- なんだこれ、ちょーかんたんじゃん! というわけでメモメモ。
/sys/conf/files に追加。 miscfs/orefs/orefs_vfsops.c standard miscfs/orefs/orefs_vnops.c standard /sys/sys/vnode.h に VT_OREFS を追加。 enum vtagtype { ... VT_OREFS, /* 追加 */ }; # mkdir /sys/miscfs/orefs && cp /sys/miscfs/kernfs/* /sys/miscfs/orefs /sys/miscfs/orefs/* を片っ端から s/kern/ore/ # cd /sys/i386/conf && config GENRIC && cd ../../compile/GENERIC # make depend && make make install # ln -s /sbin/mount_kernfs mount_orefs # reboot # mkdir /ore # mount_orefs orefs /ore # ls -l /ore -r--r--r-- 1 root wheel 9 Apr 9 20:30 oresama # cat /ore/oresama oresama!
- 105 名前:98 mailto:sage [02/04/09 20:54.net]
- UNIX 使い始めて はや7年。やっとカーネルの世界にちょっとだけ足を踏み入れる
ことができたかな…。漏れみたいなヘタレには一生無理かとおもてたよ。感激。 というわけで、とりあえずの目標は rootvfs/da0s1a -> vnode/1 rootvfs/ad0c -> vnode/2 vnode/1/v_flag vnode/1/v_count みたいな (まだわかってないので構成は適当)、各種構造体をマッピングした ファイルシステムを作ろうと思います。 > やっぱnullfsが基本では。 nullfs の本来の使い方がいまいちわからないので、 一番サイズの小さい kernfs で行くことにしましたっす。
- 106 名前:名無しさん [02/04/09 21:59.net]
- カーネルのコンパイルについて質問です。
FreeBSD4.5でカーネルをいじってmake && make installを しているんですが不要な部分を除いてコンパイルの時間を 短くできないでしょうか?そんな都合のいい話は ないかもしれませんがよろしくお願いします。
- 107 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 108 名前:名無しさん@お腹いっぱい。 [02/04/09 22:47.net]
- >>105
パソコンかえればはやくなるんじゃないかな。 PentiumIII1G以上だったら1分ぐらいで終わるし。
- 109 名前:名無しさん@お腹いっぱい。 mailto:sage [02/04/09 22:51.net]
- >>105
本来スレ違いなんだけど… www.jp.freebsd.org/www.FreeBSD.org/ja/handbook/kernelconfig.html さらに何か疑問があればFreeBSD質問スレにGo
- 110 名前:名無しさん@お腹いっぱい。 [02/04/20 02:22.net]
- NULLFSは正直お勧めできない。
あれは、スタッカブルファイルシステムのテンプレ。 そうそう。Linuxネタだけど、これどうよ。(カーネル空間でORBit動かす) korbit.sourceforge.net/ これ一瞬移植しようかと思ったけど、geom入ったせいで glibと名前空間がぶつかりそう。
- 111 名前:名無しさん@お腹いっぱい。 [02/04/21 00:27.net]
- うーん。
NetBSDからスタッカブルファイルシステム系全部持ってきたほうが 面白いかなぁ。
- 112 名前:名無しさん@お腹いっぱい。 mailto:sage [02/04/21 16:04.net]
- >>109
ORBit カーネルで動かすとなんかいいことあるの? > you can write Linux device drivers in Perl とか言われてもなあ(w
- 113 名前:学生 [02/05/08 22:11.net]
- カーネル書けるとスゴいって書き込みよく見かけますが
学生で書けたらすごいですか? ウチの教授は書けますかね?
- 114 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 22:27.net]
- >>112
そんな書き込みどこで見かけた? 2ちゃんねるぢゃあないよな?
- 115 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 22:39.net]
- >>113
ここと思われ: Free Unix での経験は職歴に入らないか? (428) pc.2ch.net/test/read.cgi/unix/995637081/12
- 116 名前:学生 [02/05/08 23:02.net]
- ビンゴです。
あと、以前他のスレでも見ました。 で、どうなんですか。 カーネルは上級のプロじゃないと書けないんですか? お前ら真面目にレス下さい。
- 117 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:10.net]
- >>115
べつにプロである必要はこれっぽっちもないわけだが
- 118 名前:学生 [02/05/08 23:19.net]
- >>116
どのくらい難しいのでしょうか 3年間くらい勉強すれば学生でもかけますか
- 119 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:21.net]
- >>117
やってみりゃ自分でわかるだろ? つべこべ言ってないでさっさとカーネルをハク汁
- 120 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:24.net]
- >>117
自分の頭の中のフローチャートを実際にプログラムに 起こせる人間であれば、多分1年くらいで出来ると思う。 漏れは3年くらいかかったけど(鬱
- 121 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:27.net]
- >>117
学生かどーかは関係ないし。 1ヶ月くらいやってみて無理そうなら当分無理。
- 122 名前:117 [02/05/08 23:37.net]
- レスありがとうございます。
ここで言う「書ける」というのは、白紙からの状態から自分で書けるという意味ですよね? 既存のプログラムを改造するとか、書籍を見て書くとか、そういう意味ではないですよね?
- 123 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:38.net]
- >>115
むしろカーネルをスクラッチから書くなんてこと 学生にしかできないから、今のうちに頑張れ。 「上級のプロ」にそんな暇なんてありません。
- 124 名前:名無しさん@お腹いっぱい。 [02/05/08 23:41.net]
- >>122
UNIX使いになるためには、やっといて損はないですか?
- 125 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:44.net]
- >>123
人によって"損"の感じ方が異なります 私の損とあなたの損は違います
- 126 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:46.net]
- >>124
うーん 将来ネットワーク関係のソフトウェアを開発したいのですけども。 そーゆー人にとっては有益でしょうか?
- 127 名前:T大理系 [02/05/08 23:49.net]
- みんな理系?
凄いです 尊敬します
- 128 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 23:59.net]
- >>125
そういう具体的な目標があるのなら、カーネルに拘らずに最初から ネット周りのプログラムをハクした方がいいと思われ。 カーネル書ける奴はスゴイが、カーネル書ける奴だけがスゴイわけじゃない。
- 129 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/09 00:08.net]
- 俺的にはドライバをバリバリ書き捲くってるような人が
プログラマとして尊敬に値すると思ってる。 カーネルはどっちかって言うと設計するものって感じだしねぇ。
- 130 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/09 00:10.net]
- >>128
実務家っぽい御意見…
- 131 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/09 00:11.net]
- 人に訊いてからじゃないと始められない奴は結局何もできない。
hackなんてのは気づいたらやっているか、やらないと夜が明けないかのどちらかだ。
- 132 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/09 01:13.net]
- >>125
ネットゲーのサーバとかのように、非同期に発生する大量の要求を うまく捌かなければならないプログラムを書くのは、 カーネルを書くのと似たようなセンスが必要な気がする。 # RDBMSとかもそうだな。 こういうシステムをうまく設計できる奴は 非常に使えるね。
- 133 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/09 12:11.net]
- >>130 がいいこと言った。
- 134 名前:学生 [02/05/10 19:33.net]
- みなさんどうもありがとう
ところでみなさん理系ですか? もしくはコンピュータで飯を食っている人達ですか?
- 135 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/10 19:44.net]
- >>133
理系かそうでないかなんてどうでもいいことだ。 とりあえずやってみろ >>130 どっかで聞いた気がするが、イイね
- 136 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/10 20:22.net]
- >>133
俺も学生。経営情報学科というとこにいる。 理系だか文系だかわからん。
- 137 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/11 05:29.net]
- あーあ
カーネルいじって遊んでたら もー朝だよ... 寝よーっと。
- 138 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/11 14:10.net]
- カーネル・ハッカースおじさんのAAキボンヌ
- 139 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/21 11:26.net]
- hack より fuck だと最近痛感 おっかけさぼりすぎで make world 不能状態
- 140 名前:26=52=..... mailto:sage [02/05/25 03:44.net]
- 某誌のネタにしますた。
- 141 名前:名無しさん@お腹いっぱい。 [02/06/03 01:15.net]
- 保守age
- 142 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/03 01:59.net]
- 見習いデーモンは死んだのか?
- 143 名前:名無しさん@お腹いっぱい。 [02/06/09 05:21.net]
- ど
な たか、いらっしゃい ま せ ん か ?
- 144 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/21 07:49.net]
- 誰かハックしてる人いますかー。
BSDのkernel読み始めるとしたら、手をつけるところは どこがおすすめですかねぇ
- 145 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/21 08:28.net]
- >>143
過去ログ
- 146 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/21 09:23.net]
- >>143
current の SMPng
- 147 名前:名無しさん@お腹いっぱい。 [02/06/25 23:38.net]
- >>143
まぁ、過去ログにもいろいろあるけど、手足から見て行くのがいいと思うね。 デバイスドライバ、ファイルフォーマット毎のプロセス実行サブシステム(imgact_*)、 簡単なファイルシステム、低水準の初期化部あたりは割とコンパクトに まとまってて読みやすいんじゃないの? >>145 ほぅ。じゃぁ、具体的に何処のファイルがSMPngに関係してるのか言ってみ。 PERFORCEのリポジトリは見てるんだろうね。
- 148 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/26 00:06.net]
- >>146 の後半
ネタにマジレスカコワルイ
- 149 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/26 00:28.net]
- >>146
FreeBSD以外の*BSDってperforce使っているんですか? FreeBSDのperforce treeってanonymousでソースを取れるんでしょうか? できるんなら見てみたいと思っています。
- 150 名前:名無しさん@お腹いっぱい。 [02/06/26 01:08.net]
- >>148 他の*BSDでは使ってないです。
でもSMPngっていったらFreeBSDでしょ。 リポジトリのブラウズならここでどうぞ。 people.freebsd.org/~peter/p4db/ 手元に置きたければ people.freebsd.org/~peter/p4cookbook.txt に取り方が書いてある。
|

|