2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :見習デーモン:01/10/17 18:35
これから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より伝統あるはずなのに。

2 :2:01/10/17 20:24
2

3 :名無しさん@お腹いっぱい。:01/10/17 20:33
> これからsys/kern/init_main.c読んでみます。

つーか、sys/arch/${MACHINE}/${MACHINE}/locore.s の start か、
せめて sys/arch/${MACHINE}/${MACHINE}/machdep.c の initなんとか() の
方を先に読んだほうがいいぞ。init_main.c の main() は、locore.s から
呼ばれてるわけだが、locore の初期化処理と initなんとか() の方が
main() より先に走って、機種依存の低レベルの初期化を行うので。

上のパス名は NetBSD の場合だけど、FreeBSD や OpenBSD でも、
だいたい似たような場所でしょ。

4 :見習デーモン:01/10/17 20:38
>>3
アセンブラはちょっとしんどいかな、と思って。(もちろん理解する努力はしますが)
とりあえずカーネルの動きの概要がしりたいんで、init_main.cからかな?と思って読んでます。

#GLOBALでタグ作るのに意外と時間かかった・・・

5 : :01/10/17 21:46
>>1
そんな根性があるんだったら、フリーのエロゲー作ってよ。
OpenGLバリバリ使って動くやつをお願い。

6 :見習デーモン:01/10/17 21:49
>>5
http://piza2.2ch.net/test/read.cgi/tech/996199538/l50

7 :見習デーモン:01/10/17 23:13
VM_*の定義追いかけてたらCPU寄りなところまできてしまった・・・
結局>>3さんが言う通り機種依存なところも目を通してみたり。

8 :名無しさん@お腹いっぱい。:01/10/17 23:57
デバドラ書きたい君です
手っ取り早く書けるようになるには何を読むべきですか?
sys 以下、書籍、URL 問わず。
ターゲットは NetBSD/i386

9 :名無しさん@お腹いっぱい。:01/10/18 00:22
> 手っ取り早く書けるようになるには何を読むべきですか?

似たような種類のデバイスドライバのソース。
で、ハードウェア仕様的に違う部分だけ書き換える。
できるだけ移植物じゃなくて、NetBSD で書き下ろされたデバイス、
それもバス依存部と、バス独立部がちゃんと分離されている奴を
参考にすると良い。

ただし、既にサポートされているデバイスの中に、仕様的に似たチップがある
かどうか (同じチップメーカからの新版とか、メーカは違うけど、互換品があ
るとか) を、まず最初に調べるべき。そもそもデバイスドライバを書かなくて
済むとか、既存のドライバに処理を付け加えるだけで済むことも多いので。

あと、悪魔本は全く読まくてもなんとかなる気もするけど、Bach 本 ("UNIX
カーネルの設計"、Maurice J.Bach、共立出版) くらいは常識として、ざっと
流し読みしておいた方がいいと思われ。もはや実装は全然違うので、細かい部
分は全く違うんだけど、それなりに役にたつぞ。

あとは、section 9 の man page と、一般的な基礎知識と、気合いがあれば
なんとかなるだろう。

10 :名無しさん@お腹いっぱい。:01/10/18 00:54
>>8
鶏と卵になるけど、とりあえず書いちゃえば、書けますよ。
仮想デバイスとか小一時間あればできちゃうし、思ったより
敷居は低いと思います。

11 :見習デーモン:01/10/18 01:08
>>9
man 9 盲点でした。見てみたら情報の宝庫だ・・・
(日本語訳されてるともっとうれしいんだけど)

man のあるsectionの一覧を得る方法ってあります?
とりあえず本家サイトに一覧あったんでそれでみたんですけど、
ローカルでも何かコマンドで見れそうな気が・・・

12 :sage:01/10/18 01:13
ところで、「お前ら○○しますか?」というフレーズが
微妙に流行ってるのか?

13 :名無しさん@お腹いっぱい。:01/10/18 01:44
>>12
すでに微妙に流行遅れ。

14 :login:Penguin:01/10/18 01:44
こっちにも飛び火してます
http://mentai.2ch.net/test/read.cgi/network/1003037538/

15 :名無しさん@お腹いっぱい。:01/10/18 01:46
>>11 /usr/manとかそのあたり探してみれば?

16 :見習デーモン:01/10/18 01:55
>>15
鬱だ・・・単純に覗けばいいんだった・・・

init_main.c:start_init()がなんとなくわかってきた。
prepare_usermode()の定義が見つからないのが鬱だけど、そろそろ寝よう

17 :あへあへ:01/10/23 22:25
あへ

18 :見習デーモン:01/10/23 23:36
#先日の情報処理試験のためハック休んでました。今日から再開。

/sbin に myinit を作って(へろーわーるどの後whileで停止するだけ)、
start_init() の init 探すパスを myinit 指すように書き換えてみたけど、
kern_exit.c の exit1() で止まるねぇ。
どういう経路でここまで来たのかまだちょっとわからん。

global + Namazu 駆使して頑張ります。おー

19 :見習デーモン:01/10/25 03:59
kern_exec.c: execve() の exit1() で止まることがわかった。
vmspace_destroyedフラグがたっちゃってるのね。
image_params にセットされる値追いかけなくちゃ・・・

20 : :01/10/25 20:20
おやおや、こんなスレが。僕もちょうど読もうとしてた(のに2ヶ月間ほ
ったらかしてた)から参加しよう。

arch/include/pmap.h 以外で、全arch共通の pmap インタフェースを記述
した文書なりファイルってありますか?

21 :名無しさん@お腹いっぱい。:01/10/26 18:02
あげ

22 :名無しさん@お腹いっぱい。:01/10/26 22:27
man page に pmap(9) がある。(NetBSD-current の場合)

23 :名無しさん@お腹いっぱい。:01/10/30 17:50
BSDマガジンの第4号はカーネル初心者必携です。

24 :nana4:01/10/30 18:31
ソフトウェアRAIDなのですが

/dev/hda5 7GB (/home)
/dev/hdb1 7GB (linuxraid)
としたばあいで

RAID0を組みたいのですが

詳しいページご存知無いでしょうか?
赤帽7.1を使っているのですが…

/etc/raidtabが変なようで
起動時にこけます
raidtabを一旦削除した後の再起動でまともに起動しますが
RAID0は手動でしか動きません

25 : :01/10/30 18:34
>>22
おお、ありがとう。でもこれってuvmのやつだよね。
http://cvsweb.netbsd.org/bsdweb.cgi/sharesrc/share/man/man9/pmap.9?rev=1.9&content-type=text/x-cvsweb-markup
NetBSDを読む機会があったら参考にするよ。

>>24
板&スレ違い。

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
あたりに小細工があります。

27 :名無しさん@Emacs:01/10/31 01:14
>>19

あのー、ルートファイルシステムは切ってあります?
切ってあればld-elf.so並びに共有ライブラリにアクセス
できてないんじゃないの?

28 :名無しさん@お腹いっぱい。:01/11/01 15:22
ttp://unix.za.net/~kobz/freebsd.jpg
デーモン萌え

29 :名無しさん@お腹いっぱい。:01/11/01 20:42
そういやビルくんを f*** する画像もどっかにあったな...
しかしスレ違いでは。

GNUのウシ
http://pc.2ch.net/test/read.cgi/unix/1002725230/
が適切か?(w

30 :名無しさん@お腹いっぱい。:01/11/03 01:52
で〜もん君のイラストって、キモくないですか?
BSD関連のよさげな本には(よさげでない本にもですが)必ずあれが
あって鬱になるんですけど。

31 :名無しさん@お腹いっぱい。:01/11/13 12:40
>>30
オレもそう思う。

32 :名無しさん@お腹いっぱい。:01/11/13 15:39
8頭身のデーモンはキモい!

33 :名無しさん@お腹いっぱい。:01/11/13 17:03
確かになー
Linuxのペンギンのがかわいいよなぁ

34 :名無しさん@お腹いっぱい。:01/11/13 17:17
僕は linux user だがデーモン君の方が好きだな.

35 :login:Penguin:01/11/14 00:53
netbsdのサイトのメイン画面は好きだよ

36 :名無しさん@お腹いっぱい。:01/11/14 02:08
>>35
あれは誰かがバタくさいといってて笑った.

37 :名無しさん@お腹いっぱい。:01/11/15 03:03
>>36
あれはアメリカ軍の硫黄島占領をパクったもので、だいぶ前に
「他にいい絵があったら差し替えてもいいよー」
という話になってますが、いまだに代わりになる「いい絵」がないようです。

38 :名無しさん@お腹いっぱい。:01/11/17 11:18
>>37
これか。
ttp://shinkiro.com/paro/191/
ttp://www.fsinet.or.jp/~news101/usa11.htm
ttp://www.ne.jp/asahi/hp/sumei/anno/art/m_iwojima.htm

39 :名無しさん@お腹いっぱい。:01/11/18 07:07
>>37
なんかのパロディっぽいとは思ってたけど、勉強になりました。
アメリカ人ならみんな知ってる有名な銅像なのだろうか。

40 :名無しさん@お腹いっぱい。:01/11/18 07:11
>>39
銅像より元ネタになった報道写真のほうが
著名なんではないかと。

41 :デフォルトの名無しさん:01/11/18 07:13
そもそも元ネタがヤラセなんだよねw?

42 :名無しさん@お腹いっぱい。:01/11/18 07:17
ヤラセっつーより仕込みのような。
報道写真なんてそんなもの〜♪

43 :名無しさん@お腹いっぱい。:01/11/18 10:47
そんな絵を使ってるのに日本人 committer の多い NetBSD 萌え。

44 :名無しさん@お腹いっぱい。:01/11/18 14:52
そういう絵だったのか...

45 :名無しさん@お腹いっぱい。:01/11/18 20:38
http://www.mainichi.co.jp/life/family/syuppan/chronicle/1945_3.html

46 :名無しさん@お腹いっぱい。:01/12/06 11:08
>>43-44
変えようとかいう話も以前出てた気もするけどどーなったんだろ(w

47 :名無しさん@お腹いっぱい。:01/12/31 18:04
おせーてくださいませ。
caddr_t ってどーいう意味なのですか。
ヘッダファイル見たら core address ってコメントしてあったけど、
よくわかりませんです。

ってこれはカーネルの話題じゃないのかな?

48 :名無しさん@お腹いっぱい。:01/12/31 18:20
>>33
ペンギンかわいいか?目にまったく生気がなくてうつむいてるし、
ぐったりしてるように見えるんだけど。カモメの方が好きだった。

49 :名無しさん@お腹いっぱい。:01/12/31 22:07
正直、linuxペンギンは気持ち悪い。

50 :名無しさん@お腹いっぱい。:02/01/11 07:01
>>26
SYSINITの所で、つまずいたです。
出来れば簡単に説明して頂けるとうれしいのですが。。

51 :名無しさん@お腹いっぱい。:02/01/13 20:52
ager

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
をかけて結果を見よ。

考察欄

53 :名無しさん@お腹いっぱい。:02/01/14 18:56
$ objdump --all-headers /boot/kernel/kernel
/usr/libexec/elf/objdump: /boot/kernel/kernel: No such file or directory
$ uname -sr
FreeBSD 4.4-RELEASE

54 :52:02/01/14 18:59
みゅ。悪い。4系だと/kernelだね。

55 :名無しさん@お腹いっぱい。:02/01/14 22:59
Linux(ELF)でも、(おそらく)同じ結果になった。
__attribute__や__section__の定義を探して
/usr/includeなんかをfind+grepしたけど見つからない。どこかなー

56 :52:02/01/15 00:31
>>55

>>26参照。

57 :26:02/01/15 00:34
それから、__attribute__はgccの拡張だよ。info参照。

58 :歴史に名を残すかもしれない男:02/01/15 01:59
僕は、超研究員大学生でありウィザドですが、

既存のOSはしょーもないので新しく作ります。
そこで質問です。
FreeBSDってカーネルとか弄ったりして、
ソフトとか入れて整形したものを
Linuxのディストリビュージオンみたいに配ってもいいですか?
または、FreeBSDなどを参考にして、
一から作ったOSウォ、VokuBSDみたいに名乗ってもいいですか。

59 :50:02/01/15 02:04
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吐きまくったです。

60 :納期に間に合わないかもしれない男:02/01/15 02:37
>58
既存のソゥースについたBSD スタァイルのコピーライトオンを改変しなけれヴぁ
問題にないはずです。
頑張ってくださイね。

61 :見習いデーモン:02/01/15 02:45
おひさしぶりです。
己の能力不足ですっかりカーネルの深海に溺れて土左衛門になって
スレに出入りすることもなかったんですが、
まだ地味に続いてたんですね。

26さんが情報提供してくださったりして、スレの雰囲気は良い方向
に向かってますね。
全然ついていけないんですけど、今MINIXいじって基本を勉強してるんで
いつか追いつければなぁと思ってます。

っつーかみなさんどうやってそんなにスキルつけたんですか。

62 :名無しさん@お腹いっぱい。:02/01/15 09:06
>>61
oskitで遊ぶ

63 :26:02/01/17 00:04
>>58

どんな簡単な物でもいいから、とりあえずドライバ書いて見たら?
今まであるドライバからコピペしたり、/usr/share/examples/にある
スクリプトを使ったテンプレートを元に書けばそんなに難しくないよ。
頭から追っていくってのは正直言うとかなり効率の悪い方法だと思う。
カーネルがprintf(9)で吐くメッセージをたよりにしたりしながら
調べるのが吉。そうすれば例えばSYSINITの実装はとりあえず理解しなくても
先に進むことが出来るし。

64 :名無しさん@お腹いっぱい。:02/01/17 00:15
なんか面白そうだな。
*BSD 入れたくなってきた。

65 :名無しさん@お腹いっぱい。 :02/01/22 08:54
Solarisのカーネルハックもここでいいの?

66 :名無しさん@お腹いっぱい。:02/01/22 14:24
Solarisの kernel source見ると、変な copyrightに汚染されませんか?
# 会社の決算期にあたって、bladeが来ない...



67 :age:02/01/30 23:31
age

68 :名無しさん@お腹いっぱい。:02/01/31 00:12
>>63
日本人がBSDにドライバ書くのは見飽きたにょ
VFSとかに挑んでみてくれ



69 :名無しさん@お腹いっぱい。:02/01/31 00:33
Uniform Driver Interfaceどうよ?

70 :名無しさん@お腹いっぱい。:02/01/31 13:57
えと、えと。そうしてほしいの?おにいちゃん。ってのはともかく。
要はいじりたいコンポネントからせめて行くのが得策なわけで。
頭から見ても良い事はあんまり無いと言うのが本質ですな。
他機種移植だったらそれが一番大事だけど。
(もっとも、例にだしたのがドライバなのは私がその見飽きた事を
しているからでして。)次はportalfs元にいじるかな。小さくて簡単そうだし。
kernfsあたりも簡単そうだったけど。FreeBSDからは消えたし。

UDIですかぁ。うーん。努力は認めるけど....


71 :68:02/02/02 00:17
>>70
個々のファイルシステムじゃなくてVFS。
VMいじれとまでは言わないっす。ドライバ書きは多いけど、そっから
昇格するやつがいないと思ったみょ。
わしも、しょうもないドライバを昔書いたけど、それいらいカーネルは
いじってないでし。(もはや一介の犬厨です)

72 :名無しさん:02/02/09 10:55
ソラリスのカーネルスレッドがマッチするよう
Sparcは設計されているのですか?

73 :名無しさん@お腹いっぱい。 :02/02/23 09:22
あげ

74 :名無しさん@お腹いっぱい。:02/02/23 16:55
ドライバ書きより VFS いじる方が格が上だとでも?
ただのレイヤ違いじゃん。


75 :名無しさん@お腹いっぱい。:02/02/26 00:00
>>74
本当にそう思う?
みなさまもそう思う?


76 :名無しさん@お腹いっぱい。:02/02/26 14:20
禿同 >>74

77 :74:02/02/28 15:46
>>75
心からそう思っております。


78 :名無しさん@お腹いっぱい。 :02/03/08 23:27
age

79 :仕様書無しさん:02/03/09 17:23
これも

80 :名無しさん@お腹いっぱい。:02/03/11 00:24
つづきプリーズ揚げ

81 :名無しさん:02/03/11 04:30

BSDに誰か じゃーなりんぐできるFS実装してくれたまへ。
あと、圧縮できるFSもキボンヌ


82 :名無しさん@お腹いっぱい。:02/03/11 04:50
http://jfs4bsd.sourceforge.net/

83 :名無しさん@お腹いっぱい。:02/03/11 06:19
>>82
ライセンスどうするんだろ? JFSもGPLだったよね?

84 :名無しさん@お腹いっぱい。:02/03/11 07:31
>>83
コードの再利用をせずにスクラッチで書けば良いんではないかい?


85 :83:02/03/11 10:41
うーんやっぱそうなるよねぇ。先が長そうだ...
とりあえず応援age

86 :名無しさん@お腹いっぱい。:02/03/11 21:46
JFS ってわざわざスクラッチから作るほどイイの?


87 :名無しさん@お腹いっぱい。:02/03/12 00:04
とりあえずジャーナリングするファイルシステムがひとつは欲しい

88 :名無しさん@お腹いっぱい。:02/03/12 16:19
JFS for Linux を移植するよりスクラッチから書いた方が早い


89 :名無しさん@お腹いっぱい。:02/03/12 18:17
>>88
その情熱をLFSに注いでクレ

90 :名無しさん@お腹いっぱい。:02/03/13 00:28
LFSとかsoftupdateみたいなディスクへのリクエストの順序で整合性を保つ方式は
そろそろダメというのが世間のコンセンサスな気がする


91 :名無しさん@お腹いっぱい。:02/03/13 00:49
ジャーナリングって
ディスクへのリクエストの順番と
実際書き込まれる順番が
デタラメになっても問題ないの?


92 :名無しさん@お腹いっぱい。:02/03/13 08:05
>>91
そんなことはないが、ディスクキャッシュのフラッシュなどの
同期命令の発行がかなり少なくてすむ
少なくともメタデータ一個書くごとにフラッシュする必要は無い


93 :名無しさん@お腹いっぱい。:02/03/13 08:39
書き込み順序保証ってSCSIやATAのtagged queuingじゃダメなの?

94 :名無しさん@お腹いっぱい。:02/03/14 00:16
>>93
その手の機能をすべてのメタデータの書き込みに対して使うと遅いよ

95 :名無しさん@お腹いっぱい。:02/03/14 01:15
>>90
LFS はセグメント毎にフラッシュすれば十分なんでないの?
ダメ?


96 :名無しさん@お腹いっぱい。:02/03/14 09:44
>>95
そうですな。すまんかった


97 :名無しさん@お腹いっぱい。:02/04/07 06:03
age てみよう。


98 :名無しさん@お腹いっぱい。:02/04/09 19:11
勉強のため、FreeBSD 4.5-RELEASE 上で俺ファイルシステムを
作りたいと思っています。とりあえず、procfs のように、カーネルの
覗き穴的な fs がいいかなと。

が、サパーリわかりません。というわけで、fs のスケルトンが欲しい
のですが、よいスケルトンはどれでしょうか。

ファイルサイズ的に miscfs/deadfs/ かなぁと思うのですが、deadfs は
どういう目的の fs なのかがわかりません。ぜひアドバイスをお願いします。


99 :98:02/04/09 19:26
deadfs は mount 方法もわからないし (そもそも mount できるのか
どうかもわからん) kernfs の方がいいかな…。


100 :名無しさん@お腹いっぱい。:02/04/09 19:32
procfs を換骨奪胎すればいいのでは?


101 :名無しさん@お腹いっぱい。:02/04/09 19:57
やっぱnullfsが基本では。

procfsはpseudofsレイヤができたから応用ききづらいかも。

102 :100:02/04/09 20:21
nullfs は読むのに layerfs と行ったり来たりしなきゃ
いけないので面倒かもと思ったので。(NetBSD)

よく見たら >98 はFreeBSDか。

てゆーか msdosfs あたりでも見たほうがむしろ分りやすいかもとか
思ったり。


103 :98:02/04/09 20:37
なんだこれ、ちょーかんたんじゃん! というわけでメモメモ。
 /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!


104 :98:02/04/09 20:54
UNIX 使い始めて はや7年。やっとカーネルの世界にちょっとだけ足を踏み入れる
ことができたかな…。漏れみたいなヘタレには一生無理かとおもてたよ。感激。

というわけで、とりあえずの目標は
 rootvfs/da0s1a -> vnode/1
 rootvfs/ad0c -> vnode/2
 vnode/1/v_flag
 vnode/1/v_count
みたいな (まだわかってないので構成は適当)、各種構造体をマッピングした
ファイルシステムを作ろうと思います。

> やっぱnullfsが基本では。

nullfs の本来の使い方がいまいちわからないので、
一番サイズの小さい kernfs で行くことにしましたっす。


105 :名無しさん:02/04/09 21:59
カーネルのコンパイルについて質問です。
FreeBSD4.5でカーネルをいじってmake && make installを
しているんですが不要な部分を除いてコンパイルの時間を
短くできないでしょうか?そんな都合のいい話は
ないかもしれませんがよろしくお願いします。

106 :名無しさん@お腹いっぱい。:02/04/09 22:09
【チンコのレス】

〓〓〓〓〓
 |〓|
 |〓|
 |〓|
 (⌒⌒)
  \/
  〓
 【チンコお守りレス】このお守りを見たあなたは超超超幸せ者!
2週間以内に必ず彼氏・彼女が出来るよ!
すでにいる人は超〜ラブラブ みんなが幸せになりますように…
そのかわりこのコピペを1時間以内に、5つ別のスレに貼り付けてね・・
でないと、あなたはインポや性病になります。

107 :名無しさん@お腹いっぱい。:02/04/09 22:47
>>105
パソコンかえればはやくなるんじゃないかな。
PentiumIII1G以上だったら1分ぐらいで終わるし。



108 :名無しさん@お腹いっぱい。:02/04/09 22:51
>>105
本来スレ違いなんだけど…

http://www.jp.freebsd.org/www.FreeBSD.org/ja/handbook/kernelconfig.html

さらに何か疑問があればFreeBSD質問スレにGo

109 :名無しさん@お腹いっぱい。:02/04/20 02:22
NULLFSは正直お勧めできない。
あれは、スタッカブルファイルシステムのテンプレ。
そうそう。Linuxネタだけど、これどうよ。(カーネル空間でORBit動かす)
http://korbit.sourceforge.net/
これ一瞬移植しようかと思ったけど、geom入ったせいで
glibと名前空間がぶつかりそう。

110 :名無しさん@お腹いっぱい。:02/04/21 00:27
うーん。
NetBSDからスタッカブルファイルシステム系全部持ってきたほうが
面白いかなぁ。

111 :名無しさん@お腹いっぱい。:02/04/21 16:04
>>109
ORBit カーネルで動かすとなんかいいことあるの?

> you can write Linux device drivers in Perl
とか言われてもなあ(w


112 :学生:02/05/08 22:11
カーネル書けるとスゴいって書き込みよく見かけますが
学生で書けたらすごいですか?
ウチの教授は書けますかね?

113 :名無しさん@お腹いっぱい。:02/05/08 22:27
>>112
そんな書き込みどこで見かけた?

2ちゃんねるぢゃあないよな?

114 :名無しさん@お腹いっぱい。:02/05/08 22:39
>>113
ここと思われ:

Free Unix での経験は職歴に入らないか? (428)
http://pc.2ch.net/test/read.cgi/unix/995637081/12

115 :学生:02/05/08 23:02
ビンゴです。
あと、以前他のスレでも見ました。

で、どうなんですか。
カーネルは上級のプロじゃないと書けないんですか?
お前ら真面目にレス下さい。

116 :名無しさん@お腹いっぱい。:02/05/08 23:10
>>115
べつにプロである必要はこれっぽっちもないわけだが

117 :学生:02/05/08 23:19
>>116
どのくらい難しいのでしょうか
3年間くらい勉強すれば学生でもかけますか

118 :名無しさん@お腹いっぱい。:02/05/08 23:21
>>117
やってみりゃ自分でわかるだろ?
つべこべ言ってないでさっさとカーネルをハク汁

119 :名無しさん@お腹いっぱい。:02/05/08 23:24
>>117
自分の頭の中のフローチャートを実際にプログラムに
起こせる人間であれば、多分1年くらいで出来ると思う。

漏れは3年くらいかかったけど(鬱

120 :名無しさん@お腹いっぱい。:02/05/08 23:27
>>117
学生かどーかは関係ないし。
1ヶ月くらいやってみて無理そうなら当分無理。


121 :117:02/05/08 23:37
レスありがとうございます。
ここで言う「書ける」というのは、白紙からの状態から自分で書けるという意味ですよね?
既存のプログラムを改造するとか、書籍を見て書くとか、そういう意味ではないですよね?

122 :名無しさん@お腹いっぱい。:02/05/08 23:38
>>115
むしろカーネルをスクラッチから書くなんてこと
学生にしかできないから、今のうちに頑張れ。
「上級のプロ」にそんな暇なんてありません。

123 :名無しさん@お腹いっぱい。:02/05/08 23:41
>>122
UNIX使いになるためには、やっといて損はないですか?

124 :名無しさん@お腹いっぱい。:02/05/08 23:44
>>123
人によって"損"の感じ方が異なります
私の損とあなたの損は違います


125 :名無しさん@お腹いっぱい。:02/05/08 23:46
>>124
うーん
将来ネットワーク関係のソフトウェアを開発したいのですけども。
そーゆー人にとっては有益でしょうか?


126 :T大理系:02/05/08 23:49
みんな理系?
凄いです
尊敬します

127 :名無しさん@お腹いっぱい。:02/05/08 23:59
>>125
そういう具体的な目標があるのなら、カーネルに拘らずに最初から
ネット周りのプログラムをハクした方がいいと思われ。

カーネル書ける奴はスゴイが、カーネル書ける奴だけがスゴイわけじゃない。

128 :名無しさん@お腹いっぱい。 :02/05/09 00:08
俺的にはドライバをバリバリ書き捲くってるような人が
プログラマとして尊敬に値すると思ってる。
カーネルはどっちかって言うと設計するものって感じだしねぇ。

129 :名無しさん@お腹いっぱい。:02/05/09 00:10
>>128
実務家っぽい御意見…

130 :名無しさん@お腹いっぱい。:02/05/09 00:11
人に訊いてからじゃないと始められない奴は結局何もできない。
hackなんてのは気づいたらやっているか、やらないと夜が明けないかのどちらかだ。


131 :名無しさん@お腹いっぱい。:02/05/09 01:13
>>125
ネットゲーのサーバとかのように、非同期に発生する大量の要求を
うまく捌かなければならないプログラムを書くのは、
カーネルを書くのと似たようなセンスが必要な気がする。
# RDBMSとかもそうだな。

こういうシステムをうまく設計できる奴は
非常に使えるね。

132 :名無しさん@お腹いっぱい。:02/05/09 12:11
>>130 がいいこと言った。

133 :学生:02/05/10 19:33
みなさんどうもありがとう
ところでみなさん理系ですか?
もしくはコンピュータで飯を食っている人達ですか?

134 :名無しさん@お腹いっぱい。:02/05/10 19:44
>>133
理系かそうでないかなんてどうでもいいことだ。
とりあえずやってみろ

>>130
どっかで聞いた気がするが、イイね


135 :名無しさん@お腹いっぱい。:02/05/10 20:22
>>133
俺も学生。経営情報学科というとこにいる。
理系だか文系だかわからん。

136 :名無しさん@お腹いっぱい。:02/05/11 05:29
あーあ
カーネルいじって遊んでたら
もー朝だよ...
寝よーっと。


137 :名無しさん@お腹いっぱい。:02/05/11 14:10
カーネル・ハッカースおじさんのAAキボンヌ

138 :名無しさん@お腹いっぱい。:02/05/21 11:26
hack より fuck だと最近痛感 おっかけさぼりすぎで make world 不能状態

139 :26=52=.....:02/05/25 03:44
某誌のネタにしますた。

140 :名無しさん@お腹いっぱい。:02/06/03 01:15
保守age

141 :名無しさん@お腹いっぱい。:02/06/03 01:59
見習いデーモンは死んだのか?

142 :名無しさん@お腹いっぱい。:02/06/09 05:21


たか、いらっしゃい
        ま
        せ
        ん
        か
        ?

143 :名無しさん@お腹いっぱい。:02/06/21 07:49
誰かハックしてる人いますかー。


BSDのkernel読み始めるとしたら、手をつけるところは
どこがおすすめですかねぇ

144 :名無しさん@お腹いっぱい。:02/06/21 08:28
>>143
過去ログ

145 :名無しさん@お腹いっぱい。:02/06/21 09:23
>>143
current の SMPng

146 :名無しさん@お腹いっぱい。:02/06/25 23:38
>>143
まぁ、過去ログにもいろいろあるけど、手足から見て行くのがいいと思うね。
デバイスドライバ、ファイルフォーマット毎のプロセス実行サブシステム(imgact_*)、
簡単なファイルシステム、低水準の初期化部あたりは割とコンパクトに
まとまってて読みやすいんじゃないの?

>>145

ほぅ。じゃぁ、具体的に何処のファイルがSMPngに関係してるのか言ってみ。
PERFORCEのリポジトリは見てるんだろうね。

147 :名無しさん@お腹いっぱい。:02/06/26 00:06
>>146 の後半
ネタにマジレスカコワルイ


148 :名無しさん@お腹いっぱい。:02/06/26 00:28
>>146
FreeBSD以外の*BSDってperforce使っているんですか?

FreeBSDのperforce treeってanonymousでソースを取れるんでしょうか?
できるんなら見てみたいと思っています。


149 :名無しさん@お腹いっぱい。:02/06/26 01:08
>>148 他の*BSDでは使ってないです。
でもSMPngっていったらFreeBSDでしょ。
リポジトリのブラウズならここでどうぞ。
http://people.freebsd.org/~peter/p4db/
手元に置きたければ
http://people.freebsd.org/~peter/p4cookbook.txt
に取り方が書いてある。

150 :名無しさん@お腹いっぱい。:02/07/03 03:05
FreeBSDのブートについて質問させてください。

sys/boot/common/load_elf.c を読んでるんですが、
/kernelのエントリアドレス(当方では0xc012b130)に0xff000000をマスクして
符号反転してオフセット(off)を0x40000000にしている意味がわからないです。
コメントの「i386 relocates after locore」っていうのも呪文ですし…

で、結局/kernelのプログラムヘッダの仮想アドレス(当方では0xc0100000)と
さっきのoffを加算して桁あふれさせて0x100000にして、
最終的にはこのアドレスに/kernelをロードしてるようなんですが、
なんかえらくまわりくどくないですか?私の読みが浅いだけでしょうか。

151 :@夜勤雀棟 ◆YaKINcTg :02/07/03 05:48
>>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

152 :名無しさん@お腹いっぱい。:02/07/03 21:52
良サイト宣伝中〜〜。

http://www.interone.jp/~game-k/

注)私はサイト関係者とは無関係ですよ。

153 :名無しさん@お腹いっぱい。:02/07/04 03:20
>>152
BSD カーネルのハックに関する良サイトかと思って見に行っちゃったよ :-)


154 :名無しさん@お腹いっぱい。:02/07/04 05:05
アドレスの最後の方のgameがgmakeに見えて、見に行っちゃったよ。。

155 :名無しさん@お腹いっぱい。:02/07/06 20:57
>>151
その通り。なぜ、&= ~(0xff000000)じゃないのかよう分からんけど。
で、じゃあ何故ELFヘッダの開始番地が0x100XXXなんかじゃ無くて
0xc01000XXになってるかっていうと、paging開始後はカーネル仮想メモリ
アドレスは全て0xc0000000以降になっていて、 カーネルで使用している
メモリアドレスは全てそこにマップされるから。(リンカとELFフォーマット
の機能を使えばそういう状況にも実は対応できたりするような気もするけど)
特にkernelとISAメモリ空間は(物理アドレス+0xc0000000)の位置にマップされます。
locore.sでページングを開始するまでに絶対アドレッシングが必要な
時は
#define R(foo) ((foo)-KERNBASE)
定義されるマクロを使ってアクセスしてます。


156 :150:02/07/06 21:47
>>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へマップするのはあってるんですよね?

157 :@夜勤雀棟 ◆YaKINcTg :02/07/06 22:25
>>156
> off = - (off & 0xff000000u); /* i386 relocates after locore */

スマソ。コードを読み違えました。
off -= (off & 0xff000000u);
だったら最上位バイトのクリアですね。

158 :150:02/07/06 23:16
>>157
まぁ「保証はしない」っておっしゃってましたしね =)

さてすっきりしたところでつぎはbtx.sでものぞいてみますか…

159 :名無しさん@お腹いっぱい。:02/07/18 02:40
せっかくだから俺は、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へ?)
ぐらいまで読めましたが、そっからどうなってるのかわかりますか?


160 :名無しさん@お腹いっぱい。:02/07/19 00:02
上から来るぞ! 気をつけろ!
TCP は置いといてとりあえず UDP 追ってみては?


161 :名無しさん@お腹いっぱい。:02/07/21 04:14
おい、>>160,見習いデーモン,生きてるか?
udpの場合ip_inputの後
udp_input@udp_usrreqで配送先のプロセスを探して、sowakeupで起こす
そうすると、sbwait()で待ってた
soreceive()(uipc_socket.c)->recvit()でcopyoutされ、
recvitからはrecvfromに戻ってシステムコール完了と言った感じですか。


162 :名無しさん@お腹いっぱい。:02/07/29 19:56
ここなかなか良さそう。ただしSimplified Chinese。
http://opensource.zjonline.com.cn/

163 :150:02/07/30 09:23
おはようございます。
PICの解説で参考になるページ見つけたんで貼っておきます。
http://www.asahi-net.or.jp/~WR7S-NKMR/BeOS/Documents/IRQ.html
http://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ビットがセットされたような
様子もないんですが…

何かヒントだけでもお願いします。



164 :名無しさん@お腹いっぱい。:02/07/30 10:45
基本的にはbtxではタスク切替え使ってない筈。(そんな豪勢なことする
ほどのサイズも無いし)単純に、EFLAGSもPOPすることで、
特権を切替えてbtx_hdrにあるモニタルーチンのエントリーへ
飛んでるだけのことと思う。


165 :@夜勤雀棟 ◆YaKINcTg :02/07/30 15:06
>>163
この場合はTSSは関係ないですね。(V86用に使うだけ)
割り込みが起こったことにしてiretしているだけです。

166 :150=163:02/07/31 19:46
レスどうもです。

はやとちりしてました。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 ←ここですか?

特権を切替えて、また同じコードを辿ってくってこと???


167 :@夜勤雀棟 ◆YaKINcTg :02/07/31 20:21
>>166
>でも、pushしておいたEIP(btx_hdr+0xc)がiretで特権を切替えたあと
>実行される番地みたいですけど

>pushl btx_hdr+0xc# Set EIP

これは間接参照でbtx_hdr+0xc番地の内容(long)をpushするという意味です。
# operandに'$'が付いていないことに留意。

168 :150:02/08/03 14:17
>>これは間接参照でbtx_hdr+0xc番地の内容(long)をpushするという意味です。
にしても、特権切替えたあとはどのコードが走るのか全然わからないです。
EIPが0x0なんですよね?0x0番地のコードって…?


169 :名無しさん@お腹いっぱい。:02/08/03 18:45
実際のバイナリを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が走ったりするっす。


170 :名無しさん@お腹いっぱい。:02/08/03 19:30
>>実際のバイナリをhexdumpしないとダメっすよ。ローダがいじるに決まってるでしょ。

おぉ、盲点でした。
こういうのはMakefileを丁寧に追っていけばわかることですか?
今ちらっとsys/boot/i386/boot2/Makefileを見たら
ORG2に代入された0x1000がbtxldコマンドのオプションとかに使われてて
「ほうほう」と思ってたんですけど。

ソースにとらわれすぎて本質を見失ってました。
でも>>169さんのおかげでまた少し前進できそうです。ありがとうございました。

171 :150=170:02/08/03 19:31
sage忘れ欝だ死のう…

172 :名無しさん@お腹いっぱい。:02/08/04 22:06
sageなくても良いんじゃない?

まぁ、強いていえば「特殊なローダを必要とする」「0x0なんて番地に飛ぼうとする」
という2点から勘を働かせた結果かな。


173 :見習デーモンへ:02/09/09 04:58
スレ キトク スグカエレ

           〜ハハヨリ〜


174 :名無しさん@お腹いっぱい。:02/09/11 00:13
>>173
知らなかったのか?見習いデーモンは
半年前に勇者に殺されたんだぞ。

175 :名無しさん@お腹いっぱい。:02/09/15 00:10
もし!毒蛇に噛まれたら、
切り口を素早くナイフでえぐり、
急いで口で吸え!

ほら、言ってみろ!!

176 :名無しさん@お腹いっぱい。:02/09/15 00:37
虫歯がある時にそれやったら死んでしまう罠。

177 :名無しさん@お腹いっぱい。:02/09/15 01:44
ごめんなさい
クックロビンを殺したのは私です。。。。

178 :名無しさん@お腹いっぱい。:02/09/15 01:44
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バイトの領域にコピーする
という意味なのでしょうか?

179 :名無しさん@お腹いっぱい。:02/09/15 07:34
>>178
MBRが読み込み・実行される際のセレクタの値
引用してるコードの上の方で設定してるセレクタの値
セレクタとオフセットから得られる実効アドレス
について調べましょう。

# 個人的には、今さらIA32の16bitモードについて勉強しても
# 得る物はあまり多くない気がする。


180 :見習いデーモン:02/09/21 18:19
むしょうにデバイスドライバを書いてみたくなって、
http://www.jp.freebsd.org/www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/x10069.html
↑やってみたらすげー簡単でびっくりしました。

秋月のLCDキットとかをシリアルかなんかでつなげて、
echo "Hello" > /dev/mylcd
とかできるようになりたいんですけど、あとは↓
http://www.daemonnews.org/200010/blueprints.html
とか読んどけばできるようになりますか?

実際のドライバってどんななんだろうと思って/sys/dev/fxp/if_fxp.c
なんかのぞいてみて頭から煙だしたりしてます…


181 :名無しさん@お腹いっぱい。:02/09/21 23:15
おまえの見てるのデバドラのつくり方じゃねぇじゃん。(藁

182 :見習いデーモン:02/09/21 23:34
うお、もしかして空回りですか…

でもKLDでカーネル領域に自分のコード置けるとおもうとワクワクするんですが

183 :名無しさん@お腹いっぱい。:02/09/22 23:32
カーネルを再構築しても自分のコードは置けますが何か?

184 :名無しさん@お腹いっぱい。:02/09/24 00:43
>>181
ハンドブックで解説されている部分は部分はデバイスドライバ
(ツリーを形成する実デバイスを叩くもの)ではデフォルトで呼ばれる
ものがあるので気にしなくていいです。

おまいさんの目的ではどう見てもfxpを見るのは間違いだと
思いますし、そもそもシリアルならsio使ってtermios
叩いたほうが.......
で、ご希望にそえるものなら例えば、spic(4)あたり簡単そうかな?





185 :名無しさん@お腹いっぱい。:02/09/29 01:58
spic は デバイスの仕様が不明なので、
読んでもあまりピンとこないのでは。


186 :鬼軍曹:02/11/01 04:36
============ お知らせ ==================

あー、只今よりこのスレは、見習デーモンの学習を見張るスレになりました。

====================================

187 :名無しさん@お腹いっぱい。:02/12/16 05:14
保守

188 :名無しさん@お腹いっぱい。:02/12/26 15:56
NETBSD入れたらまずカーネルハックするぞぉ!


189 :名無しさん@お腹いっぱい。:02/12/26 16:13
おまえのいうハックってカーネルの再構築のことだろ?ぷ

190 :名無しさん@お腹いっぱい。:02/12/26 23:09
千里の道も一歩から

191 :名無しさん@お腹いっぱい。:02/12/26 23:34
千里の道を一歩だけ

192 :名無しさん@お腹いっぱい。:02/12/27 01:01
千里を歩き通すのは大変だよ……。


193 :名無しさん@お腹いっぱい。:02/12/29 14:10
千里ちゃんって誰?


194 :名無しさん@お腹いっぱい。:02/12/29 15:51
http://homepage3.nifty.com/senri/

195 :193:02/12/29 16:57
>>194
そんなの僕の千里ちゃんじゃないやい。


196 :名無しさん@お腹いっぱい。:03/01/07 22:31
>>193
千里中央に行くには新御堂筋に一歩踏み出せばあとは
北上するだけで着くので解りやすいと言う諺だよ。

197 :名無しさん@お腹いっぱい。:03/01/09 16:29
>>196
それはちとローカルではないかと。

198 :名無しさん@お腹いっぱい。:03/01/10 08:36
なかおくんだろ?

199 :山崎渉:03/01/15 13:10
(^^)

200 :山崎渉:03/01/16 03:35
(^^)

201 :名無しさん@お腹いっぱい。:03/01/18 12:17
>>194
大江千里も随分としけたもんだね。オフィシャルサイトが
niftyとは。。。

202 :山崎渉:03/02/24 10:15
(^^)オレダッテ タマニハ マジデ ホシュ スルyo!!

203 :山崎渉:03/04/17 12:29
(^^)

204 :山崎渉:03/04/20 06:02
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

205 :山崎渉:03/05/22 02:16
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

206 :名無しさん:03/06/04 18:51
カーネル内で、擬似的ではないランダムな値を使うにはどうすればいいですか??

207 :名無しさん@お腹いっぱい。:03/06/04 19:01
ガイガーカウンタをつないでカウントして乱数を発生させる

208 :名無しさん@お腹いっぱい。:03/06/05 00:53
ガイガーカウンタは計数するんじゃなくて時間を測るんだよね。
線源なしのバックグラウンドが相手だとパルス数が少なすぎて
ちょっとトロい。


209 :名無しさん@お腹いっぱい。:03/06/05 01:09
つーか、Intelチップセットの乱数ジェネレータとか使えばいいんでないの?
OpenBSDがサポートしてるのは知ってるけど、他はどう?

210 :名無しさん:03/06/05 01:52
カーネル内で擬似的ではないランダムな値を使うためにはどうしたらいいですか??

211 :名無しさん:03/06/05 01:53
すいません、ダブってしまいました。m(_ _)m

212 :名無しさん@お腹いっぱい。:03/06/05 02:34
NetBSD の場合、キーボードやシリアルその他のデバイスから
エントロピーを集めている。
この結果から得られた乱数は rnd_extract_data(9) で取得できる。
例えば sys/netinet/tcp_subr.c では、TCP の初期シーケンス番号
を、この乱数源から得るようになってるので、ここを見てみれば
使い方は分かる筈だ。


213 :名無しさん:03/06/06 00:25
当方FreeBSDで「TCPの初期シーケンス番号」からヒントを得て、
そこからip識別子(ip_id)の初期化の手順へ行き、そこからシステムクロックをとるtime.tv_secを
知ることができました。

ありがとうございました。

214 :名無しさん@お腹いっぱい。:03/06/06 00:30
それちがうやろ....

215 :名無しさん:03/06/06 02:30
確かに違いました。^^;
利用したい値の有効桁数が少なかったのでこれでも乱数として利用できるかと思ったんですが、
他の関数に利用する場合も考えてTCPの初期シーケンス番号の関数を利用したいと思います。
ご指摘ありがとうございました。

216 :名無しさん@お腹いっぱい。:03/06/06 02:31
>>210
どういう目的に使うの?

217 :名無しさん@お腹いっぱい。:03/06/06 02:38
>>212
「エントロピーを集める」という表現は気持ち悪いな。NetBSDの世界では普通に使うのか?

218 :名無しさん@お腹いっぱい。:03/06/06 02:43
別に NetBSD に限らず、乱数のセキュリティ方面への利用では、
普通に使います。試しに "collect entropy" でググってみるべし。


219 :名無しさん:03/06/06 03:14
マルチキャスト通信においてNAKにより信頼性を持たせようと思っているのですが、
そのとき全ての受信者がNAKを出すタイミングが重なるとトラフィックが一気に
増大するのでそのタイミングをずらすために乱数が必要となりました。
アプリケーションプログラムと違い、カーネルでの乱数の求め方がわかりませんでした。^^;

220 :名無しさん@お腹いっぱい。:03/06/08 05:50
ただいまBSDのKernel SoruceをReadしてるので
Context Switchするわけにはいかぬ。

221 :名無しさん@お腹いっぱい。:03/06/10 01:05
擬似的でない乱数って…

222 :名無しさん@お腹いっぱい。:03/06/15 00:29
自分でnumerical recipe使って書け

223 : :03/06/15 04:05
プ > numerical recipe

224 :*BSDハックさん:03/06/17 05:58
UDPのudp_inputにおいて ユニキャストとマルチキャスト・ブロードキャストで
処理が分かれいるところで、ユニキャストの方は分かるのですが、
マルチキャスト・ブロードキャストの方でUDPPCBをfor文でスキャンして
いくのはなぜですか? 同じPCBは複数存在するのですか?


225 :名無しさん@お腹いっぱい。:03/06/17 08:15
http://esenden.com/rank/network/ranklink.cgi?id=mercury

226 :_:03/06/17 09:29
http://homepage.mac.com/hiroyuki44/

227 :名無しさん@お腹いっぱい。:03/06/17 11:44
>>224
ブロードキャストの方はaliasついてりゃ、それぞれ同じポートつかえる。
マルチキャストは良くわからない。

228 :*BSDハックさん:03/06/18 01:42
>>227

229 :*BSDハックさん:03/06/18 01:50
>>227
もしよろしければブロードキャストにおける同じポートを使える
クライアントサーバのプログラムをいただけないでしょうか?

230 :227:03/06/18 14:12
>ブロードキャストの方はaliasついてりゃ
これ嘘。複数使えるけどブロードキャスト宛を受信できなかった。

↓ブロードキャストアドレス宛は受信できるけど、ユニキャストアドレス宛は受信できない。
foreach (リモートアドレス) {
udpソケット作る。
SO_REUSEADDRする。
ローカルアドレスとしてブロードキャストアドレスにbindする。
リモートアドレスにコネクトする。
}

231 :山崎 渉:03/07/15 11:24

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

232 :名無しさん@お腹いっぱい。:03/08/09 17:06
FreeBSD4.7のカーネル内の関数についてお聞きしたいんですが、

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


において ftnの引数の数を任意の数にしたいのですが
やり方がわかりません。どなたか教えてください。よろしくお願いします。

233 :名無しさん@お腹いっぱい。:03/08/09 17:16
マルチuzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!!!!!!!!!!!!!!!!!

234 :名無しさん@お腹いっぱい。:03/08/12 14:34
>>232
できませんが、構造体を定義して、それを確保してポインタで渡すというのは
だめですか。こんな感じ

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

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

   /*Some useful stuff*/
}

235 :_:03/08/12 14:49
http://homepage.mac.com/hiroyuki45/

236 :_:03/08/12 14:54
http://homepage.mac.com/hiroyuki45/hankaku_b01.html

237 :名無しさん@お腹いっぱい。:03/08/15 04:24
ついに
キタ━━━━━━(   )(゚  )(∀゚ )(゚∀゚)( ゚∀)(  ゚)(   )━━━━━━ !!!!!

【4.4BSDの設計と実装】
アスキー  ISBN: 4-7561-4346-6
価格: \5,800  発売日: 2003/9/18


238 :名無しさん@お腹いっぱい。:03/08/15 06:27
>>237
おお、とうとう出るのか。
ソースが見たいな。

239 :名無しさん@お腹いっぱい。:03/08/15 07:15
自分で調べてみたけど、確かに出るみたいだね。
http://www.fukkan.com/sell/index.php3?mode=detail&i_no=14024728

240 :名無しさん@お腹いっぱい。:03/08/15 07:34
復刊??

241 :名無しさん@お腹いっぱい。:03/08/15 08:21
【4.4BSDの設計と実装】
記念あげ

242 :名無しさん@お腹いっぱい。:03/08/15 10:05
おまえら、洩れが書いたカーネルをハックしてどうするつもり???

243 :みのる様:03/08/15 13:42
         みのるの超流行語では、
流行語大将になりそうな言葉を紹介していきたいと思います(^‥^)。

オヒャヒャ           僕、みのる様が使用している笑い方です。
(^‥^)          僕、みのる様が愛用している顔文字です。
トライブット        僕、みのる様のサイトがある所の偉い所の人。
みのる様ファン倶楽部    会員数がもう100億人超えた超えてます。
マヨネーズ         僕様の大好きなマヨネーズの一種です
スペシャルギニア      世界共通語で、誰でも分かります
応援ありがとう!!!    皆が僕様を応援してくれるから、僕様も返信します
           俺様の素晴らしいサイト↓
         http://minoru_god.tripod.co.jp/
        UNIX板のバカドモはこっちに来て勉強しな
                    BYE みのる様
   


244 :名無しさん@お腹いっぱい。:03/08/15 16:57
訳が糞だって聞いたけど、そのへんも直して出るのかね?

245 :名無しさん@お腹いっぱい。:03/08/15 17:51
それはむりだろう
英語読め

246 :244:03/08/15 18:04
改訂するって書いてるから直るかと思ったんだけど。
http://www.fukkan.com/column/?msgdate=msg030815

で、だれかこれ読んだ人いない?
http://www.amazon.co.jp/exec/obidos/ASIN/1589950046/ref=sr_aps_eb_/249-5632084-1864337

247 :名無しさん@お腹いっぱい。:03/08/15 18:28
砂ちゃん監訳だから、翻訳しなおしたんじゃないか?

248 :あぼーん:あぼーん
あぼーん

249 :あぼーん:あぼーん
あぼーん

250 :210 ◆s3Xr4zlrpU :03/08/18 21:46
>>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 :名無しさん@お腹いっぱい。:03/08/19 00:48
カーネルソースをいじって printfでパラメータを表示しながら
状況を把握したいんですが、typescriptもパイプでファイルに
保存することもできないのですが、カーネルをイジっているひとは
どうやってプログラミングしてるんですか?

カーネルを扱うに当たって便利なやり方や、アプリケーションがあれば教えてください。

252 :名無しさん@お腹いっぱい。:03/08/19 00:52
出力先をシリアルポートやら、メモリやら。

253 :名無しさん@お腹いっぱい。:03/08/19 01:35
最近だとsimokawaさん謹製dconsって奴があるね。
特定のメモリに書いておいてIEEE1394 OHCI
ホストコントローラが勝手にDMAしにくるってやつ。
シリアルコンソールはシリアルコンソールでも
IEEE1394シリアルだから速い。

254 :名無しさん@お腹いっぱい。:03/08/20 01:17
別に機器を買う必要があるということですか。

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

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

よろしくお願いします。

255 :名無しさん@お腹いっぱい。:03/08/20 01:33
>>254
( ´д)ヒソ(´д`)ヒソ(д` )

256 :_:03/08/20 01:52
http://homepage.mac.com/yamazaki8

257 :j:03/08/20 01:56
■無料でオマンコが見れるのは独身貴族だけです■
■2000人限定ですのでお急ぎ下さい■
http://www.yahoo2003.com/akira/linkvp.html

258 :名無しさん@お腹いっぱい。:03/08/20 02:48
知らなかったよ。kgdbを使ってカーネルのコンパイルができるのか.....

259 :名無しさん@お腹いっぱい。:03/08/20 05:30
>>254
通常のgdbのように扱えるよ
gdbのカーネルモードだからね

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

もし一台でデバッグできる方法があったら教えてくれ。

260 :名無しさん@お腹いっぱい。:03/08/20 05:37
誰も自分の死体を見ることはできないというお話ですた。

261 :名無しさん@お腹いっぱい。:03/08/20 05:41
死体は見れるよ。来世で。
できないのは、自分自身の解剖。

262 :名無しさん@お腹いっぱい。:03/08/20 05:58
いや、自分の癌の摘出をやった外科医はいたし、ある程度は可能だろう

263 :名無しさん@お腹いっぱい。:03/08/20 13:19
最近のはやりだとbochsやvmwareなどの仮想マシン上でデバッグする
という手もあるな。bochsにも一応デバッグ支援のための機能はある
ようだ。もっともエミュレーションに起因する問題が出る可能性は
あってどんな場合でも使えるわけじゃない。
動きを追うぐらいならそこそこ使えるかもね。

ま、詰めなきゃならん所は昔ながらのメモリ上に値を置く、かな。


264 :名無しさん@お腹いっぱい。:03/08/21 00:34
*BSDで、一台でもある程度はできるよ。Linuxでも最近できるかな。
options DDBを入れてCtl-Alt-Breakを押すと
ddbのモードに入る。ここで、命令ごとのステップ実行
callの終了までの実行、シンボルで指定できるブレークポイント設定
変数参照、レジスタ参照、等々。ddb(8)は印刷しといたほうがいいな。


265 :netnice:03/08/28 10:19
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 :名無しさん@お腹いっぱい。:03/10/11 12:05
カーネルモジュールはどうやってデバッグするんでしょうか?
特にインターフェース部分。
デバッグ用のシンボルはどうやっていれれば?

267 :名無しさん@お腹いっぱい。:03/10/11 12:22
>>1
これは実際に重要なことである。
開いたソースはあなたのためになり私のためになり、可能性をもたらす。
多くの危惧の中の一つは、しばしば現実となるが、世界の協力はそれを直すだろう。
もしあなたやあなたの友人が開いたソースを悪意で使うなら、それは停止して欲しい。


268 :名無しさん@お腹いっぱい。:03/10/12 17:57
>>267



269 :名無しさん@お腹いっぱい。:03/10/23 21:10
BSDのソース読んでみようと思うんだけど、NetBSDがいいかな?

270 :名無しさん@お腹いっぱい。:03/10/23 21:23
(´-`).。oO(でっかい釣り針がぶら下がっております…)

271 :名無しさん@お腹いっぱい。:03/10/23 22:15
inferno

272 :名無しさん@お腹いっぱい。:03/10/23 22:16
inferno

273 :名無しさん@お腹いっぱい。:03/10/23 22:22
くだ質スレからの流れでしょう。

274 :くだ質の534:03/10/24 17:08
漏れじゃネーよ(w カーネルくらい黙って読むし

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

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




275 :名無しさん@お腹いっぱい。:03/10/24 17:20
>>274
今までどんなの読んでたの?
得体の知れないマクロってのはbus_spaceとかの事かな。

276 :名無しさん@お腹いっぱい。:03/10/24 18:08
ヘッダファイルこそがソースの肝なのに。。。

277 :名無しさん@お腹いっぱい。:03/10/24 20:59
NetBSD のカーネルハック本(和訳)って、
BSD Magazine の Vol.13 のことじゃないのか?


278 :名無しさん@お腹いっぱい。:03/10/25 02:44
>>276
そうなんだよね。本当に。

279 :名無しさん@お腹いっぱい。:03/10/26 10:15
/usr/includeの下は丸暗記するぐらいの勢いで読みまくった。
これはいきなりカーネル読み始めるよりも、効率的だし、
実用的だったよ。

280 :名無しさん@お腹いっぱい。:03/10/26 13:48
へたれプログラマなんですが、なんでそんなにヘッダファイルが重要なのか
わからないんですが、理由を教えていただけませんか?


281 :名無しさん@お腹いっぱい。:03/10/26 14:31
>>280
これは計算機科学の教科書の練習問題だと思うぞ。
こんなものかな。採点キボンヌ(配点20点)

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





282 :名無しさん@お腹いっぱい。:03/10/26 19:07

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

2ch的でない(奇をてらわない保守的な)回答だけど、そういう地味さにも好感。


283 :280:03/10/27 08:00
>>281
ありがとうございます。
なんか目から鱗でした。


284 :くだ質の534:03/10/27 14:29
そうか、ヘッダファイルってそんなに重要なんだ…。言われて
みればたしかに。

漏れも>>279みたいに凄い勢いでヘッダ読んでみまつ。勉強に
なったサンクスコ。

285 :名無しさん@お腹いっぱい。:03/10/27 16:22
重要は重要だけど、本で言えば目次だけ読むようなもんだから
偏食にならないようにネ

286 :名無しさん@お腹いっぱい。:03/10/28 11:09
>>280
頭(head)だからです。
頭だけとか体だけとかは駄目なんです。

287 :名無しさん@お腹いっぱい。:03/11/04 23:33
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 : :03/11/19 22:40
興味ありあげ

289 :名無しさん@お腹いっぱい。:03/11/23 13:51
BSDがSCOによって血祭りにあげられるまであと何日ですか?


290 :名無しさん@お腹いっぱい。:03/11/23 19:47
BSDによってSCOが血祭り、なんだろうな


291 :名無しさん@お腹いっぱい。:03/11/23 20:15
というか既に血まみれで死にそうなSCOが
あちこちに血しぶきを撒き散らして嫌がらせしてるんだろ。

292 :名無しさん@お腹いっぱい。:03/11/23 22:11
>>290-291
おまいら何もわかってないな
技術泥棒なんだよ
ギ ジ ュ ツ ド ロ ボ ウ
わかるか?

293 :名無しさん@お腹いっぱい。:03/11/23 22:21
>>292 煽り乙。どうせなら犬板のSCOスレ逝った方が人多くて楽しいと思われ


294 :名無しさん@お腹いっぱい。:03/11/25 00:18
同感

295 :名無しさん@お腹いっぱい。:03/12/01 01:14
BSDのカーネル読むにはどのBSDのソースがとっつきやすいですか?


296 :名無しさん@お腹いっぱい。:03/12/01 03:31
あなたの使っているものが一番じゃない?


297 :名無しさん@お腹いっぱい。:03/12/06 12:38
ソースなんて綺麗とか汚いとかほざくまえに、
動いてるコードなんだから黙って読むんだよ!
今じゃろくなコード書けない人間までコードが
云々なんて言い出す始末だからな。もうブチキレですよ。

298 :名無しさん@お腹いっぱい。:03/12/09 18:58
カーネルによって違うのかもしれませんが、
各種スレッドというのは、スタックセグメントだけを
スレッドごとに固有にもち、それ以外のセグメントは
プロセス内の全てのスレッドで共有するという感じなのでしょうか?
そうすると、ページディレクトリテーブルも共有で、
スタックセグメントだけを仮想メモリの機能として
別々の物理ページに割り当てるといった感じになっているのでしょうか?
それとも全てのスレッドに対してCR3を割り当てるのかな?

どうもプロセス内のスレッドとVMの関係がよく分りません。

299 :名無しさん@お腹いっぱい。:03/12/09 19:45
>>298
実装にもよるんだろうけど、スタックも含め、スレッドがいくつあろうと
アドレス空間は1プロセスで同じもの。スタックはスレッド毎に
切り替えて違うアドレスを指してあるだけ。

300 :名無しさん@お腹いっぱい。:03/12/09 22:30
>>298
コンテクストスイッチ発生させると、プロセスのコンテクストスイッチと
変わらんし...それじゃあ、スレッドの意味がない...


301 :名無しさん@お腹いっぱい。:03/12/09 23:19
>>297
逆だよ。ろくにコード組めないから、綺麗なコード読みたいんだよ。
まぁ清濁併せ呑む度量があれば一番なんだが、そんな人間は黙って
読んでるよ。



302 :名無しさん@お腹いっぱい。:03/12/19 20:33
おまいらカーネル**ckしてますね。

303 :名無しさん@お腹いっぱい。:03/12/19 21:11
>>302
そんなタイトルの日記があったな…


304 :Win厨 :03/12/19 23:11
>>303
あ、それ書いてたの、おれっちです。
最近NetBSDも忙しくて触って無いからカーネルファックもご無沙汰です。
厨房でもカーネルぐらい気合で理解できること証明したかったけど、
自分にはちょっと厳しかったです。また再開したときはよろしくです。

305 :名無しさん@お腹いっぱい。:04/01/14 17:37
あげてみる

306 :名無しさん@お腹いっぱい。:04/02/13 00:25
バッファをたくさんとれるようにカーネルイジってたら、

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

と出るんですが、クラスタ数を多く割り当てたり、
別の目的で利用されている、クラスタを借りたりすることはできないでしょうか?

307 :名無しさん@お腹いっぱい。:04/02/13 03:27
a.具体的に何をしていたのかを書いてみよう。
(たとえばkern.ipc.nmbclustersをほにゃららにしてみたとか
options NMBCLUSTERS = ほげ したら config におこられるとか)
b.もし、具体的な目的があるのであればそれも書いてみよう。
(たとえば 負荷が高いWebサーバーをなんとかしたいとか。)

あと環境もちゃんと書いてみよう。

308 :名無しさん@お腹いっぱい。:04/02/16 05:49
一度の関数呼び出しで何回もパケットを
送出しようとするときインタフェースカードで
データパケットが落とされることってありますか??
もし落とされたときは、ip_outputの返値は返ってきますか?
また、それは「0」以外の値ですか?

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

原因・対策などありましたら、お願いします。

309 :名無しさん@お腹いっぱい。:04/02/16 06:11
>>308
当然あるだろ。ip_output は if_output 呼んでるだけだから、
あとはネットワークインターフェイス依存。
etherなら、netinet/ip_output.c、net/if_ethersubr.c、
と追いかけていって、NICのデバドラまで読んでけ。

まぁ単に送信バッファ溢れてるだけだろうがな。

310 :名無しさん@お腹いっぱい。:04/02/16 06:39
>>309
なるほど。。。参考になりました。
しかし、送信バッファがあふれても ip_outputの返値が0になるというのは問題なのでは??
ソケットバッファの場合はちゃんと制御できるのに。。。


311 :名無しさん@お腹いっぱい。:04/02/16 07:20
>>310
ぜんぜん問題じゃない。君の考え方のほうが問題。
ソケットは到達保証するが、IPは到達保証しない。
まだわからない?

312 :名無しさん@お腹いっぱい。:04/02/16 08:20
>>311
ソケットが送信保証をするためには、ip_outputの返値が0である必要があるし、
ip_outputの返値で0を返すためには、ether_outputの返値が0である必要がある。

ちなみに、ネットワークに出力されたあとは、ソケットも到達保証しないよ。
仮にできるのなら、何も苦労しない。。。

313 :名無しさん@お腹いっぱい。:04/02/22 01:46
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だから一気に生成したメッセージはどこかで落されてしまうんですかね…。
落される場所がわからない…
できれば落さないように改造してみたいんですが…

73 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)