お前ら*BSDのカーネルをハックしますか? (378レス)
お前ら*BSDのカーネルをハックしますか? http://mevius.5ch.net/test/read.cgi/unix/1003311346/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
26: 名無しさん@Emacs [] 01/10/30 23:45 >>3 えっと、もうmain()って名前じゃなくてmi_startup()という 名前に代わってるよん>init_main.cの関数。 FreeBSDの場合だと、mi_startup()はSYSINITマクロで作られた配列を 順番に実行するように作られてます。割と追いにくいです。 /sys/sys/linker_set.h /sys/sys/kernel.h あたりに小細工があります。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/26
50: 名無しさん@お腹いっぱい。 [] 02/01/11 07:01 >>26 SYSINITの所で、つまずいたです。 出来れば簡単に説明して頂けるとうれしいのですが。。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/50
52: 26 [] 02/01/14 18:50 以下の実験は実行ファイル形式として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 をかけて結果を見よ。 考察欄 http://mevius.5ch.net/test/read.cgi/unix/1003311346/52
56: 52 [] 02/01/15 00:31 >>55 >>26参照。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/56
57: 26 [sage] 02/01/15 00:34 それから、__attribute__はgccの拡張だよ。info参照。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/57
63: 26 [] 02/01/17 00:04 >>58 どんな簡単な物でもいいから、とりあえずドライバ書いて見たら? 今まであるドライバからコピペしたり、/usr/share/examples/にある スクリプトを使ったテンプレートを元に書けばそんなに難しくないよ。 頭から追っていくってのは正直言うとかなり効率の悪い方法だと思う。 カーネルがprintf(9)で吐くメッセージをたよりにしたりしながら 調べるのが吉。そうすれば例えばSYSINITの実装はとりあえず理解しなくても 先に進むことが出来るし。 http://mevius.5ch.net/test/read.cgi/unix/1003311346/63
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s