第46日目:【ニューTiger】ニューTiger 難産しています・・・
|
どうも、('A`)です。
えーと、今日は朝からサーバを設置しているデータセンターのケージの温度が何故か
上昇して一部のサーバがダウンしたり、「花子」(banana3000)もつられてダウンしていたり、
色々な事が起きていて大変です。
で、ニューTigerも昨日の日記で追記しましたが、カーネル再構築の方法を従来の方法で
実行したら、reboot後に戻ってこなくなり、もう一度OS再インストールする事になりました。
うーん、もしかすると『百式』の時に起こったNICの問題が解決されていないのかなあ。
まずはカーネル再構築前のところまでセットアップして、それからむむむさんに教えて
頂いた最新ソースを取得した形でのカーネル再構築をやってみよう。
今は色々立て込んでいて、ここまでしか書けません・・・
追記できる様になったら、また日記を更新します。
【14:50 追記】
カーネル再構築前のセットアップ(Apacheとかメールとか)が終わりました。
サーバ内からリブートしてもちゃんと戻ってきます。
さて、ここからか・・・
まず今までの作業を振り返ってみます。
・いつもT-Bananaで行なっているsysinstallからカーネル再構築からだと
再構築後のリブートでサーバが戻ってこなくなる。
・むむむさんから教えて頂いたsysinstall後に最新ソースと同期を取る処理を
行なってから buildkernel -> installkernel したら、サーバは戻ってくる
(ただ、その後installworld+mergemasterをしてリブートすると戻ってこなくなった・・・)
で、これから以下の方法を試してみます。
(1) /usr パーティション上の /usr/src と /usr/obj を削除する。
(2) /home 上に src、obj のディレクトリを作る。
(3) /usr パーティション上にシンボリックリンクを設置し、/home上の
src、obj ディレクトリにリンクする。
(4) sysinstall で /usr/src を全て持ってくる。
(5) /usr/src/sys/amd64/confに移動する。
(6) カーネルコンフィグレーションファイル(ATIGER6471)を設置する。
(7) /etc/make.conf で KERNCONF を ATIGER6471 に変更する。
(8) /usr/src に移動する。
(9) make -j 8 buildkernel
(10) make installkernel
(11) サーバを1度リブートする。
|
これでうまくいくと思うけど、、、やってみます。
【15:15 追記】
さっき記載した方法で一部抜けている手順がありましたので、修正します。
(1) /usr パーティション上の /usr/src と /usr/obj を削除する。
rm -rf /usr/src
rm -rf /usr/obj
(2) /home 上に src、obj のディレクトリを作る。
mkdir /home/src
mkdir /home/obj
(3) /usr パーティション上にシンボリックリンクを設置し、/home上の
src、obj ディレクトリにリンクする。
cd /usr
ln -s ../home/src
ln -s ../home/obj
(4) sysinstall で /usr/src を全て持ってくる。
(5) 以下の手順で最新のソースに同期を取る。
cp /usr/share/examples/cvsup/standard-supfile /usr/src/standard-supfile
cd /usr/src
make update
(6) /usr/src/sys/amd64/confに移動する。
(7) カーネルコンフィグレーションファイル(ATIGER6471)を設置する。
(8) /etc/make.conf で KERNCONF を ATIGER6471 に変更する。
(9) /usr/src に移動する。
(10) make -j 8 buildkernel
(11) make installkernel
(12) サーバを1度リブートする。
|
【15:45 追記】
15:15 で記載した方法でカーネル再構築を実施しましたが、その後リブートしたら、
戻ってきません。失敗です。
これでA-Tigerの完成は早くても明日(5/17)にずれ込みます。。。
何がいけないんだ・・・
まずはサーバの再インストールを始めなきゃ。
【16:10 追記】
カーネル再構築後にサーバが戻ってこない(sshで繋がらない)原因が判ったような気がします。
また『百式』の時の悪夢がよみがえった。。。
現地の技術スタッフにコンソールで確認してもらったら、サーバ自体はOSが立ち上がっている
状態でした。
けれども試しにサーバ内から外部にpingを打つと通じない、という事が判明しました。
もしかしてNICのドライバがおかしいのかと思い、Intelのサイトを調べたところ・・・
こんなのが出てきました。
Network Adapter Gigabit Base Driver for FreeBSD*, Release 7.x
em-6.8.7.tar.gz というアーカイブで提供されています。
これを『百式』の時の様に入れてあげないといけないのか?
いま猛烈に調べながら、サーバの再インストールの手配を進めています。
試せるものは、片っ端から試してみよう。
【17:20 追記】
A-TigerのOS再インストールが終わり、カーネル再構築前のセットアップをもう一度開始しました
まずはカーネル再構築前まで進めます。
【17:35 追記】
カーネル再構築前のセットアップが終わりました。
さあて、、、『百式』の時と同じ手順でカーネル再構築しようかと思ったのですが、まずは
先ほど報告したNICドライバ(em-6.8.7)のモジュールのみを今から作ってみよう。
そして「起動時に動的に呼び出す」設定をして、サーバが新しいドライバで通信できるか
確かめてみます。
もし通信できれば、『百式』方式でカーネル再構築すればいい。
でも仮にダメだったら・・・途方にくれます。
ここまで来たからには、まずはやってみよう。
【18:10 追記】
何なんだぁ!!!Intelさんは・・・
NICのドライバのアーカイブを解凍してみたら、ソースしか出てこない。
tiger3502# tar xzvf em-6.8.7.tar.gz
x em-6.8.7
x em-6.8.7/src
x em-6.8.7/patches
x em-6.8.7/README
x em-6.8.7/src/e1000_80003es2lan.c
x em-6.8.7/src/if_em.h
x em-6.8.7/src/if_em.c
x em-6.8.7/src/e1000_regs.h
x em-6.8.7/src/e1000_phy.h
x em-6.8.7/src/e1000_phy.c
x em-6.8.7/src/e1000_osdep.h
x em-6.8.7/src/e1000_osdep.c
x em-6.8.7/src/e1000_nvm.h
x em-6.8.7/src/e1000_nvm.c
x em-6.8.7/src/e1000_manage.h
x em-6.8.7/src/e1000_manage.c
x em-6.8.7/src/e1000_mac.h
x em-6.8.7/src/e1000_mac.c
x em-6.8.7/src/e1000_ich8lan.h
x em-6.8.7/src/e1000_ich8lan.c
x em-6.8.7/src/e1000_hw.h
x em-6.8.7/src/e1000_defines.h
x em-6.8.7/src/e1000_api.h
x em-6.8.7/src/e1000_api.c
x em-6.8.7/src/e1000_82571.h
x em-6.8.7/src/e1000_82571.c
x em-6.8.7/src/e1000_82543.h
x em-6.8.7/src/e1000_82543.c
x em-6.8.7/src/e1000_82542.c
x em-6.8.7/src/e1000_82541.h
x em-6.8.7/src/e1000_82541.c
x em-6.8.7/src/e1000_82540.c
x em-6.8.7/src/e1000_80003es2lan.h
x em-6.8.7/src/Makefile
tiger3502#
|
これじゃあ『百式』の時に実施した手順(個別にモジュールをmakeしてboot時にローディング)が
使えない。
それなのにREADMEにはきっちりその方法が書かれているし・・・
じゃあ『百式』の時にうまく行かなかった「カーネルソースに追加して再構築時に作る」方法を
試してみます。。。
あ・・・移転作業が入っちゃったので一時中断。
作業が終わったら再開します。
【19:05 追記】
「カーネルソースに追加して再構築時に作る」方法を試してみましたが・・・失敗です。
(昔『百式』の時にぶち当たったエラーと同じです。)
../../../dev/em/e1000_82575.c:1304: error: (Each undeclared identifier is reported only once
../../../dev/em/e1000_82575.c:1304: error: for each function it appears in.)
../../../dev/em/e1000_82575.c: In function 'e1000_reset_init_script_82575':
../../../dev/em/e1000_82575.c:1328: error: 'e1000_82575' undeclared (first use in this function)
*** Error code 1
Stop in /usr/src/sys/amd64/compile/ATIGER6471.
|
カーネル再構築しないで、GENERICだと動くのになあ・・・
八方塞がりの状況です。あーあ。
【20:05 追記】
移転作業の間、ずーと考えていました。。。
「なんでGENERICで動いて、カーネル再構築すると動かなくなるのか?」
で、原因とか思いつきませんでしたが、1つ気づきました。
「GENERIC版のドライバモジュールが動くんなら、カーネル再構築後にそのモジュールを
元に戻してあげれば、動くんじゃないの?」って。
そうです、ある意味「究極の小手先技」です。
自分自身でも「何だかな〜」と思いましたが、正直それしか思いつきませんでした。
試してみるだけ試してみて、動かなかったら、しばらくカーネル再構築はしません。
もし動いたら、、、動くといいなあ。
という事で、以下の手順をこれから実行します。
1) /boot/kernel にある以下の2つのモジュールを退避する。
※ /home/admin/em に退避します。
if_em.ko
if_em.ko.symbols
2) sysinstall で /usr/src/sys を持ってくる。
3) cd /usr/src/sys/amd64/conf
4) カーネルコンフィグレーションファイル(ATIGER6471)を設置する。
5) config ATIGER6471
6) cd ../compile/ATIGER6471
7) make depend ; make ; make install
8) cp /home/admin/em/if_em* /boot/kernel
9) 覚悟を決めて、リブート
root兄(・∀・)なら色々とまだ手があるかもしれませんが、もう、('A`)の実力で
試せる事は試しました。これが最後の手です。
では、行ってきます・・・
【20:40 追記】
ダメでした・・・・orz
これからPIEの技術スタッフに再インストールを要請して、またOS入れ直してもらいます。
あとリブート前にカーネル再構築前と後でのemモジュールを比較しましたが、なぜか
小さくなっていました。
【カーネル再構築前(GENERIC)】
-r-xr-xr-x 1 root wheel 250568 May 16 03:54 if_em.ko
-r-xr-xr-x 1 root wheel 1376168 May 16 03:54 if_em.ko.symbols
【カーネル再構築後(ATIGER6471)】
-r-xr-xr-x 1 root wheel 241912 May 16 04:24 /boot/kernel/if_em.ko
-r-xr-xr-x 1 root wheel 1345864 May 16 04:24 /boot/kernel/if_em.ko.symbols
うーん・・・
【23:30 追記】
OS再インストールが終わり、カーネル再構築の前まで進みました。
んで、特化型スレでむむむさんがアドバイスしてくれた方法(再構築したカーネルを
更新せずに別ディレクトリに保存して、次回起動カーネルとして一時的に指定する)で
社内サーバで試しに動かしたら、正常に起動しました。
ただ、社内サーバのマザーボードはDQ965GFなのでA-Tigerのマザー(DQ35JO)とは違うので
油断はできません。。。
今度実行する方法は以下の通りです。
rm -rf /usr/src
rm -rf /usr/obj
mkdir /home/src
mkdir /home/obj
cd /usr
ln -s ../home/src .
ln -s ../home/obj .
sysinstall で /usr/src をすべて取得
cp /usr/share/examples/cvsup/standard-supfile /usr/src/standard-supfile
cd /usr/src
make update
cd /usr/src/sys/amd64/conf
カーネルコンフィグレーションファイル(ATIGER6471)を設置
/etc/make.conf をエディタで開き KERNCONF=ATIGER6471 に修正
cd /usr/src
make -j 8 buildkernel
make installkernel KODIR=/boot/testkernel
nextboot -k testkernel
reboot
|
明日試してみます。。。
【5/17 00:40 追記】
明日試そうかと思いましたが、さっき試しました。。。
やはりカーネル再構築後にリブートすると、サーバに接続できなくなりました。
PDU(電源スイッチ:APCとも呼んでいます)から遠隔リブートしたら、元のGENERICの
カーネルで無事立ち上がりました。
マザーボードが違うと、実際に搭載されているNICに対するドライバーも違って
くるのかなあ・・・
ちょっと今日はもう限界なので、明日の朝に作戦を立て直します。
なんだかなあ・・・
|
|
|
|
|