これから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より伝統あるはずなのに。
探検
お前ら*BSDのカーネルをハックしますか?
1見習デーモン
NGNG22
NGNG 2
NGNG
> これから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 でも、
だいたい似たような場所でしょ。
つーか、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見習デーモン
NGNG >>3
アセンブラはちょっとしんどいかな、と思って。(もちろん理解する努力はしますが)
とりあえずカーネルの動きの概要がしりたいんで、init_main.cからかな?と思って読んでます。
#GLOBALでタグ作るのに意外と時間かかった・・・
アセンブラはちょっとしんどいかな、と思って。(もちろん理解する努力はしますが)
とりあえずカーネルの動きの概要がしりたいんで、init_main.cからかな?と思って読んでます。
#GLOBALでタグ作るのに意外と時間かかった・・・
5
NGNG7見習デーモン
NGNG VM_*の定義追いかけてたらCPU寄りなところまできてしまった・・・
結局>>3さんが言う通り機種依存なところも目を通してみたり。
結局>>3さんが言う通り機種依存なところも目を通してみたり。
8名無しさん@お腹いっぱい。
NGNG デバドラ書きたい君です
手っ取り早く書けるようになるには何を読むべきですか?
sys 以下、書籍、URL 問わず。
ターゲットは NetBSD/i386
手っ取り早く書けるようになるには何を読むべきですか?
sys 以下、書籍、URL 問わず。
ターゲットは NetBSD/i386
NGNG
> 手っ取り早く書けるようになるには何を読むべきですか?
似たような種類のデバイスドライバのソース。
で、ハードウェア仕様的に違う部分だけ書き換える。
できるだけ移植物じゃなくて、NetBSD で書き下ろされたデバイス、
それもバス依存部と、バス独立部がちゃんと分離されている奴を
参考にすると良い。
ただし、既にサポートされているデバイスの中に、仕様的に似たチップがある
かどうか (同じチップメーカからの新版とか、メーカは違うけど、互換品があ
るとか) を、まず最初に調べるべき。そもそもデバイスドライバを書かなくて
済むとか、既存のドライバに処理を付け加えるだけで済むことも多いので。
あと、悪魔本は全く読まくてもなんとかなる気もするけど、Bach 本 ("UNIX
カーネルの設計"、Maurice J.Bach、共立出版) くらいは常識として、ざっと
流し読みしておいた方がいいと思われ。もはや実装は全然違うので、細かい部
分は全く違うんだけど、それなりに役にたつぞ。
あとは、section 9 の man page と、一般的な基礎知識と、気合いがあれば
なんとかなるだろう。
似たような種類のデバイスドライバのソース。
で、ハードウェア仕様的に違う部分だけ書き換える。
できるだけ移植物じゃなくて、NetBSD で書き下ろされたデバイス、
それもバス依存部と、バス独立部がちゃんと分離されている奴を
参考にすると良い。
ただし、既にサポートされているデバイスの中に、仕様的に似たチップがある
かどうか (同じチップメーカからの新版とか、メーカは違うけど、互換品があ
るとか) を、まず最初に調べるべき。そもそもデバイスドライバを書かなくて
済むとか、既存のドライバに処理を付け加えるだけで済むことも多いので。
あと、悪魔本は全く読まくてもなんとかなる気もするけど、Bach 本 ("UNIX
カーネルの設計"、Maurice J.Bach、共立出版) くらいは常識として、ざっと
流し読みしておいた方がいいと思われ。もはや実装は全然違うので、細かい部
分は全く違うんだけど、それなりに役にたつぞ。
あとは、section 9 の man page と、一般的な基礎知識と、気合いがあれば
なんとかなるだろう。
10名無しさん@お腹いっぱい。
NGNG11見習デーモン
NGNG >>9
man 9 盲点でした。見てみたら情報の宝庫だ・・・
(日本語訳されてるともっとうれしいんだけど)
man のあるsectionの一覧を得る方法ってあります?
とりあえず本家サイトに一覧あったんでそれでみたんですけど、
ローカルでも何かコマンドで見れそうな気が・・・
man 9 盲点でした。見てみたら情報の宝庫だ・・・
(日本語訳されてるともっとうれしいんだけど)
man のあるsectionの一覧を得る方法ってあります?
とりあえず本家サイトに一覧あったんでそれでみたんですけど、
ローカルでも何かコマンドで見れそうな気が・・・
12sage
NGNG ところで、「お前ら○○しますか?」というフレーズが
微妙に流行ってるのか?
微妙に流行ってるのか?
NGNG
>>12
すでに微妙に流行遅れ。
すでに微妙に流行遅れ。
NGNG
NGNG
>>11 /usr/manとかそのあたり探してみれば?
16見習デーモン
NGNG >>15
鬱だ・・・単純に覗けばいいんだった・・・
init_main.c:start_init()がなんとなくわかってきた。
prepare_usermode()の定義が見つからないのが鬱だけど、そろそろ寝よう
鬱だ・・・単純に覗けばいいんだった・・・
init_main.c:start_init()がなんとなくわかってきた。
prepare_usermode()の定義が見つからないのが鬱だけど、そろそろ寝よう
17あへあへ
NGNG あへ
18見習デーモン
NGNG #先日の情報処理試験のためハック休んでました。今日から再開。
/sbin に myinit を作って(へろーわーるどの後whileで停止するだけ)、
start_init() の init 探すパスを myinit 指すように書き換えてみたけど、
kern_exit.c の exit1() で止まるねぇ。
どういう経路でここまで来たのかまだちょっとわからん。
global + Namazu 駆使して頑張ります。おー
/sbin に myinit を作って(へろーわーるどの後whileで停止するだけ)、
start_init() の init 探すパスを myinit 指すように書き換えてみたけど、
kern_exit.c の exit1() で止まるねぇ。
どういう経路でここまで来たのかまだちょっとわからん。
global + Namazu 駆使して頑張ります。おー
19見習デーモン
NGNG kern_exec.c: execve() の exit1() で止まることがわかった。
vmspace_destroyedフラグがたっちゃってるのね。
image_params にセットされる値追いかけなくちゃ・・・
vmspace_destroyedフラグがたっちゃってるのね。
image_params にセットされる値追いかけなくちゃ・・・
20
NGNG おやおや、こんなスレが。僕もちょうど読もうとしてた(のに2ヶ月間ほ
ったらかしてた)から参加しよう。
arch/include/pmap.h 以外で、全arch共通の pmap インタフェースを記述
した文書なりファイルってありますか?
ったらかしてた)から参加しよう。
arch/include/pmap.h 以外で、全arch共通の pmap インタフェースを記述
した文書なりファイルってありますか?
NGNG
あげ
22名無しさん@お腹いっぱい。
NGNG man page に pmap(9) がある。(NetBSD-current の場合)
23名無しさん@お腹いっぱい。
NGNG BSDマガジンの第4号はカーネル初心者必携です。
24nana4
NGNG ソフトウェアRAIDなのですが
/dev/hda5 7GB (/home)
/dev/hdb1 7GB (linuxraid)
としたばあいで
RAID0を組みたいのですが
詳しいページご存知無いでしょうか?
赤帽7.1を使っているのですが…
/etc/raidtabが変なようで
起動時にこけます
raidtabを一旦削除した後の再起動でまともに起動しますが
RAID0は手動でしか動きません
/dev/hda5 7GB (/home)
/dev/hdb1 7GB (linuxraid)
としたばあいで
RAID0を組みたいのですが
詳しいページご存知無いでしょうか?
赤帽7.1を使っているのですが…
/etc/raidtabが変なようで
起動時にこけます
raidtabを一旦削除した後の再起動でまともに起動しますが
RAID0は手動でしか動きません
25
NGNG >>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
板&スレ違い。
おお、ありがとう。でもこれって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
NGNG >>3
えっと、もうmain()って名前じゃなくてmi_startup()という
名前に代わってるよん>init_main.cの関数。
FreeBSDの場合だと、mi_startup()はSYSINITマクロで作られた配列を
順番に実行するように作られてます。割と追いにくいです。
/sys/sys/linker_set.h
/sys/sys/kernel.h
あたりに小細工があります。
えっと、もうmain()って名前じゃなくてmi_startup()という
名前に代わってるよん>init_main.cの関数。
FreeBSDの場合だと、mi_startup()はSYSINITマクロで作られた配列を
順番に実行するように作られてます。割と追いにくいです。
/sys/sys/linker_set.h
/sys/sys/kernel.h
あたりに小細工があります。
27名無しさん@Emacs
NGNGNGNG
ttp://unix.za.net/~kobz/freebsd.jpg
デーモン萌え
デーモン萌え
29名無しさん@お腹いっぱい。
NGNG そういやビルくんを f*** する画像もどっかにあったな...
しかしスレ違いでは。
GNUのウシ
http://pc.2ch.net/test/read.cgi/unix/1002725230/
が適切か?(w
しかしスレ違いでは。
GNUのウシ
http://pc.2ch.net/test/read.cgi/unix/1002725230/
が適切か?(w
NGNG
で〜もん君のイラストって、キモくないですか?
BSD関連のよさげな本には(よさげでない本にもですが)必ずあれが
あって鬱になるんですけど。
BSD関連のよさげな本には(よさげでない本にもですが)必ずあれが
あって鬱になるんですけど。
31名無しさん@お腹いっぱい。
NGNG >>30
オレもそう思う。
オレもそう思う。
NGNG
8頭身のデーモンはキモい!
33名無しさん@お腹いっぱい。
NGNG 確かになー
Linuxのペンギンのがかわいいよなぁ
Linuxのペンギンのがかわいいよなぁ
NGNG
僕は linux user だがデーモン君の方が好きだな.
NGNG
netbsdのサイトのメイン画面は好きだよ
NGNG
>>35
あれは誰かがバタくさいといってて笑った.
あれは誰かがバタくさいといってて笑った.
NGNG
NGNG
>>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
これか。
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名無しさん@お腹いっぱい。
NGNGNGNG
NGNG
そもそも元ネタがヤラセなんだよねw?
NGNG
ヤラセっつーより仕込みのような。
報道写真なんてそんなもの〜♪
報道写真なんてそんなもの〜♪
NGNG
そんな絵を使ってるのに日本人 committer の多い NetBSD 萌え。
NGNG
そういう絵だったのか...
NGNG
>>43-44
変えようとかいう話も以前出てた気もするけどどーなったんだろ(w
変えようとかいう話も以前出てた気もするけどどーなったんだろ(w
47名無しさん@お腹いっぱい。
NGNG おせーてくださいませ。
caddr_t ってどーいう意味なのですか。
ヘッダファイル見たら core address ってコメントしてあったけど、
よくわかりませんです。
ってこれはカーネルの話題じゃないのかな?
caddr_t ってどーいう意味なのですか。
ヘッダファイル見たら core address ってコメントしてあったけど、
よくわかりませんです。
ってこれはカーネルの話題じゃないのかな?
NGNG
NGNG
正直、linuxペンギンは気持ち悪い。
50名無しさん@お腹いっぱい。
NGNG51名無しさん@お腹いっぱい。
NGNG ager
5226
NGNG 以下の実験は実行ファイル形式として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
をかけて結果を見よ。
考察欄
利用している事が前提である。
実験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
をかけて結果を見よ。
考察欄
NGNG
$ objdump --all-headers /boot/kernel/kernel
/usr/libexec/elf/objdump: /boot/kernel/kernel: No such file or directory
$ uname -sr
FreeBSD 4.4-RELEASE
/usr/libexec/elf/objdump: /boot/kernel/kernel: No such file or directory
$ uname -sr
FreeBSD 4.4-RELEASE
5452
NGNG みゅ。悪い。4系だと/kernelだね。
NGNG
Linux(ELF)でも、(おそらく)同じ結果になった。
__attribute__や__section__の定義を探して
/usr/includeなんかをfind+grepしたけど見つからない。どこかなー
__attribute__や__section__の定義を探して
/usr/includeなんかをfind+grepしたけど見つからない。どこかなー
5726
NGNG それから、__attribute__はgccの拡張だよ。info参照。
58歴史に名を残すかもしれない男
NGNG 僕は、超研究員大学生でありウィザドですが、
既存のOSはしょーもないので新しく作ります。
そこで質問です。
FreeBSDってカーネルとか弄ったりして、
ソフトとか入れて整形したものを
Linuxのディストリビュージオンみたいに配ってもいいですか?
または、FreeBSDなどを参考にして、
一から作ったOSウォ、VokuBSDみたいに名乗ってもいいですか。
既存のOSはしょーもないので新しく作ります。
そこで質問です。
FreeBSDってカーネルとか弄ったりして、
ソフトとか入れて整形したものを
Linuxのディストリビュージオンみたいに配ってもいいですか?
または、FreeBSDなどを参考にして、
一から作ったOSウォ、VokuBSDみたいに名乗ってもいいですか。
レスを投稿する
ニュース
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★3 [BFU★]
- きょう日米電話首脳会談で調整…トランプ大統領が中国・習主席との電話会談受け高市首相に説明か 台湾問題の認識は… [ぐれ★]
- 【野球】大谷翔平、WBC出場を正式表明! 「日本を代表して再びプレー嬉しく思う」 侍ジャパンで世界一連覇狙う★2 [冬月記者★]
- 「ホストに貢ぎたい」と海外で売春する日本人女性 2カ月で2千万円稼ぐケースも [1ゲットロボ★]
- 日米首脳、電話で緊密な連携確認 台湾答弁協議の有無明言せず… [BFU★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★4 [ぐれ★]
- 【高市悲報】日本政府「ウクライナは和平したければ勝手にすれば?」 [616817505]
- 【あっ…】トランプと習近平、ガッツリ握手。高市早苗、ガチで終了。 [153490809]
- 小野田大臣「山上はただのテロリスト」政府によってテロリスト公認 [245325974]
- お昼のまったりふな🍬ハウス🏡
- トランプ、高市早苗に電話会談で説教へ「台湾の中国への復帰が国際秩序」「アメリカは重要性を理解している」 [329329848]
- Suicaのコード決済サービス「teppay」(テッペイ)始まる [268244553]
