第83日目:【A-Tiger】ちょっと昔を振り返っていました・・・再挑戦です
|
どうも、('A`)です。
ちょっと体調が悪くなって(体の中に雑菌が入って熱を出して)寝込んでいました。
抗生物質を飲んで熱は下がったので、今日は静かに過ごしています。
(どうして抗生物質を飲むと、お腹が「ゆるく」なってしまうんだろう・・・・)
で、('A`)が寝込んでいる間、エース( ,_ノ` )y━・~~~ が今まで作ってきたサーバの歴史を
簡単にまとめてくれていました。ありがとう!
ちょっと立ち止まって当時の事振り返ってみました。
たしか、A-Tigerの初号機(Tiger3502)の時も色々ありました。あの時もカーネルがうまく
作れなかったなあ・・・
で、作ってからex25として稼働しても「4時間の命」とみなさんから色々言われてちょっと
('A`)へこんでいた事を思い出しました。
何か思い出してきた・・・・
去年、64ビットのFreeBSDは6.2(その後2008年04月に7.0が発表されました)だったなあ。
あの時はCPUTYPEに無理やり「opteron」と指定したり、色々無茶しました。
(むむむさんにもびっくりされちゃいましたね。)
で、たしか7.0の時CPUTYPEをCore2で指定していたら、うまくいかなかったでした。
第47日目の日記でCPUTYPEを何も指定せずに実行して
カーネルのコンパイルが通った事を思い出しました。
そうそう。CPUTYPEを指定しないでコンパイルする事に前回引っかかっていましたが、
元々GENERICのカーネルが作られる時って何も指定されない状態で作られるんですよ。
なので、CPUTYPEを指定しなくても、別段問題ない、って言えばそうなのです。
(でもね、/usr/share/examples/etc/に設置されているmake.confの雛型の記述だと
指定できるっぽいんだけどなあ・・・)
当時はそこで、CPUTYPE=noconaという風に記述したりしていました。
あの時も思ったんだけど、CPUがCore2QuadのQ9550だから、通常のCore2と別の動きを
してしまうのかなあ・・・
当時の頃の特化型スレの過去ログ(レス番号400番以降)を見るとあの頃は
ドタバタしていたなあ、と懐かしくなりました。
さて、懐かしんでばかりもいられないので、ちょっと今後の作戦を考えます。
1) CPUTYPEを何も指定しない版のサーバを現在あぶらみくん( `э´)に作って
もらっています。
で、このサーバを社内の動作チェックテストで検品して検証してみます。
2) ('A`)の方でCPUTYPE=noconaと指定した版のサーバを試しにこれから作って
みます。
エラーが起きなければ1)と同様に検証に回してみます。
もしコケたら・・・・・CPUTYPEは指定しないという方式をしばらくは採用する、と
いう事になります。
|
あ、1)、2)共に使用するGCCは4.2.1(FreeBSD 7.1Rのデフォルトで入るもの)を使用します。
前回の日記で書いた様な4.3.3へのアップデートはおこないません。
さて、どうなるかなあ・・・・結果をお楽しみに。
では、また。
[追記 14:45]
えーと、、、、CPUTYPE=noconaと指定してbuildworldを実行してみましたが、、、
エラーとなって止まりました。
CPUTYPEを指定すると、ダメみたいです・・・・
--------------------------------------------------
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444 libkrb5.a /usr/obj/usr/src/lib32/usr/lib32
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444 heim_err.h k524_err.h /usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/krb5/krb5-protos.h /usr/src/kerberos5/lib/libkrb5/../../include/krb5-types.h /usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/krb5/krb5.h krb5_err.h /usr/obj/usr/src/lib32/usr/include
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444 libkrb5_p.a /usr/obj/usr/src/lib32/usr/lib32
sh /usr/src/tools/install.sh -s -o root -g wheel -m 444 libkrb5.so.9 /usr/obj/usr/src/lib32/usr/lib32
ln -fs libkrb5.so.9 /usr/obj/usr/src/lib32/usr/lib32/libkrb5.so
2 errors
*** Error code 2
1 error
*** Error code 2
1 error
*** Error code 2
1 error
--------------------------------------------------
うーん、どうしてなんだろうなあ・・・・・
Googleで検索して調べているのですが「Quad(Q9550)でamd64の7.1Rで再構築する」事例が
見つからないです。
(デフォルトの状態をインストールしている人はいるのですが、再構築してみた人って
いないみたい・・・「ぷろじぇくと ぞうさん」が最初に引っ掛かるって、どうなのかなあ・・・)
えーと、、、、病み上がりなので疲れてきちゃいました。
ちょっと休憩しますね。
[追記 16:15]
本来この方法は「製品」としてのサーバを作る場合には取ってはいい手法なのか判りませんが
ある仮設を検証する為にあえてOSのあるファイルを修正してbuildworldを実施してみました。
エース( ,_ノ` )y━・~~~と結果について話した時に、こんな話を( ,_ノ` )y━・~~~から聞きました。
「gcc 4.3以降は、i386 オプションの -mcpu=cpu type と -march=cpu type で
、core/core2 を指定できるようになったと聞いています。
(gcc -mcpu=core2 -march=core2 と出来るようになった。)
で、make.conf の CPUTYPE による指定は、FreeBSD 上で認識するための物で、
gcc に渡されるときは /usr/share/mk/bsd.cpu.mk の内容に従って翻訳
されるはず。
で、今回使った/usr/share/mk/bsd.cpu.mkは従来のまま変更されていないので、
gcc に渡されるとき CPUTYPE=core2 は nocona に翻訳されて渡されるはず。
(実際は gcc -mcpu=nocona -march=nocona となっていると思われる。)
('A`)にお願いしたいのは、/usr/share/mk/bsd.cpu.mkを以下の様に書き換えて、
buildworldを実行してみて欲しい、という事です。
(どうも32ビット部分のモジュールを作る時にコケている様に見えるので)」
|
/usr/share/mk/bsd.cpu.mkの
--------------------------------------------------
. elif ${MACHINE_ARCH} == "amd64"
. if ${CPUTYPE} == "prescott" || ${CPUTYPE} == "core2"
CPUTYPE = nocona
. endif
. endif
--------------------------------------------------
(# Handle aliases (not documented in make.conf to avoid user confusionなんちゃら、
と書かれている下のあたりにあります)箇所を
↓
--------------------------------------------------
. elif ${MACHINE_ARCH} == "amd64"
. if ${CPUTYPE} == "prescott"
CPUTYPE = nocona
. elif ${CPUTYPE} == "core"
CPUTYPE = core
. elif ${CPUTYPE} == "core2"
CPUTYPE = core2
. endif
. endif
--------------------------------------------------
という風に書き直して、以下の手順で「GCCを4.3.3」に変更して、/etc/make.confで
CPUTYPE=core2と指定してから、buildworldを実行してみます。
(あ、/usr/share/mk/bsd.cpu.mk のパーミッションは444です。一度644とかに変更してから
viエディタとかで修正して下さい。)
[GCCを4.3.3にする方法]
pkg_add -r gcc43
rehash
cp /usr/bin/gcc /usr/bin/gcc_org
rm /usr/bin/gcc
ln -s /usr/local/bin/gcc43 /usr/bin/gcc
で、実行してみたら、、、、、先程と同じ様にエラーとなって止まりました。とほほ・・・
(ちなみにbuildworld中のコンパイルオプションでは)
この方法でもダメか・・・・うーん。
--------------------------------------------------
cc -m32 -march=nocona -mfancy-math-387 -DCOMPAT_32BIT -iprefix /usr/obj/usr/src/lib32/usr/ -L/usr/obj/usr/src/lib32/usr/lib32 -B/usr/obj/usr/src/lib32/usr/lib32 -fpic -DPIC -O -fno-strict-aliasing -pipe -I/usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/krb5 -I/usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/asn1 -I/usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/roken -I. -DHAVE_CONFIG_H -I/usr/src/kerberos5/lib/libkrb5/../../include -c /usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/krb5/write_message.c -o write_message.So
building static krb5 library
building profiled krb5 library
building shared library libkrb5.so.9
ranlib libkrb5.a
ranlib libkrb5_p.a
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444 libkrb5.a /usr/obj/usr/src/lib32/usr/lib32
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444 heim_err.h k524_err.h /usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/krb5/krb5-protos.h /usr/src/kerberos5/lib/libkrb5/../../include/krb5-types.h /usr/src/kerberos5/lib/libkrb5/../../../crypto/heimdal/lib/krb5/krb5.h krb5_err.h /usr/obj/usr/src/lib32/usr/include
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444 libkrb5_p.a /usr/obj/usr/src/lib32/usr/lib32
sh /usr/src/tools/install.sh -s -o root -g wheel -m 444 libkrb5.so.9 /usr/obj/usr/src/lib32/usr/lib32
ln -fs libkrb5.so.9 /usr/obj/usr/src/lib32/usr/lib32/libkrb5.so
2 errors
*** Error code 2
1 error
*** Error code 2
1 error
*** Error code 2
1 error
--------------------------------------------------
|
|
|
|
|