お前ら*BSDのカーネルをハックしますか?

1見習デーモン
垢版 |
NGNG
これからsys/kern/init_main.c読んでみます。

【参考】
・「The Design and Implementation of the 4.4BSD Operating System」
 の第2章
http://www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/index.html

・*BSDでのアセンブリ
http://www.int80h.org/bsdasm/

なんか検索してみてもあんまりハックサイトひっかからないね。
Linuxより伝統あるはずなのに。
215名無しさん
垢版 |
NGNG
確かに違いました。^^;
利用したい値の有効桁数が少なかったのでこれでも乱数として利用できるかと思ったんですが、
他の関数に利用する場合も考えてTCPの初期シーケンス番号の関数を利用したいと思います。
ご指摘ありがとうございました。
NGNG
>>210
どういう目的に使うの?
NGNG
>>212
「エントロピーを集める」という表現は気持ち悪いな。NetBSDの世界では普通に使うのか?
NGNG
別に NetBSD に限らず、乱数のセキュリティ方面への利用では、
普通に使います。試しに "collect entropy" でググってみるべし。
219名無しさん
垢版 |
NGNG
マルチキャスト通信においてNAKにより信頼性を持たせようと思っているのですが、
そのとき全ての受信者がNAKを出すタイミングが重なるとトラフィックが一気に
増大するのでそのタイミングをずらすために乱数が必要となりました。
アプリケーションプログラムと違い、カーネルでの乱数の求め方がわかりませんでした。^^;
NGNG
ただいまBSDのKernel SoruceをReadしてるので
Context Switchするわけにはいかぬ。
NGNG
擬似的でない乱数って…
222名無しさん@お腹いっぱい。
垢版 |
NGNG
自分でnumerical recipe使って書け
223 
垢版 |
NGNG
プ > numerical recipe
224*BSDハックさん
垢版 |
NGNG
UDPのudp_inputにおいて ユニキャストとマルチキャスト・ブロードキャストで
処理が分かれいるところで、ユニキャストの方は分かるのですが、
マルチキャスト・ブロードキャストの方でUDPPCBをfor文でスキャンして
いくのはなぜですか? 同じPCBは複数存在するのですか?
225あぼーん
垢版 |
NGNG
あぼーん
226あぼーん
垢版 |
NGNG
あぼーん
NGNG
>>224
ブロードキャストの方はaliasついてりゃ、それぞれ同じポートつかえる。
マルチキャストは良くわからない。
228*BSDハックさん
垢版 |
NGNG
>>227
229*BSDハックさん
垢版 |
NGNG
>>227
もしよろしければブロードキャストにおける同じポートを使える
クライアントサーバのプログラムをいただけないでしょうか?
230227
垢版 |
NGNG
>ブロードキャストの方はaliasついてりゃ
これ嘘。複数使えるけどブロードキャスト宛を受信できなかった。

↓ブロードキャストアドレス宛は受信できるけど、ユニキャストアドレス宛は受信できない。
foreach (リモートアドレス) {
udpソケット作る。
SO_REUSEADDRする。
ローカルアドレスとしてブロードキャストアドレスにbindする。
リモートアドレスにコネクトする。
}
231あぼーん
垢版 |
NGNG
あぼーん
232名無しさん@お腹いっぱい。
垢版 |
NGNG
FreeBSD4.7のカーネル内の関数についてお聞きしたいんですが、

timeout(ftn, arg, to_ticks)
  timeout_t *ftn;
  void *arg;
  register int to_ticks;


において ftnの引数の数を任意の数にしたいのですが
やり方がわかりません。どなたか教えてください。よろしくお願いします。
NGNG
マルチuzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!!!!!!!!!!!!!!!!!
234名無しさん@お腹いっぱい。
垢版 |
NGNG
>>232
できませんが、構造体を定義して、それを確保してポインタで渡すというのは
だめですか。こんな感じ

struct example_arg {
   int arg1;
   char *arg2;
};

void example_ftn(void *arg)
{
   struct example_arg *ea = arg;

   /*Some useful stuff*/
}
235あぼーん
垢版 |
NGNG
あぼーん
236あぼーん
垢版 |
NGNG
あぼーん
NGNG
ついに
キタ━━━━━━(   )(゚  )(∀゚ )(゚∀゚)( ゚∀)(  ゚)(   )━━━━━━ !!!!!

【4.4BSDの設計と実装】
アスキー  ISBN: 4-7561-4346-6
価格: \5,800  発売日: 2003/9/18
NGNG
>>237
おお、とうとう出るのか。
ソースが見たいな。
NGNG
自分で調べてみたけど、確かに出るみたいだね。
http://www.fukkan.com/sell/index.php3?mode=detail&i_no=14024728
NGNG
復刊??
241名無しさん@お腹いっぱい。
垢版 |
NGNG
【4.4BSDの設計と実装】
記念あげ
242名無しさん@お腹いっぱい。
垢版 |
NGNG
おまえら、洩れが書いたカーネルをハックしてどうするつもり???
243みのる様
垢版 |
NGNG
         みのるの超流行語では、
流行語大将になりそうな言葉を紹介していきたいと思います(^‥^)。

オヒャヒャ           僕、みのる様が使用している笑い方です。
(^‥^)          僕、みのる様が愛用している顔文字です。
トライブット        僕、みのる様のサイトがある所の偉い所の人。
みのる様ファン倶楽部    会員数がもう100億人超えた超えてます。
マヨネーズ         僕様の大好きなマヨネーズの一種です
スペシャルギニア      世界共通語で、誰でも分かります
応援ありがとう!!!    皆が僕様を応援してくれるから、僕様も返信します
           俺様の素晴らしいサイト↓
         http://minoru_god.tripod.co.jp/
        UNIX板のバカドモはこっちに来て勉強しな
                    BYE みのる様
   
NGNG
訳が糞だって聞いたけど、そのへんも直して出るのかね?
NGNG
それはむりだろう
英語読め
246244
垢版 |
NGNG
改訂するって書いてるから直るかと思ったんだけど。
http://www.fukkan.com/column/?msgdate=msg030815

で、だれかこれ読んだ人いない?
http://www.amazon.co.jp/exec/obidos/ASIN/1589950046/ref=sr_aps_eb_/249-5632084-1864337
NGNG
砂ちゃん監訳だから、翻訳しなおしたんじゃないか?
248あぼーん
垢版 |
NGNG
あぼーん
249あぼーん
垢版 |
NGNG
あぼーん
NGNG
>>222
禿同

話は変わるけど、携帯ゲーム機"プレイステーションポータブル(PSP)

 久夛良木氏は,“PSPはゲーム業界が待ち望んだ究極の携帯機”として説明。「ここまでやるかと言われるスペックを投入した」という。
 発表によれば「PSP」は,曲面描画エンジン機能を有し,3Dグラフィックでゲームが楽しめる。
7.1chによるサラウンド,E3での発表以来,クリエイターたちにリクエストが高かった無線LANも搭載(802.11)。
MPEG-4(ACV)による美しい動画も楽しめるという。これによりゲーム以外の映画などでのニーズも期待する。
 外部端子で将来,GPSやデジタルチューナーにも接続したいとする。
また,久夛良木氏は,繰り返し「コピープロテクトがしっかりしていること」と力説。会場に集まった開発者たちにアピールしていた。
 さらに,ボタン設定なども明らかにされ,PS同様「○△□×」ボタン,R1・L1,アナログスティックが採用される。

この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。

突然変なこと言い出してスマソ・・
GBAと比較してみてどうですかね?(シェアの事は抜きで)
251名無しさん@お腹いっぱい。
垢版 |
NGNG
カーネルソースをいじって printfでパラメータを表示しながら
状況を把握したいんですが、typescriptもパイプでファイルに
保存することもできないのですが、カーネルをイジっているひとは
どうやってプログラミングしてるんですか?

カーネルを扱うに当たって便利なやり方や、アプリケーションがあれば教えてください。
NGNG
出力先をシリアルポートやら、メモリやら。
253名無しさん@お腹いっぱい。
垢版 |
NGNG
最近だとsimokawaさん謹製dconsって奴があるね。
特定のメモリに書いておいてIEEE1394 OHCI
ホストコントローラが勝手にDMAしにくるってやつ。
シリアルコンソールはシリアルコンソールでも
IEEE1394シリアルだから速い。
254名無しさん@お腹いっぱい。
垢版 |
NGNG
別に機器を買う必要があるということですか。

kgdbはカーネルのコンパイル時にしか使えないのですか?

なんとかgdbなどのデバッグツールでカーネル関数の動きを追っていきたいのですが。。。

よろしくお願いします。
NGNG
>>254
( ´д)ヒソ(´д`)ヒソ(д` )
256あぼーん
垢版 |
NGNG
あぼーん
257あぼーん
垢版 |
NGNG
あぼーん
NGNG
知らなかったよ。kgdbを使ってカーネルのコンパイルができるのか.....
NGNG
>>254
通常のgdbのように扱えるよ
gdbのカーネルモードだからね

基本的に大きな違いはないはず。ただ、カーネルをデバッグしているから
端末が二つあった方がいいね

もし一台でデバッグできる方法があったら教えてくれ。
NGNG
誰も自分の死体を見ることはできないというお話ですた。
NGNG
死体は見れるよ。来世で。
できないのは、自分自身の解剖。
NGNG
いや、自分の癌の摘出をやった外科医はいたし、ある程度は可能だろう
NGNG
最近のはやりだとbochsやvmwareなどの仮想マシン上でデバッグする
という手もあるな。bochsにも一応デバッグ支援のための機能はある
ようだ。もっともエミュレーションに起因する問題が出る可能性は
あってどんな場合でも使えるわけじゃない。
動きを追うぐらいならそこそこ使えるかもね。

ま、詰めなきゃならん所は昔ながらのメモリ上に値を置く、かな。
264名無しさん@お腹いっぱい。
垢版 |
NGNG
*BSDで、一台でもある程度はできるよ。Linuxでも最近できるかな。
options DDBを入れてCtl-Alt-Breakを押すと
ddbのモードに入る。ここで、命令ごとのステップ実行
callの終了までの実行、シンボルで指定できるブレークポイント設定
変数参照、レジスタ参照、等々。ddb(8)は印刷しといたほうがいいな。
265netnice
垢版 |
NGNG
i heard that you can use /dev/kmem, instead of /var/crash/vmcore.*,
fore core-file argument of kgdb, though i've never tried.
just fyi.
266名無しさん@お腹いっぱい。
垢版 |
NGNG
カーネルモジュールはどうやってデバッグするんでしょうか?
特にインターフェース部分。
デバッグ用のシンボルはどうやっていれれば?
267名無しさん@お腹いっぱい。
垢版 |
NGNG
>>1
これは実際に重要なことである。
開いたソースはあなたのためになり私のためになり、可能性をもたらす。
多くの危惧の中の一つは、しばしば現実となるが、世界の協力はそれを直すだろう。
もしあなたやあなたの友人が開いたソースを悪意で使うなら、それは停止して欲しい。
NGNG
>>267

269名無しさん@お腹いっぱい。
垢版 |
NGNG
BSDのソース読んでみようと思うんだけど、NetBSDがいいかな?
NGNG
(´-`).。oO(でっかい釣り針がぶら下がっております…)
NGNG
inferno
NGNG
inferno
NGNG
くだ質スレからの流れでしょう。
NGNG
漏れじゃネーよ(w カーネルくらい黙って読むし

でもって、NetBSDをちらっと読んでるんだけど、なんか得体の知れない
マクロだらけ…。ちゃんとヘッダファイルから読まなきゃダメか。

あと、NetBSDのカーネルハック本(和訳)って全然出てないよね?
おおまかな構造を理解してからソース読まないとサッパリだよ。
この前出た4.4BSD赤本じゃあ古すぎるような気がするので読んで
ないけど…


NGNG
>>274
今までどんなの読んでたの?
得体の知れないマクロってのはbus_spaceとかの事かな。
NGNG
ヘッダファイルこそがソースの肝なのに。。。
NGNG
NetBSD のカーネルハック本(和訳)って、
BSD Magazine の Vol.13 のことじゃないのか?
NGNG
>>276
そうなんだよね。本当に。
NGNG
/usr/includeの下は丸暗記するぐらいの勢いで読みまくった。
これはいきなりカーネル読み始めるよりも、効率的だし、
実用的だったよ。
NGNG
へたれプログラマなんですが、なんでそんなにヘッダファイルが重要なのか
わからないんですが、理由を教えていただけませんか?
NGNG
>>280
これは計算機科学の教科書の練習問題だと思うぞ。
こんなものかな。採点キボンヌ(配点20点)

ヘッダファイルにはデータ構造、関数定義など、モジュール間のインターフェイスと
なるものが記述されており実装の詳細を見ずに全体を把握する事が可能である。
また、一つのプロジェクト内のモジュールのインターフェイスというだけでなく、
異なるシステムとの間の相互運用性を確保するためにも必要である。



NGNG

俺の採点だと20点満点。素直に。
敢えてアラ探しやればできるだろが、練習問題という設定なら十分な回答だろ。

2ch的でない(奇をてらわない保守的な)回答だけど、そういう地味さにも好感。
283280
垢版 |
NGNG
>>281
ありがとうございます。
なんか目から鱗でした。
NGNG
そうか、ヘッダファイルってそんなに重要なんだ…。言われて
みればたしかに。

漏れも>>279みたいに凄い勢いでヘッダ読んでみまつ。勉強に
なったサンクスコ。
NGNG
重要は重要だけど、本で言えば目次だけ読むようなもんだから
偏食にならないようにネ
NGNG
>>280
頭(head)だからです。
頭だけとか体だけとかは駄目なんです。
NGNG
sys/kernel.h --

#defineSYSINIT(uniquifier, subsystem, order, func, ident)\
C_SYSINIT(uniquifier, subsystem, order,\
(sysinit_cfunc_t)(sysinit_nfunc_t)func, (void *)(ident))

funcを2重にキャストする意味って何?
288
垢版 |
NGNG
興味ありあげ
289名無しさん@お腹いっぱい。
垢版 |
NGNG
BSDがSCOによって血祭りにあげられるまであと何日ですか?
NGNG
BSDによってSCOが血祭り、なんだろうな
NGNG
というか既に血まみれで死にそうなSCOが
あちこちに血しぶきを撒き散らして嫌がらせしてるんだろ。
292名無しさん@お腹いっぱい。
垢版 |
NGNG
>>290-291
おまいら何もわかってないな
技術泥棒なんだよ
ギ ジ ュ ツ ド ロ ボ ウ
わかるか?
NGNG
>>292 煽り乙。どうせなら犬板のSCOスレ逝った方が人多くて楽しいと思われ
NGNG
同感
NGNG
BSDのカーネル読むにはどのBSDのソースがとっつきやすいですか?
NGNG
あなたの使っているものが一番じゃない?
NGNG
ソースなんて綺麗とか汚いとかほざくまえに、
動いてるコードなんだから黙って読むんだよ!
今じゃろくなコード書けない人間までコードが
云々なんて言い出す始末だからな。もうブチキレですよ。
298名無しさん@お腹いっぱい。
垢版 |
NGNG
カーネルによって違うのかもしれませんが、
各種スレッドというのは、スタックセグメントだけを
スレッドごとに固有にもち、それ以外のセグメントは
プロセス内の全てのスレッドで共有するという感じなのでしょうか?
そうすると、ページディレクトリテーブルも共有で、
スタックセグメントだけを仮想メモリの機能として
別々の物理ページに割り当てるといった感じになっているのでしょうか?
それとも全てのスレッドに対してCR3を割り当てるのかな?

どうもプロセス内のスレッドとVMの関係がよく分りません。
NGNG
>>298
実装にもよるんだろうけど、スタックも含め、スレッドがいくつあろうと
アドレス空間は1プロセスで同じもの。スタックはスレッド毎に
切り替えて違うアドレスを指してあるだけ。
NGNG
>>298
コンテクストスイッチ発生させると、プロセスのコンテクストスイッチと
変わらんし...それじゃあ、スレッドの意味がない...
NGNG
>>297
逆だよ。ろくにコード組めないから、綺麗なコード読みたいんだよ。
まぁ清濁併せ呑む度量があれば一番なんだが、そんな人間は黙って
読んでるよ。

NGNG
おまいらカーネル**ckしてますね。
303名無しさん@お腹いっぱい。
垢版 |
NGNG
>>302
そんなタイトルの日記があったな…
304Win厨
垢版 |
NGNG
>>303
あ、それ書いてたの、おれっちです。
最近NetBSDも忙しくて触って無いからカーネルファックもご無沙汰です。
厨房でもカーネルぐらい気合で理解できること証明したかったけど、
自分にはちょっと厳しかったです。また再開したときはよろしくです。
NGNG
あげてみる
306名無しさん@お腹いっぱい。
垢版 |
NGNG
バッファをたくさんとれるようにカーネルイジってたら、

All mbuf clusters exhausted, please see tuning(7).

と出るんですが、クラスタ数を多く割り当てたり、
別の目的で利用されている、クラスタを借りたりすることはできないでしょうか?
NGNG
a.具体的に何をしていたのかを書いてみよう。
(たとえばkern.ipc.nmbclustersをほにゃららにしてみたとか
options NMBCLUSTERS = ほげ したら config におこられるとか)
b.もし、具体的な目的があるのであればそれも書いてみよう。
(たとえば 負荷が高いWebサーバーをなんとかしたいとか。)

あと環境もちゃんと書いてみよう。
NGNG
一度の関数呼び出しで何回もパケットを
送出しようとするときインタフェースカードで
データパケットが落とされることってありますか??
もし落とされたときは、ip_outputの返値は返ってきますか?
また、それは「0」以外の値ですか?

ループバック関数で戻ってきたパケットは欠如していません。
別のマシンでキャプチャーすると欠落しています。

原因・対策などありましたら、お願いします。
NGNG
>>308
当然あるだろ。ip_output は if_output 呼んでるだけだから、
あとはネットワークインターフェイス依存。
etherなら、netinet/ip_output.c、net/if_ethersubr.c、
と追いかけていって、NICのデバドラまで読んでけ。

まぁ単に送信バッファ溢れてるだけだろうがな。
NGNG
>>309
なるほど。。。参考になりました。
しかし、送信バッファがあふれても ip_outputの返値が0になるというのは問題なのでは??
ソケットバッファの場合はちゃんと制御できるのに。。。
NGNG
>>310
ぜんぜん問題じゃない。君の考え方のほうが問題。
ソケットは到達保証するが、IPは到達保証しない。
まだわからない?
NGNG
>>311
ソケットが送信保証をするためには、ip_outputの返値が0である必要があるし、
ip_outputの返値で0を返すためには、ether_outputの返値が0である必要がある。

ちなみに、ネットワークに出力されたあとは、ソケットも到達保証しないよ。
仮にできるのなら、何も苦労しない。。。
NGNG
PF_ROUTEソケットについて調べてるんですがどうもいまいち…
(いまいちなのはもちろん自分)
4.4BSDの本見てから、ソース見たけど????です

PF_ROUTEソケットを調べだしたのは。rtadvdで受けている
メッセージを見ていたところ、ioctl()などのリクエストでkernelから生成してるはずの
メッセージ数と合わない、こんなところからです。

http://orange.kame.net/dev/cvsweb.cgi/kame/kame/kame/rtadvd/rtadvd.c?rev=1.88
socket(PF_ROUTE, SOCK_RAW, 0))

やはりRAWだから一気に生成したメッセージはどこかで落されてしまうんですかね…。
落される場所がわからない…
できれば落さないように改造してみたいんですが…
314名無しさん@お腹いっぱい。
垢版 |
NGNG
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況