- 1 名前:見習デーモン [01/10/17 18:35]
- これから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より伝統あるはずなのに。
- 2 名前:2 mailto:sage [01/10/17 20:24]
- 2
- 3 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:見習デーモン mailto:sage [01/10/17 21:49]
- >>5
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 名前:名無しさん@お腹いっぱい。 mailto:sage [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 mailto:sage [01/10/18 01:13]
- ところで、「お前ら○○しますか?」というフレーズが
微妙に流行ってるのか?
- 13 名前:名無しさん@お腹いっぱい。 mailto:sage [01/10/18 01:44]
- >>12
すでに微妙に流行遅れ。
- 14 名前:login:Penguin mailto:sage [01/10/18 01:44]
- こっちにも飛び火してます
mentai.2ch.net/test/read.cgi/network/1003037538/
- 15 名前:名無しさん@お腹いっぱい。 mailto:sage [01/10/18 01:46]
- >>11 /usr/manとかそのあたり探してみれば?
- 16 名前:見習デーモン mailto:sage [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 名前:見習デーモン mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:あげ [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のやつだよね。 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 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/01 15:22]
- ttp://unix.za.net/~kobz/freebsd.jpg
デーモン萌え
- 29 名前:名無しさん@お腹いっぱい。 [01/11/01 20:42]
- そういやビルくんを f*** する画像もどっかにあったな...
しかしスレ違いでは。 GNUのウシ pc.2ch.net/test/read.cgi/unix/1002725230/ が適切か?(w
- 30 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/03 01:52]
- で〜もん君のイラストって、キモくないですか?
BSD関連のよさげな本には(よさげでない本にもですが)必ずあれが あって鬱になるんですけど。
- 31 名前:名無しさん@お腹いっぱい。 [01/11/13 12:40]
- >>30
オレもそう思う。
- 32 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/13 15:39]
- 8頭身のデーモンはキモい!
- 33 名前:名無しさん@お腹いっぱい。 [01/11/13 17:03]
- 確かになー
Linuxのペンギンのがかわいいよなぁ
- 34 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/13 17:17]
- 僕は linux user だがデーモン君の方が好きだな.
- 35 名前:login:Penguin mailto:sage [01/11/14 00:53]
- netbsdのサイトのメイン画面は好きだよ
- 36 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/14 02:08]
- >>35
あれは誰かがバタくさいといってて笑った.
- 37 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/15 03:03]
- >>36
あれはアメリカ軍の硫黄島占領をパクったもので、だいぶ前に 「他にいい絵があったら差し替えてもいいよー」 という話になってますが、いまだに代わりになる「いい絵」がないようです。
- 38 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/18 07:11]
- >>39
銅像より元ネタになった報道写真のほうが 著名なんではないかと。
- 41 名前:デフォルトの名無しさん mailto:sage [01/11/18 07:13]
- そもそも元ネタがヤラセなんだよねw?
- 42 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/18 07:17]
- ヤラセっつーより仕込みのような。
報道写真なんてそんなもの〜♪
- 43 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/18 10:47]
- そんな絵を使ってるのに日本人 committer の多い NetBSD 萌え。
- 44 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/18 14:52]
- そういう絵だったのか...
- 45 名前:名無しさん@お腹いっぱい。 mailto:sage [01/11/18 20:38]
- www.mainichi.co.jp/life/family/syuppan/chronicle/1945_3.html
- 46 名前:名無しさん@お腹いっぱい。 mailto:sage [01/12/06 11:08]
- >>43-44
変えようとかいう話も以前出てた気もするけどどーなったんだろ(w
- 47 名前:名無しさん@お腹いっぱい。 [01/12/31 18:04]
- おせーてくださいませ。
caddr_t ってどーいう意味なのですか。 ヘッダファイル見たら core address ってコメントしてあったけど、 よくわかりませんです。 ってこれはカーネルの話題じゃないのかな?
- 48 名前:名無しさん@お腹いっぱい。 mailto:sage [01/12/31 18:20]
- >>33
ペンギンかわいいか?目にまったく生気がなくてうつむいてるし、 ぐったりしてるように見えるんだけど。カモメの方が好きだった。
- 49 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [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 mailto:sage [02/01/14 18:59]
- みゅ。悪い。4系だと/kernelだね。
- 55 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/14 22:59]
- Linux(ELF)でも、(おそらく)同じ結果になった。
__attribute__や__section__の定義を探して /usr/includeなんかをfind+grepしたけど見つからない。どこかなー
- 56 名前:52 [02/01/15 00:31]
- >>55
>>26参照。
- 57 名前:26 mailto:sage [02/01/15 00:34]
- それから、__attribute__はgccの拡張だよ。info参照。
- 58 名前:歴史に名を残すかもしれない男 [02/01/15 01:59]
- 僕は、超研究員大学生でありウィザドですが、
既存のOSはしょーもないので新しく作ります。 そこで質問です。 FreeBSDってカーネルとか弄ったりして、 ソフトとか入れて整形したものを Linuxのディストリビュージオンみたいに配ってもいいですか? または、FreeBSDなどを参考にして、 一から作ったOSウォ、VokuBSDみたいに名乗ってもいいですか。
- 59 名前:50 mailto:sage [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 名前:納期に間に合わないかもしれない男 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/31 00:12]
- >>63
日本人がBSDにドライバ書くのは見飽きたにょ VFSとかに挑んでみてくれ
- 69 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/31 00:33]
- Uniform Driver Interfaceどうよ?
- 70 名前:名無しさん@お腹いっぱい。 mailto:sage [02/01/31 13:57]
- えと、えと。そうしてほしいの?おにいちゃん。ってのはともかく。
要はいじりたいコンポネントからせめて行くのが得策なわけで。 頭から見ても良い事はあんまり無いと言うのが本質ですな。 他機種移植だったらそれが一番大事だけど。 (もっとも、例にだしたのがドライバなのは私がその見飽きた事を しているからでして。)次はportalfs元にいじるかな。小さくて簡単そうだし。 kernfsあたりも簡単そうだったけど。FreeBSDからは消えたし。 UDIですかぁ。うーん。努力は認めるけど....
- 71 名前:68 mailto:sage [02/02/02 00:17]
- >>70
個々のファイルシステムじゃなくてVFS。 VMいじれとまでは言わないっす。ドライバ書きは多いけど、そっから 昇格するやつがいないと思ったみょ。 わしも、しょうもないドライバを昔書いたけど、それいらいカーネルは いじってないでし。(もはや一介の犬厨です)
- 72 名前:名無しさん [02/02/09 10:55]
- ソラリスのカーネルスレッドがマッチするよう
Sparcは設計されているのですか?
- 73 名前:名無しさん@お腹いっぱい。 [02/02/23 09:22]
- あげ
- 74 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/23 16:55]
- ドライバ書きより VFS いじる方が格が上だとでも?
ただのレイヤ違いじゃん。
- 75 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/26 00:00]
- >>74
本当にそう思う? みなさまもそう思う?
- 76 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/26 14:20]
- 禿同 >>74
- 77 名前:74 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 04:50]
- jfs4bsd.sourceforge.net/
- 83 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 06:19]
- >>82
ライセンスどうするんだろ? JFSもGPLだったよね?
- 84 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 07:31]
- >>83
コードの再利用をせずにスクラッチで書けば良いんではないかい?
- 85 名前:83 [02/03/11 10:41]
- うーんやっぱそうなるよねぇ。先が長そうだ...
とりあえず応援age
- 86 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/11 21:46]
- JFS ってわざわざスクラッチから作るほどイイの?
- 87 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/12 00:04]
- とりあえずジャーナリングするファイルシステムがひとつは欲しい
- 88 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/12 16:19]
- JFS for Linux を移植するよりスクラッチから書いた方が早い
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/12 18:17]
- >>88
その情熱をLFSに注いでクレ
- 90 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 00:28]
- LFSとかsoftupdateみたいなディスクへのリクエストの順序で整合性を保つ方式は
そろそろダメというのが世間のコンセンサスな気がする
- 91 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 00:49]
- ジャーナリングって
ディスクへのリクエストの順番と 実際書き込まれる順番が デタラメになっても問題ないの?
- 92 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 08:05]
- >>91
そんなことはないが、ディスクキャッシュのフラッシュなどの 同期命令の発行がかなり少なくてすむ 少なくともメタデータ一個書くごとにフラッシュする必要は無い
- 93 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/13 08:39]
- 書き込み順序保証ってSCSIやATAのtagged queuingじゃダメなの?
- 94 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/14 00:16]
- >>93
その手の機能をすべてのメタデータの書き込みに対して使うと遅いよ
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/14 01:15]
- >>90
LFS はセグメント毎にフラッシュすれば十分なんでないの? ダメ?
- 96 名前:名無しさん@お腹いっぱい。 mailto:sage [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 mailto:sage [02/04/09 19:26]
- deadfs は mount 方法もわからないし (そもそも mount できるのか
どうかもわからん) kernfs の方がいいかな…。
- 100 名前:名無しさん@お腹いっぱい。 mailto:sage [02/04/09 19:32]
- procfs を換骨奪胎すればいいのでは?
|

|