■掲示板に戻る■ 全部 1- 101- 201- 最新50

他と比較しなければFreeBSDは真価のないOSか?

1 :FreeBSD原理主義者 :2001/07/28(土) 03:04
何かと比べなければFreeBSDは真価を見つける事が困難なOSなのか?
比較する事なく、FreeBSDの価値を明らかにせよ。

223 :名無しさん@お腹いっぱい。 :2001/07/30(月) 20:25
>>217 >>111
なるほど、そういう意味なら納得。
オレはどちらかというとLinux使いだが、
カーネルソースとそのmakeの仕組みについては
確かに*BSDの方が合理的だね。
これ、Linuxにも取り込めれば面白いと思う。
GENERICとかをconfigして、
compileディレクトリに移動してmake depend; make して、とね。

224 :名無しさん@お腹いっぱい。 :2001/07/30(月) 20:57
なんでLinuxはCVS使わないんだろうね。

225 :名無しさん@お腹いっぱい。 :2001/07/30(月) 21:01
>>217
同時に並列にできるのと、1個ずつ直列にするのと
どう違うの?

226 :名無しさん@お腹いっぱい。 :2001/07/30(月) 21:10
>>225
並列とか直列とかいう意味ではない。
複数のコンフィギュレーションのカーネルを、
中間ファイルを含めて(同じソースツリー上で)保存できるかどうかの話でしょう。

一個ずつだと、新しいカーネル作る時に
前のカーネルの中間ファイルをmake cleanでで消さなければならない。
さもなければ、同じソースツリーをもう一式アーカイブから
展開しないといけない。(たとえ同じカーネルバージョンでも)

227 :名無しさん@お腹いっぱい。 :2001/07/30(月) 21:14
>>226
make dep で再コンパイルが必要な部分を確定するのでは?

228 :名無しさん@お腹いっぱい。 :2001/07/30(月) 21:17
>>227
ちがうっつーの、
それじゃー新しいカーネルができるだけでしょう。
2つ以上のカーネルをすべて中間ファイルを含めて
保存したいという話。

229 :名無しさん@お腹いっぱい。 :2001/07/30(月) 21:18
>>228
中間ファイルを残す意味は?

230 :名無しさん@お腹いっぱい。 :2001/07/30(月) 21:49
>>228
Linuxではカーネルソースツリー中の個々のディレクトリに
そのまま中間ファイルや目的のカーネルが作成されてしまうため、
同じソースツリーで新しいコンフィギュレーションのカーネルを作ろうとすると、
変化のあった部分の中間ファイルは上書きされてしまう。

*BSDでは中間ファイルや目的のカーネルなどの、
書き込みが必要なディレクトリが、
カーネルコンフィギュレーションごとにサブディレクトリが作られて
分離されている。
なので、複数のカーネルが、make時の情報をすべて保ったまま
それぞれ独立して保存できる。

そのことを説明するために、中間ファイルの例を出したまでだ。

いずれにしても、*BSDではソースツリーをきれいなまま汚さずに、
カーネルをmakeできるということだ。

231 :名無しさん@お腹いっぱい。 :2001/07/30(月) 21:58
>>224
Linus は機能単位の patch を好んでいて、CVS はあんまり
好きじゃないらしい。一度の commit で複数の個所への更新が
できちゃうところが不満らしい。

patch を contribute するときも、ある程度「これはこういう拡張」
「これはこういう fix」という感じにしないと
受け入れてもらえない。

(でっかい patch を投げて中を見もせずに reject された例が結構ある...)

232 :名無しさん@お腹いっぱい。 :2001/07/30(月) 22:12
>>230
>同じソースツリーで新しいコンフィギュレーションのカーネルを作ろうとすると、
>変化のあった部分の中間ファイルは上書きされてしまう。
なんで上書きされると困るのか、まだわからない。
.oの状態でデバックするため?

>なので、複数のカーネルが、make時の情報をすべて保ったまま
>それぞれ独立して保存できる。
保存して意味のあるmake時の情報ってどんなのがありますか?


>いずれにしても、*BSDではソースツリーをきれいなまま汚さずに、
>カーネルをmakeできるということだ。
それってかなり特殊だよね。ほとんどのソフトはコンパイル時に
ソースと同じディレクトリにオブジェクトファイルばらまくし。
綺麗なまま残すことにもあまりメリットを感じない。

233 :名無しさん@お腹いっぱい。 :2001/07/30(月) 22:37
>>232
BSDの美しさがわからない犬房は逝け!
なんでもただ動けばいいってもんじゃないんだよ。

234 :名無しさん@お腹いっぱい。 :2001/07/30(月) 22:49
>>232
どんな「デメリット」を感じますか?

235 :名無しさん@お腹いっぱい。 :2001/07/30(月) 23:00
>>233
犬厨の香りがプンプンします。

236 :名無しさん@お腹いっぱい。 :2001/07/30(月) 23:08
>>234
デメリットは...ないね。
でも、これこれが出来ますって言うのに、それが出来ることによる
利点が説明されていないと、評価したり採用したりできないよね。

237 :広告出稿のお問い合わせ :2001/07/31(火) 01:42
http://www.2ch.net/ad.html

238 :名無しさん@お腹いっぱい。 :2001/07/31(火) 08:28
たとえばの例だけど、(もちろんこれだけじゃないけど)
2種類以上のコンフィグのカーネルを、
同じソースツリーで構築して、
それぞれのコンフィグでの各オブジェクトファイルのサイズとか、
あるいは生成されるオブジェクトファイルの数そのものも違うだろうし、
それらを見比べて比較検討したりすることができる。

あと、 >>232
>それってかなり特殊だよね。ほとんどのソフトはコンパイル時に
>ソースと同じディレクトリにオブジェクトファイルばらまくし。

別に特殊でもないよ。フツーのフリーウェアとかは、
./configure --srcdir==../hogehoge
とかで、ソースツリーとオブジェクトファイル書き込み用ディレクトリを
分離できる。
configureに対応していないものの場合は、
lndirで大抵対応できる。
ところが、Linuxのカーネルソースでは、
実際にやってみるとわかるが、lndirでディレクトリを分離しても、
makeで変なことをやっていて元のソースツリーに書き込みが発生してしまうんだよ。

239 :犬吠岬 :2001/07/31(火) 08:42
>たとえばの例だけど

プププ
BSD信者馬鹿ばっかり。

240 :第3の足摺岬 :2001/07/31(火) 08:53
>>238
>ところが、Linuxのカーネルソースでは、
>実際にやってみるとわかるが、lndirでディレクトリを分離しても、
>makeで変なことをやっていて元のソースツリーに書き込みが発生してしまうんだよ。

make dep;
make clean;
make bzImage;

どの時点のmakeの話や?

241 :名無しさん@お腹いっぱい。 :2001/07/31(火) 09:20
>>240
たしか、元の *.c に直接touchして、
タイムスタンプを更新している部分が多数あったはず。
こりゃ、lndirでも無理だわな。
>>240 は実際やってみたの?

242 :Linuxヲタ :2001/07/31(火) 09:23
Free は知らんけど Net はおいらにはピッタリのようだ。

243 :第3の足摺岬 :2001/07/31(火) 09:25
カーネルコンパイルは100回以上してるけど。
config 変えて違うカーネル作って動作確認のために
交互にブートしたりしてるけど、なにが問題なのかわからんよ。

>元の *.c に直接touchして

へー本当ならそりゃ醜いね。でもなんのためにtouchしてんだろ?

244 :名無しさん@お腹いっぱい。 :2001/07/31(火) 09:49
>>243
touchはmakeに依存関係を認識させるためでしょう。
言っとくが、オレはむしろLinux使いだ。
なので、このカーネルソースのmake方式の汚い部分だけは直したいと思っている。
せめてlndirでオブジェクト分離makeしたいよ。

245 :Linuxヲタ :2001/07/31(火) 09:53
同感。ソースdir はあくまでリポジトリである、という発想だと
嬉しい。

246 :第3の足摺岬 :2001/07/31(火) 10:16
>>244
>touchはmakeに依存関係を認識させるためでしょう。

さんくす。*.c と *.o のタイムスタンプ比べてコンパイルするしないを
決めてるってことですね。なんかださいなー。
タイムスタンプ無視の全部強制コンパイルってオプションあるはずですよね?

247 :244 :2001/07/31(火) 10:37
>>246
再確認してみたが、touchするのは *.c というより *.h みたいだ。
タイムスタンプ無視の強制make以前の問題として、
touchコマンド自体が失敗してmakeがエラーで止まってしまうことが問題だ。

一度、/usr/src/linux以下を rwxr-xr-x root 状態にして、
それを適当な一般ユーザディレクトリから lndir でツリー全体をリンクして、
一般ユーザでmakeしてみればわかる。(百聞は一見にしかず)

その際には、include/asm -> asm-i386 というシンボリックリンクと、
lndir が作成するシンボリックリンクが干渉してうまくいかないという問題も
発生するはずだ。

248 :名無しさん@お腹いっぱい。 :2001/07/31(火) 14:26
ひそかに netbsd 潰しを目論んでいる奴がいそうだにゃ

249 :名無しさん@お腹いっぱい。 :2001/07/31(火) 14:42
>>248
そんな程度の低いことする意味がない。
どうしてバカは直ぐに戦争にもっていきたがるんだ?
いくら自分には理解できないことだらけだからって...情けなすぎ。

250 :名無しさん@お腹いっぱい。 :2001/07/31(火) 23:35
一応まとめだ。
Linuxのカーネルのソースは、make時にオブジェクトファイルや目的のカーネルを
ソースファイルのディレクトリと同じディレクトリに書き込んでしまうため、
ひとつのソースツリーに対して2種類以上のコンフィグでカーネルを作ろうとすると
以前のカーネル用のオブジェクトファイルを上書きしてしまい、
オブジェクトファイルを含めての保存ができない。
(しかし、オブジェクトファイルの保存の必要性を感じていない人もいる)

また、この「書き込みが発生する」ことから、
root所有のカーネルソースツリー上で、
一般ユーザではカーネルをmakeできない。
(一般ユーザでのmakeは、カーネルソースを一般ユーザで展開する必要がある)

*BSDでは、オブジェクトファイルや目的のカーネルは、
/usr/src/sys/compile/GENERICとか
/usr/src/sys/compile/MYKERNELとかの
ディレクトリ以下のみに書き込まれ、Linuxで起きている不具合は発生しない。

一般に、フリーウェアのソースをmakeする場合、
configure対応ならconfigure --srcdir=/hogehogeで、
そうでなければlndirで、オブジェクト書き込みディレクトリを分離できる。

しかし、root所有のLinuxカーネルソースをlndirして一般ユーザでmakeすると、
Linuxカーネルのmakeの仕組みにより、
include/linux/*.h ほか多数の *.h ファイルに対してtouchコマンドが実行され、
ここで元のカーネルソースのタイムスタンプを上書きすることになるため、
当然書き込み不可でエラーになってmakeに失敗する。

俺としては、Linuxカーネルに*BSDのmake方式を取り入れたい。

251 :名無しさん@お腹いっぱい。 :2001/08/01(水) 01:37
Linux板で過度の攻撃的な発言、誹謗中傷、あげあらし、終了あらしはご遠慮ください。UNIX板の問題はUNIX板で解決してください。

252 :Linuxヲタ :2001/08/01(水) 05:35
>>250
サンクス。
ただ、 include/linux/* じゃなくて include/config/MAKER と MOD 関連
とpcmcia関連、それから mkdep が吐く config.h くらいじゃないかな?
include/linux/* 全体を触る意味がないように思う。
ちなみにバージョンいくつ? こちらは 2.4.5 っすが。

どっちにしても汚いね。

253 :名無しさん@お腹いっぱい。 :2001/08/01(水) 05:58
>>250
サマリありがとう。
ところで、kbuildやCML2に関しての評価はいかが?

254 :1 :2001/08/02(木) 00:02
たった数日でこれだけ伸びるとは何故か?

255 :名無しさん@お腹いっぱい。 :2001/08/02(木) 01:09
>>1

キミが居なかったから。

256 :Linuxヲタ :2001/08/02(木) 11:16
1が戻ってきたみたいだから暫く避難します。


新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver5.26+ (01/10/21-)