【ぷろじぇくと64(ろくよん)】 ~第7日目:カーネル再構築成功!しかし・・・

レンタルサーバー
BIG-server.com

簡単・はやい・大容量・どんな目的にもマッチするレンタルサーバー

HOME プライス お見積もり・プラン選択 お申し込み ユーザーサポート お問い合わせ

■ 【ぷろじぇくと64(ろくよん)】 ~T-Bananaサーバで64ビットOSを動かすぞっ!!の巻~

1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
目次に戻る
第7日目:カーネル再構築成功!しかし・・・

えーと、本業で2日ほどバタバタして予定していたカーネル再構築に進めない状態
だったけど、ようやっと今日から取り掛かれるようになった。
(^_^;)さんも見かけないし、今日は作業がスムーズにすすむと思う。

さてT-Bananaでやっているカーネル再構築は以下の手順で行なっています。

1) sysinstall をつかって /usr/src/sys を持ってくる
2) T-Banana用に作ったコンフィグレーションファイル(TBANANA01)を /usr/src/sys/i386/conf
に持ってくる
3) config TBANANA01 でコンフィグレーションファイルを元にしてカーネルのソース
コードを生成する
  (ソースコードは /usr/src/sys/i386/compile/TBANANA01 に格納される)
4) cd ../compile/TBANANA01 でソースコードのディレクトリに移動する
5) make depend; make; make install でコンパイルからインストールまで行なう。

※ make depend; make; でカーネルのコンパイルが行なわれ、
  make install でカーネルのインストールが行なわれる


今回はSMPというコンフィグレーションファイルをリネームして「TTIGER01」を作って
再構築を試みたけど・・・・エラーになった。

# make depend; make; make install
cc -c -O -pipe -march=i686 -Wall -Wredundant-decls -Wnested-externs -Wstrict-pro
totypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -fformat-exten
sions -std=c99 -g -nostdinc -I- -I. -I../../.. -I../../../contrib/altq -I../../.
./contrib/ipfilter -I../../../contrib/pf -I../../../dev/ath -I../../../contrib/n
gatm -I../../../dev/twa -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -includeopt_glob
al.h -finline-limit=8000 --param inline-unit-growth=100 --paramlarge-function-g
rowth=1000 -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mm
x -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding
../../.
./amd64/amd64/genassym.c
../../../amd64/amd64/genassym.c:1: error: CPU you selected does not support
x86-64 instruction set
../../../amd64/amd64/genassym.c:1: error: CPU you selected does not support
x86-64 instruction set
*** Error code 1

Stop in /usr/src/sys/amd64/compile/TTIGER01.
#

x86-64をサポートしていない(つまり64ビットの)CPUじゃない、って言ってるなあ。
ってか march=i686 って、、、、
もしかして /etc/make.confで悪さをしているかも・・・

やっぱりそうだ。make.confの中でCPUTYPEがi686(=Pentium 4)になっていた。
なので、ここを CPUTYPE=opteron として再実行したら・・・・成功した。
(カーネル再構築の詳細についてはココを参照して下さい。)

# uname -a FreeBSD w44.maido3.cc 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Wed Nov 13 23:37:04 UTC 2007
root@w44.maido3.cc:/usr/src/sys/amd64/compile/TTIGER01 amd64
#

いやあ、やっぱり良いなあ。GENERICだと市販車というイメージがあるけど、
TTIGER01って出るとレース仕様みたいに思えてくるのは気のせいか・・・


「(^_^;)さんもいないし、カーネル再構築も目処がたったし、バンザーイ!」と思っていたら、
ICQでメッセージが・・・・・Brianからだ!
俺(以下、('A`))は実際にBrian(以下、( ^ω^))に会った事があるけど、ナイスガイです。


('A`):「あのさあ、『百式』なんだけど・・・」
( ^ω^):「ああ、その事でね、相談があるんだ。」
('A`):「ひょっとして、来たの?」
( ^ω^):「来たよ、一応は、、、、」
('A`):「一応は、って?」
( ^ω^):「なんかオンラインにならないんだねえ。。。。」
('A`):「えっーーーーーー!」
( ^ω^):「6.2-RELEASE を入れたけど、どうしてもNICが認識されないんだよ。」
('A`):「NICが壊れているんじゃないの。」
( ^ω^):「それは無いと思う。新しいNICだから 6.2-RELEASEで動かないんだと思う。
      6.2-STABLEだと動くかも・・・・まあ、それでもダメなら工場に戻すよ。」
('A`):「うーん。うーん。とりあえず6.2-STABLE入れて、オンラインになるか試してみよう。」
( ^ω^):「OK!判ったよ。」

そして・・・

( ^ω^):「あのさあ・・・・」
('A`):「どしたの?」
( ^ω^):「FreeBSDのサイトで探してるんだけど、6.2-STABLEが見当たらないんだ・・・
      ISOイメージがどこにあるか知ってる?」
('A`):「ぐはっ!」


とりあえずISOイメージが何処にあるか教えて作業をお願いしたけど、6.2-STABLEか・・・・
もし6.2-STABLEを使う事になるなら、カーネル再構築はちょっと厄介な事になるだろうなあ。
ってかどんなNICがついてるんだろう。。。
まあ明日には判るだろう。それからだ。


[カーネル再構築時の初歩的ポイント]
6.2-RELEASEに限らず、カーネル再構築の時に大切になるのは
「コンフィグレーションファイル」と「/etc/make.conf」の記述になります。

コンフィグレーションファイルはインストール対象のマシン(サーバ)のハードウェアに
関連するパラメータとかオプションを指定するファイルです。
例えばSCSIでもいくつかドライバがありますが、どの機種・タイプのドライバを使うのか、
という事をこのファイル内に記述します。
あと、CPUがデュアルコア(ハード的に1つのパッケージに2つのCPUが内蔵されている)の
場合には、通常のコンフィグレーション(GENERICといいます)では物理的に認識される
1つのCPUのみ有効化されますが、SMPというオプションを指定する事で2つのCPUとして
動く事が可能になります。

最初にCore2Duoにamd64をインストールした時には、カーネルは"SMP"で稼動しました。
このSMPのコンフィグレーションファイルがどうなっているかというと、、、

# # SMP -- Generic kernel configuration file for FreeBSD/amd64 SMP # Use this for multi-processor machines # # $FreeBSD: src/sys/amd64/conf/SMP,v 1.1.6.1 2005/09/18 03:37:58 scottl Exp $ include GENERIC options SMP

たった、これだけです。
ほとんどの記述はインクルードされているGENERICから取り込まれています。
この場合に重要なのは最後の options の所です。
(デュアルコアでない64ビットのCPUを使っている人は関係ないです。)


そして再構築、特にカーネルソースのコンパイル時にオプションを指定する場合には、
/etc/make.conf に記述します。
このファイルはカーネルに限らずportsパッケージ等をコンパイルする際に、コンパイルの
条件やらパラメータなどを指定します。
よく「ccじゃなくてgccを指定する」とか「-O2 にするか -O3にするか」とか言われるのは
ここでの記述になりますが、あいにく俺はカーネル再構築が初めてなので、T-Bananaの
make.confを必要最小限いじっただけです。
また「make なんちゃら」と動かすものはこのファイルを参照する事になります。

(詳細は man make.conf と叩くとマニュアルが表示されるので見て下さい。
もっとも英語で書かれていますが・・・・)

今回は以下のmake.confを記述しました。

CPUTYPE=opteron PERL_VER=5.8.8 PERL_VERSION=5.8.8 PERL_ARCH=mach NOPERL=yo NO_PERL=yo NO_PERL_WRAPPER=yo KERNCONF=TTIGER01 WITHOUT_X11=yes CPUTYPE=opteron CFLAGS= -O -pipe COPTFLAGS= -O -pipe NO_BIND=true NO_BIND_NAMED=true NO_BIND_ETC=true NO_FORTRAN=true NO_I4B=true NO_KERBEROS=true NO_LPR=true NO_MAILWRAPPER=true NO_SENDMAIL=ture NO_USB=true

ただしFreeBSDではCore2Duoについて指定する場合、6.2-RELEASEではCPUTYPEを
"opteron"と指定しないと通らないのですが、どうも6.2-STABLEだと"core2"と
指定できるみたいです。
これは次回試してみようと思います。

6日目に戻る。   8日目に続く。

1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
目次に戻る


Copyright (C) 1997-2013, BIG-server.com. All Rights Reserved.
レンタルサーバー BIG-server.com
Powered By Maido3.com