dポイントプレゼントキャンペーン実施中!

Redhat9のカーネル再構築を行いたいです。
DISCからインストールした状態(カーネル再構築を行おうとしているカーネルの状態)を全て引き継ぎ、
 SCSI SupportのProbe all LUNs on each SCSI device を Y にする
という1点だけ変更を加えて、実行したいです。
これを目標に、以下の流れでコマンドを実行しました。

cd /usr/src/linux-2.4.**/
make mrproper
cp ./configs/kernel-2.4.20-i686.config .config
sudo make xconfig
 ・[SCSI support]→[Probe all LUNs on each SCSI device]をオンにする。
 ・セーブ&exitで終わる。
make bzImage && make modules
make modules_install
installkernel 2.4.20-8-LUNs arch/i386/boot/bzImage System.map

ここで、
参考したサイトの手順を鵜呑みにして
cp ./configs/kernel-2.4.20-i686.config .config
というコマンドを実行して.configを書き換えているのですが、
これは「DISCからインストールした状態」を引き継いでいないですよね?
「DISCからインストールした状態」を引き継ぐには、
インストールした時点で/usr/src/linux-2.4.**/に存在している.configが、/usr/src/linux-2.4.**/にある状態で、
make xconfig を実行すれば良いのでしょうか。

make oldconfigというコマンドが現在の値を引き継いでいるらしいのですが、
実行後に聞かれるいくつかの選択肢の意味がよくわかりません。

A 回答 (3件)

> 目的のRedhat9の再構築は、再構築前と変更箇所が少ないので問題ないと(都合のいいように)考えています。



セキュリティ関連のアップデートとか終了していますが、そちらは問題ない…のですかね?

> インストールした時点でのこのconfigファイルを使って再構築すれば、
> 色々設定をイジってしまった後でも「インストール時の状態」にできますよね?

正確にはカーネルのビルド時の設定ですね。
こちらのconfigを使ってビルドしなおした場合ですけど。

> どこに問題がありそうでしょうか。
> make xconfigの前に何かする必要がある、という意味ですよね?

make oldconfigが必要かと。念のためですが。

> 現在の値を引き継いでいるはずなのに「この項目はYにするか?」と聞かれるのが疑問です。
> 「現在の値」とはどこかにあるファイルを参照しているのでしょうか。

通常は.configの内容を参照します。
カーネル組み込みもモジュールにはしなかった場合、
「# CONFIG_MODULE_FORCE_UNLOAD is not set」という形で記録されています。(config-2.6.18-53.1.14.el5.centos.plusの例ですが)
該当するシンボルがない場合、ほかのバージョン(パッチ含む)のものである可能性があるため、oldconfigで問い合わせされます。

> specファイルとは何でしょうか?

rpmファイルを作成するための設定ファイルです。

http://nobonobo.blog.so-net.ne.jp/2007-02-07
Redhat Enterprise Linuxでの例です。

http://d.hatena.ne.jp/overtech/20040220/1077255869
Redhat 7.3での例です。

specファイルを修正して、rpm --buildだったかのコマンドでrpmファイルが作成できます。
# 最近のならばrpmbuildコマンドですが、Redhat9辺りだとrpm --buildだったか……manで調べられます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
返事が遅れて申し訳ありません。



>> 目的のRedhat9の再構築は、再構築前と変更箇所が少ないので問題ないと(都合のいいように)考えています。
> セキュリティ関連のアップデートとか終了していますが、そちらは問題ない…のですかね?

100%安全なわけじゃないですが、
非常に閉鎖的な空間で使うことを想定しているので問題ないと考えています。



>> どこに問題がありそうでしょうか。
>> make xconfigの前に何かする必要がある、という意味ですよね?
> make oldconfigが必要かと。念のためですが。

了解です、実行します。
挙げていただいたサイトにも、
「※古い設定を引き継いだ後に、さらに設定を行う場合は、make oldconfigの実行後にmake menuconfigを実行」
と書かれていました。

目的は「インストール直後の状態から1点だけ追加して再構築」なのですが、
インストール後に、
make oldconfig
make xconfig
(ここで追加項目を設定して保存する)
make dep
make clean
make bzImage && make modules
make modules_install
/sbin/installkernel 2.4.20-8 arch/i386/boot/bzImage System.map
と実行すれば再構築自体は望んだものになると考えてよいでしょうか。
(再構築後にbootできるかどうかはさておき)


>> specファイルとは何でしょうか?
> rpmファイルを作成するための設定ファイルです。

せっかく説明していただいたのですが、どうも理解できそうにないです。
rpmを利用していない今は使い道が無いのでしょうか。
そもそも再構築とはrpmを持ち込んで行うのが普通なのですか?

お礼日時:2008/03/25 19:46

>非常に閉鎖的な空間で使うことを想定しているので問題ないと考えています。



それならば問題ないでしょう。

> と実行すれば再構築自体は望んだものになると考えてよいでしょうか。
> (再構築後にbootできるかどうかはさておき)

おそらく問題ないと思われます。
ソースからkernelをインストールしたことが無いので断言はできませんが。
bootに関してはlilo.confまたはgrub.confへの設定が必要かと。
# lilo.confの場合はliloの実行も必要ですが。

> rpmを利用していない今は使い道が無いのでしょうか。
> そもそも再構築とはrpmを持ち込んで行うのが普通なのですか?

使用者の自由です。
rpmの場合、依存関係やインストール/アンインストールなどが楽になります。
他に…rpmでインストールする場合は一般的に開発環境が不要ですので、ビルド用のマシンでrpmを作成することができます。
サーバマシンがCeleron667MHz、メインマシンがAthlon64X2 3800+と性能に差がある場合、メインマシンでrpmを作成してサーバマシンに転送してインストールした方が早いです。

今回の場合だと…
カーネルのsrc.rpmをインストールして、設定を変更した.configファイルをソースのある場所にコピー、
specファイルの最初の辺りにあるRelease辺りを書き換えてrpmのビルドを行います。
# .configファイルはkernel-xxxx.config等の名前で格納されています。

この回答への補足

回答ありがとうございます。


>rpmの場合、依存関係やインストール/アンインストールなどが楽になります。

思わぬところから非常に興味のある話になってきました。
論点がずれる&単語の使い方が正しいかわかりませんけど、
一度カーネル再構築して出来上がったRedhat9をrpm化して、このrpmを使ってインストールすれば、
カーネル再構築済みの状態のRedhat9ができるということでしょうか?

補足日時:2008/03/28 19:47
    • good
    • 0

何故それほど古いディストリビューションを使用しているのか判りませんが…


rpmでインストールしたカーネルならば/bootにconfigファイルがありませんか?
config-2.4.20~といったファイルがあるかと。

>インストールした時点で/usr/src/linux-2.4.**/に存在している.configが、/usr/src/linux-2.4.**/にある状態で、
>make xconfig を実行すれば良いのでしょうか。

いきなりmake xconfigでちゃんといけますかね?

> make oldconfigというコマンドが現在の値を引き継いでいるらしいのですが、
> 実行後に聞かれるいくつかの選択肢の意味がよくわかりません。

とりあえず、enterキーを押していってデフォルト設定で問題ないでしょう。
その後でmake menuconfigなりmake xconfigなりで設定を変更してください。

# ちなみに、私ならばspecファイルの書き換えと、変更したconfigファイルをコピーしてrpmファイルをビルドします。
# その方が入れ替えとか楽ですから。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>何故それほど古いディストリビューションを使用しているのか判りませんが…

このカーネルバージョンのRedhatで作りこんだアプリケーションがあり、
別のディストリビューションに変更した場合のアプリの動作検証が面倒、だからでしょうか。
目的のRedhat9の再構築は、再構築前と変更箇所が少ないので問題ないと(都合のいいように)考えています。


>rpmでインストールしたカーネルならば/bootにconfigファイルがありませんか?
>config-2.4.20~といったファイルがあるかと。

/bootにconfigファイルがありました。
インストールした時点でのこのconfigファイルを使って再構築すれば、
色々設定をイジってしまった後でも「インストール時の状態」にできますよね?


>いきなりmake xconfigでちゃんといけますかね?

どこに問題がありそうでしょうか。
make xconfigの前に何かする必要がある、という意味ですよね?
make xconfigは、再構築に使う.configを作成する操作であると認識しているのですが、間違っているでしょうか。
また、make xconfigを実行した際に最初から設定されている項目は常に固定ではないようなのですが、
それは/usr/src/linux-2.4.**/.configを読込んでいるから、だと思っているのですが、
これも間違っているでしょうか。


> make oldconfigというコマンドが現在の値を引き継いでいるらしいのですが、
> 実行後に聞かれるいくつかの選択肢の意味がよくわかりません。

>とりあえず、enterキーを押していってデフォルト設定で問題ないでしょう。
>その後でmake menuconfigなりmake xconfigなりで設定を変更してください。

現在の値を引き継いでいるはずなのに「この項目はYにするか?」と聞かれるのが疑問です。
「現在の値」とはどこかにあるファイルを参照しているのでしょうか。
今回はmake oldconfigで何も聞かれずそのまま終わってしまったので、
その後make xconfigで、1点だけ追加して保存しました。



># ちなみに、私ならばspecファイルの書き換えと、変更したconfigファイルをコピーしてrpmファイルをビルドします。
># その方が入れ替えとか楽ですから。

specファイルとは何でしょうか?



色々質問を追加してしまいましたが、
お時間あれば教えていただけると幸いです。

お礼日時:2008/03/19 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!