- 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より伝統あるはずなのに。
- 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 に取り方が書いてある。
- 151 名前:名無しさん@お腹いっぱい。 [02/07/03 03:05.net]
- FreeBSDのブートについて質問させてください。
sys/boot/common/load_elf.c を読んでるんですが、 /kernelのエントリアドレス(当方では0xc012b130)に0xff000000をマスクして 符号反転してオフセット(off)を0x40000000にしている意味がわからないです。 コメントの「i386 relocates after locore」っていうのも呪文ですし… で、結局/kernelのプログラムヘッダの仮想アドレス(当方では0xc0100000)と さっきのoffを加算して桁あふれさせて0x100000にして、 最終的にはこのアドレスに/kernelをロードしてるようなんですが、 なんかえらくまわりくどくないですか?私の読みが浅いだけでしょうか。
- 152 名前:@夜勤雀棟 ◆YaKINcTg mailto:sage [02/07/03 05:48.net]
- >>150
sys/boot/common/load_elf.c > off = - (off & 0xff000000u); /* i386 relocates after locore */ offの最上位の1バイトをクリアするだけだと。 e.g. 0xc012b130 -> 0x0012b130 >/* i386 relocates after locore */ boot2内で/kernelを16MB以下のリニアアドレス(0x00100000-)へ展開しておき、 locore.sにおいて適切なアドレス(0xc0100000-)へmapするのだと思われます。 (locore.s内でページングをenableにしている) #ざっと眺めただけなので保証はしませんが :-p
- 153 名前:名無しさん@お腹いっぱい。 mailto:age [02/07/03 21:52.net]
- 良サイト宣伝中〜〜。
www.interone.jp/~game-k/ 注)私はサイト関係者とは無関係ですよ。
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [02/07/04 03:20.net]
- >>152
BSD カーネルのハックに関する良サイトかと思って見に行っちゃったよ :-)
- 155 名前:名無しさん@お腹いっぱい。 mailto:sage [02/07/04 05:05.net]
- アドレスの最後の方のgameがgmakeに見えて、見に行っちゃったよ。。
- 156 名前:名無しさん@お腹いっぱい。 [02/07/06 20:57.net]
- >>151
その通り。なぜ、&= ~(0xff000000)じゃないのかよう分からんけど。 で、じゃあ何故ELFヘッダの開始番地が0x100XXXなんかじゃ無くて 0xc01000XXになってるかっていうと、paging開始後はカーネル仮想メモリ アドレスは全て0xc0000000以降になっていて、 カーネルで使用している メモリアドレスは全てそこにマップされるから。(リンカとELFフォーマット の機能を使えばそういう状況にも実は対応できたりするような気もするけど) 特にkernelとISAメモリ空間は(物理アドレス+0xc0000000)の位置にマップされます。 locore.sでページングを開始するまでに絶対アドレッシングが必要な 時は #define R(foo) ((foo)-KERNBASE) 定義されるマクロを使ってアクセスしてます。
- 157 名前:150 [02/07/06 21:47.net]
- >>151, >>155
お二人のレスを見ると自分がはずしまくってるのかニアミスなのか すげぇ悩みます。 load_elf.cに↓のようにコード追加して -- 228行目あたり if (kernel) { printf("before [%p]\n", (void *)off); ←これを追加 #ifdef __i386__ off = - (off & 0xff000000u); /* i386 relocates after locore */ printf("after [%p]\n", (void *)off); ←これを追加 -- # make # make install として祭起動すると before [0xc012b130] after [0x40000000] となるんで、あぁそうかと思ってたんですけど、お二人は 最上位の1バイトをクリアしてるとおっしゃてますし。 でも/kernelを0x100000へマップするのはあってるんですよね?
- 158 名前:@夜勤雀棟 ◆YaKINcTg mailto:sage [02/07/06 22:25.net]
- >>156
> off = - (off & 0xff000000u); /* i386 relocates after locore */ スマソ。コードを読み違えました。 off -= (off & 0xff000000u); だったら最上位バイトのクリアですね。
- 159 名前:150 mailto:sage [02/07/06 23:16.net]
- >>157
まぁ「
- 160 名前:保証はしない」っておっしゃってましたしね =)
さてすっきりしたところでつぎはbtx.sでものぞいてみますか… [] - [ここ壊れてます]
- 161 名前:名無しさん@お腹いっぱい。 [02/07/18 02:40.net]
- せっかくだから俺は、ed0からtcpパケットがユーザランドまで行くまでを追って見るぜ
edintr-> ed_rint(dev/ed/if_ed.c)-> ether_input ->ether_demux(net/if_ethersubr.c)->(queueへ) (queueからnetisrで)->ipintr->ip_input(netinet/ip_input.c)-> tcp_input->(順序を組み立てる為のqueueへ?) ぐらいまで読めましたが、そっからどうなってるのかわかりますか?
- 162 名前:名無しさん@お腹いっぱい。 mailto:sage [02/07/19 00:02.net]
- 上から来るぞ! 気をつけろ!
TCP は置いといてとりあえず UDP 追ってみては?
- 163 名前:名無しさん@お腹いっぱい。 [02/07/21 04:14.net]
- おい、>>160,見習いデーモン,生きてるか?
udpの場合ip_inputの後 udp_input@udp_usrreqで配送先のプロセスを探して、sowakeupで起こす そうすると、sbwait()で待ってた soreceive()(uipc_socket.c)->recvit()でcopyoutされ、 recvitからはrecvfromに戻ってシステムコール完了と言った感じですか。
- 164 名前:名無しさん@お腹いっぱい。 [02/07/29 19:56.net]
- ここなかなか良さそう。ただしSimplified Chinese。
opensource.zjonline.com.cn/
- 165 名前:150 mailto:FreeBSD 4.6R です。 [02/07/30 09:23.net]
- おはようございます。
PICの解説で参考になるページ見つけたんで貼っておきます。 www.asahi-net.or.jp/~WR7S-NKMR/BeOS/Documents/IRQ.html www.cqpub.co.jp/column/books/2001a/34331PC_Legacy/default.htm で、また質問させてください。 sys/boot/i386/btx/btx/btx.s を読んでるんですが、 220行目あたりの「Launch user task」からがサッパリわかりません。 TSSの働きとタスク切替えがよく理解できてないからだと思うんですが、 248行目のiret命令で何が起こるのかわかりません。 (コメントには「To user mode」って書いてあるんですが…) iretでタスクを切替える場合はフラグレジスタにNTビットがセットされて なければならない、とインテルのマニュアルにも「はじめて読む486」にも 書いてあるんですが、248行目に到達するまでにNTビットがセットされたような 様子もないんですが… 何かヒントだけでもお願いします。
- 166 名前:名無しさん@お腹いっぱい。 [02/07/30 10:45.net]
- 基本的にはbtxではタスク切替え使ってない筈。(そんな豪勢なことする
ほどのサイズも無いし)単純に、EFLAGSもPOPすることで、 特権を切替えてbtx_hdrにあるモニタルーチンのエントリーへ 飛んでるだけのことと思う。
- 167 名前:@夜勤雀棟 ◆YaKINcTg mailto:sage [02/07/30 15:06.net]
- >>163
この場合はTSSは関係ないですね。(V86用に使うだけ) 割り込みが起こったことにしてiretしているだけです。
- 168 名前:150=163 mailto:sage [02/07/31 19:46.net]
- レスどうもです。
はやとちりしてました。iretはタスク切替えだけで使うものではなかったんですね。 インテルのマニュアルの命令リファレンスで確認しました。 でも、pushしておいたEIP(btx_hdr+0xc)がiretで特権を切替えたあと 実行される番地みたいですけど、btx_hdr+0xcって btx_hdr: .byte 0xeb # Machine ID .byte 0xe # Header size .ascii "BTX" # Magic .byte 0x1 # Major version .byte 0x1 # Minor version .byte BTX_FLAGS # Flags .word PAG_CNT-MEM_ORG>>0xc # Paging control .word break-start # Text size .long 0x0 # Entry address ←ここですか? 特権を切替えて、また同じコードを辿ってくってこと???
- 169 名前:@夜勤雀棟 ◆YaKINcTg mailto:sage [02/07/31 20:21.net]
- >>166
>でも、pushしておいたEIP(btx_hdr+0xc)がiretで特権を切替えたあと >実行される番地みたいですけど >pushl btx_hdr+0xc# Set EIP これは間接参照でbtx_hdr+0xc番地の内容(long)をpushするという意味です。 # operandに'$'が付いていないことに留意。
- 170 名前:150 mailto:sage [02/08/03 14:17.net]
- >>これは間接参照でbtx_hdr+0xc番地の内容(long)をpushするという意味です。
にしても、特権切替えたあとはどのコードが走るのか全然わからないです。 EIPが0x0なんですよね?0x0番地のコードって…?
- 171 名前:名無しさん@お腹いっぱい。 mailto:sage [02/08/03 18:45.net]
- 実際のバイナリをhexdumpしないとダメっすよ。ローダがいじるに決まってるでしょ。
/boot/boot2より 00000200 eb 0e 42 54 58 01 01 80 f6 0f 80 07 00 10 00 00 |..BTX...........| <eb> btx_hdr: . byte 0xeb <0e> . byte 0xe <42 54 58 > . ascii "BTX" <01> .byte 0x1 <01> . byte 0x1 <80> .byte BTX_FLAGS <f6 0f> .word PAG_CNT-MEM_ORG>>0xc <80 07> .word break-start <00 10 00 00> .long 0x00001000 簡単にするならコメントを信じて次のbtxクライアント(boot2又は/boot/loader本体) へ進めってことです。ちなみに/boot/loaderは更にbtxldrが走ったりするっす。
- 172 名前:名無しさん@お腹いっぱい。 [02/08/03 19:30.net]
- >>実際のバイナリをhexdumpしないとダメっすよ。ローダがいじるに決まってるでしょ。
おぉ、盲点でした。 こういうのはMakefileを丁寧に追っていけばわかることですか? 今ちらっとsys/boot/i386/boot2/Makefileを見たら ORG2に代入された0x1000がbtxldコマンドのオプションとかに使われてて 「ほうほう」と思ってたんですけど。 ソースにとらわれすぎて本質を見失ってました。 でも>>169さんのおかげでまた少し前進できそうです。ありがとうございました。
- 173 名前:150=170 mailto:sage [02/08/03 19:31.net]
- sage忘れ欝だ死のう…
- 174 名前:名無しさん@お腹いっぱい。 [02/08/04 22:06.net]
- sageなくても良いんじゃない?
まぁ、強いていえば「特殊なローダを必要とする」「0x0なんて番地に飛ぼうとする」 という2点から勘を働かせた結果かな。
- 175 名前:見習デーモンへ [02/09/09 04:58.net]
- スレ キトク スグカエレ
〜ハハヨリ〜
- 176 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/11 00:13.net]
- >>173
知らなかったのか?見習いデーモンは 半年前に勇者に殺されたんだぞ。
- 177 名前:名無しさん@お腹いっぱい。 [02/09/15 00:10.net]
- もし!毒蛇に噛まれたら、
切り口を素早くナイフでえぐり、 急いで口で吸え! ほら、言ってみろ!!
- 178 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/15 00:37.net]
- 虫歯がある時にそれやったら死んでしまう罠。
- 179 名前:名無しさん@お腹いっぱい。 [02/09/15 01:44.net]
- ごめんなさい
クックロビンを殺したのは私です。。。。
- 180 名前:名無しさん@お腹いっぱい。 [02/09/15 01:44.net]
- boot0.sコードので分らない部分があるのですが、
61 movw $LOAD,%sp # stack 66 movw %sp,%si # Source 67 movw $start,%di # Destination 68 movw $0x100,%cx # Word count 69 rep # Relocate 70 movsw # code この部分は、MBRを再配置するコードだと考えているのですが、 アドレスLOAD(0x7c00)からの512バイトの領域を、現在実行して いるstartで表されるアドレスからの512バイトの領域にコピーする という意味なのでしょうか?
- 181 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/15 07:34.net]
- >>178
MBRが読み込み・実行される際のセレクタの値 引用してるコードの上の方で設定してるセレクタの値 セレクタとオフセットから得られる実効アドレス
- 182 名前:
について調べましょう。 # 個人的には、今さらIA32の16bitモードについて勉強しても # 得る物はあまり多くない気がする。 [] - [ここ壊れてます]
- 183 名前:見習いデーモン mailto:sage [02/09/21 18:19.net]
- むしょうにデバイスドライバを書いてみたくなって、
www.jp.freebsd.org/www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/x10069.html ↑やってみたらすげー簡単でびっくりしました。 秋月のLCDキットとかをシリアルかなんかでつなげて、 echo "Hello" > /dev/mylcd とかできるようになりたいんですけど、あとは↓ www.daemonnews.org/200010/blueprints.html とか読んどけばできるようになりますか? 実際のドライバってどんななんだろうと思って/sys/dev/fxp/if_fxp.c なんかのぞいてみて頭から煙だしたりしてます…
- 184 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/21 23:15.net]
- おまえの見てるのデバドラのつくり方じゃねぇじゃん。(藁
- 185 名前:見習いデーモン mailto:sage [02/09/21 23:34.net]
- うお、もしかして空回りですか…
でもKLDでカーネル領域に自分のコード置けるとおもうとワクワクするんですが
- 186 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/22 23:32.net]
- カーネルを再構築しても自分のコードは置けますが何か?
- 187 名前:名無しさん@お腹いっぱい。 [02/09/24 00:43.net]
- >>181
ハンドブックで解説されている部分は部分はデバイスドライバ (ツリーを形成する実デバイスを叩くもの)ではデフォルトで呼ばれる ものがあるので気にしなくていいです。 おまいさんの目的ではどう見てもfxpを見るのは間違いだと 思いますし、そもそもシリアルならsio使ってtermios 叩いたほうが....... で、ご希望にそえるものなら例えば、spic(4)あたり簡単そうかな?
- 188 名前:名無しさん@お腹いっぱい。 mailto:sage [02/09/29 01:58.net]
- spic は デバイスの仕様が不明なので、
読んでもあまりピンとこないのでは。
- 189 名前:鬼軍曹 [02/11/01 04:36.net]
- ============ お知らせ ==================
あー、只今よりこのスレは、見習デーモンの学習を見張るスレになりました。 ====================================
- 190 名前:名無しさん@お腹いっぱい。 [02/12/16 05:14.net]
- 保守
- 191 名前:名無しさん@お腹いっぱい。 [02/12/26 15:56.net]
- NETBSD入れたらまずカーネルハックするぞぉ!
- 192 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/26 16:13.net]
- おまえのいうハックってカーネルの再構築のことだろ?ぷ
- 193 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/26 23:09.net]
- 千里の道も一歩から
- 194 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/26 23:34.net]
- 千里の道を一歩だけ
- 195 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/27 01:01.net]
- 千里を歩き通すのは大変だよ……。
- 196 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/29 14:10.net]
- 千里ちゃんって誰?
- 197 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/29 15:51.net]
- homepage3.nifty.com/senri/
- 198 名前:193 mailto:sage [02/12/29 16:57.net]
- >>194
そんなの僕の千里ちゃんじゃないやい。
- 199 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/07 22:31.net]
- >>193
千里中央に行くには新御堂筋に一歩踏み出せばあとは 北上するだけで着くので解りやすいと言う諺だよ。
- 200 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/09 16:29.net]
- >>196
それはちとローカルではないかと。
- 201 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/10 08:36.net]
- なかおくんだろ?
- 202 名前:山崎渉 mailto:(^^)sage [03/01/15 13:10.net]
- (^^)
- 203 名前:山崎渉 mailto:(^^)sage [03/01/16 03:35.net]
- (^^)
- 204 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/18 12:17.net]
- >>194
大江千里も随分としけたもんだね。オフィシャルサイトが niftyとは。。。
- 205 名前:山崎渉 mailto:age [03/02/24 10:15.net]
- (^^)オレダッテ タマニハ マジデ ホシュ スルyo!!
- 206 名前:山崎渉 mailto:(^^) [03/04/17 12:29.net]
- (^^)
- 207 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 208 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 209 名前:名無しさん [03/06/04 18:51.net]
- カーネル内で、擬似的ではないランダムな値を使うにはどうすればいいですか??
- 210 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/04 19:01.net]
- ガイガーカウンタをつないでカウントして乱数を発生させる
- 211 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/05 00:53.net]
- ガイガーカウンタは計数するんじゃなくて時間を測るんだよね。
線源なしのバックグラウンドが相手だとパルス数が少なすぎて ちょっとトロい。
- 212 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/05 01:09.net]
- つーか、Intelチップセットの乱数ジェネレータとか使えばいいんでないの?
OpenBSDがサポートしてるのは知ってるけど、他はどう?
- 213 名前:名無しさん [03/06/05 01:52.net]
- カーネル内で擬似的ではないランダムな値を使うためにはどうしたらいいですか??
- 214 名前:名無しさん [03/06/05 01:53.net]
- すいません、ダブってしまいました。m(_ _)m
- 215 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/05 02:34.net]
- NetBSD の場合、キーボードやシリアルその他のデバイスから
エントロピーを集めている。 この結果から得られた乱数は rnd_extract_data(9) で取得できる。 例えば sys/netinet/tcp_subr.c では、TCP の初期シーケンス番号 を、この乱数源から得るようになってるので、ここを見てみれば 使い方は分かる筈だ。
- 216 名前:名無しさん [03/06/06 00:25.net]
- 当方FreeBSDで「TCPの初期シーケンス番号」からヒントを得て、
そこからip識別子(ip_id)の初期化の手順へ行き、そこからシステムクロックをとるtime.tv_secを 知ることができました。 ありがとうございました。
- 217 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/06 00:30.net]
- それちがうやろ....
- 218 名前:名無しさん [03/06/06 02:30.net]
- 確かに違いました。^^;
利用したい値の有効桁数が少なかったのでこれでも乱数として利用できるかと思ったんですが、 他の関数に利用する場合も考えてTCPの初期シーケンス番号の関数を利用したいと思います。 ご指摘ありがとうございました。
- 219 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/06 02:31.net]
- >>210
どういう目的に使うの?
- 220 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/06 02:38.net]
- >>212
「エントロピーを集める」という表現は気持ち悪いな。NetBSDの世界では普通に使うのか?
- 221 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/06 02:43.net]
- 別に NetBSD に限らず、乱数のセキュリティ方面への利用では、
普通に使います。試しに "collect entropy" でググってみるべし。
- 222 名前:名無しさん [03/06/06 03:14.net]
- マルチキャスト通信においてNAKにより信頼性を持たせようと思っているのですが、
そのとき全ての受信者がNAKを出すタイミングが重なるとトラフィックが一気に 増大するのでそのタイミングをずらすために乱数が必要となりました。 アプリケーションプログラムと違い、カーネルでの乱数の求め方がわかりませんでした。^^;
|

|